sweep: reconcile shipped-but-unwrapped tasks + close the crashed-ship detection gap - #242
Merged
Jammy2211 merged 3 commits intoAug 19, 2026
Merged
Conversation
…sks sweep) - version-stamp-sync-guards: all six PRs merged 2026-08-17T22:03Z (Nerves#148, Array#447, Fit#1488, Galaxy#573, Lens#698, Hands#236) but the shipping session died after posting the "Shipped" comment on Hands#235 — no record, issue left open, active.md stale with a wrong-PR pointer (Lens#700 belongs to positions-lh-penalty-accumulation). Record written, entry retired, prompt folded; Hands#235 closed with evidence. - Retire five pre-lifecycle-migration leftovers from active/ subdirectories (invisible to lifecycle check/orphans, which scan active/*.md only): imaging_delaunay_jax_profiling.md + visualization_profiling_cluster.md (records exist, complete/2026/05), morning_status_and_daily_release_rehearsal.md (record exists, complete/2026/07), and retroactive records for imaging-mge-pytree-migration + rectangular-spline-adapt-image-jit-fix (delivered by the jax_profiling/gradient restructure; verified on autolens_workspace_developer main c5cccb8). - Shelve the two retired kxs ground-truth scripts (headers say RETIRED 2026-07-09, historical) to complete/archive/shelved/. - Regenerate complete/index.md + dashboard.md (in flight 5 -> 4). Co-Authored-By: Claude <[email protected]> Claude-Session: https://claude.ai/code/session_01AS2MB8X4vW3s27YW1ncviK
Prevention follow-up to the 2026-08-19 completed-tasks sweep, which found version-stamp-sync-guards fully merged (six PRs, 2026-08-17) while its issue stayed open and its active.md entry still read pr-open. Root cause: the ship bookkeeping (record + retire + issue close) runs after the merge, and when the shipping session dies in between, the tracking issue is never closed — so `lifecycle.py issues` (issue-state only) stays green, and it could not run in CI or cloud sessions anyway (gh-only). - issues: new PR leg — every registry `status: pr-open` PR is cross-checked; a merged (or closed-unmerged) PR on a pending entry is drift. The merged PR is the one signal that survives a crashed ship. - issues: gh-free fallback — when gh is missing, state reads go through stdlib HTTPS (GITHUB_TOKEN/GH_TOKEN honoured), so the leg now runs in CI and cloud sessions; an all-unreadable run reports "cannot run" (exit 2) instead of fake drift. - check: new hermetic strays leg — anything under active/ that is not a top-level prompt .md is drift. Five completed leftovers (three with months-old records) hid in active/ subdirectories exactly because every guard scans active/*.md only. - lifecycle_drift.yml: daily scheduled `reconcile` job runs the online leg with the runner token; a red run means finished work is still listed as pending. - tests: PR-leg drift/quiet/closed-unmerged, status-field-only ref parsing, pulls argv with merged_at jq, HTTP fallback on missing gh, strays gate (46 passing). Co-Authored-By: Claude <[email protected]> Claude-Session: https://claude.ai/code/session_01AS2MB8X4vW3s27YW1ncviK
The privacy leg of CI rightly rejected a schedule: trigger in lifecycle_drift.yml — it is the ONE workflow shipped into the fresh-slate template (spawn rule 9a), and nothing shipped may auto-run on a fresh org. The daily online leg now lives in registry_reconcile.yml as instance automation with an explicit rule-9c DROP in scripts/spawn.py, mirrored in the spec table and the template-contract tests; lifecycle_drift.yml is restored byte-identical to main. Co-Authored-By: Claude <[email protected]> Claude-Session: https://claude.ai/code/session_01AS2MB8X4vW3s27YW1ncviK
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The sweep (2026-08-19)
The dashboard was carrying completed tasks that were never wrapped up. This PR reconciles all of them:
active.mdstale with a wrong-PR pointer (Lens#700 belongs to positions-lh-penalty-accumulation). Record written (complete/2026/08/version-stamp-sync-guards.md), entry retired, prompt folded; Hands#235 closed with the evidence trail.active/subdirectories (invisible tocheck/orphans, which scanactive/*.mdonly): two prompts whose records have existed since May, the morning-status prompt (record since July), plus retroactive records forimaging-mge-pytree-migrationandrectangular-spline-adapt-image-jit-fix(delivered by thejax_profiling/gradientrestructure — verified on autolens_workspace_developer mainc5cccb8).complete/archive/shelved/.complete/index.md+dashboard.mdregenerated (In flight 5 → 1 with the sibling PyAutoBrain dashboard fix).Prevention
Root cause: the ship bookkeeping (record + retire + issue close) runs after the merge, and when the session dies in between, the tracking issue never closes — so
lifecycle.py issues(issue-state only, gh-only) stayed green and never ran in CI anyway.issuesPR leg — every registrystatus: pr-openPR is cross-checked; merged (or closed-unmerged) on a pending entry = drift. The merged PR is the one signal that survives a crashed ship.GITHUB_TOKEN/GH_TOKENhonoured), so the leg runs in CI and cloud sessions; an all-unreadable run reports "cannot run" (exit 2) instead of fake drift.check— anything underactive/that is not a top-level prompt.mdis drift.lifecycle_drift.yml— daily scheduledreconcilejob runs the online leg with the runner token.Tests
python3 -m pytest tests/— 139 passed (46 intest_lifecycle_check.py, incl. new PR-leg drift/quiet/closed-unmerged cases, status-field-only ref parsing, pulls argv with themerged_atjq, HTTP fallback on missing gh, and the strays gate).lifecycle.py checkandindex --checkgreen on the tree.🤖 Generated with Claude Code
https://claude.ai/code/session_01AS2MB8X4vW3s27YW1ncviK
Generated by Claude Code