diff --git a/README.md b/README.md index 65e6559..270daa0 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,6 @@ [![health](https://img.shields.io/endpoint?url=https://pyautolabs.github.io/PyAutoHeart/badge.json)](https://pyautolabs.github.io/PyAutoHeart/) - - - - -## ๐Ÿ”ต PyAuto health โ€” **STALE** (score 65) ยท [full board โ†’](https://pyautolabs.github.io/PyAutoHeart/) - - **PyAutoHeart is the Heart of the PyAutoScientist** โ€” the organism's health authority. It continuously watches every repository (CI, branches, open PRs, version skew, script and test timings, workspace validation) and rolls what it @@ -28,6 +21,14 @@ failing run and a one-tap ๐Ÿ“‹ button that copies a ready-made Claude prompt (`/bug โ€ฆ`), so going from "something is red" to "an agent is fixing it" is copy โ†’ paste, on a laptop or a phone. +## Current health + + + + +๐Ÿ”ต **STALE** ยท score 65 ยท [full board โ†’](https://pyautolabs.github.io/PyAutoHeart/) + + ## How PyAutoHeart works 1. **Observe.** `pyauto-heart tick` (or the 5-minute daemon) runs the cheap diff --git a/heart/dashboard.py b/heart/dashboard.py index a658139..e84415a 100644 --- a/heart/dashboard.py +++ b/heart/dashboard.py @@ -949,15 +949,16 @@ def _render_md(board: Board) -> str: def _render_md_brief(board: Board) -> str: - """The README strip: one glance, not a wall. A single verdict line with - the board link inline; blockers/warnings appear only when there ARE any - (stale evidence gaps and timestamps live on the board, not the README โ€” - the strip earns its README lines only when something needs a human).""" + """The README strip: one glance, not a wall. It renders under the README's + own "## Current health" heading, so it carries no heading of its own โ€” a + single verdict line with the board link inline; blockers/warnings appear + only when there ARE any (stale evidence gaps and timestamps live on the + board, not the README โ€” the strip earns extra lines only when something + needs a human).""" word = _VERDICT_WORD.get(board.verdict, "GREEN") emoji = _STATE_MD[_VERDICT_STATE.get(board.verdict, OK)] lines = [ - f"## {emoji} PyAuto health โ€” **{word}** (score {board.score}) ยท " - f"[full board โ†’]({PAGES_URL})" + f"{emoji} **{word}** ยท score {board.score} ยท [full board โ†’]({PAGES_URL})" ] if board.verdict in ("red", "yellow"): label, items = _shown_reasons(board) diff --git a/tests/test_dashboard.py b/tests/test_dashboard.py index c3131eb..af67398 100644 --- a/tests/test_dashboard.py +++ b/tests/test_dashboard.py @@ -486,11 +486,12 @@ def test_md_brief_is_a_strip_not_a_table(): v = make_verdict("red", 45, red_reasons=["autolens_workspace: Smoke Tests failure on main"]) out = dashboard.render(_failing_snapshot(), v, fmt="md-brief", now=FRESH_NOW) - assert "PyAuto health" in out and "RED" in out + assert "**RED**" in out assert "[autolens_workspace](" in out assert dashboard.PAGES_URL in out assert "| Check |" not in out # no table โ€” the Pages board carries it assert "snapshot" not in out # no timestamp clutter โ€” the board has it + assert not out.startswith("#") # the README supplies the section heading def test_md_brief_is_one_line_unless_something_is_wrong():