Skip to content

feat: Phase 4 — instrument-framed README dashboard#10

Merged
Jammy2211 merged 1 commit into
mainfrom
feature/instrument-dashboard
May 16, 2026
Merged

feat: Phase 4 — instrument-framed README dashboard#10
Jammy2211 merged 1 commit into
mainfrom
feature/instrument-dashboard

Conversation

@Jammy2211

Copy link
Copy Markdown
Contributor

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 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 auto-table:<name> --> / <!-- END auto-table:<name> -->.
  • --check mode 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:

Region Target README
headline top-level README.md
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

Sentinel-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

  • New "Latest run-times" section anchored on the headline auto-table.
  • Roadmap table refreshed to show 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.

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's profile.yml workflow produces and commits real artifacts, 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 \"hardware\" 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 under its own follow-up.

Test plan

  • py_compile scripts/build_readme.py PASSES.
  • python scripts/build_readme.py runs cleanly against the empty results/ tree and writes "no data yet" placeholders into every sentinel region.
  • python scripts/build_readme.py --check exits 0 immediately after the previous run — idempotence verified.
  • Surrounding hand-written prose in every target README is unchanged (verified by diff inspection — only content between sentinels was rewritten).
  • Unknown sentinel names (none today) would be left intact with a stderr warning rather than erroring out — robust against future README additions.

Refs

🤖 Generated with Claude Code

…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>
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: Phase 4 — instrument-framed README dashboard

1 participant