Skip to content

Actionable health board: one-tap prompts, links, dev-box publish - #152

Merged
Jammy2211 merged 2 commits into
mainfrom
feature/actionable-health-board
Aug 19, 2026
Merged

Actionable health board: one-tap prompts, links, dev-box publish#152
Jammy2211 merged 2 commits into
mainfrom
feature/actionable-health-board

Conversation

@Jammy2211

Copy link
Copy Markdown
Contributor

Closes #151. The Heart-board leg of the one-tap dashboard rollout (PyAutoMind pattern), per the approved plan.

The board becomes actionable

  • Structured blockers — every red/yellow/stale reason resolves its repo (from the "repo: problem" convention) and the cached failing-run URL (ci_status.url), and carries a copyable prompt: /bug Heart board: <reason> — failing run: <url> (stale reasons get a /health re-run nudge instead, honouring "re-run, don't fix").
  • Pages html — 📋 buttons (inline clipboard JS, window.prompt fallback) on each blocker and actionable row; repo + run ↗ links; palette untouched. Failing repo-group rows link their runs too.
  • md — blockers linked, prompts in a collapsed <details> of fenced blocks (GitHub's fenced-code copy button makes each one one-tap on the web).
  • json — schema v2 (additive): blockers, per-section links/action/observed_ago.
  • Observed drift/timing rows carry pyauto-heart fix drift / fix timing <project> actions.

Dev-box rows become usable

  • Grey rows now say what they watch and copy pyauto-heart tick && pyauto-heart publish.
  • New pyauto-heart publish (heart/publish.py): distills the LOCAL board's local-only families into state/devbox_board.json — states/summaries/counts only, detail lines naming local filesystem paths are scrubbed (test-pinned) — then commits+pushes to main (branch-guarded, rebase-retry). Observer rule holds: Heart writes only its own repo.
  • The cloud render auto-detects the committed file and fills the grey rows, each stamped "observed Nh ago on the dev box", expiring back to grey after 48 h.

README + declutter

  • README restructured on the Mind pattern: 4-line organ opening → live-board paragraph → How PyAutoHeart worksCLI examples → pointers. The auto-updated heart:begin/end block becomes a brief strip (new --md-brief: verdict + linked blockers + board link); the full table lives on the Pages board and the step summary.
  • New REFERENCE.md (CLI table, run model, state layout, verdict tiers incl. STALE, publish flow) absorbs health_agent/capabilities.md; the stale pyautobuild_boundary_audit.md is retired; AI_POLICY.md/CONTRIBUTING.md move under .github/ (zero inbound references; mirrors PyAutoMind #248).
  • heart-health.yml: README step uses --md-brief; the [heart-health] issue body links failing runs.

Deviation from the plan's detail: fix.py needed no builder extraction — the board's payloads are short slash-prompts/commands, and the long context-bundling prompts stay fix.py's job.

Verification

  • pytest tests/495 passed (11 new tests: blocker structure, html copy payloads, md links, md-brief, unobs actions, devbox merge fresh/stale/no-override, publish distillation + privacy scrub + round-trip).
  • Rendered against the real local state: --cloud --md, --md-brief, and --cloud --devbox <dry-run output> --html → rows show "observed 3h ago on the dev box".
  • The html self-containment test now asserts "no external assets" (no src=/<link/fetch; every URL sits in an href) — inline script is required by the clipboard buttons.

After merge: workflow_dispatch heart-health.yml, verify the live page/badge/README strip, then run pyauto-heart publish from the dev box and re-dispatch to see the age-stamped rows live.

🤖 Generated with Claude Code

Jammy2211 and others added 2 commits August 19, 2026 16:45
The board's blockers are now structured ({text, severity, repo, run url,
prompt}): the Pages html carries one-tap 📋 buttons copying ready-made
/bug prompts plus repo/run links (the PyAutoMind dashboard pattern), md
links them with collapsed copyable prompts, and json (schema v2) carries
them verbatim. Grey 'not observed here' rows now say what they watch and
copy the observe command; a new 'pyauto-heart publish' distills the dev
box's local-only families into state/devbox_board.json (local paths
scrubbed) so the cloud page fills in, age-stamped, expiring after 48h.
New --md-brief renders the README strip (verdict + linked blockers +
board link) that replaces the full table between the heart markers.

README restructured on the Mind pattern (organ opening, How PyAutoHeart
works, CLI examples); new REFERENCE.md absorbs health_agent/capabilities.md;
AI_POLICY/CONTRIBUTING move under .github/; the stale PyAutoBuild boundary
audit is retired.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The board's repo/run links take their GitHub owner from the declared
config surface (config/repos.yaml owner:), never a literal in organ code;
test fixtures use fake names / a derived URL for the same reason.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Jammy2211
Jammy2211 merged commit 41f4ced into main Aug 19, 2026
2 checks passed
@Jammy2211
Jammy2211 deleted the feature/actionable-health-board branch August 19, 2026 21:02
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.

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

1 participant