Repository navigation
B5c: second model family correlated_nd — protocol correlated_nd@1, exact references, 930-run pilot - #16
Merged
Conversation
High-D correlated Gaussians (D = 20, 50, 100, condition number 10^3) and a D = 20 hybrid Rosenbrock banana with exact posteriors and ln Z by construction. Tasks, verdict rules (whitened-coordinate check replacing ppc/modes), the exact-reference agreement test, deferral rules per dimension (live-point, walker and provider floors), the 820-run pilot and the freeze rule, committed before any correlated_nd row exists. Ranks nothing across families. Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
simulators/correlated_nd.py writes the four datasets (Haar-rotated Gaussians, condition number 10^3, D = 20/50/100; hybrid Rosenbrock D = 20) from their structure and data seeds. models/correlated_nd_exact.py computes ln Z, the marginals, the mode and the whitening map exactly; reference/exact_correlated_nd.py writes one reference per dataset x backend after the protocol section 6 test (backend Fitness identity to 1e-8 nat, 200k exact draws, truncation, control verdict). All eight references complete at PyAutoFit df6d218f1. Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… manifest (B5c) The runner gains model_type correlated_nd (60 literal leaves), the search-level seed on every family row and the whitened-coordinate statistic; _protocol gains correlated_nd@1 (its thresholds, section 4(b)3, offset-free evidence) while every gaussian_x3 verdict is unchanged; searches/_correlated_nd.py is the pilot's expected-run manifest, deferral rules, identity and attempt accounting. Family rows are kept out of the gaussian_x3 catalogue, calibration and summary records, and get their own catalogue section and README region. Tests cover exactness, seed determinism, deferrals, accounting and verdicts. Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
plan_correlated_nd.py generates submit_correlated_nd_pilot (820 one-run tasks, --partition=ral only, excluding euclid-ral-compute-[1-4], no GPU resources, pin guards, 4 h operational cap per run) and its task table; lint runs --check and installs scipy for the exact-reference tests; the witness adds one LBFGS on corr_gaussian_d20 that must be accepted under correlated_nd@1. Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…refresh (B5c) Regenerated after the producer commits: the catalogue's own correlated_nd@1 section (by task and dataset, 820 planned + 220 deferred, ranks nothing, apart from gaussian_x3), the README correlated_nd region, and dashboard/summary.json (producer revision; the eight exact references in reference_status; no record or shard changed). Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rence status (B5c) Bookkeeping only (section 7 freeze line, section 10 table): no criterion changes. Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… any row (B5c) - A1 (protocol section 11): Nautilus exempt from the live-point floor (its importance-sampled ln Z is not bounded by sqrt(H/n_live)); 930 planned runs, 110 deferred. The pilot cap is on the process: rows carry process_elapsed_s and operational_kill compares it with the cap (a warm start's provider and the admission bar no longer turn a capped run into 'missing'). - The runner refuses a RAL correlated_nd run at any PyAutoFit but the pin; the submit's pin guards exit explicitly. - Family rows are skipped silently by the exporter and kept out of every wave-2 scanner; exact draws are seeded by structure_seed (references rewritten, all complete); the banana x1 quantiles use mid-node cumulative weights. - Tests: warm-start-shaped capped row, runner-shaped rows admitted, family chain convergence. Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A run that timeout stops without writing its row (a long native call outlives the SIGTERM grace) gets a censored stub row from tooling/cnd_cap_stub.py, called by the generated submit on exit 124/137; admitted and counted failed, never 'missing' for ever (protocol A1 completed; test added). - The gaussian_x3 summary no longer lists the correlated_nd exact references, and family rows are skipped before any validity check. - Protocol section 7: the freeze line states @1 = first commit 9ec3779 with A1 applied in place before any row; process_elapsed_s is from the runner's entry. Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ow); pilot RAL 409957 Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first submission, RAL 409957, failed at import in every task and was cancelled: the shared clone had been switched to an old main by another session (stash 'pre-main-switch', 19:24 UTC) and lost _autofit_inference_cli.py and config/ as the array started. The generated submit now runs from /mnt/ral/jnightin/inference/autofit_inference_b5c, a private copy holding the delivered files and its own copy of the pin; the shared clone is left as found. Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rt on the disturbed shared clone (B5c) Refs #14 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…410866 finished The regeneration test now compares JSON structure, keys, strings and ints exactly and floats with np.allclose(rtol=1e-12, atol=0): CI's LAPACK differs from the laptop's in the last one or two digits. Committed datasets unchanged. State: 410866 finished 2026-10-16, 926/930 completed, 4 OUT_OF_MEMORY at 8 G (tasks 263, 273, 304, 383, all corr_gaussian_d50); not rerun in stage 1, results unpulled in the private copy, pulled in B5c-2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… max) CI failed on near-zero eigenvector entries (~6e-5) whose absolute error is the orthogonal matrix's, not their own; elementwise rtol was too strict there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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
This is B5c stage 1 of the search-extensibility epic. It adds a second toy-likelihood family,
correlated_nd, so search rankings stop resting ongaussian_x3alone. Everything below was committed before anycorrelated_ndrow exists, and the 930-run pilot is submitted on RAL. Closes #14.The family. Four datasets, each with an exact posterior and an exact ln Z by construction, so no reference search is run:
Protocol first.
wiki/project/protocol_correlated_nd.md(correlated_nd@1) was first committed as9ec37795f404, ahead of every other commit in this PR.gaussian_x3's ppc and mode criteria), the §6 agreement test against the exact reference, the per-dimension deferral rules with reasons, the pilot and the freeze rule.Generator and references.
simulators/correlated_nd.pyis seeded bystructure_seedanddata_seed. Tests regenerate every committed dataset byte for byte.models/correlated_nd_exact.pycomputes ln Z, the marginals, the mode and the whitening map. Tests check them against brute-force grid integration on small toys, against exact iid draws, and with a quadrature-refinement check.reference/exact_correlated_nd.pywrites 8 references (4 datasets × numpy/JAX), allcomplete. Each passed the §6 test:Fitness.callequals the analytic ln L to ≤ 6e-14 nat;accepted.Harness wiring.
model_typecorrelated_nd, with 60 literal leaves, the A4 search-level seed on every family row, the whitened statistic,process_elapsed_s, and a refusal of any RAL run that is not on the pin._protocolgainscorrelated_nd@1(THRESHOLDS_CND1, PLACEHOLDERs marked). Everygaussian_x3verdict is unchanged.searches/_correlated_nd.pyholds the expected-run manifest, the deferrals, the identity (_wave2.manifest_keyplusmodel), and the attempt accounting.gaussian_x3catalogue, calibration, wave-2 scan and summary record.Catalogue. A new
correlated_nd@1section groups the family by task and then dataset, withranking: noneandcross_family: none. The README has its own region.Pilot. It has 1040 expected runs: 930 planned and 110 deferred. The deferred ones are Emcee/Zeus at D ≥ 50 (fewer than 2D walkers) and DynestyStatic/NSS at D = 100 (
n_live< H = 267.6 nat).submit_correlated_nd_pilotis generated byplan_correlated_nd.py, which lint runs with--check.--partition=ralonly, excludeseuclid-ral-compute-[1-4], requests no gres, and has explicit pin guards.cnd_cap_stub.py.check_submits.py --checkis green.RAL.
correlated_nd@1,sbatch --test-onlyOK.main(stash "pre-main-switch", 19:24 UTC), and it lost_autofit_inference_cli.pyandconfig/as the array started./mnt/ral/jnightin/inference/autofit_inference_b5c. That copy holds 191 delivered files from245a3ef, sha256-verified, plus its own copy of.pyauto_pin/. It runs as RAL 410866_[0-929]%100,PENDINGat PR-open, with an estimated start of 2026-10-16 ~19:30 UTC.CI.
plan_correlated_nd.py --check.corr_gaussian_d20, which must beacceptedundercorrelated_nd@1.Decision taken (decide-and-flag)
The pilot is 930 runs, not the brief's "about 600–800", because Nautilus is exempt from the live-point floor (protocol §11 A1(i)).
√(H/n_live)scatter bound is classic nested sampling's. Nautilus's ln Z comes from importance sampling over neural-network bounds, so deferring it was not "cannot answer by construction" (review round 1). §4(c) now judges it directly.n_live_100deferred at d50, d100 and banana,n_live_200deferred at d100, and their warm NUTS deferred with them.LIVE_POINT_FLOOR_CLASSESinscripts/misc/searches/_correlated_nd.pyto include"Nautilus", then runplan_correlated_nd.py --writeand the catalogue/README rebuilds. The cells come back asdeferredand the rows are never admitted.Also disclosed. These are not judgement calls:
submit_correlated_nd_pilotrather than….sh, following the repo's naming;Ship gate
--checkgates green (catalogue, readme, export, plan_wave2, probe timeouts, judge_wave2, plan_correlated_nd, check_submits).n_live_200D=20 numpyaccepted(all of (b)1–(b)3 and (c)), BlackJAXNUTS D=100accepted, MultiStartAdam D=100rejected(a), LBFGS D=20accepted.correlated_nd@1(9ec3779, A1 before any row). ✓ Seeded datasets (byte-for-byte regeneration tested). ✓ References per backend with the §6 agreement test (8/8 complete). ✓ Wave-1 pilot manifest committed before any row; nocorrelated_ndrow exists. ✓ Catalogue groups it by task, separately fromgaussian_x3, and ranks nothing across families. The pilot itself is submitted (410866, pending).Merge order: this PR → PyAutoCortex → PyAutoInsight.
Heart RED — development-only override
Heart at the door:
Heart: RED — Release RED; monitoring RED · 10/100 · 415 unresolved;[red] release validation FAILED (stage integrate);[red] PyAutoHands/workflows/Python Version Matrix: failure;[red] PyAutoHeart/workflows/Release Integrate: failure;[red] PyAutoArray/Tests: red;[red] autofit_workspace_test/Smoke Tests: red;[red] autogalaxy_workspace_test/Smoke Tests: red;[red] autolens_workspace_test/Smoke Tests: red;[red] Release validation: NOT release_ready;[red] Worktree drift;[red] autolens_inference: red;[red] autolens_profiling: red;[red] euclid_strong_lens_modeling_pipeline: red. Live human in session 6ffb59e9 answered AskUserQuestion "Both, override for development (Recommended)" on 2026-10-15 (third grant) for this launch. Permitted: commit, push, PR-open. Merge is a separate human act; this never reaches a release.🤖 Generated with Claude Code