Repository navigation
feat(catalogue): class records from the Pulse designations; retire provisional_designations.json - #498
Merged
Conversation
…ovisional_designations.json Likelihood lifecycle phase 3, day-zero write 1/4 (#497). The 39 day-zero designations recorded in PyAutoPulse (PyAutoLabs/PyAutoPulse#84) now declare the catalogue's classes: - catalogue/pulse_designations.json mirrors PyAutoPulse decisions.yaml kind: designation, written by build_catalogue.py --sync-designations ../PyAutoPulse. --check --validate-with ../PyAutoPulse fails when the mirror drifts and resolves every decision_id through pulse.ingest.unresolved_decisions. - The designated optimal setup on its likelihood x standard regime x hardware class (hpc_ral_cpu = cpu_many_core, hpc_a100 = gpu_a100) is class optimal + decision_id; a named secondary is secondary + decision_id (current and superseded rows alike). Human rulings 2026-10-31: any other setup on a designated key is experimental; local_* hosts and source_pixels_<n> regimes inherit the role as secondary with an undesignated_regime_or_host limitation and no decision_id. - catalogue/designation_holds.json keeps the held datacube/delaunay hpc_a100 group provisional (secondary + provisional_optimal: true) and the planning metadata kept from the retired file (GPU hosts, regime-only routes, the instrument-scoped dense NUFFT rule). - catalogue/provisional_designations.json is deleted; planned_setups, planned_cells and coverage_matrix.py derive from the designations + holds (232 planned cells, all current). - Frozen phase-2 campaign tests now assert each manifest measured every designated cell and that every extra cell is a setup its designation did not name. Result: 536 optimal records (283 current) across 39 decision_ids; 368 named secondary with a decision_id; 199 experimental; 445 secondary without one (inherited or held). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016nhQ8Q82zpcg2VRk8i7QvL
This was referenced Oct 31, 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.
Closes #497. Likelihood lifecycle phase 3, day-zero write 1/4: the producer side of the 39 designations recorded in PyAutoLabs/PyAutoPulse#84.
Heart RED override: invoked by the human 2026-10-31 for this task (development only). Tier: judge, so merge is by human /prm only.
What changes
catalogue/pulse_designations.jsonmirrors PyAutoPulsedecisions.yamlkind: designation(39 rows). It is written bybuild_catalogue.py --sync-designations ../PyAutoPulse. CI'sbuild_catalogue.py --check --validate-with ../PyAutoPulsenow also fails if the mirror drifts from Pulse, and it resolves everydecision_idthroughpulse.ingest.unresolved_decisions.catalogue_lifecycle.record_class). Hardware classes map ashpc_ral_cpu=cpu_many_coreandhpc_a100=gpu_a100.class: optimal+decision_id.class: secondary+decision_id.experimental.local_*hosts andsource_pixels_<n>regimes inherit the role assecondary, with anundesignated_regime_or_hostlimitation and nodecision_id. Optimal is only ever decision-backed.catalogue/designation_holds.jsonkeeps the held datacube/delaunayhpc_a100group provisional (secondary+provisional_optimal: true; 24 records). It also holds the planning metadata kept from the retired file: GPU hosts, regime-only routes, and the R1(a) dense-NUFFT-at-sma rule.catalogue/provisional_designations.jsonis deleted.planned_setups,planned_cellsandcoverage_matrix.pynow derive from the designations plus the holds: 272 → 232 planned cells (148 optimal, 84 secondary), all current.Result (
dashboard/catalogue.json, 1,548 records)All 39 decision_ids are cited, every designation has a current optimal record, and all 230 evidence ids are present.
Checks run locally
build_catalogue.py --check --validate-with ../PyAutoPulse: current. The mirror equals Pulse, and Pulseclassifyreturnsokwith every decision_id resolved.coverage_matrix.py --check,build_dashboard.py --check,build_readme.py --check,check_wiki.py --check,list_timing_assertions.py --check,wall/check_submits.py --check: OK.ruff checkandruff format --check: clean.pytest scripts/misc/*/test: no new failures against main. The sandbox lacks jax, scipy and the PyAuto libraries, so the modules needing them were not run here; CI runs them.Not in this PR (tasks 2–4)
day_zerostamp and Pulse snapshot.wiki/campaigns/<dataset_type>/<variant>/day_zero.mdrule pages.runtime_estimatesexport.Generated by Claude Code