Repository navigation
feat: campaign evidence readers, evidence-graded plan and pilot (hpc-campaign p3) - #1747
Merged
Merged
Conversation
… (hpc-campaign p3) autofit.campaign.evidence reads profiling-summary@3 (or the PyAutoPulse snapshot wrapping it), walltime-validation@1 and inference-summary@2 by path or URL; stages declare opaque match keys under evidence.keys in campaign.yaml. Every match is graded measured-current / provisional / analogue (instrument or regime differs, said which) / superseded; a stage with no keys matches nothing. 'Optimal' comes only from a PyAutoPulse designation decision (decisions.yaml kind: designation); Pulse's provisional_optimal marker is restated without the word. autofit.campaign.plan proposes per stage CPUs (shrunk to a power of two below 60 % median CPU efficiency), memory (peak RSS x 1.25, 4 GB steps), wall time (p95 + 25 % per size bin, 15 min steps, capped at max_time; timeouts kept at their limit and a censored p95 flagged), throttle (50 % of idle CPUs), ETA, disk and an energy placeholder for phase 4 — every number a graded value with its sources; plan.json + plan.md. autofit.campaign.pilot writes a stratified pilot.json (never submitted). CLI: plan, pilot. Refs #1745 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ce choice, cost fallback, graded pilot numbers 1. A walltime-validation record measured on N cores is scaled by N/cpus for a task of cpus CPUs (perfect scaling, optimistic when fewer), graded estimated with a cores_mismatch limitation shown as a plan.md flag; CPU-hours come from measured core-seconds, not scaled wall x cpus. 2. Stage wall time and host memory take the largest value among the matching records of the best grade (ordered by id, so file order no longer decides), listing every contributing id and the spread. 3. The evaluations x cost scaling falls back to the per-call cost when the walltime record's implied cost per evaluation is null. 4. Pilot statistics and size bins sit under graded wrappers (estimated, pilot); size bins carry a censored flag like the pilot's p95. Also: a profiling record is measured-current only when its decision is the current, unsuperseded designation covering the record's own keys and names its setup. Refs #1745 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 30, 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
hpc-campaign phase 3 (#1745, epic ledger
draft/research/autofit/hpc_campaign_epic.md). It adds planning before submission, inautofit/campaign/only:evidence.py: readers forprofiling-summary@3,walltime-validation@1andinference-summary@2, by path or URL. A stage declares opaque match keys underevidence:incampaign.yaml.plan.py:python -m autofit.campaign planwritesplan.md+plan.json. It proposes CPUs, memory, wall time, throttle, ETA and disk from a pilot digest and/or the evidence. Every number is graded and carries its record ids, and a test walksplan.jsonto enforce that.pilot.py:campaign pilotwrites a stratified 1–2%pilot.json, with thesubmit --indicescommand left unrun. Nothing is submitted.Heart RED override (development only)
Heart was RED at the start of this task (2026-10-30): release validation FAILED (stage integrate); PyAutoHeart/workflows/Release Integrate failure; PyAutoNerves
test_fitsable.py::test__output_to_fitsred; unit-test timing 1 regression (>3× baseline), 14 slow; autogalaxy red; release validation NOT release_ready (v2026.10.30.1.dev85101); autolens_profiling red; worktree drift 1 dirty. The human authorized the Human override for Heart RED (development only) live for hpc-campaign phases 3 and 4 ("Override, proceed"). This PR does not touch any RED item and does not fix Heart. Merging still needs green CI and a separate/prm; it permits no release.Decisions taken (please check)
cores_mismatch.size_fieldis given.--idle-cpus). ETA is labelled an upper bound, with stages run one after another.Test plan
test_autofit/campaign: 128 pass (22 new), including the DR1 repack reproduced from a sacct fixture (CPUs 4/8/8 exact; memory within one 4 GB step: vis_pix 16 and SED 8 GB exact, vis_lp 8 vs 12 GB) and the grade matrix.autofitworkspace: 10 passed, 0 failed.Workspace/Science/scratch/hpc_campaign_p3_w3/(not committed).Refs #1745
🤖 Generated with Claude Code