Skip to content

mind: link the task dashboard from the README and keep it fresh in CI - #182

Merged
Jammy2211 merged 2 commits into
mainfrom
claude/pyautomind-task-dashboard-btahkf
Aug 11, 2026
Merged

mind: link the task dashboard from the README and keep it fresh in CI#182
Jammy2211 merged 2 commits into
mainfrom
claude/pyautomind-task-dashboard-btahkf

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

Makes dashboard.md findable and keeps it true. Paired with PyAutoLabs/PyAutoBrain#227, which rewrites the renderer.

Merge PyAutoBrain#227 first. dashboard_refresh.yml calls _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, not REFERENCE.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

  • README — the dashboard is the first thing under the two org banners, plus a row in the "what lives here" table. AGENTS.md and REFERENCE.md say it is generated and must not be hand-edited.
  • .github/workflows/dashboard_refresh.yml — same shape as lifecycle_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 on main is 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.md regenerated against the new renderer.

Spawn

Both changes force a fresh-slate decision, so the spec tables and spawn.py move together:

  • dashboard.md: DROP → EMPTY (new rule 7b). README.md ships 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 out PyAutoLabs/PyAutoBrain, a sibling a freshly-spawned org does not have, and owner substitution only turns that into the literal YOURORG/PyAutoBrain. (Rule 9d has no catch-all by design, so a new .github file fails the run until a human classifies it — that is what happened here.)

Testing

139 passed. test_spawn_template_contract.py now reads the real dashboard_refresh.yml from 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.md row (the orphaned-active/ drift #163 chased), and 6 prompts remain headerless in the Hygiene section.


Generated by Claude Code

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
@Jammy2211
Jammy2211 merged commit 50a681e into main Aug 11, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants