prompt: navigator-check close-out, the Heart required-workflow check, and two retirements - #351
Merged
Conversation
…, never recorded /start_dev on draft/maintenance/ci/autocti_workspace_navigator_check.md found the work already done: autocti_workspace#30 merged as 4b162ae on 2026-08-24 and issue #29 closed the same day. The prompt was never advanced out of draft/, so it kept rendering on the dashboard as pickable backlog. Retires it with a retrospective completion record built from the merged PR, the closed issue and its three comments: what landed, the untracked-catalogue trap (git diff --exit-code exits 0 on untracked paths, so the staleness job would have gone green while checking nothing), the roll-up acceptance criterion, and the 15-repo survey behind work item 4. Acceptance criterion re-verified against main HEAD ea3e424 (2026-08-27): Navigator Check and Smoke Tests both success on that sha, so rollup()'s on_head condition still holds and autocti_workspace reads conclusion: success. Work item 4 — a Heart-side "every repo in a required group has a workflow file for each required workflow" drift check — remains proposed but unfiled. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KmWbYJw4cJJnt4eK6NoZjL
…check work item 4) The general case behind autocti_workspace#29/#30: heart/checks/ci_status.rollup() scores a repo over its group's required_workflows, and a required workflow with no runs is never scored as a failure — it just never satisfies all_green, so the repo sits at {"conclusion": "", "status": "in_progress"} forever. On the dashboard that is indistinguishable from a run in flight. The 2026-08-24 survey found autocti_workspace was the only instance across all 15 repos in the four required groups, and #30 removed it. The prompt is a guard against the hole reopening: every edit to config/repos.yaml that adds a repo to a group, or a workflow to a group's required list, silently makes repos un-greenable and produces no red anything. Corrects the original proposal on one point. It assumed a periodic Actions-API sweep or sibling checkouts; ci_status.sh already loops every polled repo in parallel making two cheap gh api metadata calls each, so a third (actions/workflows, the only call that tells "missing file" from "never ran") is the same shape and cost — measure it against the <30s tick before falling back to a deep tier. manifest_drift.py is the precedent for classifying it as a YELLOW configuration finding rather than red CI. Filed at draft/feature/pyautoheart/ rather than the intake router's suggested draft/feature/autocti/: the classifier read the autocti_workspace context references as the target, but the work is entirely in PyAutoHeart. Cross-referenced from the navigator-check completion record. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KmWbYJw4cJJnt4eK6NoZjL
Advances the prompt filed earlier this session from draft/ to active/: issue PyAutoHeart#188 created, registered in active.md at status ready-to-ship with the pushed branch feature/required-workflow-file-drift, dashboard regenerated. The implementation landed in the same session — heart/checks/required_workflow_drift.py plus its wiring in state.py, tick.sh and readiness.py, 15 new tests, full Heart suite 656 passed. The branch is pushed with no PR opened. The entry records worktree: none — this ran in a remote web session, where PyAutoHeart is a flat clone rather than a ~/Code/PyAutoLabs-wt/ worktree, so a later session resuming this task should not go looking for one. Also repoints the navigator-check completion record's work-item-4 cross-link from the draft path to the issue, now that the prompt has moved. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KmWbYJw4cJJnt4eK6NoZjL
…9 MERGED Close-out for PyAutoHeart#188. PR #189 merged as 2a1391f with both Heart Tests legs green (pytest 3.12, 3.13); issue commented and closed. active/ -> complete/2026/08/required-workflow-file-drift.md, active.md section removed, complete/index.md and both dashboard pages regenerated. The record keeps three things worth re-reading before the next Heart change: the tenant firewall scans docstrings and test fixtures, not just code, so a module that recounts an incident by name reddens CI — name no instance fact rather than growing FIREWALL_ALLOWLIST; Heart's own gate reads YELLOW in a remote session purely from the environment (no gh, and add_repo's lowercase clone URL vs the body map's PyAutoHeart); and a --depth 1 clone is single-branch, so push -u leaves no origin/feature/* tracking ref and a local git-state check misreads a pushed branch as unpushed. Sweep found no stale references to the slug or prompt filename. Reconcile over draft/maintenance/ci flagged run_smoke_copy_drift.md, left standing: it is resemblance, not proof — this merge is entirely PyAutoHeart's required-workflow check and covers none of that prompt's smoke-runner scope. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KmWbYJw4cJJnt4eK6NoZjL
… task The prompt was issued from a copy rather than moved, so draft/maintenance/ci/run_smoke_copy_drift.md stayed behind when the task went to active/ and then into complete/2026/08/smoke-runner-delegation.md. It is a strict prefix of the copy that record folds — identical through the re-scoped task list, missing only the Issued:/Filed: headers and the 2026-08-24 re-measurement — so it kept rendering on the dashboard as pickable backlog for work already merged. Proof, not resemblance. Verified against the merged end state rather than the record: autolens_workspace and autogalaxy_workspace .github/scripts/run_smoke.py are both 119-line shims on origin/main and the vestigial _BUILD_DIR line the prompt's step 4 asked about is gone; and the acceptance criterion that consolidation must not cost autolens_workspace_test its per-script timeout holds through the shared path, build_util.execute_scripts_in_folder -> execute_script -> timeout_for(env) with run_capped(timeout=...) and TimeoutExpired handling. Recorded in the existing completion record rather than writing a second one for the same task. Reconcile over draft/maintenance/ci is now clean (0 suspects of 133); dashboard and complete/index.md regenerated. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KmWbYJw4cJJnt4eK6NoZjL
The branch was behind main by PyAutoMind#348/#349/#350. Merged, never rebased. All three conflicts were in generated files — complete/index.md, dashboard.md, dashboard.html — and were resolved by regenerating from the merged sources (lifecycle.py index --apply, pyauto-brain intake --apply dashboard), never by hand-editing. No source-of-truth file conflicted. All four PR gates re-run green after the merge: lifecycle check, lifecycle index --check, registry_toc --check, intake dashboard --check, plus the spawn privacy suite (240 passed). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KmWbYJw4cJJnt4eK6NoZjL
Main moved again during the run (PyAutoMind#352). Merged, never rebased. The one conflict was complete/index.md — generated — resolved by regenerating with lifecycle.py index --apply, and the dashboard pages regenerated alongside it. All gates re-run green: lifecycle check, lifecycle index --check, registry_toc --check, intake dashboard --check, spawn privacy suite (240 passed). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KmWbYJw4cJJnt4eK6NoZjL
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.
Mind-side state for one arc that started as
/start_devon a prompt whose work was already merged. Five commits, no code — records, registries and the generated pages.What happened
/start_dev draft/maintenance/ci/autocti_workspace_navigator_check.mdfound the task already shipped — autocti_workspace#30 merged as4b162aeon 2026-08-24, issue #29 closed the same day. The prompt was never advanced out ofdraft/, so it kept rendering on the dashboard as pickable backlog. Retired with a retrospective record (b3a7dd89), and the acceptance criterion re-verified rather than taken from the issue: both required workflows aresuccesson autocti_workspace's currentmainHEAD, sorollup()'son_headcondition holds and the repo readsconclusion: success.Its work item 4 — the general case — was proposed on the issue but never filed. Filed here as a prompt (
f8b43367), then issued, implemented and merged in the same session: PyAutoHeart#188 / PR #189 (2a1391f),heart/checks/required_workflow_drift.py. Registered and recorded in11f0898fand25d82e5e.A second stale draft was retired (
ed3ec5f0):run_smoke_copy_drift.mdis a strict prefix of the prompt already folded intocomplete/2026/08/smoke-runner-delegation.md— the task was issued from a copy rather than moved. Retired against the merged end state, not the record: both workspace runners are 119-line shims onorigin/mainwith the vestigial_BUILD_DIRgone, and the timeout the consolidation could have destroyed is enforced throughbuild_util.execute_scripts_in_folder→execute_script→timeout_for(env). Noted in the existing record rather than written as a second one for the same task.The drift class this PR is mostly about
Both retirements are the same failure: a prompt that shipped and was never retired renders faithfully, as pickable backlog, and no workflow can tell the difference.
lifecycle.py checkreports OK throughout, because adraft/prompt with no registry entry is a valid state. Two instances found in one folder;intake reconcile draft/maintenance/ciis now clean (0 suspects of 133).Verification
lifecycle.py check,lifecycle.py index --check,intake dashboard --checkall clean at HEAD.dashboard.md+dashboard.htmlregenerated in the same commit as every change that touches them; backlog 135 → 133.Generated by Claude Code