mind: link the task dashboard from the README and keep it fresh in CI - #182
Merged
Conversation
The dashboard existed but nothing pointed at it: not the README, not AGENTS.md, not REFERENCE.md. You had to already know the filename to find the one page that lists what there is to work on, which on a phone means it did not exist. It is now the first thing under the org banners, and a row in the "what lives here" table. Linking it makes staleness a real problem. Between its first commit and today the page was regenerated by hand 4 times while 33 commits touched `draft/` — fine while only the session that changed the backlog read it, misleading once the README sends people there. `dashboard_refresh.yml` follows lifecycle_drift.yml (#116): stale on a PR is an error the author fixes, stale on main is self-healed with a bot commit, because Mind pushes land on main from many concurrent sessions. The generation stamp is excluded from the drift check, so it never commits merely because the date rolled. Spawn: `dashboard.md` becomes EMPTY rather than DROP — README.md ships verbatim and now links it, so dropping it would hand every spawned org a broken front-page link. `dashboard_refresh.yml` is DROP under rule 9c: it checks out PyAutoBrain for the renderer, a sibling a fresh org does not have. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0126JUwjCAuzCJZEs47ymHdT
The freshness step treated every non-zero exit from `dashboard --check` as drift. This PR's own first run proved why that is wrong: PyAutoBrain main did not yet carry `--check`, argparse exited 2, and the step told the reader to regenerate dashboard.md — a file that was already current. Exit 1 is drift and nothing else; any other code is a renderer that could not run, and now says so instead of blaming the page. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0126JUwjCAuzCJZEs47ymHdT
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.
Makes
dashboard.mdfindable and keeps it true. Paired with PyAutoLabs/PyAutoBrain#227, which rewrites the renderer.Merge PyAutoBrain#227 first.
dashboard_refresh.ymlcalls_intake.py … dashboard --check, which only exists after that PR lands; until then this workflow fails on every run.Why
The dashboard existed but nothing pointed at it — not the README, not
AGENTS.md, notREFERENCE.md. You had to already know the filename to find the one page listing what there is to work on, which on a phone means it did not exist.Linking it makes staleness a real problem. Between its first commit and today the page was regenerated by hand 4 times while 33 commits touched
draft/. That was survivable while only the session that changed the backlog read it; it is not once the README sends people there.What changed
AGENTS.mdandREFERENCE.mdsay it is generated and must not be hand-edited..github/workflows/dashboard_refresh.yml— same shape aslifecycle_drift.yml(maintenance: self-heal stale complete/index.md in Lifecycle Drift CI #116): stale on a PR is an error the author fixes on the branch; stale onmainis self-healed with a bot commit, because Mind pushes land directly on main from many concurrent agent sessions and an alarm-only check would just email a human. It checks out PyAutoBrain for the renderer (the Mind holds the state, the Brain reasons over it). The generation stamp is excluded from the drift comparison, so it never commits merely because the date rolled.dashboard.mdregenerated against the new renderer.Spawn
Both changes force a fresh-slate decision, so the spec tables and
spawn.pymove together:dashboard.md: DROP → EMPTY (new rule 7b).README.mdships verbatim under rule 3 and now links this page from its top, so dropping it would hand every spawned org a broken front-page link. The generated body is a title plus the schema-pointer comment, like every other rule-5 file.dashboard_refresh.yml: DROP under rule 9c — it checks outPyAutoLabs/PyAutoBrain, a sibling a freshly-spawned org does not have, and owner substitution only turns that into the literalYOURORG/PyAutoBrain. (Rule 9d has no catch-all by design, so a new.githubfile fails the run until a human classifies it — that is what happened here.)Testing
139 passed.
test_spawn_template_contract.pynow reads the realdashboard_refresh.ymlfrom disk and asserts it does not ship into the template — the fixture reads the real file rather than a miniature, for the reason recorded in #125.Known drift this now surfaces
The page reports honestly rather than papering over two existing gaps: 4 of the 6 in-flight tasks have no issue link, because they have no
active.mdrow (the orphaned-active/drift #163 chased), and 6 prompts remain headerless in the Hygiene section.Generated by Claude Code