opencode-swarm 7.184.5 → 7.184.7
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.
- package/.opencode/skills/issue-tracer/SKILL.md +3 -3
- package/.opencode/skills/issue-tracer/assets/pr-template.md +7 -0
- package/.opencode/skills/issue-tracer/references/acceptance-checks.md +30 -6
- package/.opencode/skills/issue-tracer/references/critic-gate.md +5 -0
- package/.opencode/skills/issue-tracer/references/evidence-artifacts.md +18 -2
- package/.opencode/skills/issue-tracer/scripts/repro-check.sh +604 -77
- package/.opencode/skills/issue-tracer/scripts/trace-check.sh +486 -60
- package/.opencode/skills/issue-tracer/scripts/trace-init.sh +30 -0
- package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/cli/{coder-settlement-m3r1kmzx.js → coder-settlement-2759zt77.js} +11 -11
- package/dist/cli/{config-doctor-1qgq2s96.js → config-doctor-g48tz4kt.js} +3 -3
- package/dist/cli/{core-h7pp6xzs.js → core-1jfgxw72.js} +4 -4
- package/dist/cli/{curation-policy-49f8jx48.js → curation-policy-k43q6b91.js} +4 -4
- package/dist/cli/{curator-drift-epvr1y5j.js → curator-drift-5wc9jfmy.js} +9 -9
- package/dist/cli/curator-llm-factory-jjd0cxb2.js +75 -0
- package/dist/cli/{curator-48mky2w8.js → curator-m7sja3jp.js} +38 -38
- package/dist/cli/{evidence-summary-service-akzas6he.js → evidence-summary-service-sx8x12w0.js} +17 -17
- package/dist/cli/{gate-evidence-gmq1th1b.js → gate-evidence-znfffz94.js} +8 -6
- package/dist/cli/guardrail-explain-x81m4s8q.js +76 -0
- package/dist/cli/{guardrail-log-n2cgvbh1.js → guardrail-log-mcv4ad3t.js} +7 -7
- package/dist/cli/{guardrail-reset-3br6fs4n.js → guardrail-reset-ksrr2r0n.js} +38 -38
- package/dist/cli/{hive-promoter-a1yw6evd.js → hive-promoter-06dzq5ms.js} +38 -38
- package/dist/cli/{index-fnbcd9ve.js → index-0prgjynb.js} +5 -5
- package/dist/cli/{index-ar2gsn6b.js → index-14j1jkyy.js} +6 -6
- package/dist/cli/{index-2zzmthnv.js → index-16smfppa.js} +4 -4
- package/dist/cli/{index-k1cxzdbd.js → index-1kz2repk.js} +4 -4
- package/dist/cli/{index-7ge1gcd3.js → index-1npynszx.js} +12 -12
- package/dist/cli/{index-82hy3v8f.js → index-1nwkzj24.js} +2 -2
- package/dist/cli/{index-ya32wfkp.js → index-1t2ctwkd.js} +1 -1
- package/dist/cli/{index-8pfcj7tz.js → index-2s0gy81b.js} +3 -3
- package/dist/cli/{index-k53a69vb.js → index-2t4zv1ag.js} +7 -14
- package/dist/cli/{index-3ny2d85s.js → index-3h0f07e9.js} +2 -2
- package/dist/cli/{index-qf75z3xz.js → index-42pchr9f.js} +1 -1
- package/dist/cli/{index-6jqxstq4.js → index-4qmeshfa.js} +5 -5
- package/dist/cli/{index-3n5zsp31.js → index-7xv2hvr6.js} +2 -2
- package/dist/cli/{index-10rsjhfy.js → index-82j1een1.js} +46 -19
- package/dist/cli/{index-h9hvszf7.js → index-8bvpcbk8.js} +40 -40
- package/dist/cli/{index-wy3zpwjy.js → index-98a0rxby.js} +1 -1
- package/dist/cli/{index-vyjped9g.js → index-b1v0zxnh.js} +2 -2
- package/dist/cli/{index-cdvb33mn.js → index-bf055zyw.js} +2 -2
- package/dist/cli/{index-2adz24wr.js → index-c5c7hrz1.js} +3 -3
- package/dist/cli/{index-6bn74qs9.js → index-dyddcx8h.js} +168 -105
- package/dist/cli/{index-xf69xty9.js → index-e1zrgvqg.js} +1 -1
- package/dist/cli/{index-yqcaf6r3.js → index-eecz2kna.js} +7 -7
- package/dist/cli/{index-1511m10x.js → index-enjsn68b.js} +7 -7
- package/dist/cli/{index-wzec3c4g.js → index-ezagem2g.js} +4 -0
- package/dist/cli/{index-zzvxj02e.js → index-fr6x6vn2.js} +1 -1
- package/dist/cli/{index-475bkab8.js → index-g2r6t7by.js} +1 -1
- package/dist/cli/{index-tzejdtyx.js → index-kbd6apth.js} +38 -38
- package/dist/cli/{index-e602am4j.js → index-m8rt7a3g.js} +4 -4
- package/dist/cli/{index-xf6j4ypk.js → index-mp60wy1f.js} +4 -4
- package/dist/cli/{index-6g664sy8.js → index-q39ecyaq.js} +1 -1
- package/dist/cli/{index-tajh3egk.js → index-q4a0j3nh.js} +5 -5
- package/dist/cli/{index-earq3mda.js → index-qeqn241m.js} +1 -1
- package/dist/cli/{index-ae2jf510.js → index-raj6y6d3.js} +2 -2
- package/dist/cli/{index-f0nj3d8z.js → index-rmspt7xm.js} +1 -1
- package/dist/cli/{index-ezpzd88b.js → index-rwzrbcm9.js} +2 -2
- package/dist/cli/{index-jvk95e6y.js → index-s95ghsy1.js} +1 -1
- package/dist/cli/{index-f4z1ez09.js → index-sxxj47cy.js} +6 -6
- package/dist/cli/{index-w9hxzcz4.js → index-t0mb5a9p.js} +1 -1
- package/dist/cli/{index-wehwbv89.js → index-x16a0c6b.js} +7 -7
- package/dist/cli/{index-456awy1p.js → index-xqxqepsy.js} +2 -2
- package/dist/cli/{index-zeg8y1fw.js → index-ywmknn6m.js} +1 -1
- package/dist/cli/{index-d1bfyxj5.js → index-z1qs160n.js} +1 -1
- package/dist/cli/{index-gcdgtcg5.js → index-z7recmq5.js} +3 -3
- package/dist/cli/index.d.ts +36 -7
- package/dist/cli/index.js +352 -92
- package/dist/cli/{knowledge-escalator-rdgspj3v.js → knowledge-escalator-ghx76dcv.js} +12 -12
- package/dist/cli/{knowledge-events-zh16e78y.js → knowledge-events-kpw6fbmc.js} +10 -10
- package/dist/cli/{knowledge-link-ap2274vm.js → knowledge-link-xw6vsbx3.js} +3 -3
- package/dist/cli/{knowledge-store-jxke13cv.js → knowledge-store-fhdrpxdm.js} +4 -4
- package/dist/cli/{knowledge-validator-24myt9fp.js → knowledge-validator-7jr0aka1.js} +6 -6
- package/dist/cli/{mcp-a4q99fmb.js → mcp-v7cgf5tn.js} +1 -1
- package/dist/cli/{model-preflight-qy88p9fc.js → model-preflight-kn3xqvfk.js} +38 -38
- package/dist/cli/{pending-delegations-9vqyq3bj.js → pending-delegations-z7mcbecn.js} +10 -10
- package/dist/cli/{pr-subscriptions-hrefmtay.js → pr-subscriptions-1sb07tx3.js} +10 -10
- package/dist/cli/{pr-workflow-gate-1jcs4wnp.js → pr-workflow-gate-ph4fvf47.js} +38 -38
- package/dist/cli/{runner-yz3ysehf.js → runner-pvdhxh74.js} +4 -4
- package/dist/cli/{scan-cursor-krn56ew2.js → scan-cursor-7ny9bnmk.js} +5 -5
- package/dist/cli/{schema-zqankczb.js → schema-pjkzvcw8.js} +2 -2
- package/dist/cli/{scope-persistence-5qrjm5d2.js → scope-persistence-mkb8yc5s.js} +14 -14
- package/dist/cli/{server-7wydssat.js → server-4e853cwk.js} +38 -38
- package/dist/cli/{skill-generator-br4wctes.js → skill-generator-v6n0kwh0.js} +14 -14
- package/dist/cli/{snapshot-coordination-init-g4sg2fxv.js → snapshot-coordination-init-agx2sn6h.js} +38 -38
- package/dist/cli/{speckit-checkoff-82s1qy0c.js → speckit-checkoff-wfsbvt1b.js} +5 -5
- package/dist/cli/{workspace-snapshot-xwhhznt3.js → workspace-snapshot-553c6cd3.js} +3 -3
- package/dist/cli/{worktree-collision-ownership-19n9em8b.js → worktree-collision-ownership-4znww3nt.js} +11 -11
- package/dist/cli/{worktree-isolation-hkd7xtdp.js → worktree-isolation-w4k8q59z.js} +38 -38
- package/dist/commands/registry.d.ts +1 -1
- package/dist/gate-evidence.d.ts +51 -0
- package/dist/index.js +34 -34
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/manifest.d.ts +1 -0
- package/dist/tools/record-branch-freshness.d.ts +6 -0
- package/dist/tools/record-trace-validation.d.ts +11 -0
- package/dist/tools/recover-stage-a-task.d.ts +5 -0
- package/dist/tools/tool-metadata.d.ts +4 -0
- package/dist/workflow/settlement-recovery.d.ts +52 -0
- package/dist/workflow/stage-a-repair.d.ts +13 -8
- package/dist/workflow/task-recovery-status.d.ts +11 -2
- package/package.json +1 -1
- package/dist/cli/curator-llm-factory-782jtn0a.js +0 -75
- package/dist/cli/guardrail-explain-xgahzbts.js +0 -76
|
@@ -27,7 +27,7 @@ This contract is MANDATORY and blocking in every implementation mode. Closure is
|
|
|
27
27
|
5. **Class eradication.** Phase 4.2 characterizes the defect class, sweeps the codebase, dispositions every hit, and installs a demonstrated guardrail.
|
|
28
28
|
6. **Acceptance criteria closed.** Every acceptance criterion is re-verified at closure with concrete evidence.
|
|
29
29
|
7. **Evidence over assertion, SHA-bound.** Every "passed"/"verified" claim cites command and output; every review verdict records the exact commit SHA and tree-id it examined, and closure requires the final approval identity to equal what ships.
|
|
30
|
-
8. **Anti-tampering.** Once the Phase 2.5 red checkpoint is frozen, weakening, skipping, or deleting an acceptance check is a contract violation; any legitimate change goes through the checkpoint manifest as an `AMEND` row with a closed reason. `repro-check.sh` enforces
|
|
30
|
+
8. **Anti-tampering.** Once the Phase 2.5 red checkpoint is frozen, weakening, skipping, or deleting an acceptance check is a contract violation; any legitimate change goes through the checkpoint manifest as an `AMEND` row with a closed reason. `repro-check.sh` enforces the manifest shape and emits an `anchor` receipt containing the no-filter manifest digest, the ordered acceptance-table semantic digest (`AC/class/check/argv/expect`), and the recorded `checkpoint-tree-id`. External publication of that receipt is a human-enforced gate outside the writable trace: `trace-check.sh` can validate only local structure and cannot attest that a receipt was published or when. A reviewer records the exact line after Phase 2.5, outside the trace, and later runs `verify-anchor` against that supplied literal. Editing a blob id or acceptance-table semantic field in place, or deleting/refreezing the manifest, therefore fails against the published receipt. A byte-identical refreeze remains valid by design. The manifest and table remain evidence a reviewer re-runs and reads; the external receipt is the non-circular identity anchor.
|
|
31
31
|
|
|
32
32
|
## Gate Table
|
|
33
33
|
|
|
@@ -38,9 +38,9 @@ This table is the normative center of the protocol: `trace-check.sh` reads it, a
|
|
|
38
38
|
| 0 Setup | `state.md` | `trace-check.sh phase 0` | base SHA, tree-id, tier, freshness, and handshake recorded |
|
|
39
39
|
| 1 Intake | `01-issue-summary.md` | `trace-check.sh phase 1` | classification set; acceptance criteria numbered; related issues listed |
|
|
40
40
|
| 2 Reproduction + localization | `02-reproduction.md`, `03-localization-log.md`, `04-root-cause.md` | `trace-check.sh phase 2` | reproduction command + exit code + output; root cause at line/condition level |
|
|
41
|
-
| 2.5 Acceptance checks (red checkpoint) | `## Acceptance checks` table in `02`, `repro/checkpoint.manifest` | `trace-check.sh phase 2.5` | every AC typed and checked; checkpoint tree-id recorded; diff from Phase 0 limited to manifest paths |
|
|
41
|
+
| 2.5 Acceptance checks (red checkpoint) | `## Acceptance checks` table in `02`, `repro/checkpoint.manifest` | `trace-check.sh phase 2.5` | every AC typed and checked; manifest identities are `(path, check-id)` pairs, so multiple commands may freeze identical bytes from one file; checkpoint tree-id recorded; diff from Phase 0 limited to manifest paths; the external anchor publication is a human gate (not machine-verifiable by this validator) and must be confirmed before implementation |
|
|
42
42
|
| 3 Plan + critic | `05-fix-plan.md`, `06-critic-review.md`, `07-approved-plan.md` | `trace-check.sh phase 3` | critic replays every frozen check; APPROVE recorded with both identities; user approval quoted |
|
|
43
|
-
| 4 Implement + validate | `08-test-results.md` | `trace-check.sh phase 4` | every check RED-to-GREEN or GREEN-to-GREEN; checkpoint re-verified; `scan-deferred.sh` clean |
|
|
43
|
+
| 4 Implement + validate | `08-test-results.md` | `trace-check.sh phase 4` | every check RED-to-GREEN or GREEN-to-GREEN; acceptance-table executable semantics match the manifest; checkpoint re-verified; `scan-deferred.sh` clean |
|
|
44
44
|
| 4.2 Recurrence census | `08a-recurrence-sweep.md` | `trace-check.sh phase 4.2` | predicates counted; dispositions sum to counts; guardrail proven |
|
|
45
45
|
| 4.5 Implementation review | `08b-implementation-review.md` | `trace-check.sh phase 4.5` | clean tree; independent APPROVE with `reviewed-commit` == HEAD |
|
|
46
46
|
| 4.6 Final critic | `09-final-critic.md` | `trace-check.sh phase 4.6` | clean tree; APPROVE with both identities == current; every AC has evidence |
|
|
@@ -32,6 +32,13 @@ This is a drafting aid. The published PR body must satisfy the repository's own
|
|
|
32
32
|
- [Negative/boundary/adversarial case if relevant]
|
|
33
33
|
- [Test drift review result]
|
|
34
34
|
|
|
35
|
+
## External Checkpoint Anchor
|
|
36
|
+
|
|
37
|
+
- Receipt published before implementation (human-confirmed; local validation cannot attest publication/timing): `issue-tracer-checkpoint-v1 slug=<slug> manifest=<40-hex> semantics=<40-hex> tree=<40-hex>`
|
|
38
|
+
- External artifact location: [issue/PR/conversation URL or identifier]
|
|
39
|
+
- Independent verification: `repro-check.sh verify-anchor --slug <slug> --receipt '<published literal>'` -> PASS
|
|
40
|
+
- Local copy/provenance: [discovery copy path; explicitly non-authoritative]
|
|
41
|
+
|
|
35
42
|
## Acceptance Criteria -> Evidence
|
|
36
43
|
|
|
37
44
|
| Acceptance criterion (from intake) | Evidence (command + output, or test name) |
|
|
@@ -9,6 +9,13 @@ Use this reference for Phase 2.5 (freezing the checks) and Phase 4 (proving they
|
|
|
9
9
|
3. Freeze the check set with `repro-check.sh checkpoint` before any production fix code exists. The checkpoint tree-id must differ from the Phase 0 tree-id only by paths listed in `repro/checkpoint.manifest` - this is validated mechanically at `trace-check.sh phase 2.5`.
|
|
10
10
|
4. Phase 4 re-runs every check against the fixed tree; results are appended to the same table's `post-fix` column and echoed in `08-test-results.md`.
|
|
11
11
|
|
|
12
|
+
The acceptance-table parser accepts either LF or CRLF line endings by removing
|
|
13
|
+
only each record's terminal CR before matching the header and rows. Embedded
|
|
14
|
+
C0/DEL control bytes (including controls in `AC`, `class`, `check`, `argv`,
|
|
15
|
+
`expect`, or `notes`) and rows without exactly ten pipe-separated fields are
|
|
16
|
+
rejected before any cell is used in a diagnostic. This keeps table validation
|
|
17
|
+
and the semantic digest deterministic across Windows and POSIX checkouts.
|
|
18
|
+
|
|
12
19
|
## The three executable classes, plus NON-EXECUTABLE
|
|
13
20
|
|
|
14
21
|
- **DISCRIMINATING** - behavior the bug breaks. Must be RED on the pre-fix tree for the expected reason (base exit nonzero and output matching `--expect`), GREEN after the fix. This is the class the bug-contrast replay rule applies to hardest.
|
|
@@ -26,17 +33,34 @@ Research measured that an agent's own generated tests overfit toward validating
|
|
|
26
33
|
|
|
27
34
|
## Red checkpoint manifest and amendment procedure
|
|
28
35
|
|
|
29
|
-
`repro/checkpoint.manifest` lives in the git-excluded trace directory and is written only by `repro-check.sh checkpoint`; `repro-check.sh verify-checkpoint` replays it. The format is defined by the script itself: a `# issue-tracer checkpoint manifest v1 rows=<N>` header line, where `<N>` is the number of data rows and is restamped on every append, then one tab-separated row per
|
|
36
|
+
`repro/checkpoint.manifest` lives in the git-excluded trace directory and is written only by `repro-check.sh checkpoint`; `repro-check.sh verify-checkpoint` replays it. The format is defined by the script itself: a `# issue-tracer checkpoint manifest v1 rows=<N>` header line, where `<N>` is the number of data rows and is restamped on every append, then one tab-separated row per checkpoint event with exactly ten fields - seq, kind (`CHECKPOINT` or `AMEND`), path, blob id, mode, check id, argv, expected regex, base SHA, and reason. Manifest identity is the `(path, check-id)` pair, so distinct checks may share a path when they capture the same current bytes. Files are formatted with the repo's own formatter before hashing, and new checks live in their own new files (never appended to an existing file already at the 500-line test-file cap) so a later formatter pass does not silently change a frozen blob.
|
|
37
|
+
|
|
38
|
+
Four properties are mechanically enforced, by both `checkpoint` and `verify-checkpoint`. First, **a frozen pair cannot be re-frozen**: once a `(path, check-id)` pair appears in the manifest, a plain `repro-check.sh checkpoint` on that pair exits 2, while a different check id may checkpoint the same path only after hashing the current bytes. `verify-checkpoint` independently rejects any later row for the same pair that is not an `AMEND`, so a forged duplicate `CHECKPOINT` row is refused too, and an `AMEND` must name an existing exact pair. Second, **the effective manifest has one blob per path**: multiple check ids sharing a path are deduplicable only when their latest blobs are identical; divergent effective blobs fail closed instead of becoming path-only last-writer-wins. Third, **the recorded row count is validated**: the header's `rows=<N>` must equal the number of data rows actually present. Fourth, **seq continuity is validated**: the seq column must run 1..N with no gaps and every row must carry exactly ten fields. The count and seq checks are complementary and neither is sufficient alone - seq continuity is only a *prefix* invariant, so truncating the tail (`head -3`, or dropping the last row) leaves the survivors perfectly contiguous; the count is what catches that, and seq is what catches a deletion in the middle. Together they make deleting, truncating, reordering, duplicating, or mangling a row exit 2 in both commands instead of silently dropping that check out of the replay set.
|
|
39
|
+
|
|
40
|
+
These row-shape properties do not by themselves inspect frozen content. The external checkpoint anchor below binds both content identity and the ordered acceptance-table semantics. Reviewers must retain the literal receipt emitted before implementation and verify it after the fix. The manifest and table remain agent-writable trace artifacts, so an in-place field edit, a semantic-table edit, a delete-and-refreeze, or a restamped state file is not independently authoritative; the old receipt is what makes those changes fail closed. A byte-identical refreeze is valid because it preserves the anchored digests and checkpoint tree id.
|
|
41
|
+
|
|
42
|
+
So be precise about what is bought. The manifest-only rules close the ACCIDENTAL routes - a partial write, a botched hand edit, a truncating rewrite - and they close the one route that previously needed no editing at all: re-running the sanctioned freeze command to re-baseline a weakened check to green. A deliberate manifest edit or delete-and-refreeze fails when a reviewer verifies the pre-implementation external receipt. The plan critic and implementation reviewer still assess the semantic adequacy of the originally frozen checks; receipt verification does not make a weak check meaningful. Treat the manifest as a record to verify, never as a guarantee that its checks are adequate. A `v1` header with no `rows=` count is rejected outright for the same reason - accepting it for compatibility would itself be a one-line way to switch the count check off.
|
|
43
|
+
|
|
44
|
+
Amending a frozen check (the check was wrong or the acceptance criterion changed) appends a new manifest entry rather than editing the old one, with a closed reason: `CHECK_WRONG` or `AC_CHANGED_BY_USER`. Both reasons require a fresh RED/GREEN replay before the amendment counts. Formatting changes to a frozen file are not a special exemption: use `CHECK_WRONG` or `AC_CHANGED_BY_USER` only when the check is genuinely being amended, then replay and review the result. The plan critic (before implementation) or the implementation reviewer (after) approves every amendment. Deleting or weakening a check to reach green, instead of amending it with a recorded reason, is a Full-Resolution Contract anti-tampering violation (clause 8).
|
|
30
45
|
|
|
31
|
-
|
|
46
|
+
## External checkpoint anchor
|
|
32
47
|
|
|
33
|
-
|
|
48
|
+
After the final Phase-2.5 checkpoint and before any production edit, run `repro-check.sh anchor --slug <slug>`. It first verifies the manifest and that every executable table row's `check`, `argv`, and `expect` matches the effective manifest, then emits exactly one line in this shape:
|
|
34
49
|
|
|
35
|
-
|
|
50
|
+
```text
|
|
51
|
+
issue-tracer-checkpoint-v1 slug=<slug> manifest=<40-hex manifest blob> semantics=<40-hex acceptance-table digest> tree=<40-hex checkpoint-tree-id>
|
|
52
|
+
```
|
|
36
53
|
|
|
37
|
-
|
|
54
|
+
The implementation owner publishes that literal in the issue, PR, or other reviewer-visible external conversation and records the artifact location in the trace as a non-authoritative discovery copy. Publication and its before/after timing are human-enforced: `trace-check.sh` cannot observe that external conversation. The owner must not regenerate it after implementation begins. An independent reviewer copies the published literal into `repro-check.sh verify-anchor --slug <slug> --receipt '<literal>'`; verification compares the current manifest digest, the current ordered `AC/class/check/argv/expect` digest, and `state.md`'s recorded `checkpoint-tree-id`. It deliberately does not compare the live working-tree tree, which changes as the fix is implemented. Malformed, stale, tampered, semantic-table-edited, or delete-and-refreeze evidence fails closed; a byte-identical refreeze remains valid because it has the same content identity.
|
|
38
55
|
|
|
39
|
-
|
|
56
|
+
Receipt compatibility is intentionally strict: the pre-semantics receipt
|
|
57
|
+
syntax (the same `issue-tracer-checkpoint-v1` prefix without a `semantics=`
|
|
58
|
+
field) is rejected as `malformed anchor receipt`. There is no safe migration
|
|
59
|
+
or placeholder digest, because that old receipt never bound the acceptance
|
|
60
|
+
table's `AC/class/check/argv/expect` semantics. A trace with only an old
|
|
61
|
+
receipt must be rechecked and re-anchored before implementation; once
|
|
62
|
+
implementation has begun, stop and obtain a new reviewed checkpoint rather
|
|
63
|
+
than regenerating the receipt silently.
|
|
40
64
|
|
|
41
65
|
## Dependency strategy
|
|
42
66
|
|
|
@@ -30,6 +30,8 @@ Read these artifacts:
|
|
|
30
30
|
|
|
31
31
|
Also inspect any files referenced in the plan. Do not trust summaries if the underlying code is available. Independently replay the frozen acceptance checks yourself (`repro-check.sh run` for each row) before returning a verdict - do not accept the table's pre-fix column on faith.
|
|
32
32
|
|
|
33
|
+
When a checkpoint anchor exists, independently compare the externally published receipt with `repro-check.sh verify-anchor --slug <slug> --receipt '<literal>'`; this verifies the local manifest/table/tree digests only, while publication and its timing remain a human gate that the validator cannot observe. Do not accept a receipt regenerated after implementation began.
|
|
34
|
+
|
|
33
35
|
Return exactly:
|
|
34
36
|
|
|
35
37
|
# Critic Review
|
|
@@ -159,6 +161,8 @@ Find, with concrete evidence:
|
|
|
159
161
|
- independently re-run every acceptance check yourself with `repro-check.sh run` on both the pre-fix and current trees
|
|
160
162
|
- verify `repro-check.sh verify-checkpoint`, scan for tautological checks, and (at tier M/L, any risk trigger, or any NEW-SURFACE row) run the revert/mutation probe from `references/acceptance-checks.md`
|
|
161
163
|
|
|
164
|
+
When a checkpoint anchor exists, independently compare the externally published receipt with `repro-check.sh verify-anchor --slug <slug> --receipt '<literal>'`; this verifies the local manifest/table/tree digests only, while publication and its timing remain a human gate that the validator cannot observe. Do not accept a receipt regenerated after implementation began.
|
|
165
|
+
|
|
162
166
|
Return exactly:
|
|
163
167
|
|
|
164
168
|
# Implementation Review
|
|
@@ -240,6 +244,7 @@ Check:
|
|
|
240
244
|
- every acceptance criterion maps to concrete evidence
|
|
241
245
|
- validation claims are backed by commands and output
|
|
242
246
|
- no work was silently deferred, scoped out, or left unwired
|
|
247
|
+
- if a checkpoint anchor exists, verify the externally published literal with `repro-check.sh verify-anchor` and record human confirmation that it was published before implementation (the local validator cannot verify publication or timing)
|
|
243
248
|
|
|
244
249
|
Return exactly:
|
|
245
250
|
|
|
@@ -105,13 +105,29 @@ Gate rows (`plan-critic`, `implementation-review`, `final-critic`, `merge-approv
|
|
|
105
105
|
|---|---|---|---|---|---|---|---|
|
|
106
106
|
| AC1 | DISCRIMINATING / PRESERVING / NEW-SURFACE / NON-EXECUTABLE | C1 or DOCS_ONLY/HOST_ONLY/PRODUCT_DECISION/EXTERNAL_SERVICE_UNAVAILABLE | `<command>` or `-` | `<regex>` or `-` | RED / GREEN / ERROR / `-` | GREEN or `pending` | [substitute evidence path or free text] |
|
|
107
107
|
|
|
108
|
-
The table splits each row on `|`, so the `argv` cell must never contain a literal `|` (for example a shell pipeline). If a check needs a pipeline, write it as a small script under `repro/` and put the script's path/invocation in `argv` instead of the raw pipeline.
|
|
108
|
+
The table splits each row on `|`, so the `argv` cell must never contain a literal `|` (for example a shell pipeline). If a check needs a pipeline, write it as a small script under `repro/` and put the script's path/invocation in `argv` instead of the raw pipeline. Rows must have exactly ten pipe-separated fields, including the leading and trailing delimiters; missing a final delimiter is malformed just like an extra delimiter. The parser accepts LF and CRLF line endings by stripping only each record's terminal CR, while embedded C0/DEL control bytes in any cell are rejected before diagnostics. `trace-check.sh` reports the row shape/control failure without interpolating the untrusted cell.
|
|
109
109
|
|
|
110
110
|
## Red checkpoint
|
|
111
111
|
manifest: repro/checkpoint.manifest
|
|
112
112
|
checkpoint-tree-id: <40-hex>
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
+
## External checkpoint anchor
|
|
116
|
+
|
|
117
|
+
After the final Phase-2.5 checkpoint and before production edits, the implementation owner runs `repro-check.sh anchor --slug <slug>` and publishes the exact one-line receipt in an external, reviewer-visible issue or PR conversation. This publication and its timing are a human-enforced gate; the local validator cannot attest to either. The receipt has no secrets or source content:
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
issue-tracer-checkpoint-v1 slug=<slug> manifest=<40-hex manifest blob> semantics=<40-hex acceptance-table digest> tree=<40-hex checkpoint-tree-id>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Record the publication URL or conversation identifier and a verbatim discovery copy in the trace, but never treat that local copy as authority. The owner must not regenerate the receipt after implementation begins. Independent reviewers verify the externally copied literal with `repro-check.sh verify-anchor --slug <slug> --receipt '<literal>'`; verification uses the no-filter manifest digest, the ordered acceptance-table semantic digest, and the `checkpoint-tree-id` recorded in `state.md`, not the live working-tree tree. Any malformed, stale, in-place-edited, semantic-table-edited, or delete-and-refrozen manifest fails closed. A byte-identical refreeze is intentionally accepted.
|
|
124
|
+
|
|
125
|
+
Receipts emitted before the `semantics=` field was introduced are not
|
|
126
|
+
compatible with this schema and are rejected as malformed. No migration is
|
|
127
|
+
provided: an old receipt cannot prove that the acceptance table was frozen,
|
|
128
|
+
so a pre-implementation trace must be rechecked and re-anchored, while a
|
|
129
|
+
trace already under implementation must not silently regenerate its anchor.
|
|
130
|
+
|
|
115
131
|
## `03-localization-log.md`
|
|
116
132
|
|
|
117
133
|
```markdown
|
|
@@ -361,7 +377,7 @@ Written when CI rounds occur after publication: one entry per round with the fai
|
|
|
361
377
|
|
|
362
378
|
## `repro/` layout
|
|
363
379
|
|
|
364
|
-
Lives inside the trace directory (git-excluded, never committed): `checkpoint.manifest` (rows are appended, never edited - a frozen path is superseded only by a recorded `AMEND` row, and both the header's recorded row count and `seq` continuity are validated on every read and write; header `# issue-tracer checkpoint manifest v1 rows=<N>`, restamped with the row and seeded by `trace-init.sh` as `rows=0`, and see `references/acceptance-checks.md` for what that does and does not guarantee) plus `<check-id>.base.log` and `<check-id>.head.log` per executable check, written by `repro-check.sh run`.
|
|
380
|
+
Lives inside the trace directory (git-excluded, never committed): `checkpoint.manifest` (rows are appended, never edited - a frozen `(path, check-id)` pair is superseded only by a recorded `AMEND` row, while distinct check ids may share a path only when they capture identical current bytes; divergent effective blobs for one path fail closed, and both the header's recorded row count and `seq` continuity are validated on every read and write; header `# issue-tracer checkpoint manifest v1 rows=<N>`, restamped with the row and seeded by `trace-init.sh` as `rows=0`, and see `references/acceptance-checks.md` for what that does and does not guarantee) plus `<check-id>.base.log` and `<check-id>.head.log` per executable check, written by `repro-check.sh run`.
|
|
365
381
|
|
|
366
382
|
## OBE subset
|
|
367
383
|
|