opencode-swarm 7.148.0 → 7.148.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 (82) hide show
  1. package/.opencode/skills/swarm-pr-review/SKILL.md +6 -4
  2. package/.opencode/skills/swarm-pr-review/references/findings-persistence-contract.md +33 -1
  3. package/.opencode/skills/swarm-pr-review/references/lane-output-recoverability.md +2 -2
  4. package/.opencode/skills/swarm-pr-review/references/parser-dry-run.md +1 -2
  5. package/.opencode/skills/swarm-pr-review/references/prompt-templates.md +11 -3
  6. package/dist/background/pending-delegations.d.ts +1 -1
  7. package/dist/background/pr-review-collection-receipt.d.ts +2 -2
  8. package/dist/background/pr-review-contract.d.ts +148 -0
  9. package/dist/background/pr-review-trigger-contract.d.ts +1 -0
  10. package/dist/cli/{config-doctor-z2wam5wn.js → config-doctor-6danhdcy.js} +2 -2
  11. package/dist/cli/{core-k7m76ce0.js → core-0ghwny8q.js} +1 -1
  12. package/dist/cli/{curation-policy-kd8j8cne.js → curation-policy-hkdghd3a.js} +6 -6
  13. package/dist/cli/{curator-llm-factory-4qt8b15s.js → curator-llm-factory-6n47j5qn.js} +27 -27
  14. package/dist/cli/{curator-jwpm52kg.js → curator-wvm7qbkk.js} +27 -27
  15. package/dist/cli/{evidence-summary-service-90z295j3.js → evidence-summary-service-0xwrkmf9.js} +11 -11
  16. package/dist/cli/{gate-evidence-3q6q71fw.js → gate-evidence-6e5yhcy6.js} +6 -6
  17. package/dist/cli/{guardrail-explain-44xt373y.js → guardrail-explain-tgv7rvap.js} +28 -28
  18. package/dist/cli/{guardrail-log-kbp5jztb.js → guardrail-log-k0zk6rbs.js} +3 -3
  19. package/dist/cli/{guardrail-reset-vpazhh8k.js → guardrail-reset-4fw16xmb.js} +27 -27
  20. package/dist/cli/{hive-promoter-tdrkz9nh.js → hive-promoter-zemwxxw1.js} +27 -27
  21. package/dist/cli/{index-dfvh1r8g.js → index-03wz9h63.js} +29 -29
  22. package/dist/cli/{index-d3bdr78h.js → index-092deqxs.js} +2 -1
  23. package/dist/cli/{index-pgvx3rkq.js → index-2n9rwvcc.js} +1 -1
  24. package/dist/cli/{index-7hctrdk8.js → index-2zz8b0rb.js} +2 -2
  25. package/dist/cli/{index-qwj7qjjp.js → index-3pbvdde0.js} +2 -2
  26. package/dist/cli/{index-ykjjqg79.js → index-5vyej8pc.js} +6 -6
  27. package/dist/cli/{index-9pmmexsd.js → index-7jaq84cg.js} +1 -1
  28. package/dist/cli/{index-52gnz782.js → index-84ytts36.js} +4 -4
  29. package/dist/cli/{index-k6h5yc1j.js → index-crpkb5x6.js} +5 -5
  30. package/dist/cli/{index-p62we2ar.js → index-ebt47fnp.js} +1 -1
  31. package/dist/cli/{index-q81s0m8k.js → index-ghbkknjz.js} +79 -38
  32. package/dist/cli/{index-crpb0qke.js → index-hsq8nyen.js} +4522 -2938
  33. package/dist/cli/{index-sycndcwd.js → index-k2ad2vtb.js} +1 -1
  34. package/dist/cli/{index-qcm97jfh.js → index-m5z2fgs4.js} +1 -1
  35. package/dist/cli/{index-n96wwf56.js → index-mbcyz77e.js} +4 -4
  36. package/dist/cli/{index-702zx3rk.js → index-mgcffsk0.js} +1 -1
  37. package/dist/cli/{index-7ac5z627.js → index-ndqhtgrc.js} +1 -1
  38. package/dist/cli/{index-ffevkn7k.js → index-nqwn8sf0.js} +1 -1
  39. package/dist/cli/{index-016708th.js → index-nxydm56k.js} +2 -2
  40. package/dist/cli/{index-dmbaaz6d.js → index-pzt7ed53.js} +4 -4
  41. package/dist/cli/{index-n0fpefqx.js → index-q6kscnts.js} +4 -4
  42. package/dist/cli/{index-zwpttdgn.js → index-r9g7ymv2.js} +1 -1
  43. package/dist/cli/{index-6q35swn2.js → index-rsn4jm90.js} +1 -1
  44. package/dist/cli/{index-jpa03jcc.js → index-s0nss8c4.js} +1 -1
  45. package/dist/cli/{index-gwrv6c56.js → index-s0s1e5jp.js} +7 -7
  46. package/dist/cli/{index-07zgs6y0.js → index-wgrvq2bc.js} +14 -10
  47. package/dist/cli/{index-y586zet4.js → index-x4kgn37c.js} +2 -2
  48. package/dist/cli/{index-h879g4r4.js → index-x9jppg8b.js} +3 -3
  49. package/dist/cli/{index-rcjq8dm4.js → index-x9q0b3a8.js} +2 -2
  50. package/dist/cli/{index-x4rxh8j9.js → index-xn7h24x4.js} +3 -3
  51. package/dist/cli/{index-2y14mjfn.js → index-zpn3wqvp.js} +10 -7
  52. package/dist/cli/index.js +27 -27
  53. package/dist/cli/{knowledge-escalator-0qnm48g8.js → knowledge-escalator-rfw35yt1.js} +11 -11
  54. package/dist/cli/{knowledge-events-3zv81nzp.js → knowledge-events-wmjm5wn6.js} +9 -9
  55. package/dist/cli/{knowledge-link-w91bcyx2.js → knowledge-link-5dctq0ax.js} +5 -5
  56. package/dist/cli/{knowledge-store-njtx6wj1.js → knowledge-store-f2ev6s5p.js} +8 -6
  57. package/dist/cli/{knowledge-validator-7eqj5afv.js → knowledge-validator-6cmwpx9e.js} +8 -8
  58. package/dist/cli/{pending-delegations-k4x00mqc.js → pending-delegations-h4gr264y.js} +3 -3
  59. package/dist/cli/{pr-subscriptions-x2mqc3f1.js → pr-subscriptions-9mg6mwc0.js} +3 -3
  60. package/dist/cli/{runner-gfzkp9nv.js → runner-9g2pcg10.js} +6 -6
  61. package/dist/cli/{scan-cursor-a6dhyf55.js → scan-cursor-x1ma7edk.js} +7 -7
  62. package/dist/cli/{schema-p0vn1zgh.js → schema-g5ggmb47.js} +1 -1
  63. package/dist/cli/{scope-persistence-zs97zkt7.js → scope-persistence-gt0zpp6a.js} +7 -7
  64. package/dist/cli/{skill-generator-5qg15q1j.js → skill-generator-q6m110d5.js} +13 -13
  65. package/dist/cli/{telemetry-xzy0qeap.js → telemetry-1pnsftp0.js} +1 -1
  66. package/dist/cli/{worktree-collision-ownership-q2gswg16.js → worktree-collision-ownership-e0p490vw.js} +3 -3
  67. package/dist/cli/{worktree-isolation-ndb5fwys.js → worktree-isolation-akwwt8n5.js} +27 -27
  68. package/dist/consensus/contracts.d.ts +5 -1
  69. package/dist/consensus/corpus.d.ts +26 -3
  70. package/dist/consensus/miner.d.ts +5 -1
  71. package/dist/hooks/curator.d.ts +41 -1
  72. package/dist/hooks/knowledge-store.d.ts +26 -2
  73. package/dist/hooks/pr-workflow-gate.d.ts +26 -1
  74. package/dist/hooks/skill-scoring.d.ts +13 -3
  75. package/dist/hooks/skill-usage-log.d.ts +140 -17
  76. package/dist/hooks/skill-usage-pending.d.ts +392 -0
  77. package/dist/index.js +513 -505
  78. package/dist/observability/catalog.d.ts +6 -4
  79. package/dist/telemetry.d.ts +35 -1
  80. package/dist/tools/write-pr-review-artifact.d.ts +7 -0
  81. package/dist/tools/write-pr-review-trigger-eval.d.ts +3 -1
  82. package/package.json +1 -1
@@ -35,7 +35,7 @@ path substituted for `<handoff_artifact_path>`:
35
35
  ```
36
36
 
37
37
  `<run_id>` is a stable identifier for this review run, such as
38
- `pr-<number>-<YYYYMMDDHHMMSS>` or the existing review artifact run ID when one
38
+ `pr-review-<YYYYMMDDHHMMSSmmm>` or the existing review artifact run ID when one
39
39
  was already created. Under Profile A, the exact command is parsed mechanically:
40
40
  the controller validates the terminal review, the bounded handoff artifact, and
41
41
  its provenance before atomically replacing the review gate with an unbound
@@ -1443,7 +1443,7 @@ For each candidate, the reviewer must determine:
1443
1443
  Reviewer output format:
1444
1444
 
1445
1445
  ```text
1446
- [REVIEWED] | candidate_id | classification | evidence_type | final_severity | introduced_by_pr: YES/NO/UNKNOWN | file:line | rationale | falsification_probe | reviewer_id
1446
+ [REVIEWED] | item_id | classification | evidence_type | severity | introduced_by_pr | file:line | rationale | probe | reviewer_notes
1447
1447
  ```
1448
1448
 
1449
1449
  For the mechanically derived `CLEAN-REVIEW` sentinel, use the same exact row
@@ -1535,14 +1535,14 @@ The critic must challenge:
1535
1535
  Critic output format:
1536
1536
 
1537
1537
  ```text
1538
- [CRITIC] | finding_id | UPHELD/DOWNGRADED/DISPROVED/NEEDS_MORE_EVIDENCE | final_severity | reason | required_report_change
1538
+ [CRITIC] | item_id | status | severity | rationale | required_change
1539
1539
  ```
1540
1540
 
1541
1541
  ## Verdict row contract
1542
1542
 
1543
1543
  The `[CRITIC]` row in the format above is **mandatory contract**, not advisory output. A critic response that does not end with that exact row format is treated as a planning preamble, not a verdict, and must be re-dispatched. Do not proceed past Phase 8 join barrier until each dispatched critic lane has produced a parseable `[CRITIC]` row.
1544
1544
 
1545
- **Re-dispatch trigger:** when a critic lane response is missing the verdict row, the orchestrator must automatically re-dispatch that lane with the explicit instruction: "Your final line MUST be exactly the Phase 8 contract row: `[CRITIC] | finding_id | UPHELD/DOWNGRADED/DISPROVED/NEEDS_MORE_EVIDENCE | final_severity | reason | required_report_change`. A response without that exact row will be treated as a planning message and re-dispatched." Do not synthesize findings from the planning preamble; only from the re-dispatched verdict.
1545
+ **Re-dispatch trigger:** when a critic lane response is missing the verdict row, the orchestrator must automatically re-dispatch that lane with the explicit instruction: "Your final line MUST be exactly the Phase 8 contract row: `[CRITIC] | item_id | status | severity | rationale | required_change`. Use only enum values from `references/findings-persistence-contract.md`. A response without that exact row will be treated as a planning message and re-dispatched." Do not synthesize findings from the planning preamble; only from the re-dispatched verdict.
1546
1546
 
1547
1547
  `NEEDS_MORE_EVIDENCE` is deliberately non-terminal and never satisfies critic
1548
1548
  settlement. Re-dispatch a narrower critic/probe lane or report the dimension
@@ -1914,6 +1914,8 @@ mix the two):
1914
1914
  /swarm pr-feedback <PR_URL> continue from <handoff_artifact_path>
1915
1915
  ```
