From 3cfb95bf242ede5911769bbbda68a21bd0b37ffa Mon Sep 17 00:00:00 2001 From: Jammy2211 Date: Wed, 7 Oct 2026 09:06:13 +0100 Subject: [PATCH] fix: expose Pulse profiling measurements and related hazards --- REFERENCE.md | 33 ++- dashboard.html | 352 ++++++++++++++++++++--- pulse/setup_browser.css | 29 ++ pulse/setup_browser.js | 323 ++++++++++++++++++--- tests/browser_fixture.py | 39 +++ tests/browser_setup.cjs | 246 +++++++++++++++- tests/fixtures/browser_measurements.json | 1 + tests/test_setup_browser.py | 20 ++ 8 files changed, 966 insertions(+), 77 deletions(-) create mode 100644 tests/fixtures/browser_measurements.json diff --git a/REFERENCE.md b/REFERENCE.md index c2fbc5e..c40d623 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -109,8 +109,7 @@ IDs are non-empty and unique within each list; references resolve within the same document and project. `comparisons` must be `[]`: this catalogue presents selected results, not release trends. Keep `comparison_policy.id` explicitly labelled, e.g. `no-temporal-comparisons`, for common receipt/board compatibility. -The existing board can ingest/render v2 metadata; the interactive setup browser -is a subsequent phase. Historical v1 feeds and their comparison rules remain +The board provides an interactive setup browser over captured v2 evidence. Historical v1 feeds and their comparison rules remain supported without rewriting measurements, pins, or policy. ### Setups @@ -290,3 +289,33 @@ candidate's evidence at the captured commit. Main writers share the concurrency group `pulse-main-writers`. - `pages_dashboard.yml` — publishes `dashboard.html` as `index.html` with `badge.json` and `state.json`, after validating the feed with `PyAutoBrain/board/_state.py`. + + +### Browsing measurement availability + +The setup browser lists runtime, breakdown, compilation and memory availability +per model/instrument, then selects one exact evidence run. Runtime evidence is +the deterministic default when available; exact run links open a populated axis +without substituting a different setup. Selecting a device narrows recorded runs, +and a compatible filter persists when changing runs. Counts describe availability, +not scientific comparability or acceptance. + +Optional shard `axes` and `axis_devices` metadata supplies the overview. Older +captures fall back to their inline or verified loaded records; device-wide lists +are never treated as an axis/device cross-product. Missing axis summaries remain +explicit and their runs can still be opened. No recorded memory is displayed as +missing evidence, never estimated from another axis. + +Optional unbound-finding `discovery.models` entries identify related model +findings; `discovery.shared` identifies shared component/method findings. Both +remain applicability-unverified and separate from exact setup/version bindings. +Findings without discovery metadata remain accessible as uncategorized evidence. +Original evidence links and shard fetches retain the captured commit; local +checkout captures cannot silently fetch remote details. + +The browser regression fixture `tests/fixtures/browser_measurements.json` is a +seven-setup subset captured from autolens_profiling commit +`16471e3f6cb7acc1ebe8392af3934821bc254dea`. Its embedded shard bytes and hashes +are unchanged; the catalogue is scoped to those setups for hermetic browser tests. +It includes MGE/rectangular HST runs without reference candidates and without +memory measurements, so empty-memory and useful-runtime behavior are both tested. diff --git a/dashboard.html b/dashboard.html index c139934..f74625f 100644 --- a/dashboard.html +++ b/dashboard.html @@ -485,6 +485,35 @@ border-top: 1px solid var(--line); padding-top: 0.8rem; } + +.measurement-choices { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); + gap: 0.65rem; +} +.measurement-choice { + border: 1px solid var(--line); + border-radius: 8px; + padding: 0.65rem; +} +.measurement-choice p { + margin: 0.4rem 0 0; +} +.measurement-choice button { + width: 100%; + min-height: 2.75rem; + padding: 0.45rem; + font: inherit; + cursor: pointer; + color: var(--fg); + background: var(--bg); + border: 1px solid var(--line); + border-radius: 6px; +} +.measurement-choice button[aria-pressed="true"] { + border-color: var(--accent); + font-weight: 700; +}

PyAutoPulseProfiling dashboard

Measure. Trace. Compare.

Read the prompt