feat: Phase 4 — instrument-framed README dashboard#10
Merged
Conversation
…Phase 4)
Phase 4 of the autolens_profiling z_feature roadmap. Builds the public-
facing instrument-framed dashboard the user has been most explicit about:
"Framing it in terms of Astronomy instruments and telescopes, instead of
just 'number of pixels' or other such metrics is way more intuitive."
What lands in this PR
---------------------
1. scripts/build_readme.py — idempotent table generator.
- Scans results/**/*_summary_v<version>.json
- Parses filenames into (section, sub-folder, script, instrument, version)
- Picks the latest version per axis via PEP 440-ish dotted-version sort
- Generates a markdown table per known sentinel region and replaces
content between matching BEGIN/END sentinels
- `--check` mode for CI: exits non-zero if running would change any file
7 sentinel region types covered today:
headline (top-level README)
likelihood-imaging (likelihood/imaging/README.md)
likelihood-interferometer (likelihood/interferometer/README.md)
likelihood-point_source (likelihood/point_source/README.md)
likelihood-datacube (likelihood/datacube/README.md)
simulators (simulators/README.md)
searches-nautilus (searches/nautilus/README.md)
2. Sentinel-tagged auto-table regions added to all 7 target READMEs.
Surrounding hand-written prose is preserved; only the content between
`<!-- BEGIN auto-table:<name> -->` and `<!-- END auto-table:<name> -->`
is rewritten.
3. Top-level README updated:
- New "Latest run-times" section anchored on the headline auto-table.
- Roadmap table refreshed to reflect Phases 0-4 shipped (was Phase 0
only at bootstrap time).
- New "Future enhancements" subsection documenting six deferred
extras: regression-watch indicator, per-axis version-history PNGs,
plotly interactive timeline, flamegraph captures, hardware-tier
columns, archive policy for old versions.
4. Per-section READMEs: hand-written "populated by Phase 4" placeholder
tables replaced with auto-table sentinel blocks + a one-line caption
explaining the regeneration command.
Today's output
--------------
No result artifacts are committed under results/ (they're gitignored per
Phase 1's design). Every auto-table region currently renders the
"No data yet — run X to populate" placeholder. As soon as the user (or
Phase 5's CI workflow) produces and commits real JSON+PNG artifacts to
results/<section>/..., re-running scripts/build_readme.py refreshes
every table in place.
Design decisions resolved
-------------------------
- CPU/laptop-GPU/HPC-GPU split: SINGLE COLUMN for now (CPU only —
every artifact today is implicitly CPU). Hardware-tier columns
added as a "Future enhancements" entry; renderer change is small
once artifacts gain a hardware label (filename suffix or JSON field).
- Versioning policy: keep all versions in results/, sort by
PEP 440-ish dotted version, render the latest. Archiving older
versions to results/archive/ is a "Future enhancements" entry.
- Cool extras: deferred all six candidates to "Future enhancements"
rather than landing extras in this PR. Reasons: no real artifacts
exist to feed them, the dashboard infrastructure is more valuable
to ship first, and each extra is independently scoped.
Closes #6.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced May 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase 4 of the autolens_profiling z_feature roadmap — builds the public-facing instrument-framed dashboard, the user's most explicitly-requested deliverable: "Framing it in terms of Astronomy instruments and telescopes, instead of just 'number of pixels' or other such metrics is way more intuitive."
Closes #6.
What lands in this PR
scripts/build_readme.py— idempotent table generatorresults/**/*_summary_v<version>.json.(section, sub-folder, script, instrument, version).<!-- BEGIN auto-table:<name> -->/<!-- END auto-table:<name> -->.--checkmode for CI: exits non-zero if running would change any file (so Phase 5 can gate on it).7 sentinel region types are wired up today:
headlineREADME.mdlikelihood-imaginglikelihood/imaging/README.mdlikelihood-interferometerlikelihood/interferometer/README.mdlikelihood-point_sourcelikelihood/point_source/README.mdlikelihood-datacubelikelihood/datacube/README.mdsimulatorssimulators/README.mdsearches-nautilussearches/nautilus/README.mdSentinel-tagged auto-table regions added to 7 target READMEs
Hand-written prose around each region is preserved verbatim; only the body between BEGIN and END is rewritten. The placeholder "populated by Phase 4" tables from Phases 1-3 are gone, replaced by sentinel blocks + a one-line caption explaining how to regenerate.
Top-level README updated
Today's output
No result artifacts are committed under
results/(they're gitignored per Phase 1's design — the artifact storage policy waits for Phase 5's CI workflow to lock in a commit cadence). Every auto-table currently renders a "No data yet — run X to populate" placeholder. As soon as the user or Phase 5'sprofile.ymlworkflow produces and commits real artifacts, re-runningscripts/build_readme.pyrefreshes every table in place.Design decisions resolved
\"hardware\"field).results/, sort by PEP 440-ish dotted version, render the latest. Archiving older versions toresults/archive/is a "Future enhancements" entry.Test plan
py_compile scripts/build_readme.pyPASSES.python scripts/build_readme.pyruns cleanly against the emptyresults/tree and writes "no data yet" placeholders into every sentinel region.python scripts/build_readme.py --checkexits 0 immediately after the previous run — idempotence verified.Refs
python scripts/build_readme.py --checkinlint.ymlandpython scripts/build_readme.py && git commitinprofile.ymlafter profile-rerun.likelihood-point_sourcecells will likely show—until #514 resolves.🤖 Generated with Claude Code