1916
1916
 
1917
+ Writing the validated handoff durably records one consent offer bound to the exact workflow instance, handoff digest, PR head/URL, and actionable finding set; the first exact continuation confirms it and transitions modes. Internal creation never auto-routes, and malformed, non-actionable, or detached records cannot start PR_FEEDBACK.
1918
+
1917
1919
  ---
1918
1920
 
1919
1921
  For reviewer, critic, and explorer prompt templates, read `references/prompt-templates.md`.
@@ -1,5 +1,21 @@
1
1
  # Findings Persistence Contract (Profile A)
2
2
 
3
+ ## Executable dialect parity
4
+
5
+ The following machine-readable block mirrors `src/background/pr-review-contract.ts`. CI parses it structurally; changing a skill dialect without the executable schema (or vice versa) fails the contract test.
6
+
7
+ <!-- PR_REVIEW_EXECUTABLE_DIALECT_START -->
8
+ reviewer_fields: marker | item_id | classification | evidence_type | severity | introduced_by_pr | file:line | rationale | probe | reviewer_notes
9
+ reviewer_classifications: CONFIRMED | DISPROVED | UNVERIFIED | PRE_EXISTING
10
+ reviewer_evidence_types: STRUCTURALLY_PROVEN | EXECUTION_PROVEN | STATIC_TRACE_PROVEN | PLAUSIBLE_BUT_UNVERIFIED
11
+ critic_fields: marker | item_id | status | severity | rationale | required_change
12
+ critic_statuses: UPHELD | DOWNGRADED | DISPROVED | NEEDS_MORE_EVIDENCE
13
+ severities: CRITICAL | HIGH | MEDIUM | LOW | INFO | NONE
14
+ finding_statuses: PENDING | CONFIRMED | DISPROVED | PRE_EXISTING
15
+ finding_actions: route_to_reviewer | route_to_critic | report | suppress_with_reason | handoff_to_feedback
16
+ artifact_boundaries: post_explorer | post_reviewer | post_critic
17
+ <!-- PR_REVIEW_EXECUTABLE_DIALECT_END -->
18
+
3
19
  The enforced write order, per-boundary disposition matrix, severity semantics,
4
20
  error-reporting shape, and handoff schema for `write_pr_review_artifact`
