Repository navigation
feat: profiling-summary@3 catalogue builder from the mirrored tree (#442 PR 3) - #448
Merged
Jammy2211 merged 6 commits intoOct 24, 2026
Merged
Conversation
…PR 3) build_catalogue.py now writes dashboard/catalogue.json as the v3 lifecycle catalogue: records keyed by (likelihood, instrument, setup_id, host_class, model_variant, measurement) read natively from results/<dataset_type>/<variant>/<instrument>/<setup_id>/<host_class>/..., with class/status by the phase-0 day-zero rule (catalogue_lifecycle.py): one current per key from the canonical cell on a reference host for a planned baseline cell; R7 local rows never current; the human size rule (Delaunay 1250, rectangular 1225) with size_fallback labels; R3 provisional Optimal rows as class secondary + provisional_optimal; planned_cells with class; figures[] from fit.png; archive/ counted only. The setup browser and setup wiki keep the companion v2 catalogue, now at dashboard/catalogue/setups.json, routed from the mirrored path instead of the legacy identity (ids remapped in registry.json and wiki_bindings.json). --validate-with runs Pulse v3 on catalogue.json and v2 on the companion. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SeDHwsR2dnwCk8Btfhej2L
PR 3) Generated by build_dashboard.py with the committed stamp and revision: the v3 lifecycle catalogue.json, the companion v2 index at catalogue/setups.json with re-keyed shards, and the setup wiki pages whose names hash the re-keyed v2 setup ids. No measurement artefact changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SeDHwsR2dnwCk8Btfhej2L
…not the legacy view (#442 PR 3) Tests that re-judge committed rows name their mirrored (or archive/misc) paths directly instead of resolving legacy names through results_layout; glob-by-legacy-name scans become native scans (warm-up records, witness rows, comparison.json, logdet trace rows). check_wiki tells campaign pages from ledgers by the campaign header instead of the pre-move location. The shim's own tests are dropped; writer placement is tested against build_migration_map.destination directly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SeDHwsR2dnwCk8Btfhej2L
…ions (#442 PR 3) test_results_mirror_scripts.py now fails a scripts/<dataset_type>/<variant>/ with no results unless it is a documented exclusion (shared pixelized script folders, the mge_mass model variant, three not-yet-measured variants), and each exclusion is asserted so the lists cannot go stale. results/lens/ components mirror scripts/lens/ both ways; results/misc/ groups name a scripts/misc/ group or a documented non-script group (logs, streaming_scaling). results_layout.py and results/README.md now say only build_dashboard.py and build_readme.py still read through the legacy view. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SeDHwsR2dnwCk8Btfhej2L
…s; re-pin draft campaign (#442 PR 3) The draft setup-baseline campaign checks its setups against the registry cells, so the four instrument-independent cells keep instrument null and the v3 builder keys them by the folder their scripts write (simple / hst). baseline/campaign.json re-pins the registry hash (new override prefixes and re-keyed recommendation ids), as PR 2 did. Companion catalogue, setup page and setup wiki regenerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SeDHwsR2dnwCk8Btfhej2L
…the release (#442 PR 3) Human ruling: measured_at for a row with no recorded timestamp is the UTC date its file was first committed to git (an upper bound on the measurement date); the measured_at_derived limitation says so. The builder never calls git (CI checkouts are shallow). The dates live in catalogue/measured_at_first_commit.json (265 files, sorted), written by build_catalogue.py --refresh-commit-dates: git log --diff-filter=A at the file's pre-move path from migration_day_zero.json (git log --follow mis-tracked 14 of them into older similar files), else at its own path. An undated row whose file has no entry makes build/--check fail with the refresh instruction. Tests cover the file read, the missing-entry failure and timestamped rows; tooling and catalogue READMEs document the refresh. dashboard/catalogue.json regenerated (same 445 records, 381 re-dated). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SeDHwsR2dnwCk8Btfhej2L
Jammy2211
deleted the
feature/likelihood-lifecycle-p0-profiling-builder
branch
October 24, 2026 10:59
5 of 9 tasks
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
PR 3 of 6 for #442 (likelihood-lifecycle phase 0B): the catalogue builder now emits
profiling-summary@3(contract: PyAutoPulse#70) straight from the mirrored tree that #447 created.dashboard/catalogue.jsonis the v3 lifecycle catalogue: 445 records (126current, 319superseded, each withsuperseded_by),archive_record_count99, 246planned_cells(116 optimal, 130 secondary). Rules live in the newscripts/misc/tooling/catalogue_lifecycle.py.hpc_ral_cpu/hpc_a100for one of the 29 registry cells or a reference; every other record on that key is superseded. Exactly one current per key. R7: nolocal_*row is current. Records on a key with no current row (182 on 108 keys: local-only, not a planned cell such as sdp81) are counted incoverage.excluded, not emitted.class: secondarywithprovisional_optimal: trueinlimitations(nodecision_idexists before phase 3).size_fallbacknote; phase 2 measures the standard sizes.measured_at(human ruling 2026-10-24): 381 records with no timestamp take the UTC date their file was first committed (2026-07-11 → 2026-09-27; an upper bound, noted inlimitations). The dates are kept in the committed filecatalogue/measured_at_first_commit.json, written bybuild_catalogue.py --refresh-commit-dates. The builder never calls git, so CI's shallow checkout works. A row with no timestamp and no entry fails--check.dashboard/catalogue/setups.jsonand its shards, routed from the new paths, so setup ids were remapped inregistry.jsonandwiki_bindings.json. The regenerated setup-wiki pages were renamed. No measurement artefact was moved or edited.lensentry pinsprofiling-summary@2ondashboard/catalogue.json. Merge the companion PyAutoPulse re-pin PR immediately after this one; until it merges, the Pulse lens receipt is invalid.Deferred to PR 3b (human ruling; Mind draft
likelihood_lifecycle_p0_profiling_3b_legacy_layout.md):build_dashboard.pyandbuild_readme.pystill use theresults_layout.pylegacy view, because their trend series are keyed by pre-move names. About 30 scripts still write by legacy name outsideresolve_output_paths. Every other caller is off the shim.Scripts Changed
scripts/misc/tooling/build_catalogue.py— v3 emitter,--refresh-commit-dates,--validate-withthe Pulse v3 and v2 validatorsscripts/misc/tooling/catalogue_lifecycle.py— new: class/status rules, R3, R7, size rulescripts/misc/tooling/check_wiki.py,build_setup_wiki.py,build_dashboard.py,apply_migration_map.py,results_layout.py— read the mirrored tree; only the dashboard and README builders still go through the shimscripts/misc/test/test_build_catalogue.py— v3 shape, status rule, R3, R7, size rule, commit-date filescripts/misc/test/test_results_mirror_scripts.py— mirror test in both directions, with asserted exclusionsscripts/misc/test/— moved off the legacy view and given the remapped idscatalogue/registry.json,catalogue/wiki_bindings.json,catalogue/measured_at_first_commit.json— remapped ids and commit datesdashboard/— regenerated catalogues, setup page and setup wikiTest Plan
build_catalogue --check --validate-with ../PyAutoPulse(v3 + v2 validators ok), plus every other lint--checkstepscripts/misc/test/: 1515 passed, 6 skippedRefs #442
🤖 Generated with Claude Code
https://claude.ai/code/session_01SeDHwsR2dnwCk8Btfhej2L