Skip to content

feat: actionable health board — one-tap prompts, links, dev-box enrichment #151

Description

@Jammy2211

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

  1. heart/fix.py: extract pure prompt builders (ci_prompt, drift_prompt, dirty_prompt, timing_prompt); CLI behavior unchanged.
  2. 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).
  3. New heart/publish.py + pyauto-heart publish verb: distill local-only families, privacy-scrubbed, commit+push own repo with rebase-retry.
  4. .github/workflows/heart-health.yml: --devbox on renders, --md-brief for the README block, run links in the [heart-health] issue body.
  5. Tests: extend test_dashboard.py; new test_publish.py (privacy scrub); test_fix.py for the builders.
  6. 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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions