Skip to content

jax ile: endpoint gap off on the 6-D field; refuse narrow windows at parse time (follow-up to #288) - #299

Merged
oshaughnessy-junior merged 8 commits into
rift_O4dfrom
claude/jax-6d-bandlimited-blind
Sep 9, 2026
Merged

oshaughnessy-junior merged 8 commits into
rift_O4dfrom
claude/jax-6d-bandlimited-blind

Conversation

@oshaughnessy-junior

@oshaughnessy-junior oshaughnessy-junior commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Follow-up to #288 (branched from its head 8e928ca, so the diff shows #288's commits until it merges). Pre-existing on rift_O4d: the 6-D bandlimited kernel returned NaN on 92 of 256 blind full-sky prior draws at a 20 ms half-window (35+30 Msun at 900 Mpc, H1L1), so --mode prior-mc / laplace-is / map without distance marginalization stopped in the first chunk.

Cause: the 15-nat endpoint gap. A row's contrast is bounded by its own amplitude, so a far or wrong-sky draw can never show 15 nat. Rows it rejected alone match an independent reference to 1.1e-4 nat, 54 to 128 nat below the batch maximum. The other 35 rows at 20 ms have an arrival peak past the window edge; at 50 ms there are 0.

Changes:

  • Kernel endpoint_log_gap defaults to None on both fields. A behaviour change on the opt-in quadrature: RO's call.
  • Driver refuses prior-mc, laplace-is, map, nuts with bandlimited at parse time below a 2 R_earth/c (42.6 ms) half-window.
  • test_jax_bandlimited_6d_blind.py (10 tests); EXPECTED_TESTS 647 to 657, measured on ldas-grid on the merged tree.

Memory (pcdev13, peak RSS): driver prior-mc 1.25 GB bandlimited vs 1.05 GB Simpson; map 1.70 vs 1.27 GB; the pytest process with both kernel fixtures 2.15 GB.

Landing: after #288 (and #298, whose sharding this needs on the CI runner). Conflicts with #295, #289, #286, #266 are the EXPECTED_TESTS tail and adjacent driver lines. The full gate on ldas-grid aborts in test_joint_anglemarg_peaklocal.py (the 20 GiB scan #295 reduces), before this file; the two bandlimited files pass there, 30 of 30.

🤖 Generated with Claude Code

oshaughnessy-junior and others added 7 commits September 8, 2026 05:38
Refine the complex primitive kappa(t) first, then apply the same distance
quadrature on the refined nodes, under the existing fail-closed certificates.
Crop to the integrated window before reducing: same value, 6.50 -> 2.56 GB.
The angle-marginalized wrappers still refuse, and now say why they do.
Numbers in DESIGN_jax_bandlimited_distmarg.md; 14 tests wired into the gate.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ax-ile-check)

The CI job installs jax but not flowMC; pytest.importorskip makes this a
real skip there.  A non-flowMC mode was tried and dropped: blind full-sky
prior draws trip the reflected-FFT convergence check (fail-closed by
design) on about a quarter of draws for this injection, so an IS-type mode
is not a reliable carrier for this test.  That fragility is flagged for a
follow-up.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ver names failing rows

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ment

The distance-marginalized field has a floor (far-distance prior mass), so
the fixed-distance kernel's 15-nat endpoint gap rejects every low-contrast
row, converged or not: 90 of 256 blind prior draws at a 20 ms window, all
within 1e-4 nat of the independent reference. Every prior-seeded driver mode
stopped on its first chunk. `_time_marginalize_reflected_primitive` takes
`endpoint_log_gap`; the distance path passes None, the 6-D kernel keeps the
default. Doubling, resolution and guard certificates are unchanged.

The driver still stops on an uncertified row and now counts them, prints
the first three, and names a window narrower than the detector arrival
shifts (2 R_earth/c ~ 43 ms) as the usual cause: with the gap off, 36 of
256 rows still fail at 20 ms and 0 of 256 at 50 and 75 ms.

Six tests: blind census with and without the gap against the reference, the
6-D default pinned, the driver message, and prior-mc / map end to end under
--distance-marginalization bandlimited. The flowMC driver test is deselected
in CI (it would skip). EXPECTED_TESTS 647, measured on the merged tree.
Numbers: DESIGN_jax_bandlimited_distmarg.md, "The endpoint certificate".

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…windows at parse time

The fixed-distance bandlimited kernel returned NaN on 92 of 256 blind
full-sky prior draws at a 20 ms half-window (rift_O4d d84597c), so every
prior-seeded driver mode without distance marginalization stopped in its
first chunk.  57 of those rows failed only the 15-nat endpoint gap and agree
with an independent reference to 1.1e-4 nat; the gap certifies a row's
amplitude, not the quadrature.  The other 35 have an arrival peak beyond the
window edge and vanish at 50 ms.

- core: endpoint_log_gap defaults to None on both fields (constant kept).
- driver: prior-mc, laplace-is, map, nuts + bandlimited are refused at parse
  time when the half-window is below 2 R_earth / c.
- test/jax/test_jax_bandlimited_6d_blind.py, gated; EXPECTED_TESTS 647 -> 657
  (ldas-grid, ~/.cache/jaxci_venv).

Evidence: DESIGN_jax_bandlimited_distmarg.md, "The fixed-distance kernel".

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@oshaughnessy-junior
oshaughnessy-junior deployed to private-review-dispatch-rift September 9, 2026 00:17 — with GitHub Actions Active
…x-6d-bandlimited-blind

Resolves the EXPECTED_TESTS comment tail (their measured 647 line kept, my
seventeenth block after it, 657) and the DESIGN record (their driver-run
table and rho caveat first, my fixed-distance subsection after).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@oshaughnessy-junior
oshaughnessy-junior changed the base branch from claude/jax-bandlimited-distmarg to rift_O4d September 9, 2026 00:23
@oshaughnessy-junior
oshaughnessy-junior deployed to private-review-dispatch-rift September 9, 2026 00:23 — with GitHub Actions Active
@oshaughnessy-junior
oshaughnessy-junior merged commit 9ade7ad into rift_O4d Sep 9, 2026
29 of 31 checks passed
oshaughnessy-junior added a commit that referenced this pull request Sep 9, 2026
#298, #299 with #288)

YOLO integration 2026-09-08: land #286 #295 #297 #298 #299 (carrying #288) together
@oshaughnessy-junior
oshaughnessy-junior deployed to private-review-dispatch-rift September 9, 2026 01:44 — with GitHub Actions Active
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant