Skip to content

Commit e4c2d6f

Browse files
authored
Merge pull request #295 from PyAutoLabs/claude/smoke-timings-overnight-run-l30x6t
prompt: complete delaunay-nan-probe-fix
2 parents 0dd852d + b76592f commit e4c2d6f

2 files changed

Lines changed: 52 additions & 1 deletion

File tree

draft/bug/autolens_workspace_test/delaunay_nan_probe_ell_comps_validator.md renamed to complete/2026/08/delaunay-nan-probe-fix.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,53 @@
1+
# The delaunay NaN probe injected above the boundary the validator guards
2+
3+
autolens_workspace_test#277 (`995f0c9`), shipped 2026-08-24 — the first of the
4+
two bugs the smoke-surface retime sweep (#274,
5+
`complete/2026/08/smoke-surface-retime-sweep.md`) found hiding behind SLOW
6+
markers. Never issued as a GitHub issue: filed as a draft bug prompt at 18:0x
7+
and fixed the same evening.
8+
9+
## What shipped
10+
11+
`scripts/interferometer/jax_likelihood/delaunay.py`'s NaN-poisoning probe
12+
built an instance from an all-NaN vector via `instance_from_vector`, dying at
13+
autogalaxy `validate_ell_comps` (`ModelParameterException`) before testing the
14+
JAX NaN-lane isolation it exists to test — deterministic exit 1 on both
15+
Python legs, 5/5 (run 32741371308). The probe now builds the instance from
16+
prior medians and poisons a single downstream leaf
17+
(`mass.einstein_radius = np.nan`) by attribute assignment, below the
18+
constructor guard — a like-for-like port of the shipped imaging sibling probe
19+
against the identical model, assertion unchanged. `no_run.yaml`'s NEEDS_FIX
20+
entry removed, restoring mega-run coverage.
21+
22+
Validated in CI before the PR: retime dispatch 32759921650 on the fix branch —
23+
NEITHER on both legs (42.0 s / 43.6 s at 14–15 % of cap), with the
24+
previously-unreachable tail passing ("invalid Delaunay mesh reaches the raw
25+
interferometer likelihood as NaN", TransformerNUFFT cross-check).
26+
27+
## Key traps / findings
28+
29+
- **The validator was right.** NaN rejection in `validate_ell_comps` is a
30+
deliberate contract: present from the validator's birth (autogalaxy
31+
`a366f771`, with NaN/inf parametrized as rejected across the guard family)
32+
and deliberately softened to a resampling `FitException` in `be61b8d0`. The
33+
probe-side fix was the only correct side.
34+
- **A probe that constructs pathological inputs through the public
35+
construction path inherits the public path's validation.** Poison below the
36+
boundary (post-construction attribute assignment) — the imaging sibling had
37+
already made this move; interferometer was the straggler.
38+
- The local container could not run the stack (Python 3.11 vs the libraries'
39+
`>=3.12` pin), so validation ran as a retime dispatch on the branch before
40+
the PR — the harness this same day's work repaired.
41+
42+
## Follow-ups
43+
44+
None of its own. The sibling bug found by the same sweep —
45+
`gradient_eager_jit_divergence_py313.md`, root-caused to an NNLS
46+
`while_loop` branch flip — remains in `draft/` with its fix direction
47+
recorded (pin `nnls_solver_tol`/`max_iter`).
48+
49+
## Original prompt
50+
151
# The delaunay.py NaN-poisoning probe dies in ell_comps validation before it can probe anything
252

353
Type: bug

complete/index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Token-light navigation over the finished-work records (schema:
66
only then grep a dated bucket. Curators: edit the band between the CURATED
77
markers; everything below GENERATED is rebuilt.
88

9-
1103 records across 7 buckets.
9+
1104 records across 7 buckets.
1010

1111
<!-- CURATED:START -->
1212
## Highlights
@@ -62,6 +62,7 @@ _(curate hard-won records here — survives regeneration.)_
6262
- [database-guide-info-inline](2026/08/database-guide-info-inline.md) — the dataset_1d database guide chain failed on any fresh checkout —
6363
- [database-guide-sample-weight-threshold](2026/08/database-guide-sample-weight-threshold.md)`guides/results/database/start_here.py` ran its own Nautilus fits capped at n_like_max=300 then indexed sample…
6464
- [dataset-allowlist-small-datasets-guard](2026/08/dataset-allowlist-small-datasets-guard.md)
65+
- [delaunay-nan-probe-fix](2026/08/delaunay-nan-probe-fix.md)
6566
- [delaunay-nn-laptop-gpu-profile](2026/08/delaunay-nn-laptop-gpu-profile.md) — Added the CPU, RTX 2060, and A100 DelaunayNN profiling sweep and result artifacts at matched PyAuto source rev…
6667
- [dep-floors-source-chain-ci](2026/08/dep-floors-source-chain-ci.md)
6768
- [dev-workflow-helpers-laptop-paths](2026/08/dev-workflow-helpers-laptop-paths.md)

0 commit comments

Comments
 (0)