Skip to content

intake: widen the dashboard into the Mind's task page, and make it checkable - #227

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

intake: widen the dashboard into the Mind's task page, and make it checkable#227
Jammy2211 merged 1 commit into
mainfrom
claude/pyautomind-task-dashboard-btahkf

Conversation

@Jammy2211

@Jammy2211 Jammy2211 commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Rewrites the intake dashboard renderer so PyAutoMind/dashboard.md is a page a human can pick work from, on GitHub web or a phone. Paired with PyAutoLabs/PyAutoMind#182, which links the page from the Mind's README and adds the CI that keeps it fresh.

Merge this first. The Mind workflow calls _intake.py … dashboard --check, which only exists after this lands.

Why

The page was a backlog inventory: ten five-column tables, 133 rows, no in-flight work and no issue links. It answered "how many prompts are there?" for someone already at a terminal. The page a human opens on GitHub — often on a phone — has to answer "what should I pick up now?", and a five-column table with 39 rows scrolls sideways on a phone rather than wrapping.

What changed

  • Picks first. The page opens with ## Start here: highest-priority prompts (sorted smallest-first) and quick wins (small and safe-autonomy). Then in flight, parked, planned, and the full backlog behind <details>.
  • Bullets, not tables. Every prompt row is a bullet with its facets after an em dash. The only table left is the 2-column where/count summary.
  • The registry is now in the census. census() parses active.md / parked.md / planned.md into rows, so the page covers what has left the backlog, not just what sits in it.
  • Issue links come from the registry row that names the prompt, never from a URL in the prompt body — a body URL is as often a cross-reference as the task's own issue. For the same reason in-flight rows show the registry's status, not the prompt's own Status: header, which reads formalised from conception until the day it ships.
  • Live GitHub links for the half a static file cannot hold: org-wide open issues and PRs.
  • dashboard --check exits 1 when the committed page has drifted, ignoring the generation stamp so a re-render on an unchanged Mind is not drift (otherwise the Mind's self-heal would commit daily).

Rendering safety

Pinned by tests because these failures are silent rather than loud:

  • a prompt titled with a leading <!-- (the untriaged ones are) commented out the rest of the page in GitHub's renderer;
  • a [JAX] in a title ended its markdown link early;
  • an issue: field with trailing prose (…/issues/20 (build gated)) linked the prose into the URL.

Testing

tests/test_intake_dashboard.py — 10 hermetic tests over fictional Minds in tmp_path, covering pick ordering, the quick-wins filter, the bullet/<details> shape, registry-vs-header status, the no-registry-row case, both rendering hazards above, and --check drift-vs-calendar.

Full suite: 349 passed. bin/check_skill_line_counts.sh clean.

Docs

agents/conductors/intake/AGENTS.md (verb table + examples) and skills/intake/intake.md updated to describe the task page and --check.

…eckable

`dashboard.md` was a backlog inventory: ten five-column tables, 133 rows, no
in-flight work and no issue links. It answered "how many prompts are there?"
for someone at a terminal. The page a human actually opens on GitHub — often
on a phone — has to answer "what should I pick up now?", so the renderer now
leads with the picks (high priority, then quick wins), lists what is in
flight with its issue link, and puts parked/planned/the whole backlog behind
`<details>`. Backlog rows are bullets, not table rows, because a wide table
scrolls sideways on a phone and a bullet wraps.

The issue links come from the registry rows (`active.md`, `parked.md`,
`planned.md`) that name a prompt, never from a URL in the prompt body — a
body URL is as often a cross-reference as the task's own issue. Same reason
in-flight rows show the registry status and not the prompt's `Status:`
header, which says "formalised" from conception until the day it ships.

`dashboard --check` exits 1 when the committed page has drifted, ignoring the
generation stamp so a re-render on an unchanged Mind is not drift. That is
what PyAutoMind's new `dashboard_refresh.yml` runs.

Rendering safety is pinned by tests because the failures are silent: a prompt
titled with a leading `<!--` (the untriaged ones are) commented out the rest
of the page, and a `[JAX]` in a title ended its link early.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0126JUwjCAuzCJZEs47ymHdT
@Jammy2211
Jammy2211 merged commit 67103b8 into main Aug 11, 2026
2 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