opencode-swarm 7.121.0 → 7.121.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/.opencode/skills/commit-pr/SKILL.md +4 -0
  2. package/.opencode/skills/issue-ingest/SKILL.md +9 -7
  3. package/dist/cli/{curation-policy-re2kaysb.js → curation-policy-10wnhpwn.js} +2 -2
  4. package/dist/cli/{curator-llm-factory-jta9tggm.js → curator-llm-factory-vcyvbny0.js} +10 -10
  5. package/dist/cli/{curator-8m0pf9cz.js → curator-mwvrryf3.js} +10 -10
  6. package/dist/cli/{evidence-summary-service-jtx5q3r6.js → evidence-summary-service-k14ykm03.js} +2 -2
  7. package/dist/cli/{guardrail-explain-nsfm5ksb.js → guardrail-explain-tgkk87z5.js} +11 -11
  8. package/dist/cli/{hive-promoter-8303gnfk.js → hive-promoter-z4tw1gfv.js} +10 -10
  9. package/dist/cli/{index-rywkdacj.js → index-0f800qg7.js} +3 -3
  10. package/dist/cli/{index-3je67dcz.js → index-1y03193n.js} +1 -1
  11. package/dist/cli/{index-3ygv9535.js → index-2ygp3qq4.js} +11 -11
  12. package/dist/cli/{index-nhgw7de8.js → index-35xyj7gn.js} +1 -1
  13. package/dist/cli/{index-69ms9ny1.js → index-5a3xsnzg.js} +1 -1
  14. package/dist/cli/{index-3366gs26.js → index-db82jxt7.js} +2 -2
  15. package/dist/cli/{index-j5xv8zbp.js → index-emkb0bbe.js} +1 -1
  16. package/dist/cli/{index-0k4r8111.js → index-ft6jw816.js} +4 -4
  17. package/dist/cli/{index-0e1v02hq.js → index-j8349ac0.js} +1 -1
  18. package/dist/cli/{index-0mbmfmt0.js → index-qt2yaghg.js} +2 -1
  19. package/dist/cli/{index-fndvr7fr.js → index-rbfq77sz.js} +1 -1
  20. package/dist/cli/{index-78b192v7.js → index-x4fwtd59.js} +3 -3
  21. package/dist/cli/{index-gmc34yzt.js → index-y0qa3xf0.js} +770 -669
  22. package/dist/cli/index.js +10 -10
  23. package/dist/cli/{knowledge-escalator-0ejqs8c9.js → knowledge-escalator-8ajq1fhb.js} +3 -3
  24. package/dist/cli/{knowledge-events-wx9e37ba.js → knowledge-events-2sjy3aa7.js} +1 -1
  25. package/dist/cli/{knowledge-store-rnajx33a.js → knowledge-store-27cesthc.js} +1 -1
  26. package/dist/cli/{knowledge-validator-1f4mkzmc.js → knowledge-validator-9keh3p8j.js} +4 -4
  27. package/dist/cli/{scan-cursor-qapm0sxj.js → scan-cursor-qmsmmg1b.js} +2 -2
  28. package/dist/cli/{skill-generator-tkv7s12g.js → skill-generator-hkyxdc3j.js} +5 -5
  29. package/dist/commands/issue.d.ts +12 -0
  30. package/dist/config/plan-schema.d.ts +3 -0
  31. package/dist/hooks/delegation-gate.d.ts +120 -0
  32. package/dist/hooks/issue-trace-reducer.d.ts +66 -0
  33. package/dist/hooks/issue-trace-state.d.ts +64 -0
  34. package/dist/hooks/issue-trace.d.ts +31 -0
  35. package/dist/index.js +258 -232
  36. package/dist/tools/save-plan.d.ts +2 -0
  37. package/package.json +1 -1
@@ -80,6 +80,10 @@ exists, fill in its sections. Otherwise write a body with at least:
80
80
 
81
81
  Use a PR title in the same conventional-commit form as your commit.
82
82
 
83
+ Before generating the PR body, check if `.swarm/issue-reference.json` exists. If it
84
+ does and contains a `number` field, auto-populate `Closes #<number>` as the first line
85
+ of the PR body. If the file does not exist, fall back to `Closes #<issue-number>`.
86
+
83
87
  ## Step 6 — Close out CI
84
88
 
85
89
  After the PR is open, watch its checks. If CI fails, read the logs, reproduce
@@ -16,21 +16,22 @@ Purpose: ingest a GitHub issue, localize root cause, and produce a resolution sp
16
16
 
17
17
  Flags parsed from signal:
18
18
  - `plan=true` → after spec generation, transition to MODE: PLAN (create implementation plan)
19
- - `trace=true` → after plan, delegate to swarm-implement skill for the fix workflow; the user invokes commit-pr to publish (implies plan=true)
19
+ - `trace=true` → the issue-trace hook (src/hooks/issue-trace.ts) automatically drives the standard PLAN CRITIC-GATE EXECUTE → commit-pr ladder (implies plan=true)
20
20
  - `noRepro=true` → skip the reproduction step below
21
21
 
22
22
  #### Phase 1: INTAKE
23
23
  1. Fetch the issue body using the GitHub CLI (`gh issue view <N> --repo <owner>/<repo> --json title,body,labels,assignees,comments`) or web fetch.
24
24
  - If the issue cannot be fetched (404, private repo, no `gh` auth, or the argument resolves to a PR not an issue), report the blocked operation explicitly and do not proceed on empty intake; fall back to any pasted issue text the user provided. Closed-issue cases proceed but note the closed state.
25
- 2. Parse the issue into a normalized **Intake Note** with four required fields:
25
+ 2. Read `.swarm/issue-reference.json` as the authoritative source for the issue URL, owner, repo, number, and flags (`plan`/`trace`/`noRepro`). If absent, fall back to the URL from the mode signal string.
26
+ 3. Parse the issue into a normalized **Intake Note** with four required fields:
26
27
  - **Observed behavior**: what the issue reports
27
28
  - **Expected behavior**: what should happen instead
28
29
  - **Reproduction steps**: how to trigger the issue (may be absent; flag with `[NEEDS REPRO]` if missing)
29
30
  - **Environment**: platform, version, configuration context
30
- 3. If any required field is missing and cannot be inferred from context, flag as `[NEEDS REPRO]`.
31
- 4. Attempt a minimal reproduction of the reported issue: record the exact commands and their output. Skip this step when `noRepro=true` (set via `--no-repro`); in that case, note that reproduction was skipped and proceed on the issue text alone.
32
- 5. Ask the user clarifying questions one at a time, max 6 per intake, when the issue text is ambiguous; otherwise flag the item with markers like `[NEEDS REPRO]` or `[NEEDS CLARIFICATION]` and proceed.
33
- 6. Exit when the Intake Note is complete or all missing fields are flagged.
31
+ 4. If any required field is missing and cannot be inferred from context, flag as `[NEEDS REPRO]`.
32
+ 5. Attempt a minimal reproduction of the reported issue: record the exact commands and their output. Skip this step when `noRepro=true` (set via `--no-repro`); in that case, note that reproduction was skipped and proceed on the issue text alone.
33
+ 6. Ask the user clarifying questions one at a time, max 6 per intake, when the issue text is ambiguous; otherwise flag the item with markers like `[NEEDS REPRO]` or `[NEEDS CLARIFICATION]` and proceed.
34
+ 7. Exit when the Intake Note is complete or all missing fields are flagged.
34
35
 
35
36
  #### Phase 2: LOCALIZATION
36
37
  1. Delegate to `the active swarm's explorer agent` to scan the codebase for code areas related to the issue's observed behavior.
@@ -44,6 +45,7 @@ Flags parsed from signal:
44
45
 
45
46
  #### Phase 3: SPEC GENERATION
