Overview
Bring the Heart's board (https://pyautolabs.github.io/PyAutoHeart/) to parity with the PyAutoMind dashboard's one-tap pattern — and beyond it. Today the board is read-only: blockers are bare sentences with no links, no copyable Claude prompts, and 8 grey "not observed here (dev-box only)" rows the reader can do nothing with. The pieces already exist: heart/fix.py builds paste-into-Claude prompts nothing surfaces, and ci_status caches the failing run URL the board never shows.
Plan
- Actionable board: structured blockers (
{text, repo, url, prompt}); 📋 copy buttons on the Pages html (mobile-first) copying /bug … prompts; links from each red/yellow row to the repo and the failing Actions run; fix.py prompt bodies extracted as pure builders and reused by the renderer.
- Dev-box rows usable: each grey family explains what it measures + carries a one-tap observe command; new
pyauto-heart publish pushes a distilled state/devbox_board.json (states/summaries/counts only, no local paths) so the SAME cloud page renders real dev-box data age-stamped ("observed Nh ago on dev box").
- README on the Mind pattern: 4-line organ opening, "How PyAutoHeart works", CLI examples after it, pointers; the auto-updated
heart:begin/end block becomes a brief strip (new --md-brief); new REFERENCE.md consumes health_agent/capabilities.md.
- Root declutter:
AI_POLICY.md + CONTRIBUTING.md → .github/ (zero inbound refs); delete stale health_agent/pyautobuild_boundary_audit.md.
Detailed implementation plan
Affected Repositories
- PyAutoHeart (primary)
- PyAutoMind (prompt lifecycle only)
Branch Survey
| Repository |
Current Branch |
Dirty? |
| ./PyAutoHeart |
main |
clean |
| ./PyAutoMind |
main |
prompt rescope in flight |
Suggested branch: feature/actionable-health-board
Implementation Steps
heart/fix.py: extract pure prompt builders (ci_prompt, drift_prompt, dirty_prompt, timing_prompt); CLI behavior unchanged.
heart/dashboard.py: Section gains links/actions; Board gains structured blockers; unobs rows self-describe + copy command; _render_html gains 📋 copy buttons (inline clipboard JS) and links, palette untouched; _render_md gains linked blockers + <details> prompts; new fmt="md-brief"; build_board(..., devbox=...) merge with <48h freshness and age stamps; to_dict SCHEMA_VERSION 2; main() --devbox (auto-detect state/devbox_board.json under --cloud).
- New
heart/publish.py + pyauto-heart publish verb: distill local-only families, privacy-scrubbed, commit+push own repo with rebase-retry.
.github/workflows/heart-health.yml: --devbox on renders, --md-brief for the README block, run links in the [heart-health] issue body.
- Tests: extend
test_dashboard.py; new test_publish.py (privacy scrub); test_fix.py for the builders.
- README rewrite + new REFERENCE.md;
git mv AI_POLICY.md CONTRIBUTING.md .github/; delete health_agent/pyautobuild_boundary_audit.md (fix its two self-refs); shrink health_agent/capabilities.md to a pointer (capabilities.yaml path untouched — runtime-read by PyAutoBrain health.sh:101).
Key Files
heart/dashboard.py — the ONE renderer (build_board :309, _render_html :745, _render_md :711, to_dict :823)
heart/fix.py — existing Claude-prompt builders
heart/checks/ci_status.py — cached failing-run url
.github/workflows/heart-health.yml — daily publisher (Pages + README block + issue)
README.md, REFERENCE.md (new), health_agent/capabilities.md
Original Prompt
Click to expand starting prompt
See PyAutoMind/active/actionable_health_board.md (rescoped 2026-08-19 from "One-tap dashboard pattern: roll out to more organs"; carries the verbatim human direction).
Overview
Bring the Heart's board (https://pyautolabs.github.io/PyAutoHeart/) to parity with the PyAutoMind dashboard's one-tap pattern — and beyond it. Today the board is read-only: blockers are bare sentences with no links, no copyable Claude prompts, and 8 grey "not observed here (dev-box only)" rows the reader can do nothing with. The pieces already exist:
heart/fix.pybuilds paste-into-Claude prompts nothing surfaces, andci_statuscaches the failing run URL the board never shows.Plan
{text, repo, url, prompt}); 📋 copy buttons on the Pages html (mobile-first) copying/bug …prompts; links from each red/yellow row to the repo and the failing Actions run;fix.pyprompt bodies extracted as pure builders and reused by the renderer.pyauto-heart publishpushes a distilledstate/devbox_board.json(states/summaries/counts only, no local paths) so the SAME cloud page renders real dev-box data age-stamped ("observed Nh ago on dev box").heart:begin/endblock becomes a brief strip (new--md-brief); newREFERENCE.mdconsumeshealth_agent/capabilities.md.AI_POLICY.md+CONTRIBUTING.md→.github/(zero inbound refs); delete stalehealth_agent/pyautobuild_boundary_audit.md.Detailed implementation plan
Affected Repositories
Branch Survey
Suggested branch:
feature/actionable-health-boardImplementation Steps
heart/fix.py: extract pure prompt builders (ci_prompt,drift_prompt,dirty_prompt,timing_prompt); CLI behavior unchanged.heart/dashboard.py:Sectiongainslinks/actions;Boardgains structuredblockers; unobs rows self-describe + copy command;_render_htmlgains 📋 copy buttons (inline clipboard JS) and links, palette untouched;_render_mdgains linked blockers +<details>prompts; newfmt="md-brief";build_board(..., devbox=...)merge with <48h freshness and age stamps;to_dictSCHEMA_VERSION 2;main()--devbox(auto-detectstate/devbox_board.jsonunder--cloud).heart/publish.py+pyauto-heart publishverb: distill local-only families, privacy-scrubbed, commit+push own repo with rebase-retry..github/workflows/heart-health.yml:--devboxon renders,--md-brieffor the README block, run links in the[heart-health]issue body.test_dashboard.py; newtest_publish.py(privacy scrub);test_fix.pyfor the builders.git mv AI_POLICY.md CONTRIBUTING.md .github/; deletehealth_agent/pyautobuild_boundary_audit.md(fix its two self-refs); shrinkhealth_agent/capabilities.mdto a pointer (capabilities.yamlpath untouched — runtime-read by PyAutoBrain health.sh:101).Key Files
heart/dashboard.py— the ONE renderer (build_board :309, _render_html :745, _render_md :711, to_dict :823)heart/fix.py— existing Claude-prompt buildersheart/checks/ci_status.py— cached failing-runurl.github/workflows/heart-health.yml— daily publisher (Pages + README block + issue)README.md,REFERENCE.md(new),health_agent/capabilities.mdOriginal Prompt
Click to expand starting prompt
See
PyAutoMind/active/actionable_health_board.md(rescoped 2026-08-19 from "One-tap dashboard pattern: roll out to more organs"; carries the verbatim human direction).