opencode-swarm 7.140.1 → 7.140.3

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 (46) hide show
  1. package/.opencode/skills/swarm-pr-feedback/SKILL.md +19 -3
  2. package/.opencode/skills/swarm-pr-review/SKILL.md +61 -14
  3. package/dist/background/candidate-contract.d.ts +3 -0
  4. package/dist/cli/{config-doctor-0b5z13vq.js → config-doctor-fnmfd35x.js} +3 -3
  5. package/dist/cli/{core-m5y25n0j.js → core-p5cyej3r.js} +2 -2
  6. package/dist/cli/{curation-policy-bn7g8n40.js → curation-policy-d52h4g8t.js} +2 -2
  7. package/dist/cli/{curator-b7f6nt8h.js → curator-3zpdqt9r.js} +14 -14
  8. package/dist/cli/{curator-llm-factory-0mkbw2hg.js → curator-llm-factory-2h0xb62t.js} +14 -14
  9. package/dist/cli/{guardrail-explain-p2htdqkz.js → guardrail-explain-yktan15c.js} +15 -15
  10. package/dist/cli/{guardrail-log-rqt9wrzw.js → guardrail-log-82da8y5a.js} +4 -4
  11. package/dist/cli/{hive-promoter-61sjdrgt.js → hive-promoter-af5yaxvt.js} +14 -14
  12. package/dist/cli/{index-jq7n7w9y.js → index-7d5jseea.js} +2 -2
  13. package/dist/cli/{index-yf6p4wc5.js → index-7kdd75se.js} +3 -3
  14. package/dist/cli/{index-vw75bhf3.js → index-898f16j9.js} +1 -1
  15. package/dist/cli/{index-0an7an2s.js → index-8bnzzv3b.js} +2 -2
  16. package/dist/cli/{index-hnprx6qv.js → index-8n4c3vec.js} +2 -2
  17. package/dist/cli/{index-6fwr2w8v.js → index-95bj4kaw.js} +2 -2
  18. package/dist/cli/{index-7nhrn9sy.js → index-gtbmabws.js} +1 -1
  19. package/dist/cli/{index-hgrzjhsf.js → index-j1xmren9.js} +3 -3
  20. package/dist/cli/{index-r7tg8kjh.js → index-jvk119ck.js} +5 -5
  21. package/dist/cli/{index-v1d4qz8y.js → index-n408rw7n.js} +1 -1
  22. package/dist/cli/{index-wysn7pcz.js → index-n8jncheh.js} +1 -1
  23. package/dist/cli/{index-a98msw3z.js → index-p9dsb0tw.js} +1 -1
  24. package/dist/cli/{index-dn3nkwbc.js → index-pg7n141e.js} +1 -1
  25. package/dist/cli/{index-ff7b0cr5.js → index-pj9h75cc.js} +16 -16
  26. package/dist/cli/{index-7f72x6nv.js → index-q1q8b85k.js} +435 -172
  27. package/dist/cli/{index-dbg3agxz.js → index-qksjaxpd.js} +4 -4
  28. package/dist/cli/{index-m9csth1h.js → index-wf35ka4z.js} +2 -2
  29. package/dist/cli/{index-acc18zrj.js → index-xz8f1n1a.js} +2 -2
  30. package/dist/cli/index.js +14 -14
  31. package/dist/cli/{knowledge-escalator-twwz5a0d.js → knowledge-escalator-7q59skqg.js} +3 -3
  32. package/dist/cli/{knowledge-events-hgaz06m8.js → knowledge-events-3nwfdpq7.js} +1 -1
  33. package/dist/cli/{knowledge-store-46jrzgvm.js → knowledge-store-0d83rhh3.js} +1 -1
  34. package/dist/cli/{knowledge-validator-7vnqwjtv.js → knowledge-validator-6mfx91a2.js} +4 -4
  35. package/dist/cli/{scan-cursor-acsjpv2n.js → scan-cursor-rc8q12ss.js} +2 -2
  36. package/dist/cli/{schema-4dy7emnw.js → schema-n9eaxp3a.js} +2 -2
  37. package/dist/cli/{skill-generator-a48t83hf.js → skill-generator-q7c6vadg.js} +5 -5
  38. package/dist/commands/registry.d.ts +1 -1
  39. package/dist/git/pr-workflow-state.d.ts +3 -1
  40. package/dist/hooks/compaction-customizer.d.ts +8 -0
  41. package/dist/hooks/pr-workflow-gate.d.ts +19 -13
  42. package/dist/index.js +108 -103
  43. package/dist/tools/complete-pr-workflow.d.ts +6 -0
  44. package/dist/tools/gh-evidence.d.ts +6 -0
  45. package/dist/tools/prepare-pr-workflow-checkout.d.ts +11 -0
  46. package/package.json +1 -1