46
47
  0. Include a **Root Cause** section derived from Phase 2 localization results: concise statement of the identified root cause, location, and confidence score; the `location` field (file/function from Phase 2 localization) is the sole exception to the no-implementation-detail rule. Include a **Fix Strategy** section at product/behavior level (what the fix must accomplish, not how to implement it).
48
+ 0a. Include a `## Source Issue` section at the top of `.swarm/spec.md` containing the GitHub issue URL and number, read from `.swarm/issue-reference.json`.
47
49
  1. If `.swarm/spec.md` already exists, route through MODE: SPECIFY step 1's classification (overwrite / refine / archive / non-shadowing check) before writing — do not clobber an existing spec. (This protects the drift-gate which consumes spec.md.)
48
50
  2. Generate `.swarm/spec.md` using the same SPEC CONTENT RULES as MODE: SPECIFY:
49
51
  - WHAT users need and WHY — never HOW to implement
@@ -61,7 +63,7 @@ Flags parsed from signal:
61
63
  Based on flags:
62
64
  - No flags → report spec summary and suggest `PLAN` or `CLARIFY-SPEC`
63
65
  - `plan=true` → transition to MODE: PLAN using the generated spec
64
- - `trace=true` → transition to MODE: PLAN, then delegate to swarm-implement skill for the fix workflow; the user invokes commit-pr to publish
66
+ - `trace=true` → the issue-trace hook (`src/hooks/issue-trace.ts`) automatically emits `[MODE: PLAN]` after spec generation. The standard PLAN CRITIC-GATE EXECUTE ladder follows deterministically.
65
67
 
66
68
  RULES:
67
69
  - One question per message in INTAKE dialogue (max 6 questions)
@@ -4,9 +4,9 @@ import {
4
4
  authorizeCuration,
5
5
  buildConfigFingerprintInput,
6
6
  readCohortConfigFingerprint
7
- } from "./index-69ms9ny1.js";
7
+ } from "./index-5a3xsnzg.js";
8
8
  import"./index-rtry5xyf.js";
9
- import"./index-nhgw7de8.js";
9
+ import"./index-35xyj7gn.js";
10
10
  import"./index-ae75rja9.js";
11
11
  import"./index-3jvqw5hy.js";
12
12
  import"./index-zgwm4ryv.js";
@@ -1,28 +1,28 @@
1
1
  // @bun
2
2
  import {
3
3
  createCuratorLLMDelegate
4
- } from "./index-gmc34yzt.js";
4
+ } from "./index-y0qa3xf0.js";
5
5
  import"./index-kyvg2cmp.js";
6
6
  import"./index-vqcgmy4y.js";
7
- import"./index-j5xv8zbp.js";
7
+ import"./index-emkb0bbe.js";
8
8
  import"./index-4905hd2m.js";
9
9
  import"./index-nprawcc0.js";
10
- import"./index-78b192v7.js";
11
- import"./index-0k4r8111.js";
12
- import"./index-0e1v02hq.js";
10
+ import"./index-x4fwtd59.js";
11
+ import"./index-ft6jw816.js";
12
+ import"./index-j8349ac0.js";
13
13
  import"./index-vxv732ex.js";
14
14
  import"./index-c8s9a3zh.js";
15
15
  import"./index-816rkp4y.js";
16
16
  import"./index-22e127jw.js";
17
- import"./index-3366gs26.js";
18
- import"./index-69ms9ny1.js";
17
+ import"./index-db82jxt7.js";
18
+ import"./index-5a3xsnzg.js";
19
19
  import"./index-rtry5xyf.js";
20
- import"./index-rywkdacj.js";
21
- import"./index-nhgw7de8.js";
20
+ import"./index-0f800qg7.js";
21
+ import"./index-35xyj7gn.js";
22
22
  import"./index-ae75rja9.js";
23
23
  import"./index-3jvqw5hy.js";
24
24
  import"./index-9xpgytj9.js";
25
- import"./index-0mbmfmt0.js";
25
+ import"./index-qt2yaghg.js";
26
26
  import"./index-gnp9x6se.js";