5
21
  (issue #2277). The entry SKILL.md carries the summary; this reference is the
@@ -164,7 +180,6 @@ review context says prior lanes ran, stop and surface the missing artifact as
164
180
  a coverage gap instead of reclassifying from memory. Append new records rather
165
181
  than overwriting history unless the artifact format explicitly tracks
166
182
  revisions; the latest record for a `finding_id` wins during reload.
167
-
168
183
  There are two durable recovery points (issue #2280). The base-only
169
184
  `post_explorer` checkpoint — written right after base settlement — is
170
185
  sufficient to reconstruct the base candidate ledger and resume a compacted
@@ -174,3 +189,20 @@ full-inventory ledger is the recovery point: `post_reviewer` and
174
189
  `post_critic` must cover the FULL (base+micro) inventory, and later boundary
175
190
  writes upsert any base-only records the micro wave extended (latest record
176
191
  wins).
192
+
193
+ All non-I/O rejections name the offending field, its received value, and the
194
+ legal value/domain. The first omitted `run_id` is atomically reserved and
195
+ returned; later omission is legal only when the active run is unambiguous.
196
+
197
+ ## Profile A run identity and verdict-row codec
198
+
199
+ On the first trigger-evaluation or findings write, an omitted `run_id` is
200
+ atomically reserved at millisecond precision, returned to the caller, and
201
+ persisted in active workflow state; every later write must reuse it. Omission
202
+ is accepted only when exactly one active/reserved run exists, otherwise the
203
+ operation fails closed. `[REVIEWED]` and `[CRITIC]` free-text fields use the
204
+ controller codec: `\\` represents a literal backslash, `\|` a pipe, `\n` a
205
+ newline, and `\r` a carriage return. The byte-zero contract card injected into
206
+ each Profile A lane is authoritative for the live enums and includes positive
207
+ and explicitly discarded negative examples. Discarded examples are
208
+ documentation only and must never be emitted as live marker rows.
@@ -48,8 +48,8 @@ their exact owned workflow lanes are marked salvaged. Council, reviewer, and
48
48
  critic outputs remain fail-closed and require retry when incomplete. `[CLEAN]`
49
49
  is absence evidence and therefore requires a complete transcript. One positive
50
50
  row in a consolidated lane never salvages a sibling dimension whose only
51
- evidence is `[CLEAN]` or missing. Recovery reasons are lane-scoped and use five
52
- kinds: `parser-normalization`, `parser-row-recovery`,
51
+ evidence is `[CLEAN]` or missing. Recovery reasons are lane-scoped and use six
52
+ kinds: `legacy-verdict-row-recovery`, `parser-normalization`, `parser-row-recovery`,
53
53
  `truncated-preview-durable-artifact`,
54
54
  `transcript-incomplete-terminal-candidate`, and
55
55
  `clean-attestation-salvaged` (a `[CLEAN]` attestation conflicting with a
@@ -235,7 +235,7 @@ Candidates (Chunk A — src/utils/):
235
235
  - C-001 | HIGH | null-safety | src/utils/cache.ts:142 | Uncached getter may return undefined on cold start
236
236
 
237
237
  For each candidate, return:
238
- [REVIEWED] | candidate_id | CONFIRMED/DISPROVED/UNVERIFIED/PRE_EXISTING | evidence_type | final_severity | introduced_by_pr | file:line | rationale | falsification_probe | reviewer_id
238
+ [REVIEWED] | item_id | classification | evidence_type | severity | introduced_by_pr | file:line | rationale | probe | reviewer_notes
239
239
 
240
240
  You must check caller context, reachability, schema/middleware/framework mitigations, state-machine constraints, test coverage, PR-introducedness, and severity.
241
241
 
@@ -252,4 +252,3 @@ IMPORTANT: If a finding claims behavior is "new" or "introduced by the PR", you
252
252
  is split before dispatch.
253
253
  - The `invocation_envelope` in the parser response provides audit provenance
254
254
  for every extracted candidate.
255
-
@@ -20,7 +20,11 @@ Candidates:
20
20
  - ...
21
21
 
22
22
  For each candidate, return:
23
- [REVIEWED] | candidate_id | CONFIRMED/DISPROVED/UNVERIFIED/PRE_EXISTING | evidence_type | final_severity | introduced_by_pr | file:line | rationale | falsification_probe | reviewer_id
23
+ [REVIEWED] | item_id | classification | evidence_type | severity | introduced_by_pr | file:line | rationale | probe | reviewer_notes
24
+
25
+ Escape free-text fields with the executable verdict codec: `\\` (backslash),
26
+ `\|` (pipe), `\n` (newline), and `\r` (carriage return). Do not copy the
27
+ contract card's explicitly `DISCARDED` examples as live marker rows.
24
28
 
25
29
  You must check caller context, reachability, schema/middleware/framework mitigations, state-machine constraints, test coverage, PR-introducedness, and severity.
26
30
 
@@ -48,10 +52,14 @@ For each finding, challenge:
48
52
  - whether multiple findings should be grouped.
49
53
 
50
54
  Return:
51
- [CRITIC] | finding_id | UPHELD/DOWNGRADED/DISPROVED/NEEDS_MORE_EVIDENCE | final_severity | reason | required_report_change
55
+ [CRITIC] | item_id | status | severity | rationale | required_change
56
+
57
+ The same free-text escaping rules apply to critic reason and required-change
58
+ fields. A waited collection deadline is terminal: the controller makes one
59
+ bounded partial-salvage attempt, then records any still-active lane as error.
52
60
 
53
61
  REQUIRED FINAL LINE — your final line MUST be exactly the row above (no variations, no labeled fields, no placeholders):
54
- [CRITIC] | finding_id | UPHELD/DOWNGRADED/DISPROVED/NEEDS_MORE_EVIDENCE | final_severity | reason | required_report_change
62
+ [CRITIC] | item_id | status | severity | rationale | required_change
55
63
 
56
64
  A response without this exact row is treated as a planning preamble and re-dispatched. Do not output only a planning or investigation message.
57
65
  ```
@@ -212,7 +212,7 @@ export interface BackgroundPromptSnapshot {
212
212
  truncated: boolean;
213
213
  digest: string;
214
214
  }
215
- export type BackgroundDelegationRecoveryKind = 'parser-normalization' | 'parser-row-recovery' | 'truncated-preview-durable-artifact' | 'transcript-incomplete-terminal-candidate'
215
+ export type BackgroundDelegationRecoveryKind = 'legacy-verdict-row-recovery' | 'parser-normalization' | 'parser-row-recovery' | 'truncated-preview-durable-artifact' | 'transcript-incomplete-terminal-candidate'
216
216
  /**
217
217
  * A `[CLEAN]` attestation was discredited while the artifact's candidate rows
218
218
  * were retained. Distinct from `parser-normalization` (a text-shape repair by
@@ -17,8 +17,8 @@ declare const PrReviewCollectionReceiptPayloadSchema: z.ZodObject<{
17
17
  workflowLane: z.ZodString;
18
18
  outputDigest: z.ZodString;
19
19
  disposition: z.ZodEnum<{
20
- rejected: "rejected";
21
20
  accepted: "accepted";
21
+ rejected: "rejected";
22
22
  }>;
23
23
  reviewItemIds: z.ZodArray<z.ZodString>;
24
24
  }, z.core.$strict>;
@@ -35,8 +35,8 @@ declare const PrReviewCollectionReceiptShedMarkerSchema: z.ZodObject<{
35
35
  workflowLane: z.ZodString;
36
36
  outputDigest: z.ZodString;
37
37
  disposition: z.ZodEnum<{
38
- rejected: "rejected";
39
38
  accepted: "accepted";
39
+ rejected: "rejected";
40
40
  }>;
41
41
  reviewItemCount: z.ZodNumber;
42
42
  reviewItemDigest: z.ZodString;
@@ -0,0 +1,148 @@
1
+ import { type ZodIssue, z } from 'zod';
2
+ export declare const PR_REVIEW_REVIEWER_CLASSIFICATIONS: readonly ["CONFIRMED", "DISPROVED", "UNVERIFIED", "PRE_EXISTING"];
3
+ export declare const PR_REVIEW_REVIEWER_EVIDENCE_TYPES: readonly ["STRUCTURALLY_PROVEN", "EXECUTION_PROVEN", "STATIC_TRACE_PROVEN", "PLAUSIBLE_BUT_UNVERIFIED"];
4
+ export declare const PR_REVIEW_SEVERITIES: readonly ["CRITICAL", "HIGH", "MEDIUM", "LOW", "INFO", "NONE"];
5
+ export declare const PR_REVIEW_CRITIC_STATUSES: readonly ["UPHELD", "DOWNGRADED", "DISPROVED", "NEEDS_MORE_EVIDENCE"];
6
+ export declare const PR_REVIEW_FINDING_STATUSES: readonly ["PENDING", "CONFIRMED", "DISPROVED", "PRE_EXISTING"];
7
+ export declare const PR_REVIEW_FINDING_ACTIONS: readonly ["route_to_reviewer", "route_to_critic", "report", "suppress_with_reason", "handoff_to_feedback"];
8
+ export declare const PR_REVIEW_ARTIFACT_BOUNDARIES: readonly ["post_explorer", "post_reviewer", "post_critic"];
9
+ export declare const PR_REVIEW_CONTRACT_CARD_HEADER = "[PR-REVIEW CONTRACT CARD]";
10
+ export declare const PR_REVIEW_FINDINGS_MAX_BYTES: number;
11
+ export declare const PR_REVIEW_FINDINGS_WRITE_MAX_BYTES: number;
12
+ export declare const PR_REVIEW_HANDOFF_MAX_BYTES: number;
13
+ export declare const PR_REVIEW_HANDOFF_WRITE_MAX_BYTES: number;
14
+ export declare const PR_REVIEW_DISCARDED_EXAMPLE_ITEM_ID = "discarded-id";
15
+ export declare function serializedPrReviewArtifactInputBytes(value: unknown): number;
16
+ export declare const PrReviewRunIdSchema: z.ZodString;
17
+ export declare const PrReviewFindingSchema: z.ZodObject<{
18
+ finding_id: z.ZodString;
19
+ status: z.ZodEnum<{
20
+ PENDING: "PENDING";
21
+ CONFIRMED: "CONFIRMED";
22
+ DISPROVED: "DISPROVED";
23
+ PRE_EXISTING: "PRE_EXISTING";
24
+ }>;
25
+ file_line: z.ZodString;
26
+ evidence: z.ZodString;
27
+ next_action: z.ZodEnum<{
28
+ route_to_reviewer: "route_to_reviewer";
29
+ route_to_critic: "route_to_critic";
30
+ report: "report";
31
+ suppress_with_reason: "suppress_with_reason";
32
+ handoff_to_feedback: "handoff_to_feedback";
33
+ }>;
34
+ severity: z.ZodOptional<z.ZodEnum<{
35
+ CRITICAL: "CRITICAL";
36
+ HIGH: "HIGH";
37
+ MEDIUM: "MEDIUM";
38
+ LOW: "LOW";
39
+ INFO: "INFO";
40
+ NONE: "NONE";
41
+ }>>;
42
+ category: z.ZodOptional<z.ZodString>;
43
+ }, z.core.$strict>;
44
+ export declare const PrReviewHandoffSchema: z.ZodObject<{
45
+ pr_url: z.ZodString;
46
+ finding_ids: z.ZodArray<z.ZodString>;
47
+ summary: z.ZodString;
48
+ provenance: z.ZodArray<z.ZodString>;
49
+ }, z.core.$strict>;
50
+ export declare const WritePrReviewArtifactArgsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
51
+ kind: z.ZodLiteral<"findings">;
52
+ run_id: z.ZodOptional<z.ZodString>;
53
+ pr_head_sha: z.ZodString;
54
+ boundary: z.ZodEnum<{
55
+ post_explorer: "post_explorer";
56
+ post_reviewer: "post_reviewer";
57
+ post_critic: "post_critic";
58
+ }>;
59
+ records: z.ZodArray<z.ZodObject<{
60
+ finding_id: z.ZodString;
61
+ status: z.ZodEnum<{
62
+ PENDING: "PENDING";
63
+ CONFIRMED: "CONFIRMED";
64
+ DISPROVED: "DISPROVED";
65
+ PRE_EXISTING: "PRE_EXISTING";
66
+ }>;
67
+ file_line: z.ZodString;
68
+ evidence: z.ZodString;
69
+ next_action: z.ZodEnum<{
70
+ route_to_reviewer: "route_to_reviewer";
71
+ route_to_critic: "route_to_critic";
72
+ report: "report";
73
+ suppress_with_reason: "suppress_with_reason";
74
+ handoff_to_feedback: "handoff_to_feedback";
75
+ }>;
76
+ severity: z.ZodOptional<z.ZodEnum<{
77
+ CRITICAL: "CRITICAL";
78
+ HIGH: "HIGH";
79
+ MEDIUM: "MEDIUM";
80
+ LOW: "LOW";
81
+ INFO: "INFO";
82
+ NONE: "NONE";
83
+ }>>;
84
+ category: z.ZodOptional<z.ZodString>;
85
+ }, z.core.$strict>>;
86
+ }, z.core.$strict>, z.ZodObject<{
87
+ kind: z.ZodLiteral<"handoff">;
88
+ run_id: z.ZodOptional<z.ZodString>;
89
+ pr_head_sha: z.ZodString;
90
+ handoff: z.ZodObject<{
91
+ pr_url: z.ZodString;
92
+ finding_ids: z.ZodArray<z.ZodString>;
93
+ summary: z.ZodString;
94
+ provenance: z.ZodArray<z.ZodString>;
95
+ }, z.core.$strict>;
96
+ }, z.core.$strict>], "kind">;
97
+ export type PrReviewVerdictKind = 'reviewer' | 'critic';
98
+ export interface PrReviewVerdictDescriptor {
99
+ marker: '[REVIEWED]' | '[CRITIC]';
100
+ fieldCount: number;
101
+ fieldRoles: readonly string[];
102
+ schema: z.ZodType<readonly string[]>;
103
+ }
104
+ export declare const PrReviewReviewerVerdictFieldsSchema: z.ZodTuple<[z.ZodLiteral<"[REVIEWED]">, z.ZodString, z.ZodEnum<{
105
+ CONFIRMED: "CONFIRMED";
106
+ DISPROVED: "DISPROVED";
107
+ UNVERIFIED: "UNVERIFIED";
108
+ PRE_EXISTING: "PRE_EXISTING";
109
+ }>, z.ZodEnum<{
110
+ STRUCTURALLY_PROVEN: "STRUCTURALLY_PROVEN";
111
+ EXECUTION_PROVEN: "EXECUTION_PROVEN";
112
+ STATIC_TRACE_PROVEN: "STATIC_TRACE_PROVEN";
113
+ PLAUSIBLE_BUT_UNVERIFIED: "PLAUSIBLE_BUT_UNVERIFIED";
114
+ }>, z.ZodEnum<{
115
+ CRITICAL: "CRITICAL";
116
+ HIGH: "HIGH";
117
+ MEDIUM: "MEDIUM";
118
+ LOW: "LOW";
119
+ INFO: "INFO";
120
+ NONE: "NONE";
121
+ }>, z.ZodString, z.ZodString, z.ZodString, z.ZodString, z.ZodString], null>;
122
+ export declare const PrReviewCriticVerdictFieldsSchema: z.ZodTuple<[z.ZodLiteral<"[CRITIC]">, z.ZodString, z.ZodEnum<{
123
+ DISPROVED: "DISPROVED";
124
+ UPHELD: "UPHELD";
125
+ DOWNGRADED: "DOWNGRADED";
126
+ NEEDS_MORE_EVIDENCE: "NEEDS_MORE_EVIDENCE";
127
+ }>, z.ZodEnum<{
128
+ CRITICAL: "CRITICAL";
129
+ HIGH: "HIGH";
130
+ MEDIUM: "MEDIUM";
131
+ LOW: "LOW";
132
+ INFO: "INFO";
133
+ NONE: "NONE";
134
+ }>, z.ZodString, z.ZodString], null>;
135
+ export declare const PR_REVIEW_VERDICT_ROW_DESCRIPTORS: Record<PrReviewVerdictKind, PrReviewVerdictDescriptor>;
136
+ export type PrReviewVerdictOverflowClass = 'canonical' | 'legacy-fidelity-safe' | 'legacy-lossy';
137
+ export interface ParsedPrReviewVerdictRow {
138
+ marker: string;
139
+ fields: string[];
140
+ overflowClass: PrReviewVerdictOverflowClass;
141
+ recoveredOverflow: boolean;
142
+ }
143
+ export declare function formatPrReviewValidationIssues(issues: readonly ZodIssue[], input: unknown): string[];
144
+ export declare function buildPrReviewContractCard(): string;
145
+ export declare function encodePrReviewVerdictRow(kind: PrReviewVerdictKind, fields: readonly string[]): string;
146
+ export declare function parsePrReviewVerdictRow(line: string, kind: PrReviewVerdictKind): ParsedPrReviewVerdictRow | null;
147
+ export declare function formatPrReviewRuntimeFieldError(field: string, expected: string, got: unknown): string;
148
+ export declare function generatePrReviewRunId(now?: Date): string;
@@ -56,6 +56,7 @@ export declare const PR_REVIEW_TRIGGER_DEFINITIONS: readonly [{
56
56
  readonly micro_lane: "Unclassified high-risk fallback";
57
57
  }];
58
58
  export declare const PR_REVIEW_REQUIRED_TRIGGER_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")[];
59
+ export declare const PR_REVIEW_TRIGGER_RECEIPT_MAX_BYTES: number;
59
60
  export type PrReviewTriggerId = (typeof PR_REVIEW_REQUIRED_TRIGGER_IDS)[number];
60
61
  export declare const PrReviewInlineTriggerRowSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
61
62
  trigger_id: z.ZodEnum<{
@@ -12,8 +12,8 @@ import {
12
12
  shouldRunOnStartup,
13
13
  writeBackupArtifact,
14
14
  writeDoctorArtifact
15
- } from "./index-9pmmexsd.js";
16
- import"./index-702zx3rk.js";
15
+ } from "./index-7jaq84cg.js";
16
+ import"./index-mgcffsk0.js";
17
17
  import"./index-cpg98bh1.js";
18
18
  import"./index-z6xqpmqg.js";
19
19
  import"./index-zjygnfay.js";
@@ -14,7 +14,7 @@ import {
14
14
  resolveWorktreeBaseDir,
15
15
  shortenWorktreePath,
16
16
  writeLaneProfileToDiskReal
17
- } from "./index-7ac5z627.js";
17
+ } from "./index-ndqhtgrc.js";
18
18
  import"./index-cpg98bh1.js";
19
19
  import"./index-9e6fdz2h.js";
20
20
  import"./index-4rhhvd1a.js";
@@ -4,13 +4,13 @@ import {
4
4
  authorizeCuration,
5
5
  buildConfigFingerprintInput,
6
6
  readCohortConfigFingerprint
7
- } from "./index-zwpttdgn.js";
7
+ } from "./index-r9g7ymv2.js";
8
8
  import"./index-rtry5xyf.js";
9
- import"./index-qcm97jfh.js";
10
- import"./index-7hctrdk8.js";
11
- import"./index-2y14mjfn.js";
12
- import"./index-6q35swn2.js";
13
- import"./index-q81s0m8k.js";
9
+ import"./index-m5z2fgs4.js";
10
+ import"./index-2zz8b0rb.js";
11
+ import"./index-zpn3wqvp.js";
12
+ import"./index-rsn4jm90.js";
13
+ import"./index-ghbkknjz.js";
14
14
  import"./index-7g4c7s5r.js";
15
15
  import"./index-bpmtbmy9.js";
16
16
  import"./index-ed5ykebp.js";
@@ -1,45 +1,45 @@
1
1
  // @bun
2
2
  import {
3
3
  createCuratorLLMDelegate
4
- } from "./index-crpb0qke.js";
5
- import"./index-p62we2ar.js";
6
- import"./index-jpa03jcc.js";
7
- import"./index-9pmmexsd.js";
8
- import"./index-ykjjqg79.js";
9
- import"./index-y586zet4.js";
4
+ } from "./index-hsq8nyen.js";
5
+ import"./index-ebt47fnp.js";
6
+ import"./index-s0nss8c4.js";
7
+ import"./index-7jaq84cg.js";
8
+ import"./index-5vyej8pc.js";
9
+ import"./index-x4kgn37c.js";
10
10
  import"./index-134d35c1.js";
11
11
  import"./index-nj6rmyeh.js";
12
12
  import"./index-y8552snf.js";
13
- import"./index-k6h5yc1j.js";
14
- import"./index-016708th.js";
13
+ import"./index-crpkb5x6.js";
14
+ import"./index-nxydm56k.js";
15
15
  import"./index-70ha9e09.js";
16
16
  import"./index-c8s9a3zh.js";
17
17
  import"./index-9ss2m4rs.js";
18
18
  import"./index-g8wwj0sz.js";
19
- import"./index-pgvx3rkq.js";
20
- import"./index-dmbaaz6d.js";
21
- import"./index-n96wwf56.js";
22
- import"./index-zwpttdgn.js";
19
+ import"./index-2n9rwvcc.js";
20
+ import"./index-pzt7ed53.js";
21
+ import"./index-mbcyz77e.js";
22
+ import"./index-r9g7ymv2.js";
23
23
  import"./index-rtry5xyf.js";
24
24
  import"./index-zsrtt42s.js";
25
- import"./index-d3bdr78h.js";
25
+ import"./index-092deqxs.js";
26
26
  import"./index-fxvgaeq4.js";
27
- import"./index-n0fpefqx.js";
28
- import"./index-7ac5z627.js";
29
- import"./index-52gnz782.js";
30
- import"./index-h879g4r4.js";
27
+ import"./index-q6kscnts.js";
28
+ import"./index-ndqhtgrc.js";
29
+ import"./index-84ytts36.js";
30
+ import"./index-x9jppg8b.js";
31
31
  import"./index-556ja8an.js";
32
32
  import"./index-b43rt5ph.js";
33
33
  import"./index-q7sjgr1y.js";
34
34
  import"./index-3g0xk6tk.js";
35
35
  import"./index-85gkedsf.js";
36
- import"./index-07zgs6y0.js";
37
- import"./index-gwrv6c56.js";
38
- import"./index-rcjq8dm4.js";
36
+ import"./index-wgrvq2bc.js";
37
+ import"./index-s0s1e5jp.js";
38
+ import"./index-x9q0b3a8.js";
39
39
  import"./index-gprxjmm7.js";
40
40
  import"./index-n832052r.js";
41
- import"./index-ffevkn7k.js";
42
- import"./index-702zx3rk.js";
41
+ import"./index-nqwn8sf0.js";
42
+ import"./index-mgcffsk0.js";
43
43
  import"./index-cpg98bh1.js";
44
44
  import"./index-9e6fdz2h.js";
45
45
  import"./index-4rhhvd1a.js";
@@ -48,12 +48,12 @@ import"./index-z6xqpmqg.js";
48
48
  import"./index-r3mvsbtq.js";
49
49
  import"./index-zjygnfay.js";
50
50
  import"./index-ae75rja9.js";
51
- import"./index-qcm97jfh.js";
52
- import"./index-7hctrdk8.js";
51
+ import"./index-m5z2fgs4.js";
52
+ import"./index-2zz8b0rb.js";
53
53
  import"./index-bk5tah7q.js";
54
- import"./index-2y14mjfn.js";
55
- import"./index-6q35swn2.js";
56
- import"./index-q81s0m8k.js";
54
+ import"./index-zpn3wqvp.js";
55
+ import"./index-rsn4jm90.js";
56
+ import"./index-ghbkknjz.js";
57
57
  import"./index-7g4c7s5r.js";
58
58
  import"./index-bpmtbmy9.js";
59
59
  import"./index-ed5ykebp.js";
@@ -14,45 +14,45 @@ import {
14
14
  runCuratorInit,
15
15
  runCuratorPhase,
16
16
  writeCuratorSummary
17
- } from "./index-crpb0qke.js";
18
- import"./index-p62we2ar.js";
19
- import"./index-jpa03jcc.js";
20
- import"./index-9pmmexsd.js";
21
- import"./index-ykjjqg79.js";
22
- import"./index-y586zet4.js";
17
+ } from "./index-hsq8nyen.js";
18
+ import"./index-ebt47fnp.js";
19
+ import"./index-s0nss8c4.js";
20
+ import"./index-7jaq84cg.js";
21
+ import"./index-5vyej8pc.js";
22
+ import"./index-x4kgn37c.js";
23
23
  import"./index-134d35c1.js";
24
24
  import"./index-nj6rmyeh.js";
25
25
  import"./index-y8552snf.js";
26
- import"./index-k6h5yc1j.js";
27
- import"./index-016708th.js";
26
+ import"./index-crpkb5x6.js";
27
+ import"./index-nxydm56k.js";
28
28
  import"./index-70ha9e09.js";
29
29
  import"./index-c8s9a3zh.js";
30
30
  import"./index-9ss2m4rs.js";
31
31
  import"./index-g8wwj0sz.js";
32
- import"./index-pgvx3rkq.js";
33
- import"./index-dmbaaz6d.js";
34
- import"./index-n96wwf56.js";
35
- import"./index-zwpttdgn.js";
32
+ import"./index-2n9rwvcc.js";
33
+ import"./index-pzt7ed53.js";
34
+ import"./index-mbcyz77e.js";
35
+ import"./index-r9g7ymv2.js";
36
36
  import"./index-rtry5xyf.js";
37
37
  import"./index-zsrtt42s.js";
38
- import"./index-d3bdr78h.js";
38
+ import"./index-092deqxs.js";
39
39
  import"./index-fxvgaeq4.js";
40
- import"./index-n0fpefqx.js";
41
- import"./index-7ac5z627.js";
42
- import"./index-52gnz782.js";
43
- import"./index-h879g4r4.js";
40
+ import"./index-q6kscnts.js";
41
+ import"./index-ndqhtgrc.js";
42
+ import"./index-84ytts36.js";
43
+ import"./index-x9jppg8b.js";
44
44
  import"./index-556ja8an.js";
45
45
  import"./index-b43rt5ph.js";
46
46
  import"./index-q7sjgr1y.js";
47
47
  import"./index-3g0xk6tk.js";
48
48
  import"./index-85gkedsf.js";
49
- import"./index-07zgs6y0.js";
50
- import"./index-gwrv6c56.js";
51
- import"./index-rcjq8dm4.js";
49
+ import"./index-wgrvq2bc.js";
50
+ import"./index-s0s1e5jp.js";
51
+ import"./index-x9q0b3a8.js";
52
52
  import"./index-gprxjmm7.js";
53
53
  import"./index-n832052r.js";
54
- import"./index-ffevkn7k.js";
55
- import"./index-702zx3rk.js";
54
+ import"./index-nqwn8sf0.js";
55
+ import"./index-mgcffsk0.js";
56
56
  import"./index-cpg98bh1.js";
57
57
  import"./index-9e6fdz2h.js";
58
58
  import"./index-4rhhvd1a.js";
@@ -61,12 +61,12 @@ import"./index-z6xqpmqg.js";
61
61
  import"./index-r3mvsbtq.js";
62
62
  import"./index-zjygnfay.js";
63
63
  import"./index-ae75rja9.js";
64
- import"./index-qcm97jfh.js";
65
- import"./index-7hctrdk8.js";
64
+ import"./index-m5z2fgs4.js";
65
+ import"./index-2zz8b0rb.js";
66
66
  import"./index-bk5tah7q.js";
67
- import"./index-2y14mjfn.js";
68
- import"./index-6q35swn2.js";
69
- import"./index-q81s0m8k.js";
67
+ import"./index-zpn3wqvp.js";
68
+ import"./index-rsn4jm90.js";
69
+ import"./index-ghbkknjz.js";
70
70
  import"./index-7g4c7s5r.js";
71
71
  import"./index-bpmtbmy9.js";
72
72
  import"./index-ed5ykebp.js";
@@ -6,21 +6,21 @@ import {
6
6
  loadPlanJsonOnly,
7
7
  mergeDurableGateEntriesFromEvidence,
8
8
  readDurableGateEvidence
9
- } from "./index-ykjjqg79.js";
10
- import"./index-y586zet4.js";
9
+ } from "./index-5vyej8pc.js";
10
+ import"./index-x4kgn37c.js";
11
11
  import"./index-134d35c1.js";
12
12
  import"./index-y8552snf.js";
13
13
  import"./index-9ss2m4rs.js";
14
14
  import"./index-zsrtt42s.js";
15
- import"./index-n0fpefqx.js";
16
- import"./index-7ac5z627.js";
17
- import"./index-h879g4r4.js";
15
+ import"./index-q6kscnts.js";
16
+ import"./index-ndqhtgrc.js";
17
+ import"./index-x9jppg8b.js";
18
18
  import"./index-556ja8an.js";
19
19
  import"./index-85gkedsf.js";
20
20
  import"./index-gprxjmm7.js";
21
21
  import"./index-n832052r.js";
22
- import"./index-ffevkn7k.js";
23
- import"./index-702zx3rk.js";
22
+ import"./index-nqwn8sf0.js";
23
+ import"./index-mgcffsk0.js";
24
24
  import"./index-cpg98bh1.js";
25
25
  import"./index-9e6fdz2h.js";
26
26
  import"./index-4rhhvd1a.js";
@@ -28,11 +28,11 @@ import"./index-4cgee5vh.js";
28
28
  import"./index-z6xqpmqg.js";
29
29
  import"./index-r3mvsbtq.js";
30
30
  import"./index-zjygnfay.js";
31
- import"./index-7hctrdk8.js";
31
+ import"./index-2zz8b0rb.js";
32
32
  import"./index-bk5tah7q.js";
33
- import"./index-2y14mjfn.js";
34
- import"./index-6q35swn2.js";
35
- import"./index-q81s0m8k.js";
33
+ import"./index-zpn3wqvp.js";
34
+ import"./index-rsn4jm90.js";
35
+ import"./index-ghbkknjz.js";
36
36
  import"./index-7g4c7s5r.js";
37
37
  import"./index-bpmtbmy9.js";
38
38
  import"./index-ed5ykebp.js";
@@ -17,8 +17,8 @@ import {
17
17
  reduceTaskWorkflowSnapshot,
18
18
  transitionTaskWorkflowEvidence,
19
19
  withTaskEvidenceTransaction
20
- } from "./index-n0fpefqx.js";
21
- import"./index-7ac5z627.js";
20
+ } from "./index-q6kscnts.js";
21
+ import"./index-ndqhtgrc.js";
22
22
  import"./index-556ja8an.js";
23
23
  import"./index-cpg98bh1.js";
24
24
  import"./index-9e6fdz2h.js";
@@ -27,10 +27,10 @@ import"./index-4cgee5vh.js";
27
27
  import"./index-z6xqpmqg.js";
28
28
  import"./index-r3mvsbtq.js";
29
29
  import"./index-zjygnfay.js";
30
- import"./index-7hctrdk8.js";
31
- import"./index-2y14mjfn.js";
32
- import"./index-6q35swn2.js";
33
- import"./index-q81s0m8k.js";
30
+ import"./index-2zz8b0rb.js";
31
+ import"./index-zpn3wqvp.js";
32
+ import"./index-rsn4jm90.js";
33
+ import"./index-ghbkknjz.js";
34
34
  import"./index-7g4c7s5r.js";
35
35
  import"./index-bpmtbmy9.js";
36
36
  import"./index-ed5ykebp.js";