@@ -702,7 +702,7 @@ async function applyConfidenceFloorAction(directory, touched, options) {
702
702
  const recovered = touched.filter((e) => e.confidence > CONFIDENCE_FLOOR + FLOOR_EPSILON && e.confidence_floor_demoted);
703
703
  if (atFloor.length === 0 && recovered.length === 0)
704
704
  return;
705
- const { readKnowledgeCounterRollups, effectiveRetrievalOutcomes } = await import("./knowledge-events-hgaz06m8.js");
705
+ const { readKnowledgeCounterRollups, effectiveRetrievalOutcomes } = await import("./knowledge-events-3nwfdpq7.js");
706
706
  const rollups = await readKnowledgeCounterRollups(directory);
707
707
  const flagIds = new Set;
708
708
  for (const e of atFloor) {
@@ -769,11 +769,11 @@ async function applyConfidenceFloorAction(directory, touched, options) {
769
769
  });
770
770
  }
771
771
  if (action === "quarantine" && toQuarantine.length > 0) {
772
- const { quarantineEntry } = await import("./knowledge-validator-7vnqwjtv.js");
773
- const { KnowledgeConfigSchema } = await import("./schema-4dy7emnw.js");
772
+ const { quarantineEntry } = await import("./knowledge-validator-6mfx91a2.js");
773
+ const { KnowledgeConfigSchema } = await import("./schema-n9eaxp3a.js");
774
774
  let config;
775
775
  try {
776
- const { loadPluginConfigWithMeta } = await import("./index-hgrzjhsf.js");
776
+ const { loadPluginConfigWithMeta } = await import("./index-j1xmren9.js");
777
777
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
778
778
  config = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
779
779
  } catch {
@@ -15,10 +15,10 @@ import {
15
15
  import {
16
16
  init_schema,
17
17
  stripKnownSwarmPrefix
18
- } from "./index-jq7n7w9y.js";
18
+ } from "./index-7d5jseea.js";
19
19
  import {
20
20
  init_constants
21
- } from "./index-v1d4qz8y.js";
21
+ } from "./index-n408rw7n.js";
22
22
  import {
23
23
  __commonJS,
24
24
  __toESM
@@ -9,11 +9,11 @@ import {
9
9
  PluginConfigSchema,
10
10
  init_schema,
11
11
  stripKnownSwarmPrefix
12
- } from "./index-jq7n7w9y.js";
12
+ } from "./index-7d5jseea.js";
13
13
  import {
14
14
  ALL_AGENT_NAMES,
15
15
  init_constants
16
- } from "./index-v1d4qz8y.js";
16
+ } from "./index-n408rw7n.js";
17
17
 
18
18
  // src/services/config-doctor.ts
19
19
  init_constants();
package/dist/cli/index.js CHANGED
@@ -6,19 +6,19 @@ import {
6
6
  getPluginConfigDir,
7
7
  getPluginLockFilePaths,
8
8
  resolveCommand
9
- } from "./index-7f72x6nv.js";
9
+ } from "./index-q1q8b85k.js";
10
10
  import"./index-41hkt36g.js";
11
11
  import"./index-1m1ksyqt.js";
12
- import"./index-m9csth1h.js";
13
- import"./index-acc18zrj.js";
12
+ import"./index-wf35ka4z.js";
13
+ import"./index-xz8f1n1a.js";
14
14
  import"./index-brh827g0.js";
15
15
  import"./index-yyyk63kk.js";
16
16
  import"./index-y8552snf.js";
17
17
  import"./index-4905hd2m.js";
18
18
  import"./index-134d35c1.js";
19
- import"./index-yf6p4wc5.js";
20
- import"./index-r7tg8kjh.js";
21
- import"./index-7nhrn9sy.js";
19
+ import"./index-7kdd75se.js";
20
+ import"./index-jvk119ck.js";
21
+ import"./index-gtbmabws.js";
22
22
  import"./index-v2xrer41.js";
23
23
  import"./index-c8s9a3zh.js";
24
24
  import"./index-9ss2m4rs.js";