27
27
  import"./index-tftv9xh9.js";
28
28
  import"./index-4rhcth7a.js";
@@ -14,28 +14,28 @@ import {
14
14
  runCuratorInit,
15
15
  runCuratorPhase,
16
16
  writeCuratorSummary
17
- } from "./index-gmc34yzt.js";
17
+ } from "./index-y0qa3xf0.js";
18
18
  import"./index-kyvg2cmp.js";
19
19
  import"./index-vqcgmy4y.js";
20
- import"./index-j5xv8zbp.js";
20
+ import"./index-emkb0bbe.js";
21
21
  import"./index-4905hd2m.js";
22
22
  import"./index-nprawcc0.js";
23
- import"./index-78b192v7.js";
24
- import"./index-0k4r8111.js";
25
- import"./index-0e1v02hq.js";
23
+ import"./index-x4fwtd59.js";
24
+ import"./index-ft6jw816.js";
25
+ import"./index-j8349ac0.js";
26
26
  import"./index-vxv732ex.js";
27
27
  import"./index-c8s9a3zh.js";
28
28
  import"./index-816rkp4y.js";
29
29
  import"./index-22e127jw.js";
30
- import"./index-3366gs26.js";
31
- import"./index-69ms9ny1.js";
30
+ import"./index-db82jxt7.js";
31
+ import"./index-5a3xsnzg.js";
32
32
  import"./index-rtry5xyf.js";
33
- import"./index-rywkdacj.js";
34
- import"./index-nhgw7de8.js";
33
+ import"./index-0f800qg7.js";
34
+ import"./index-35xyj7gn.js";
35
35
  import"./index-ae75rja9.js";
36
36
  import"./index-3jvqw5hy.js";
37
37
  import"./index-9xpgytj9.js";
38
- import"./index-0mbmfmt0.js";
38
+ import"./index-qt2yaghg.js";
39
39
  import"./index-gnp9x6se.js";
40
40
  import"./index-tftv9xh9.js";
41
41
  import"./index-4rhcth7a.js";
@@ -6,9 +6,9 @@ import {
6
6
  loadPlanJsonOnly,
7
7
  mergeDurableGateEntriesFromEvidence,
8
8
  readDurableGateEvidence
9
- } from "./index-j5xv8zbp.js";
9
+ } from "./index-emkb0bbe.js";
10
10
  import"./index-816rkp4y.js";
11
- import"./index-0mbmfmt0.js";
11
+ import"./index-qt2yaghg.js";
12
12
  import"./index-gnp9x6se.js";
13
13
  import"./index-q1exe2b3.js";
14
14
  import"./index-ye3fndsw.js";
@@ -1,29 +1,29 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-3je67dcz.js";
5
- import"./index-gmc34yzt.js";
4
+ } from "./index-1y03193n.js";
5
+ import"./index-y0qa3xf0.js";
6
6
  import"./index-kyvg2cmp.js";
7
7
  import"./index-vqcgmy4y.js";
8
- import"./index-j5xv8zbp.js";
8
+ import"./index-emkb0bbe.js";
9
9
  import"./index-4905hd2m.js";
10
10
  import"./index-nprawcc0.js";
11
- import"./index-78b192v7.js";
12
- import"./index-0k4r8111.js";
13
- import"./index-0e1v02hq.js";
11
+ import"./index-x4fwtd59.js";
12
+ import"./index-ft6jw816.js";
13
+ import"./index-j8349ac0.js";
14
14
  import"./index-vxv732ex.js";
15
15
  import"./index-c8s9a3zh.js";
16
16
  import"./index-816rkp4y.js";
17
17
  import"./index-22e127jw.js";
18
- import"./index-3366gs26.js";
19
- import"./index-69ms9ny1.js";
18
+ import"./index-db82jxt7.js";
19
+ import"./index-5a3xsnzg.js";
20
20
  import"./index-rtry5xyf.js";
