Reviewer consolidation (2026-09-28; included by reviewer): This update was added after triaging all 78 live open issues in four category subagents (labels bug, enhancement, and unlabeled — split further into the "[sub of #N]" and "Plan & evidence for #N" title patterns). It closes a fully-redundant tracking layer, fixes a false-positive closure signal, retitles unclear issues, and restates the objective list below on top of the 2026-09-27 map, which remains otherwise accurate.
No objective above is complete merely because a tracking issue exists for it; each closes only on the reproducible, dated evidence its own acceptance criteria require.
No objective is complete merely because a successor issue exists. External limitations remain explicit blockers until live evidence resolves them.
Act as the terminal aggregate for the closure batch and close last on current, cited evidence.
Reviewer synthesis (2026-08-16): Category review completed for all open enhancement and bug issues. The objectives below are the bounded outcomes for the active subitems; they are deliberately stated as verifiable evidence rather than implementation claims.
Duplicate or superseded work must be closed rather than carried as parallel objectives. Every active issue must end with a named artifact, command result, URL, or explicit external blocker. This note was added by the reviewer.
Reviewer note: This is the execution/evidence child of the current digest #154; #144 is the historical batch aggregate. It reconciles the full open batch after #145–#148 provide their evidence; repository-side checks and fixtures remain owned by their respective issues. The issue closes only when every batch acceptance box has a citation or named blocker and the release, registry, adoption, and closure gates are reconciled. Sub-issue of #144. Created to address the problems found while re-verifying the whole open batch on 2026-08-06: node evals/tools/issue-ledger.mjs 138 139 140 142 exits 1 with RESULT: ledger has drift to reconcile — 48 acceptance boxes, 0 checked, 48 open-without-blocker. The daily digest is regenerated and closed every day, so if this batch closes without a reconciled ledger the gap survives only in an artifact designed to be superseded. That is the exact failure #139 was written to prevent. ## Requirement ID: FR.04.1.6 Title: Reconcile the batch acceptance ledger and close the open issues on evidence Priority: Must Have Status: Draft ### Statement The repository shall reconcile the acceptance ledger of every issue in the open batch so that each box is either ticked with a citation or annotated with a named blocker, shall confirm the closure-evidence gate is clean for every release-claiming issue, and shall close the batch only after both checks pass — never on merged work alone. ## Traceability | Traces To | ID | Description | |-----------|-----|-------------| | Customer Need | CN.04.1 | Release records match what shipped | | Customer Problem | CP.04 | Shipped work is not reflected in the release record | | Non-functional | NFR.06 | Advertised-versus-published version lag | | Parent issue | #144 | The digest that would otherwise be the gap's only carrier | ## Problems found (why this exists) 1. The batch ledger is completely unreconciled. Executed on 2026-08-06: node evals/tools/issue-ledger.mjs 138 139 140 142 → exit 1. | Issue | Boxes | Checked | Open w/o blocker | |---|---:|---:|---:| | #138 | 12 | 0 | 12 | | #139 | 14 | 0 | 14 | | #140 | 14 | 0 | 14 | | #142 | 8 | 0 | 8 | | totals | 48 | 0 | 48 | 2. The digest is not a durable tracker. #144 supersedes #136, which superseded its predecessor. Closing the owner issues without reconciling their ledgers puts the remaining gap into a document whose whole purpose is to be replaced tomorrow — which is how #89, #90, #129 and #130 all closed on 2026-08-04 while neither release had published. 3. Only one issue in the batch is gate-able. closure-evidence.mjs reads the release-claim marker, and today only #138 and its sub-issue #176 carry one. The remaining issues cannot be gated by that guard; they need the ledger check instead, so both must be run — neither alone covers the batch. 4. The two "superseded version mentions" on #138 were a tool defect, not stale text. issue-ledger.mjs compared every version mention against the plugin manifest (2.6.0), so a canvas box naming its own tag v1.1.1 was reported as a stale claim purely because 1.1.1 < 2.6.0. No canvas release issue could ever reach a clean ledger. Fixed in #150 by measuring each mention against the train sharing its major series, with a falsifiable regression guard in evals/tests/issue-ledger.test.mjs; #138 and #176 now report 0. A version claimed by no train is reported on a separate not compared channel instead of being failed as stale. 5. A green test suite is not a green batch. The run recorded on 2026-08-06 was 1,269/1,269 passing while every one of these 48 boxes was open. Suite health and acceptance evidence are different claims, and conflating them is what this issue prevents. ## Acceptance Criteria ### The ledger is reconciled, not asserted - [ ] node evals/tools/issue-ledger.mjs 138 139 140 142 145 176 147 148 --json ledger-batch.json reports 0 open-without-blocker and 0 superseded version mentions. - [ ] The ledger-batch.json before/after pair is attached, showing the 48-box starting state and the reconciled end state. - [ ] Every box that remains open names the specific blocker keeping it open, and every ticked box names its citation. - [ ] The train-aware version comparison in issue-ledger.mjs is present and its regression guard in evals/tests/issue-ledger.test.mjs passes, so canvas v1.1.1 boxes are not misreported as stale plugin claims. ### The closure gate is clean for everything that claims a release - [ ] node evals/tools/closure-evidence.mjs --prospective 138 176 returns exit 0. - [ ] node evals/tools/closure-evidence.mjs 138 176 (audit mode, after closure) returns exit 0. - [ ] Any issue in the batch that claims a release but carries no marker is either given exactly one valid marker or explicitly recorded as not a release claim. ### The suite and the surfaces are green at the moment of closure - [ ] pwsh -File run-tests.ps1 -NoOpen passes; per-suite counts are recorded in the closing comment, and the two LLM suites' skip/run state is stated rather than omitted. - [ ] node scripts/check-distribution.mjs --strict exits 0, with any remaining entries shown to be warnings or notices and named individually. - [ ] The digest #144 is closed last, after all four sub-issues, with the reconciled ledger linked from the closing comment. ## Verification ### Skills track — CLI bash # the drift this issue exists to clear node evals/tools/issue-ledger.mjs 138 139 140 142 --json ledger-before.json # 2026-08-06: exit 1, 48 boxes, 0 checked, 48 open-without-blocker # after reconciliation, including the new sub-issues node evals/tools/issue-ledger.mjs 138 139 140 142 145 176 147 148 --json ledger-after.json # the release-claim gate across the batch node evals/tools/closure-evidence.mjs --prospective 138 176 --json closure-batch.json # full suite + surfaces at the moment of closure pwsh -File run-tests.ps1 -NoOpen node scripts/check-distribution.mjs --strict; echo "exit=$?" ### App track — Playwright with screenshots The batch's visual evidence is collected once, at closure, so the closing comment carries proof the product renders as advertised: bash cd .github/extensions/srs-navigator npx playwright test --project=canvas # graph render, dotted notation, health bar npx playwright test --project=site # landing page + install block - [ ] The canvas and site captures from test-results/ are attached to the closing comment. - [ ] For anything claiming the released canvas, the capture is the archive-derived one from #176 with its provenance.json — a checkout-rendered PNG proves the checkout, nothing more. ## Depends on - #145 (closure-evidence reconciliation) — gates closure of the release-claiming issues. - #176 (canvas v1.1.1) — supplies the archive-derived captures. - #147 (registry re-crawl) — required for check-distribution.mjs --strict to exit 0. - #148 (adoption experiment) — the last box in the batch. ## Blocks Closure of #144 itself. Nothing in this batch closes until the ledger it tracks is reconciled. ## Acceptance Criteria (Appended 2026-08-15 during batch triage — this issue previously had no explicit checklist of its own, only prose criteria; the checklist below makes it verifiable and mirrors the measurable form used by its children #156 and #179.) - [ ] node evals/tools/issue-ledger.mjs run across every issue in the open batch (#138, #139, #140, #142, #145, #176, #147, #148, #149, plus any active sub-issues) reports 0 open-without-blocker and 0 superseded version mentions. - [ ] Every acceptance box across the batch is either checked with a citation (command output, link, or artifact) or left open with a named blocker. - [ ] node evals/tools/closure-evidence.mjs --prospective is clean (exit 0) for every issue that carries a release-claim marker. - [ ] node scripts/check-distribution.mjs --strict exits 0, or every remaining finding is individually named and accepted as a warning/notice, not an error. - [ ] The consolidated test suite (pwsh -File run-tests.ps1 -NoOpen) is green at the moment of closure, including dependency-pins.test.mjs. - [ ] Issues close in dependency order (sub-issues before parents, parents before this root); this issue (#149) is closed last, with the reconciled ledger linked from its closing comment. - [ ] This issue is not closed merely because a successor sub-issue (e.g. #179) exists — closure requires the live measurements above to actually pass, not just the presence of tracking issues.
What changed in this pass
/livefrom the published canvas archive with a screenshot + provenance); Prove /live provenance from the current published canvas archive #138's own checklist never listed [sub of #138] Close out /live provenance against the current published canvas archive #307 as a distinct child, confirming it was orphaned rather than intentional.main@7737b3d) reproducesrun-tests.ps1 -NoOpenexiting 1 with 1,287/1,299 — the same failures [sub of #209] Make the default runner green and deterministic on a clean checkout #292 exists to fix. The checked state reflects unmerged PR fix: consolidate open-issue remediation and evidence gates #320, not livemain. [sub of #209] Make the default runner green and deterministic on a clean checkout #292 is not closable on its current checkboxes; it stays open, blocked on merging fix: consolidate open-issue remediation and evidence gates #320.@RafaelGorskimerging fix: consolidate open-issue remediation and evidence gates #320, addingANTHROPIC_API_KEY, or re-submitting to skills.sh).Consolidated objective list (restated 2026-09-28)
main. [sub of #209] Make the default runner green and deterministic on a clean checkout #292 (blocked on merging PR fix: consolidate open-issue remediation and evidence gates #320, per Daily eval — 2026-09-28: top next steps for adoption #321's live evidence above) → unblocks [sub of #291] Restore the model-behavior proof so the anti-drift claim is exercised #294, [sub of #221] Execute the closure-gate mutation matrix and prove each failure mode #297, [sub of #220] Capture and store the parsed registry before-state, dated before any re-crawl #300, [sub of #219] Render /live from the published archive and capture provenance with the screenshot #305, [sub of #226] Close last, on a green ledger and a green runner in the same session #319 and this issue's own closure gate.@RafaelGorskiconfiguringANTHROPIC_API_KEYand dispatching the workflow./livefrom the published canvas archive. [sub of #219] Render /live from the published archive and capture provenance with the screenshot #305 (absorbs [sub of #138] Close out /live provenance against the current published canvas archive #307) → [sub of #210] Restate every canvas release claim to the currently published version and republish archive-derived evidence #306 (retitled to avoid a hard-coded version) → Prove /live provenance from the current published canvas archive #138 (needs its stale lower sections pruned) → [sub of #138] Rehearse safe canvas recovery and published-archive rendering #162/[sub of #138] Capture current-release /live provenance evidence #176/[sub of #138] Restate release claim to the current published canvas version #183 remain distinct rehearsal/capture/restatement children.No objective above is complete merely because a tracking issue exists for it; each closes only on the reproducible, dated evidence its own acceptance criteria require.
Consolidated sub-issue objective map
/livefrom the published canvas archive and reconcile release claims. [sub of #219] Render /live from the published archive and capture provenance with the screenshot #305 owns archive-derived rendering/provenance; [sub of #210] Restate every canvas release claim to the currently published version and republish archive-derived evidence #306 owns the current train/version claim; [sub of #138] Close out /live provenance against the current published canvas archive #307 owns evidence closeout. [sub of #162] Rehearse safe canvas strand recovery and published-archive rendering #255 retains the distinct safe-recovery rehearsal. Preserve Synchronize canvas release claims and publish archive-derived /live evidence #210/Prove /live from the published archive, not the working tree #219 and [sub of #219] Render/livefrom the published archive instead of the working tree #251-[sub of #138] Close out/liveprovenance from the current published canvas archive #256/[sub of #138] Render /live from the published canvas archive #283 requirements for ZIP/TAR parity, hashes, screenshots, marker uniqueness, and ledger checks before superseding.Reviewer acceptance criteria
VERSION/archive, and companion-app release. At review time these are v2.7, v1.1.5, and v1.0.6 respectively; recheck before acting.---> Reviewer consolidation (2026-09-20): This terminal aggregate objective list was added after reviewing all open issues by label category. Child issues own implementation; this issue owns the final evidence-based decision.
Consolidated objectives
/liveand rehearse safe recovery - Prove /live provenance from the current published canvas archive #138, [sub of #138] Restate release claim to the current published canvas version #183, [sub of #138] Capture current-release /live provenance evidence #176, [sub of #138] Rehearse safe canvas recovery and published-archive rendering #162.No objective is complete merely because a successor issue exists. External limitations remain explicit blockers until live evidence resolves them.
Reviewer-defined objective
Act as the terminal aggregate for the closure batch and close last on current, cited evidence.
Scope boundary
This issue owns the final decision, not child implementation. #189 owns the census, #179/#198 membership and ordering, #139 gate acceptance, #140/#147 registry outcome, and adoption/provenance children their own evidence.
Acceptance criteria