@@ -28,7 +28,7 @@ import"./index-556ja8an.js";
28
28
  import"./index-kbfsp07d.js";
29
29
  import"./index-1kyex7z2.js";
30
30
  import"./index-b8zgtz81.js";
31
- import"./index-vw75bhf3.js";
31
+ import"./index-898f16j9.js";
32
32
  import"./index-b9rd29ge.js";
33
33
  import"./index-k46me75h.js";
34
34
  import"./index-ee3x66a5.js";
@@ -36,11 +36,11 @@ import"./index-74hpm6sh.js";
36
36
  import"./index-n0pja0qs.js";
37
37
  import"./index-8fwhhayc.js";
38
38
  import"./index-q1exe2b3.js";
39
- import"./index-hnprx6qv.js";
40
- import"./index-a98msw3z.js";
39
+ import"./index-8n4c3vec.js";
40
+ import"./index-p9dsb0tw.js";
41
41
  import"./index-rtry5xyf.js";
42
- import"./index-dbg3agxz.js";
43
- import"./index-wysn7pcz.js";
42
+ import"./index-qksjaxpd.js";
43
+ import"./index-n8jncheh.js";
44
44
  import"./index-ae75rja9.js";
45
45
  import"./index-rs1f1bh0.js";
46
46
  import"./index-h2waehqq.js";
@@ -48,7 +48,7 @@ import"./index-ed5ykebp.js";
48
48
  import"./index-hfvxhk4z.js";
49
49
  import"./index-7g4c7s5r.js";
50
50
  import"./index-4nt52yr9.js";
51
- import"./index-0an7an2s.js";
51
+ import"./index-8bnzzv3b.js";
52
52
  import"./index-gprxjmm7.js";
53
53
  import"./index-n832052r.js";
54
54
  import"./index-d181x9zr.js";
@@ -57,11 +57,11 @@ import"./index-zgwm4ryv.js";
57
57
  import {
58
58
  init_package,
59
59
  package_default
60
- } from "./index-jq7n7w9y.js";
60
+ } from "./index-7d5jseea.js";
61
61
  import {
62
62
  DEFAULT_AGENT_CONFIGS,
63
63
  init_constants
64
- } from "./index-v1d4qz8y.js";
64
+ } from "./index-n408rw7n.js";
65
65
  import"./index-zjygnfay.js";
66
66
  import"./index-bk5tah7q.js";
67
67
  import"./index-ry0hgg3m.js";
@@ -8,9 +8,9 @@ import {
8
8
  maybeEscalateOnViolation,
9
9
  maybeQuarantineOnContradiction,
10
10
  readRecentEscalations
11
- } from "./index-r7tg8kjh.js";
12
- import"./index-dbg3agxz.js";
13
- import"./index-wysn7pcz.js";
11
+ } from "./index-jvk119ck.js";
12
+ import"./index-qksjaxpd.js";
13
+ import"./index-n8jncheh.js";
14
14
  import"./index-ae75rja9.js";
15
15
  import"./index-rs1f1bh0.js";
16
16
  import"./index-h2waehqq.js";
@@ -28,7 +28,7 @@ import {
28
28
  resolveKnowledgeCounterBaselinePath,
29
29
  resolveKnowledgeEventsPath,
30
30
  resolveLegacyApplicationLogPath
31
- } from "./index-wysn7pcz.js";
31
+ } from "./index-n8jncheh.js";
32
32
  import"./index-ae75rja9.js";
33
33
  import"./index-rs1f1bh0.js";
34
34
  import"./index-h2waehqq.js";
@@ -41,7 +41,7 @@ import {
41
41
  transactKnowledge,
42
42
  transactKnowledgeWithCas,
43
43
  wordBigrams
44
- } from "./index-dbg3agxz.js";
44
+ } from "./index-qksjaxpd.js";
45
45
  import {
46
46
  resolveHiveDataDir
47
47
  } from "./index-ae75rja9.js";
@@ -23,11 +23,11 @@ import {
23
23
  validateLesson,
24
24
  validateSkillCandidatePath,
25
25
  validateSkillPath
26
- } from "./index-hnprx6qv.js";
27
- import"./index-a98msw3z.js";
26
+ } from "./index-8n4c3vec.js";
27
+ import"./index-p9dsb0tw.js";
28
28
  import"./index-rtry5xyf.js";