21
- import"./index-rywkdacj.js";
22
- import"./index-nhgw7de8.js";
21
+ import"./index-0f800qg7.js";
22
+ import"./index-35xyj7gn.js";
23
23
  import"./index-ae75rja9.js";
24
24
  import"./index-3jvqw5hy.js";
25
25
  import"./index-9xpgytj9.js";
26
- import"./index-0mbmfmt0.js";
26
+ import"./index-qt2yaghg.js";
27
27
  import"./index-gnp9x6se.js";
28
28
  import"./index-tftv9xh9.js";
29
29
  import"./index-4rhcth7a.js";
@@ -7,30 +7,30 @@ import {
7
7
  isHiveEligible,
8
8
  promoteFromSwarm,
9
9
  promoteToHive
10
- } from "./index-gmc34yzt.js";
10
+ } from "./index-y0qa3xf0.js";
11
11
  import"./index-kyvg2cmp.js";
12
12
  import"./index-vqcgmy4y.js";
13
- import"./index-j5xv8zbp.js";
13
+ import"./index-emkb0bbe.js";
14
14
  import"./index-4905hd2m.js";
15
15
  import"./index-nprawcc0.js";
16
- import"./index-78b192v7.js";
17
- import"./index-0k4r8111.js";
18
- import"./index-0e1v02hq.js";
16
+ import"./index-x4fwtd59.js";
17
+ import"./index-ft6jw816.js";
18
+ import"./index-j8349ac0.js";
19
19
  import"./index-vxv732ex.js";
20
20
  import"./index-c8s9a3zh.js";
21
21
  import"./index-816rkp4y.js";
22
22
  import"./index-22e127jw.js";
23
- import"./index-3366gs26.js";
24
- import"./index-69ms9ny1.js";
23
+ import"./index-db82jxt7.js";
24
+ import"./index-5a3xsnzg.js";
25
25
  import"./index-rtry5xyf.js";
26
26
  import {
27
27
  resolveHiveKnowledgePath
28
- } from "./index-rywkdacj.js";
29
- import"./index-nhgw7de8.js";
28
+ } from "./index-0f800qg7.js";
29
+ import"./index-35xyj7gn.js";
30
30
  import"./index-ae75rja9.js";
31
31
  import"./index-3jvqw5hy.js";
32
32
  import"./index-9xpgytj9.js";
33
- import"./index-0mbmfmt0.js";
33
+ import"./index-qt2yaghg.js";
34
34
  import"./index-gnp9x6se.js";
35
35
  import"./index-tftv9xh9.js";
36
36
  import"./index-4rhcth7a.js";
@@ -647,7 +647,7 @@ async function applyConfidenceFloorAction(directory, touched, options) {
647
647
  const recovered = touched.filter((e) => e.confidence > CONFIDENCE_FLOOR + FLOOR_EPSILON && e.confidence_floor_demoted);
648
648
  if (atFloor.length === 0 && recovered.length === 0)
649
649
  return;
650
- const { readKnowledgeCounterRollups, effectiveRetrievalOutcomes } = await import("./knowledge-events-wx9e37ba.js");
650
+ const { readKnowledgeCounterRollups, effectiveRetrievalOutcomes } = await import("./knowledge-events-2sjy3aa7.js");
651
651
  const rollups = await readKnowledgeCounterRollups(directory);
652
652
  const flagIds = new Set;
653
653
  for (const e of atFloor) {
@@ -714,11 +714,11 @@ async function applyConfidenceFloorAction(directory, touched, options) {
714
714
  });
715
715
  }
