Skip to content

Close the release, registry, adoption, and ledger batch only on live evidence #149

Description

@RafaelGorski

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.

What changed in this pass

Consolidated objective list (restated 2026-09-28)

  1. Land the already-green Wave 0 fix and make the default runner true-green on 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.
  2. Restore the model-behavior anti-drift proof. [sub of #291] Restore the model-behavior proof so the anti-drift claim is exercised #294, blocked by [sub of #209] Make the default runner green and deterministic on a clean checkout #292/[sub of #218] Make every published surface state the shipped version, count and contrast #293 and by @RafaelGorski configuring ANTHROPIC_API_KEY and dispatching the workflow.
  3. Reconcile the skills.sh listing with parsed before/after evidence. [sub of #220] Capture and store the parsed registry before-state, dated before any re-crawl #300 → Plan & evidence for #140 — Coordinate the skills.sh registry refresh and parsed-content verification #337-preserved before/submission/after chain → [sub of #212] Verify the re-crawl by parsed content rather than by exit code #301 (absorbs [sub of #222] Prove the re-crawl republished current content, with the stale-content canary #302's stale-content canary) → [sub of #147] Close out skills.sh verification: names cleared and content confirmed current #304 owns closeout. Capture skills.sh before-state, request re-crawl, and verify parsed content #140/Verify the skills.sh re-crawl by parsed before/after content #147/[sub of #140] Sequence registry before-state capture and re-crawl submission evidence #173/[sub of #173] Capture the parsed registry before-state and record the re-crawl request #190/[sub of #147] Verify the skills.sh re-crawl by parsed content and explicit unreadable-state handling #175/[sub of #175] Verify the skills.sh re-crawl with a parsed before/after diff #195/Record #140's non-claim and link the registry capture #184/[sub of #147] Make #147 gateable and link its parsed registry evidence #187 remain the registry-refresh workstream.
  4. Prove /live from 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.
  5. Make first-run and the external adoption experiment executable and falsifiable. [sub of #223] Make install-to-first-graph executable in one pass on a clean machine #308 → [sub of #213] Pre-register the adoption contract: threshold, window and outcome rule #309 → [sub of #142] Run the external /live experiment against the pre-registered contract #310 → [sub of #224] Record the participant outcome against the pre-registered threshold #311 → [sub of #148] Verify the adoption evidence chain: contract, run, and outcome #312 (retitled); Run one external /live adoption experiment and record outcome #142 and Coordinate the adoption contract and observation evidence #148 remain the two distinct root parents (experiment vs. contract/gate) per the clarification above.
  6. Make release-claim accounting determinate and enforced at the intended boundary. Make release-claim closure gating decidable and required #139 (retitled) → Reconcile closure-gate evidence after gateability and mutation proof #145 (retitled) → [sub of #145] Refresh #145 ledger citations against the current issue-ledger gate #299 (retitled) → [sub of #221] Execute the closure-gate mutation matrix and prove each failure mode #297 → [sub of #139] Make the report-only closure gate a required release-process step #164/Classify #139's release claim and verify parser determinacy #182/[sub of #145] Make #145 gateable and reconcile its acceptance ledger #186/[sub of #174] Execute the closure-gate mutation matrix after prerequisite issues are gateable #194/Re-derive closure-batch membership at closure time and verify the ledger #198/[sub of #149] Reconcile #149 closure evidence against #198 membership in dependency order #179 (retitled) complete the ledger/gate workstream.
  7. Gate and publish the announcement only once every surface agrees. [sub of #225] Gate the announcement on verified surface version parity #313 → [sub of #207] Publish the announcement once every surface agrees, at the versions actually published #314 → Reconcile the announcement across plugin, extension, and companion-app releases #315 → [sub of #289] Reconcile the weekly release report against what actually shipped #316; Publish release announcement with verified plugin, extension, and companion-app versions #207/Gate the release announcement on surface version parity #225 remain the release-parity precondition.
  8. Re-derive membership, reconcile the batch, and close only after all evidence is current. Re-derive closure-time membership and reconcile the final ledger #317 owns closure-time membership; [sub of #214] Reconcile the batch against live evidence immediately before closure #318 owns immediate reconciliation; [sub of #226] Close last, on a green ledger and a green runner in the same session #319 owns the terminal same-session proof; this issue (Close the release, registry, adoption, and ledger batch only on live evidence #149) closes last, only after every item above is closed or names a live blocker — never on checked boxes alone (see the [sub of #209] Make the default runner green and deterministic on a clean checkout #292 finding).

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.


Reviewer consolidation (2026-09-27; included by reviewer): This objective map was added after reviewing all 132 live open issues grouped by label category. It merges duplicate tracking into distinct outcomes, assigns current child owners, and preserves older acceptance details until explicitly transferred. No issue is considered complete because a newer tracker exists.

Consolidated sub-issue objective map

  1. Restore the main-branch baseline, public facts, and specification tree. Land the remediation spec tree and restore a clean baseline on main #209 owns baseline/spec restoration; [sub of #209] Reconcile the PR backlog and land the cited specification tree on main #278 owns disposition and landing of the overlapping specification PRs; [sub of #209] Make the default runner green and deterministic on a clean checkout #292 owns deterministic runner/lockfile repair; Restore public-surface parity and remove the false-green dashboard #218/[sub of #218] Make every published surface state the shipped version, count and contrast #293 own public facts and dashboard correctness. Preserve [sub of #218] Restore a green, non-mutating baseline on main #279's clean-checkout, non-mutating repeatability, and dashboard criteria before superseding it.
  2. Exercise the scheduled model-behavior proof. [sub of #291] Restore the model-behavior proof so the anti-drift claim is exercised #294 owns a non-skipped scenario count and scheduled run evidence. Preserve [sub of #227] Restore the scheduled LLM behavior proof so the anti-drift claim is exercised #274/[sub of #227] Restore the scheduled anti-drift behavior proof #284's explicit credential/admin blocker and distinguish missing required CI secrets (failure) from a credential-free local skip.
  3. Reconcile the skills.sh listing with parsed before/after evidence. [sub of #220] Capture and store the parsed registry before-state, dated before any re-crawl #300 owns the complete, hashed before-state; [sub of #140] Coordinate the refresh end to end: request recorded, elapsed, verified by content #303 owns request chronology and bounded elapsed time; [sub of #212] Verify the re-crawl by parsed content rather than by exit code #301 owns the parsed after-state/diff; [sub of #222] Prove the re-crawl republished current content, with the stale-content canary #302 owns the stale-content canary; [sub of #147] Close out skills.sh verification: names cleared and content confirmed current #304 owns the closeout verdict. The older Capture the registry before-state and verify the re-crawl by parsed content, not exit code #212/Capture the registry before-state before requesting a re-crawl #220/Verify the re-crawl republished current content, not just current names #222/[sub of #220] Capture the parsed registry before-state before any re-crawl is requested #240-[sub of #147] Close out skills.sh verification: names cleared and content confirmed current #250/[sub of #140] Verify the skills.sh re-crawl by parsed content #282 criteria remain required until transferred, including unreadable/partial responses as inconclusive and bounded retries.
  4. Prove /live from 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 /live from the published archive instead of the working tree #251-[sub of #138] Close out /live provenance 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.
  5. Make first-run and the external adoption experiment executable and falsifiable. [sub of #223] Make install-to-first-graph executable in one pass on a clean machine #308 owns clean install; [sub of #213] Pre-register the adoption contract: threshold, window and outcome rule #309 owns the pre-registered contract; [sub of #142] Run the external /live experiment against the pre-registered contract #310 owns the participant run; [sub of #224] Record the participant outcome against the pre-registered threshold #311 owns measured outcome; [sub of #148] Verify the adoption evidence chain: contract, run, and outcome #312 owns ordered closeout. Preserve [sub of #178] Run the declared observation window from published bytes and file the outcome #265's fixed observation window and the older Make the clean-machine first run reproducible and pre-register adoption #223/Record the participant outcome against the pre-registered adoption threshold #224/[sub of #223] Make the clean-machine first run reproducible before opening the adoption window #259-[sub of #142] Close out the external adoption experiment and record its outcome #267/[sub of #223] Make install-to-first-graph executable in one pass #285/[sub of #142] Pre-register the adoption contract and record a participant outcome #286 criteria for installed-artifact evidence, elapsed-time bounds, second clean pass, consent/privacy, contract hash, deviations, negative outcomes, and prior-issue dispositions.
  6. Make release-claim accounting determinate, falsifiable, and enforced at the intended boundary. [sub of #217] Give every open root issue exactly one release-claim marker #295 owns exact marker coverage; [sub of #211] Record a validated release-claim census for the live open batch #296 owns the census; [sub of #221] Execute the closure-gate mutation matrix and prove each failure mode #297 owns durable mutation tests; [sub of #139] Make the closure gate a required release-process step and confirm a determinate verdict #298 owns the explicitly defined gate boundary and required procedure; [sub of #145] Refresh #145 ledger citations against the current issue-ledger gate #299 owns the reconciled ledger. Preserve Make release-claim closure gating decidable and required #139/Reconcile closure-gate evidence after gateability and mutation proof #145/[sub of #145] Define and review the hardened closure-gate mutation matrix #174/[sub of #174] Execute the closure-gate mutation matrix after prerequisite issues are gateable #194 and Make release-claim accounting decidable and falsifiable #211/Make the closure gate decidable: exactly one release-claim marker on all eight root issues #217/Falsify the closure gate: prove it fails for the right reason #221/[sub of #182] Remove the duplicate release-claim marker from #139 and confirm a determinate verdict #230-[sub of #139] Close out the release-claim gate: decidable, falsified, and enforced #239/[sub of #189] Record a validated release-claim census across the live open batch #268/[sub of #139] Make the closure gate decidable, then falsify it #281 requirements for parser-safe markers, all-issue versus root scope, explicit non-claims, audit/prospective parity, and expected failure diagnostics.
  7. Gate and publish an announcement against each product's own release source. [sub of #225] Gate the announcement on verified surface version parity #313 owns live parity gating; [sub of #207] Publish the announcement once every surface agrees, at the versions actually published #314 owns publication; Reconcile the announcement across plugin, extension, and companion-app releases #315 owns reconciliation across plugin, extension, and companion-app versions; [sub of #289] Reconcile the weekly release report against what actually shipped #316 appends the actual release outcome to Weekly release report for 2026-09-24 #289's dated snapshot. Preserve Publish release announcement with verified plugin, extension, and companion-app versions #207/Gate the release announcement on surface version parity #225/[sub of #225] Verify release-announcement parity gates before publication #257/[sub of #207] Publish the release announcement only once every surface agrees #258/[sub of #207] Gate the release announcement on live surface parity #287 criteria for factual claim mapping, screenshots, tests, distribution findings, and train classification.
  8. Re-derive membership, reconcile the batch, and close only after all evidence is current. Re-derive closure-time membership and reconcile the final ledger #317 owns closure-time membership and ledger inputs; [sub of #214] Reconcile the batch against live evidence immediately before closure #318 owns immediate open/closed-set reconciliation and F11 dispositions; [sub of #226] Close last, on a green ledger and a green runner in the same session #319 owns the final same-session test/evidence run. Own the dependency-ordered, closure-time batch reconciliation #214 owns dependency orchestration; Close the batch on a green ledger (closes last) #226 owns terminal closure after [sub of #226] Close last, on a green ledger and a green runner in the same session #319; this umbrella Close the release, registry, adoption, and ledger batch only on live evidence #149 closes last. Preserve [sub of #179] Reconcile dependency-ordered closure evidence for the batch #269-[sub of #149] Close the batch last, on cited live evidence only #273/[sub of #149] Close the batch on a re-derived green ledger #288 evidence requirements for dependency ordering, census, blockers, citations, registry diff, warning disposition, and before/after ledgers.

Reviewer acceptance criteria

  • Each objective has one accountable child owner and linked, named output; overlapping issues are superseded only after their unique criteria above are transferred and the disposition is recorded.
  • Re-derive the live open and closed membership sets at execution time; historical counts and version references are snapshots, not current evidence.
  • Record commands, UTC timestamps, exit codes, machine-readable artifacts, and linked evidence. For archive claims include release URL, asset name/hash, verification result, provenance, and the attached archive-derived screenshot.
  • Treat unreadable/partial registry results, skipped required CI proofs, missing artifacts, and indeterminate gates as not passed; state external blockers directly.
  • Keep product release sources distinct: plugin manifest/release, extension VERSION/archive, and companion-app release. At review time these are v2.7, v1.1.5, and v1.0.6 respectively; recheck before acting.
  • Close children in dependency order, [sub of #226] Close last, on a green ledger and a green runner in the same session #319 before Close the batch on a green ledger (closes last) #226 and Close the batch on a green ledger (closes last) #226 before Close the release, registry, adoption, and ledger batch only on live evidence #149. Do not mark criteria complete until the cited evidence exists; close no issue solely because its parent closed or a newer duplicate exists.
  • Close an issue as non-relevant only with evidence that its entire objective is out of scope or already satisfied, plus a disposition preserving any unique acceptance criteria.

---> 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

  1. Make release-claim evidence decidable and enforce it in the release process - Make release-claim closure gating decidable and required #139, Classify #139's release claim and verify parser determinacy #182, [sub of #139] Make the report-only closure gate a required release-process step #164, Reconcile closure-gate evidence after gateability and mutation proof #145, [sub of #145] Make #145 gateable and reconcile its acceptance ledger #186, [sub of #145] Define and review the hardened closure-gate mutation matrix #174, [sub of #174] Execute the closure-gate mutation matrix after prerequisite issues are gateable #194.
  2. Prove the current published canvas archive renders /live and 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.
  3. Capture and verify the skills.sh refresh by parsed before/after content - Capture skills.sh before-state, request re-crawl, and verify parsed content #140, [sub of #140] Sequence registry before-state capture and re-crawl submission evidence #173, [sub of #173] Capture the parsed registry before-state and record the re-crawl request #190, Verify the skills.sh re-crawl by parsed before/after content #147, [sub of #147] Verify the skills.sh re-crawl by parsed content and explicit unreadable-state handling #175, [sub of #175] Verify the skills.sh re-crawl with a parsed before/after diff #195.
  4. Run one pre-registered, archive-derived external adoption experiment and record its outcome - Run one external /live adoption experiment and record outcome #142, [sub of #142] Predeclare adoption threshold, observation window, and outcome rule #185, Coordinate the adoption contract and observation evidence #148, [sub of #148] Validate adoption contract and demonstrate the current published archive #165, [sub of #148] Record #148's release-claim state and validate its contract gate #188, [sub of #148] Run the declared observation window from published bytes and file the outcome #178.
  5. Restore public-surface parity, then gate and publish the verified release announcement - Restore public-surface parity and remove the false-green dashboard #218, Gate the release announcement on surface version parity #225, Publish release announcement with verified plugin, extension, and companion-app versions #207.
  6. Reconcile the live batch ledger and close only on cited, machine-readable evidence - [sub of #149] Record a validated release-claim census for the closure batch #189, [sub of #149] Reconcile #149 closure evidence against #198 membership in dependency order #179, Re-derive closure-batch membership at closure time and verify the ledger #198, Own the dependency-ordered, closure-time batch reconciliation #214, Close the batch on a green ledger (closes last) #226.

No objective is complete merely because a successor issue exists. External limitations remain explicit blockers until live evidence resolves them.


Reviewer amendment (2026-09-20): This issue was reviewed for clear scope, consistent ownership, and verifiable closure. Historical measurements and version references below are baseline evidence only unless revalidated at execution time.

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

  • A closure-time batch-membership JSON, ledger, release-claim census, closure evidence, and registry diff are attached.
  • No error or warning is unaccounted for; notices and external limitations are listed separately.
  • Every child is closed or has a direct named blocker justified by final evidence.
  • The closing comment records commands, UTC timestamps, exit codes, and artifact links.

Reviewer summary (added by reviewer during issue-triage review, 2026-09-19): This issue aggregates the following open sub-item objectives, each reviewed for clarity, cross-issue duplication, and verifiable acceptance criteria:

This issue must close last, in dependency order, and only after closure-evidence is clean and check-distribution --strict warnings are explicitly accounted for — not on green tests alone.


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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions