Repository navigation
B5c-2a: correlated_nd pilot judged under @1, calibrated, A2 (OOM cells, d100 Nautilus), correlated_nd@2 frozen - #18
Merged
Conversation
…e copy (B5c-2a) 930 rows (d20 260, d50 220, d100 190, banana 260) tarred per dataset on the login node from /mnt/ral/jnightin/inference/autofit_inference_b5c/results/searches and committed verbatim. The 8 exact references there are byte-identical to the committed ones (sha256). Four of the rows are cap stubs written by cnd_cap_stub.py for the OUT_OF_MEMORY tasks 263/273/304/383 (exit 137): they are reclassified as oom by the next commits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…I; chain diagnostics without relabelling (B5c-2a)
- _correlated_nd.accounting: every expected run is row / failed / missing /
deferred / oom (ATTEMPT_CLASSES); an OUT_OF_MEMORY stub row is oom, never
failed or missing.
- cnd_cap_stub.py: SLURM's OOM killer also exits 137 under timeout, so the
pilot wrote cap stubs for its 4 OOM tasks. --elapsed-s keeps a 137 below the
cap from writing one; --reconcile-oom rewrites a stub as an oom row from the
sacct extract (MaxRSS, elapsed, request), never a runner-written row.
- judge_correlated_nd.py: admit, account, judge under correlated_nd@1 per leg
and reconcile with sacct -> results/accounting/correlated_nd_pilot.json.
- _posterior.chain_diagnostics(relabel=False) for a family with no label
symmetry: all 80 pilot Emcee/Zeus rows (d20, banana) failed after the search
in relabel_matrix ('g0.centre' is not in list). Harness only; no verdict moves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…act; pilot accounting (B5c-2a) cnd_cap_stub.py --reconcile-oom from results/accounting/correlated_nd_pilot_sacct.tsv (sacct -j 410866, 930 tasks). judge_correlated_nd.py: 930 pulled, 930 admitted; 1040 expected = 749 row + 177 failed + 0 missing + 110 deferred + 4 oom; under correlated_nd@1 307 accepted, 623 rejected. sacct agrees with every row. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Before any scored correlated_nd row exists or is submitted. - calibrate_correlated_nd.py -> results/calibration/correlated_nd_wave1.json: sigma-ratio bands per task (evidence [0.85, 1.1] on 79 rows; posterior kept at [0.5, 2.0] on 1 row < 20), ESS/R-hat bars kept, per-cell timeouts max(600 s, 10 x median pilot attempt wall) for 75 cells, 8 probe-first cells, 21 scored-wave deferrals with reasons, memory per cell class (2x headroom: d50 Nautilus n_live_400 16 G, d100 cold NUTS 17 G). - _protocol.FROZEN_CND2 / THRESHOLDS_CND2 / TIMEOUT_RULE_CND2 / MEMORY_RULE_CND2; FAMILY_PROTOCOL_IDS resolves correlated_nd@1 for wave 1 (pilot) and correlated_nd@2 for wave 2 (scored); task_thresholds resolves per-task bands. - _correlated_nd.A2_DEFERRED: d100 Nautilus (n_live_100 by construction; n_live_200/400 fail deterministically at the pin: nautilus HDF5 checkpoint at D = 100) and d100 warm NUTS (provider). - wall/rates.py CORRELATED_ND_STEP_RATE (RAL 410866 walls; gated by --check). - protocol section 11 A2; lint gains the judge and calibration checks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…_nd@1, by task and dataset, ranked nothing (B5c-2a) Each correlated_nd leg carries its attempt classes (row / failed / missing / deferred / oom) and @1 verdict counts from judge_correlated_nd.py; legs stay in menu order, nothing is ranked within or across families. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… 7/11 and state.md (B5c-2a) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…l (producer revision only) (B5c-2a) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 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
B5c-2a of the search-extensibility epic. This PR pulls the
correlated_ndpilot (RAL 410866), judges it undercorrelated_nd@1, calibrates it, rules on the OOM cells (amendment A2) and freezescorrelated_nd@2. No scored run exists and nothing was submitted.results/searches/of 410866 came from the PRIVATE copy/mnt/ral/jnightin/inference/autofit_inference_b5c, tarred per dataset on the login node. It holds 930 rows, committed verbatim in 66910c5. The 8 exact references there are sha256-identical to the committed ones. Nooutput/, no SLURM logs, and the shared mirror was never touched.judge_correlated_nd.pywritesresults/accounting/correlated_nd_pilot.json; lint runs--check. It reconciles the rows with the committedsacctextractresults/accounting/correlated_nd_pilot_sacct.tsv:COMPLETED→ 749 row + 177 failed;OUT_OF_MEMORY→ 4 oom@1. 307 accepted, 623 rejected; the pilot ranks nothing. The catalogue'scorrelated_nd@1section and the README table are grouped by task, then dataset, in menu order, with nothing ranked across families.n_live_100needs n_live > D;n_live_200/400hit the nautilus HDF5 checkpoint limit at D = 100.n_live_100and d50 warm NUTS.calibrate_correlated_nd.pywritesresults/calibration/correlated_nd_wave1.json; lint runs--check.max(600 s, 10 × median pilot attempt wall). 8 cells are probe-first. 21 cells are deferred, each with its reason.wall/rates.pyCORRELATED_ND_STEP_RATE._protocol.FROZEN_CND2/THRESHOLDS_CND2were committed in 44c5e77 (44c5e77f1fb0779f675a8f51247d812183e93b48). The sha is recorded in §7, §11 andstate.mdby c12b203; this PR's merge makes it reachable frommain.protocol_forresolvescorrelated_nd@1for pilot rows (wave 1) andcorrelated_nd@2for scored rows (wave 2). The testtest_protocol_id_resolves_per_wavechecks this on one real pilot row and one synthetic scored row, and confirms the verdict strings carry the id. The runner still refuses a wave-2correlated_ndrun: the scored wave is declared and submitted by B5c-2b.Inputs for B5c-2b:
scored_deferredin the calibration file.n_live_400, 17 G for d100 cold NUTS, 8 G elsewhere.Commits: 66910c5 rows · b3845e8 oom class, reconcile, judge CLI and harness fix · 31ba4a6 oom rows, sacct and accounting · 44c5e77 freeze · a5f2d6e catalogue and README · c12b203 freeze sha recorded · a663671 summary (producer revision only). Siblings: PyAutoCortex and PyAutoInsight PRs (B5c-2a).
Decisions taken
Each one is flagged for the human. Each has a one-line revert.
--mem = max(8 G, ceil(2 × peak))per cell class (dataset × search × settings, both backends). The peak is the largest sampledsacctMaxRSS, or 8 G when any pilot task was OOM-killed. Sampled RSS undercounts the peak at a kill: task 304 read 3.1 G when it died at 8 G. This raises two cells: d50 Nautilusn_live_400to 16 G and d100 cold NUTS to 17 G (MaxRSS 8.1 G). Revert: setMEMORY_HEADROOMincalibrate_correlated_nd.pyand regenerate.n_live_200is deferred from the scored menu, along withn_live_400andn_live_100. All 40n_live_200/400attempts failed at the pin within 31–74 s, before the first bound was sampled. The cause is nautilus's HDF5 checkpoint: it cannot store a D = 100 bound attribute (h5py "object header message is too large"). Affordability therefore cannot be judged from the pilot walls; for comparison, d50n_live_200took a median of 820 s.n_live_100is deferred by construction: Nautilus needs n_live > D. d100 warm NUTS is deferred with its provider. Revert: drop the entries from_correlated_nd.A2_DEFERREDin a later amendment, after a library or nautilus fix.n_live_100(both backends) and d50 warm NUTS are deferred by the §7 cap rule, read as "no attempt ended on its own". In each, 9 of 10 attempts hit the 4 h cap and the 10th was OOM-killed before the cap. Revert: calibrate with "every attempt Terminated at the cap" only. Those two cells would then get timeouts from zero completed rows, so they would be probe-first.@2, read literally from "a band moves only on ≥ 20 completed pilot rows of its task". The evidence task moves to [0.85, 1.1] on 79 rows. The posterior task has 1 row, so it keeps [0.5, 2.0].@1had one shared band. With a single band, 34 of the 307 accepted pilot rows would have flipped, all of them BlackJAX NUTS (500 samples), judged by Nautilus σ noise. Revert:FROZEN_CND2bands as plain tuples (one band for both tasks).n_live_200rows (σ ratios 0.04–0.13) pass the medians against the banana's wide reference σ, and without §4(c) they would drag the lower band edge to 0. Revert: drop the(c)filter incalibrate_correlated_nd.calibrate.oomattempt class. SLURM's OOM SIGKILL exits 137 undertimeout, the same code as the cap's own kill. The pilot submit therefore wrote cap stubs (process wall = the 4 h limit) for the 4 OOM tasks, which would have been counted as censored cap failures.cnd_cap_stub.py --reconcile-oomrewrote them from the committedsacctextract (MaxRSS, real wall). Under@2, anoomrun is rerun once at twice its cell's request, and a secondoomis a failed attempt. Revert:git revertthe reconcile commit._posterior.chain_diagnostics, which relabelled byg0.centre. The fix isrelabel=Falsefor families with no label symmetry. Pilot verdicts stay@1(failed). Those 8 cells have no completed row, so they are probe-first in the scored wave. Revert: revert commit b3845e8's_posterior/_runnerhunks.Witness checklist
results/was pulled from the PRIVATE copy, a stub row exists for every task killed without a row, and the four OUT_OF_MEMORY tasks (263/273/304/383) are carried asoom, distinct frommissing/deferred/failed.correlated_nd@1. The catalogue'scorrelated_ndsection is grouped by task and dataset and ranks nothing across families.max(600 s, 10 × median pilot wall)) and the censoring rule are calibrated from the pilot by the §7 rules. A band moves only on ≥ 20 completed rows of its task and never past the 200 000 exact draws. A cell whose every attempt hit the cap is deferred with its reason.correlated_nd@2is frozen. Protocol §7/§11 andstate.mdcarry the freeze sha, andPROTOCOL_IDresolves@1for pilot rows and@2for scored rows, with a test.correlated_nd_pilotrow are closed with the pilot verdicts (sibling PRs).Local gates:
ruff check,ruff format --check,pytest scripts/misc/test(174 passed), and every lint--check(catalogue, readme, summary, wave-2 plan/probe/accounting, cnd plan, cnd accounting, cnd calibration and rates, WALL-BASIS).calibrate_pilot.py --checkis not a lint gate and was already stale onmain; it is untouched.Closes #17
🤖 Generated with Claude Code