Overview
Dashboard-ify the Hands (fourth repo of the readability arc; from the intake prompt "Implement a PyAutoHands build dashboard with one-tap copy-for-Claude commands"). A phone-readable release board — what the Hands shipped: current library versions, the release train's recent outcomes, nightly cadence — each actionable item carrying a one-tap 📋 copy block (/release, /release rehearse, /release validate, /build; failed runs copy a /bug … prompt with the run URL). Past-tense record only — readiness verdicts stay with the Heart, which the board links.
Plan
- API-first data (the intake prompt's scoping question, answered):
run_logs/ is gitignored/machine-local/currently absent, so v1 renders from verified-live sources — release.yml run history + Brain nightly-release.yml outcomes via gh, git tags on the 5 libraries (authoritative version record), PyPI JSON (liveness/yanks), GitHub Releases links. Degraded API sections say so honestly.
- New
autohands/board.py: thin collect() + pure render(fmt=md|md-brief|html|json|badge) on the Heart dashboard.py pattern (📋 clipboard JS, dark aesthetic, self-contained html); bin/autohands board verb.
- New
.github/workflows/release_board.yml: workflow_run after "PyAuto Release" + daily cron + dispatch → Pages (configure-pages enablement: true) + badge.json + README strip between <!-- hands:begin/end -->.
- README on the arc pattern (drop the stale "Formerly PyAutoBuild" banners — rename shipped 2026-07-23; released badge; Latest release auto-strip; How PyAutoHands works; CLI examples); AGENTS.md verb-list prose fixed to the real dispatcher registry;
AI_POLICY.md/CONTRIBUTING.md → .github/.
- Tenant firewall: owner derived from
git remote (release_run.py precedent); repo/package lists from a declared config surface (workspaces.yaml libraries: — falling back to board.yaml if manifest-drift objects); test fixtures use fake names.
Detailed implementation plan
Affected Repositories
- PyAutoHands (primary)
- PyAutoMind (prompt lifecycle)
Branch Survey
| Repository |
Current Branch |
Dirty? |
| ./PyAutoHands |
main |
clean |
Suggested branch: feature/release-board
Implementation Steps
autohands/config gains the declared libraries: list (name+package) — verify heart/checks/manifest_drift.py + repos_sync.py --check tolerance first.
autohands/board.py collect + render; tests/test_board.py (render fixtures with fake org, degraded-section honesty, html self-containment, badge shape).
bin/autohands board (4-touch dispatcher convention).
release_board.yml publisher; README markers + rewrite; AGENTS.md prose fix; pointer-doc move.
- PR → CI (pytest + tenant firewall) → merge → dispatch → verify live page/badge/strip.
Boundary honoured
Pure executor: the board records execution, never gates. run_logs paths untouched (Heart reads them); all autohands/ primitives untouched (Heart's workflows reuse them).
Original Prompt
Click to expand starting prompt
See PyAutoMind/active/release_board.md (carries the verbatim intake text + agreed scope).
Overview
Dashboard-ify the Hands (fourth repo of the readability arc; from the intake prompt "Implement a PyAutoHands build dashboard with one-tap copy-for-Claude commands"). A phone-readable release board — what the Hands shipped: current library versions, the release train's recent outcomes, nightly cadence — each actionable item carrying a one-tap 📋 copy block (
/release,/release rehearse,/release validate,/build; failed runs copy a/bug …prompt with the run URL). Past-tense record only — readiness verdicts stay with the Heart, which the board links.Plan
run_logs/is gitignored/machine-local/currently absent, so v1 renders from verified-live sources —release.ymlrun history + Brainnightly-release.ymloutcomes viagh, git tags on the 5 libraries (authoritative version record), PyPI JSON (liveness/yanks), GitHub Releases links. Degraded API sections say so honestly.autohands/board.py: thincollect()+ purerender(fmt=md|md-brief|html|json|badge)on the Heartdashboard.pypattern (📋 clipboard JS, dark aesthetic, self-contained html);bin/autohands boardverb..github/workflows/release_board.yml:workflow_runafter "PyAuto Release" + daily cron + dispatch → Pages (configure-pages enablement: true) +badge.json+ README strip between<!-- hands:begin/end -->.AI_POLICY.md/CONTRIBUTING.md→.github/.git remote(release_run.py precedent); repo/package lists from a declared config surface (workspaces.yamllibraries:— falling back toboard.yamlif manifest-drift objects); test fixtures use fake names.Detailed implementation plan
Affected Repositories
Branch Survey
Suggested branch:
feature/release-boardImplementation Steps
autohands/configgains the declaredlibraries:list (name+package) — verifyheart/checks/manifest_drift.py+repos_sync.py --checktolerance first.autohands/board.pycollect + render;tests/test_board.py(render fixtures with fake org, degraded-section honesty, html self-containment, badge shape).bin/autohands board(4-touch dispatcher convention).release_board.ymlpublisher; README markers + rewrite; AGENTS.md prose fix; pointer-doc move.Boundary honoured
Pure executor: the board records execution, never gates.
run_logspaths untouched (Heart reads them); all autohands/ primitives untouched (Heart's workflows reuse them).Original Prompt
Click to expand starting prompt
See
PyAutoMind/active/release_board.md(carries the verbatim intake text + agreed scope).