716
716
  if (action === "quarantine" && toQuarantine.length > 0) {
717
- const { quarantineEntry } = await import("./knowledge-validator-1f4mkzmc.js");
717
+ const { quarantineEntry } = await import("./knowledge-validator-9keh3p8j.js");
718
718
  const { KnowledgeConfigSchema } = await import("./schema-vwxpsk6j.js");
719
719
  let config;
720
720
  try {
721
- const { loadPluginConfigWithMeta } = await import("./index-fndvr7fr.js");
721
+ const { loadPluginConfigWithMeta } = await import("./index-rbfq77sz.js");
722
722
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
723
723
  config = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
724
724
  } catch {
@@ -12,7 +12,7 @@ import {
12
12
  detectPosixWrites,
13
13
  detectWindowsWrites,
14
14
  resolveWriteTargets
15
- } from "./index-gmc34yzt.js";
15
+ } from "./index-y0qa3xf0.js";
16
16
  import {
17
17
  checkFileAuthority,
18
18
  classifyFile,
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-3je67dcz.js";
4
+ } from "./index-1y03193n.js";
5
5
  import {
6
6
  handleGuardrailLog
7
7
  } from "./index-zvae4m8g.js";
@@ -83,28 +83,28 @@ import {
83
83
  handleWriteRetroCommand,
84
84
  normalizeSwarmCommandInput,
85
85
  resolveCommand
86
- } from "./index-gmc34yzt.js";
86
+ } from "./index-y0qa3xf0.js";
87
87
  import"./index-kyvg2cmp.js";
88
88
  import"./index-vqcgmy4y.js";
89
- import"./index-j5xv8zbp.js";
89
+ import"./index-emkb0bbe.js";
90
90
  import"./index-4905hd2m.js";
91
91
  import"./index-nprawcc0.js";
92
- import"./index-78b192v7.js";
93
- import"./index-0k4r8111.js";
94
- import"./index-0e1v02hq.js";
92
+ import"./index-x4fwtd59.js";
93
+ import"./index-ft6jw816.js";
94
+ import"./index-j8349ac0.js";
95
95
  import"./index-vxv732ex.js";
96
96
  import"./index-c8s9a3zh.js";
97
97
  import"./index-816rkp4y.js";
98
98
  import"./index-22e127jw.js";
99
- import"./index-3366gs26.js";
100
- import"./index-69ms9ny1.js";
99
+ import"./index-db82jxt7.js";
100
+ import"./index-5a3xsnzg.js";
101
101
  import"./index-rtry5xyf.js";
102
- import"./index-rywkdacj.js";
103
- import"./index-nhgw7de8.js";
102
+ import"./index-0f800qg7.js";
103
+ import"./index-35xyj7gn.js";
104
104
  import"./index-ae75rja9.js";
105
105
  import"./index-3jvqw5hy.js";
106
106
  import"./index-9xpgytj9.js";
107
- import"./index-0mbmfmt0.js";
107
+ import"./index-qt2yaghg.js";
108
108
  import"./index-gnp9x6se.js";
109
109
  import {
110
110
  AGENT_TOOL_MAP,
@@ -585,7 +585,7 @@ async function applyKnowledgeVerdictFeedback(directory, options) {
585
585
  deltas.push({ id, delta });
586
586
  }
587
587
  if (deltas.length > 0) {
588
- const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-rnajx33a.js");
588
+ const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-27cesthc.js");
589
589
  await bumpKnowledgeConfidenceBatch(directory, deltas, options?.floorOptions);
590
590
  }
591
591
  return {
@@ -4,7 +4,7 @@ import {
4
4
  } from "./index-rtry5xyf.js";
5
5
  import {
6
6
  readKnowledgeEvents
7
- } from "./index-nhgw7de8.js";
7
+ } from "./index-35xyj7gn.js";
8
8
  import {
9
9
  isLinked,
10
10
  readLinkPointer,
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  authorizeCuration
4
- } from "./index-69ms9ny1.js";
4
+ } from "./index-5a3xsnzg.js";
5
5
  import {
6
6
  findNearDuplicate,
7
7
  inferTags,
@@ -9,7 +9,7 @@ import {
9
9
  resolveSwarmKnowledgePath,
10
10
  resolveSwarmRejectedPath,
11
11
  transactKnowledge
12
- } from "./index-rywkdacj.js";
12
+ } from "./index-0f800qg7.js";
13
13
  import {
14
14
  resolveKnowledgeStoreDir
15
15
  } from "./index-3jvqw5hy.js";
