Skip to content

The Brain board reads the Heart's test-performance surface - #261

Merged
Jammy2211 merged 1 commit into
mainfrom
claude/test-performance-dashboard-y3fdy7
Aug 24, 2026
Merged

The Brain board reads the Heart's test-performance surface#261
Jammy2211 merged 1 commit into
mainfrom
claude/test-performance-dashboard-y3fdy7

Conversation

@Jammy2211

Copy link
Copy Markdown
Contributor

Consumer half of PyAutoLabs/PyAutoHeart#163 (design record: PyAutoMind/docs/pyautoheart/test_performance_board_assessment.md). Merges cleanly before or after the Heart PR — the section renders only once the Heart publishes the block.

  • One Heart board.json read now serves both consumers: fetch_heart_board + pure extractors; fetch_heart_blockers keeps its name, signature, degraded message and blocker shaping unchanged.
  • extract_heart_performance distils the published performance block into up to 5 flagged rows (hang events → slowed gates → unmeasured SLOW no_run entries), all accessed defensively — an absent block (an older Heart publish) means no section and no degraded row.
  • New ⏱ Test performance section after Readiness & release, html + md: each flagged row is a _row whose 📋 chip carries the Heart's own prompt verbatim (the heart_blockers rule — never re-derived), with a run ↗ link when present; quiet mornings get one ✓ N gates timed · nothing flagged line linking the full Heart board.
  • verdict(): CI hang events count as attention (orange), never blocking.
  • board/AGENTS.md section table updated.

Tests: 447 passed (+5 new, hermetic file:// fixtures, fake names; all existing board tests unchanged).

🤖 Generated with Claude Code

https://claude.ai/code/session_01EoDPz2LevKeBaDwqFKtZrU


Generated by Claude Code

The Heart board's board.json is gaining an additive `performance` block —
per-gate timings, kill-timer/hang events and the no_run census, each
actionable row carrying its own one-tap prompt. The Brain board is its
morning-headline consumer.

One HTTP read now serves both consumers: fetch_heart_board() fetches the
Heart's machine surface (owning the degraded row), extract_heart_blockers()
and extract_heart_performance() are pure extractors over it, and the old
fetch_heart_blockers() stays as the fetch-and-extract door with its
behaviour unchanged.

The new ⏱ Test performance section sits directly after readiness in both
renders: the worst few flagged rows — hang events first, then slowed gates,
then SLOW no_run markers nobody ever measured — each chipped with the
Heart's OWN prompt, verbatim, never re-derived. Nothing flagged renders one
quiet row linking the full timings; an older Heart publish with no block
renders no section at all (silence, not a degraded row).

Timing rows stay advisory — the precedent is the import_time leg — but a run
that hung is a morning fact, so events join the attention tier and never the
blocking one.

The producer is a sibling organ being built in parallel, so the block is
read defensively throughout: every access a .get with a default, every
oddly-typed field costing a row rather than the page.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EoDPz2LevKeBaDwqFKtZrU
@Jammy2211
Jammy2211 merged commit 1b79bb3 into main Aug 24, 2026
2 checks passed
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.

2 participants