29
- import"./index-dbg3agxz.js";
30
- import"./index-wysn7pcz.js";
29
+ import"./index-qksjaxpd.js";
30
+ import"./index-n8jncheh.js";
31
31
  import"./index-ae75rja9.js";
32
32
  import"./index-rs1f1bh0.js";
33
33
  import"./index-h2waehqq.js";
@@ -4,8 +4,8 @@ import {
4
4
  alreadyCuratedThisGeneration,
5
5
  claimNextScanBatch,
6
6
  getScanStatus
7
- } from "./index-7nhrn9sy.js";
8
- import"./index-dbg3agxz.js";
7
+ } from "./index-gtbmabws.js";
8
+ import"./index-qksjaxpd.js";
9
9
  import"./index-ae75rja9.js";
10
10
  import"./index-rs1f1bh0.js";
11
11
  import"./index-h2waehqq.js";
@@ -96,8 +96,8 @@ import {
96
96
  resolveGeneratedAgentRole,
97
97
  resolveGuardrailsConfig,
98
98
  stripKnownSwarmPrefix
99
- } from "./index-jq7n7w9y.js";
100
- import"./index-v1d4qz8y.js";
99
+ } from "./index-7d5jseea.js";
100
+ import"./index-n408rw7n.js";
101
101
  import"./index-zjygnfay.js";
102
102
  import"./index-bk5tah7q.js";
103
103
  import"./index-bpmtbmy9.js";
@@ -33,12 +33,12 @@ import {
33
33
  sanitizeSlug,
34
34
  selectCandidateEntries,
35
35
  writeEvalStub
36
- } from "./index-yf6p4wc5.js";
37
- import"./index-hnprx6qv.js";
38
- import"./index-a98msw3z.js";
36
+ } from "./index-7kdd75se.js";
37
+ import"./index-8n4c3vec.js";
38
+ import"./index-p9dsb0tw.js";
39
39
  import"./index-rtry5xyf.js";
40
- import"./index-dbg3agxz.js";
41
- import"./index-wysn7pcz.js";
40
+ import"./index-qksjaxpd.js";
41
+ import"./index-n8jncheh.js";
42
42
  import"./index-ae75rja9.js";
43
43
  import"./index-rs1f1bh0.js";
44
44
  import"./index-h2waehqq.js";
@@ -619,7 +619,7 @@ export declare const COMMAND_REGISTRY: {
619
619
  readonly handler: (ctx: CommandContext) => Promise<string>;
620
620
  readonly description: "Clear a stuck PR_REVIEW/PR_FEEDBACK mechanical gate and stop the auto-resume loop [mode] [reason]";
621
621
  readonly args: "[PR_REVIEW|PR_FEEDBACK] [reason...]";
622
- readonly details: "Human-only escape hatch for an unrecoverable PR_REVIEW or PR_FEEDBACK mechanical gate. When the architect cannot reach complete_pr_workflow — for example a compound `git fetch && git checkout` was rejected as read-only shell syntax, the PR head cannot be fetched, or the working tree is on the wrong branch — running this clears the durable gate state for the current session and stops the auto-resume loop without depending on the trapped model. The agent itself cannot run this command; it must call the abort_pr_workflow tool (or ask you to run this command). Both paths funnel into the same fail-closed abortPrWorkflow hook, which refuses while the workflow is armed for publication or while PR workflow lanes are still in flight. An audit event is appended to .swarm/events.jsonl.";
622
+ readonly details: "Human-only escape hatch for an unrecoverable PR_REVIEW or PR_FEEDBACK mechanical gate. When the architect cannot reach complete_pr_workflow — for example a compound `git fetch && git checkout` was rejected as read-only shell syntax, the PR head cannot be fetched, or the working tree is on the wrong branch — running this clears the durable gate state for the current session and stops the auto-resume loop without depending on the trapped model. The agent itself cannot run this command; it must call the abort_pr_workflow tool (or ask you to run this command). Both paths funnel into the same fail-closed abortPrWorkflow hook, which refuses while the workflow is armed for publication or while PR workflow lanes are still in flight. When checkout preparation preserved a stash, the result instructs the caller to run prepare_pr_workflow_checkout operation=restore after the clear. An audit event is appended to .swarm/events.jsonl.";
623
623
  readonly category: "utility";
624
624
  readonly toolPolicy: "restricted";
625
625
  };
@@ -28,7 +28,9 @@ declare function activeOperations(gitDir: string): Promise<string[]>;
28
28
  * Unknown Git state fails closed; ordinary tracked/untracked dirt is explicitly
29
29
  * distinguished from conflict and in-progress-operation recovery states.
30
30
  */
31
- export declare function classifyPrWorkflowGitState(directory: string): Promise<PrWorkflowGitState>;
31
+ export declare function classifyPrWorkflowGitState(directory: string, options?: {
32
+ ignoredPaths?: readonly string[];
33
+ }): Promise<PrWorkflowGitState>;
32
34
  export declare const _internals: {
33
35
  runGitCapture: typeof runGitCapture;
34
36
  activeOperations: typeof activeOperations;
@@ -13,6 +13,14 @@ import type { PluginConfig } from '../config';
13
13
  * (`- [ ] <id>: ... ← CURRENT`), and the legacy `extractIncompleteTasks` path
14
14
  * relays it verbatim whenever plan.md was derived from or hand-written in the
15
15
  * canonical ` ← CURRENT` format, so the strip is applied to both paths.
16
+ *
17
+ * Callers must pass TASK_EXTRACT_PRE_STRIP_CHARS to the extractor so the full
18
+ * marker always fits before this function runs. `(?:\.\.\.)?` is defense-in-depth
19
+ * for hand-authored plan.md lines that end with `← CURRENT...` — the programmatic
20
+ * extractor never appends `...` when TASK_EXTRACT_PRE_STRIP_CHARS is MAX_SAFE_INTEGER.
21
+ *
22
+ * Uses `[^\S\r\n]*` (horizontal whitespace only) to avoid O(n²) regex backtracking
23
+ * across line boundaries that `\s*` would cause on large inputs.
16
24
  */
17
25
  declare function stripTaskActionMarkers(value: string): string;
18
26
  interface CompactionFact {
@@ -4,7 +4,7 @@ import { type LaneOutputArtifact } from '../background/lane-output-store.js';
4
4
  import { type BackgroundDelegationRecord, type BackgroundDelegationResult, findByBatchId } from '../background/pending-delegations.js';
5
5
  import { type PrReviewInlineTriggerRow } from '../background/pr-review-trigger-contract.js';
6
6
  import { type RevisionDigestResult, resolveCommitCountSince, resolveCommitCountSinceAsync, resolveCurrentGitHead, resolveCurrentGitHeadAsync, resolveCurrentUpstreamPushTarget, resolveCurrentUpstreamPushTargetAsync, resolveCurrentUpstreamRemoteRef, resolveExactRemoteBranchHead, resolveExactRemoteBranchHeadAsync, resolveIsExactSingleChildCommit, resolveIsExactSingleChildCommitAsync, resolveIsWorkingTreeClean, resolveIsWorkingTreeCleanAsync, resolvePrReviewDiffStats, resolvePrReviewDiffStatsAsync, resolvePrWorkflowRevisionDigest, resolvePrWorkflowRevisionDigestDetailed, resolveRemoteRefsContainingHead, resolveRemoteRefsContainingHeadAsync } from '../background/workspace-snapshot.js';
7
- import { type PrWorkflowGitState } from '../git/pr-workflow-state.js';
7
+ import { classifyPrWorkflowGitState, type PrWorkflowGitState } from '../git/pr-workflow-state.js';
8
8
  export declare const PR_REVIEW_BASE_DIMENSION_IDS: readonly ["intent-architecture", "correctness-state", "tests-falsifiability", "security-trust", "reliability-performance", "compatibility-delivery"];
9
9
  export declare const PR_REVIEW_REQUIRED_MICRO_LANE_IDS: ("auth-identity-secrets" | "untrusted-input-boundaries" | "subprocess-platform" | "concurrency-state" | "dependencies-build-release" | "api-schema-migrations" | "test-infrastructure" | "ui-accessibility-i18n" | "privacy-observability" | "generated-provenance" | "unclassified-risk")[];
10
10
  export type PrReviewBaseDimensionId = (typeof PR_REVIEW_BASE_DIMENSION_IDS)[number];
@@ -33,7 +33,7 @@ export interface PrReviewDiscoveryLaneValidationInput {
33
33
  result: BackgroundDelegationResult;
34
34
  artifact: LaneOutputArtifact | null;
35
35
  expected: {
36
- mode: 'swarm-pr-review:base' | 'swarm-pr-review:micro';
36
+ mode: 'swarm-pr-review:base' | 'swarm-pr-review:micro' | 'swarm-pr-review:council';
37
37
  workflowLane: string;
38
38
  ownedWorkflowLanes?: readonly string[];
39
39
  prHeadSha: string;
@@ -359,6 +359,13 @@ export declare function readPrWorkflowGateState(directory: string, sessionID: st
359
359
  export declare function withPrWorkflowCheckoutPreparationLock<T>(directory: string, sessionID: string, action: (state: PrWorkflowGateState, controls: {
360
360
  markRecoveryRequired: (gitState: PrWorkflowGitState) => Promise<PrWorkflowGateState>;
361
361
  }) => Promise<T>): Promise<T>;
362
+ /**
363
+ * Serialize post-terminal checkout restoration against both checkout mutations
364
+ * and same-session gate activation. Holding the session-state lock while the
365
+ * caller restores makes the inactive-gate check atomic with respect to a new
366
+ * activatePrWorkflow/persistState call.
367
+ */
368
+ export declare function withInactivePrWorkflowCheckoutRestoreLock<T>(directory: string, sessionID: string, action: () => Promise<T>): Promise<T>;
362
369
  export declare function clearPrWorkflowGateState(directory: string, sessionID: string, expectedRevision?: number): Promise<void>;
363
370
  /**
364
371
  * Abort an active PR workflow gate without reaching terminal completion.
@@ -380,13 +387,11 @@ export declare function clearPrWorkflowGateState(directory: string, sessionID: s
380
387
  * commit. The tool gate refuses armed abort too (defense in depth).
381
388
  * 4. Refuses while open `swarm-pr-*` delegations exist, matching
382
389
  * `completePrWorkflow` — aborting mid-flight would orphan running lanes.
383
- * 5. Issue #2131 finding 1a: a `recovery` abort of a BOUND gate (prHeadSha
384
- * set checkout succeeded) is refused unless a controller-recorded
385
- * terminal recovery condition (`checkoutRecovery`) exists. Binding
386
- * succeeded, so "checkout unreachable" no longer justifies a recovery
387
- * abort; the architect must complete, or the user must authorize a
388
- * `force` abort. `force` may clear a bound gate without a recovery
389
- * condition (explicit user override).
390
+ * 5. A `recovery` abort may clear an unbound or bound gate once every lane
391
+ * has settled. This is the bounded escape hatch for exhausted discovery,
392
+ * validation, or checkout recovery; requiring a pre-bind
393
+ * `checkoutRecovery` marker here would strand failures discovered only
394
+ * after the head was bound. `force` remains the explicit user override.
390
395
  *
391
396
  * Records a non-fatal audit event into the existing `.swarm/events.jsonl`
392
397
  * (no new ledger file), then delegates to `clearPrWorkflowGateState`.
@@ -536,6 +541,7 @@ export declare const _test_exports: {
536
541
  openCheckoutLock: typeof openCheckoutLockFile;
537
542
  removeCheckoutLock: typeof removeCheckoutLockFile;
538
543
  checkoutMutationActionTimeoutMs: number;
544
+ classifyPrWorkflowGitStateAsync: typeof classifyPrWorkflowGitState;
539
545
  resolveCurrentGitHead: typeof resolveCurrentGitHead;
540
546
  resolveCurrentGitHeadAsync: typeof resolveCurrentGitHeadAsync;
541
547
  resolveCurrentUpstreamPushTarget: typeof resolveCurrentUpstreamPushTarget;
@@ -796,10 +802,10 @@ declare function analyzePrReviewBatchRecordIntegrity(args: {
796
802
  expectedPrHeadSha?: string;
797
803
  }): BatchRecordIntegrityAnalysis[];
798
804
  /**
799
- * Validate a just-collected base/micro discovery result before the delegation
800
- * ledger publishes it as completed. The caller supplies the prospective result
801
- * and the exact stored artifact, so this pure validator cannot accidentally
802
- * accept stale terminal state or a different output reference.
805
+ * Validate a just-collected base, micro, or council discovery result before the
806
+ * delegation ledger publishes it as completed. The caller supplies the
807
+ * prospective result and exact stored artifact, so this pure validator cannot
808
+ * accidentally accept stale terminal state or a different output reference.
803
809
  */
804
810
  export declare function validatePrReviewDiscoveryLaneCompletion(input: PrReviewDiscoveryLaneValidationInput): PrReviewLaneValidationResult;
805
811
  /** Require at least one semantically valid discovery row or CLEAN attestation. */