@@ -9,7 +9,7 @@ import {
9
9
  ExecutionProfileSchema,
10
10
  PlanSchema,
11
11
  TaskStatusSchema
12
- } from "./index-0mbmfmt0.js";
12
+ } from "./index-qt2yaghg.js";
13
13
  import {
14
14
  _internals,
15
15
  buildDefaultPolicy,
@@ -6,13 +6,13 @@ import {
6
6
  resolveSwarmKnowledgePath,
7
7
  transactKnowledge,
8
8
  wordBigrams
9
- } from "./index-rywkdacj.js";
9
+ } from "./index-0f800qg7.js";
10
10
  import {
11
11
  countEntryContradictionsInWindow,
12
12
  countEntryViolationsInWindow,
13
13
  readKnowledgeEvents,
14
14
  recordKnowledgeEvent
15
- } from "./index-nhgw7de8.js";
15
+ } from "./index-35xyj7gn.js";
16
16
  import {
17
17
  isActiveStatus
18
18
  } from "./index-4rhcth7a.js";
@@ -188,11 +188,11 @@ async function maybeQuarantineOnContradiction(directory, entryId, threshold, win
188
188
  alreadyInactive: true
189
189
  };
190
190
  }
191
- const { quarantineEntry } = await import("./knowledge-validator-1f4mkzmc.js");
191
+ const { quarantineEntry } = await import("./knowledge-validator-9keh3p8j.js");
192
192
  let policyConfig;
193
193
  try {
194
194
  const { KnowledgeConfigSchema } = await import("./schema-vwxpsk6j.js");
195
- const { loadPluginConfigWithMeta } = await import("./index-fndvr7fr.js");
195
+ const { loadPluginConfigWithMeta } = await import("./index-rbfq77sz.js");
196
196
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
197
197
  policyConfig = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
198
198
  } catch {
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  readKnowledge,
4
4
  transactKnowledge
5
- } from "./index-rywkdacj.js";
5
+ } from "./index-0f800qg7.js";
6
6
  import {
7
7
  resolveKnowledgeStoreDir
8
8
  } from "./index-3jvqw5hy.js";
@@ -42,7 +42,8 @@ var TaskSchema = exports_external.object({
42
42
  acceptance: exports_external.string().optional(),
43
43
  files_touched: exports_external.array(exports_external.string()).default([]),
44
44
  evidence_path: exports_external.string().optional(),
45
- blocked_reason: exports_external.string().optional()
45
+ blocked_reason: exports_external.string().optional(),
46
+ fr_refs: exports_external.array(exports_external.string()).optional()
46
47
  });
47
48
  var PhaseSchema = exports_external.object({
48
49
  id: exports_external.number().int().min(1),
@@ -28,7 +28,7 @@ import {
28
28
  TaskSizeSchema,
29
29
  TaskStatusSchema,
30
30
  TestEvidenceSchema
31
- } from "./index-0mbmfmt0.js";
31
+ } from "./index-qt2yaghg.js";
32
32
  import {
33
33
  DeltaSpecSchema,
34
34
  ObligationSchema,
@@ -2,18 +2,18 @@
2
2
  import {
3
3
  ALLOWED_SKILL_PATH_PREFIXES,
4
4
  validateSkillPath
5
- } from "./index-3366gs26.js";
5
+ } from "./index-db82jxt7.js";
6
6
  import {
7
7
  computeOutcomeSignal,
8
8
  readKnowledge,
9
9
  resolveHiveKnowledgePath,
10
10
  resolveSwarmKnowledgePath,
11
11
  transactKnowledge
12
- } from "./index-rywkdacj.js";
12
+ } from "./index-0f800qg7.js";
13
13
  import {
14
14
  effectiveRetrievalOutcomes,
15
15
  readKnowledgeCounterRollups
16
- } from "./index-nhgw7de8.js";
16
+ } from "./index-35xyj7gn.js";
17
17
  import {
18
18
  isActiveStatus
19
19
  } from "./index-4rhcth7a.js";