Overview
Burn down the release-validation full-set tail so workspace-validation.yml mode=release reaches GREEN and the held 2026-07-13 release can proceed. The 3 release-blocker bugs are already fixed+merged (PyAutoArray#386, PyAutoFit#1366, PyAutoHeart#71) and confirmed on wheels; re-validation (run 29279095224, TestPyPI 2026.7.13.1.dev65601) went 530p/26f → 539p/18f (+5t), 0 regressions. Heart stays RED only because mode=release runs the FULL script set and blocks on the pre-existing tail.
⚠️ Re-scoped after first-cluster diagnosis — this is largely dev↔release ENV DRIFT, not 9 code bugs
Reproducing the top clusters on the dev venv (jax 0.9.2) vs the release wheels (jax 0.10.2):
| Cluster |
On dev venv (jax 0.9.2, source) |
On release wheels (jax 0.10.2) |
A jax_likelihood_functions/multi/rectangular.py |
PASS — vmap = -12928.70087095 exactly = the hardcoded golden |
FAIL — value drifted beyond rtol=1e-4 |
C imaging/modeling_visualization_jit.py |
PASS ("jit-cached fit_for_visualization fires … no KeyError") |
FAIL |
Both pass on the dev stack and fail only on the release stack. The dev venv is jax 0.9.2; the release resolves jax 0.10.2 (autoconf caps jax<0.11.0). So a large part of this tail is the two stacks producing different numerical/behavioural results, with workspace_test golden-value / parity assertions calibrated on jax 0.9.2.
Consequence: these failures are not reproducible on the current dev venv (they pass there), so they cannot be fixed or validated locally as-is. "Fixing" them by loosening tolerances or re-baselining goldens on jax 0.9.2 would risk masking a real jax-0.10.2 numerical regression — a don't-mask-regressions violation ([[feedback_no_silent_guards]]).
Recommended approach (parking here for your call on the env decision)
- Stand up a jax-0.10.2 reproduction environment (align dev to the release stack) — the prerequisite for everything else. Options:
- (a, recommended) a dedicated dev venv on the release-resolved stack (jax/jaxlib 0.10.2, numpy 2.4.6, scipy 1.17.1, tfp-nightly …), PyAuto libs from source on PYTHONPATH — so dev matches what users/CI get and the tail becomes reproducible locally; or bump the main
~/venv/PyAuto to jax 0.10.2 (note the known "jax 0.9.2 on WSL2" constraint — [[reference_laptop_gpu_jax_setup]]).
- (b) use
mode=release CI as the repro loop (slow round-trips; no local debugging).
- Per cluster, on jax 0.10.2, classify: real numerical regression (jax 0.10.2 changed a result → investigate/fix at the library, the valuable outcome) vs. env-fragile golden (re-baseline, or switch to the env-robust assertion the script itself documents) vs. flaky timeout (perf/profile).
- Cluster A specifically: the pixelized-JAX multi scripts' own docstrings state the intent is the
vmap == jit round-trip, not a NumPy-vs-JAX absolute golden — yet the code also pins a hardcoded absolute log-likelihood that is jax-version-fragile. Make the assertion match the documented intent (keep the round-trip; drop/loosen the fragile absolute golden) — but only after confirming on jax 0.10.2 that vmap == jit still holds (i.e., no real regression hiding under the golden). rectangular_mge.py already does the round-trip (assert_allclose(log_l_jit, float(result[0]))) — mirror it.
- Spin the
mode=release full-tail RED policy (Heart gates on the whole tail vs a release-relevant subset) out as its own PyAutoHeart/Brain design prompt.
The fork for you
The environment decision in step 1 (bump the dev venv to jax 0.10.2 to match the release, vs. keep a parallel 0.10.2 venv, vs. work through CI) has broad dev-setup implications and interacts with the jax/WSL2 constraints — that's the human call this run parks on. Once the repro env is chosen, the per-cluster triage (steps 2–3) proceeds mechanically under supervised --auto.
Full cluster inventory
The complete A–I inventory (with per-cluster script lists and this triage) is in the Mind prompt active/release_validation_tail_burndown_2026_07.md. Not yet triaged on jax 0.10.2 beyond A and C (both env-drift). Runs: original 29266305445 (530p/26f), re-validated 29279095224 (539p/18f/5t).
Autonomy: --auto, effective supervised (test cap). Parked at the environment fork; per no-silent-guards, not loosening any assertion until failures are reproducible on the release stack.
Overview
Burn down the release-validation full-set tail so
workspace-validation.yml mode=releasereaches GREEN and the held 2026-07-13 release can proceed. The 3 release-blocker bugs are already fixed+merged (PyAutoArray#386, PyAutoFit#1366, PyAutoHeart#71) and confirmed on wheels; re-validation (run29279095224, TestPyPI2026.7.13.1.dev65601) went 530p/26f → 539p/18f (+5t), 0 regressions. Heart stays RED only becausemode=releaseruns the FULL script set and blocks on the pre-existing tail.Reproducing the top clusters on the dev venv (jax 0.9.2) vs the release wheels (jax 0.10.2):
jax_likelihood_functions/multi/rectangular.py-12928.70087095exactly = the hardcoded goldenrtol=1e-4imaging/modeling_visualization_jit.pyBoth pass on the dev stack and fail only on the release stack. The dev venv is jax 0.9.2; the release resolves jax 0.10.2 (autoconf caps
jax<0.11.0). So a large part of this tail is the two stacks producing different numerical/behavioural results, with workspace_test golden-value / parity assertions calibrated on jax 0.9.2.Consequence: these failures are not reproducible on the current dev venv (they pass there), so they cannot be fixed or validated locally as-is. "Fixing" them by loosening tolerances or re-baselining goldens on jax 0.9.2 would risk masking a real jax-0.10.2 numerical regression — a don't-mask-regressions violation ([[feedback_no_silent_guards]]).
Recommended approach (parking here for your call on the env decision)
~/venv/PyAutoto jax 0.10.2 (note the known "jax 0.9.2 on WSL2" constraint — [[reference_laptop_gpu_jax_setup]]).mode=releaseCI as the repro loop (slow round-trips; no local debugging).vmap == jitround-trip, not a NumPy-vs-JAX absolute golden — yet the code also pins a hardcoded absolute log-likelihood that is jax-version-fragile. Make the assertion match the documented intent (keep the round-trip; drop/loosen the fragile absolute golden) — but only after confirming on jax 0.10.2 that vmap == jit still holds (i.e., no real regression hiding under the golden).rectangular_mge.pyalready does the round-trip (assert_allclose(log_l_jit, float(result[0]))) — mirror it.mode=releasefull-tail RED policy (Heart gates on the whole tail vs a release-relevant subset) out as its own PyAutoHeart/Brain design prompt.The fork for you
The environment decision in step 1 (bump the dev venv to jax 0.10.2 to match the release, vs. keep a parallel 0.10.2 venv, vs. work through CI) has broad dev-setup implications and interacts with the jax/WSL2 constraints — that's the human call this run parks on. Once the repro env is chosen, the per-cluster triage (steps 2–3) proceeds mechanically under supervised
--auto.Full cluster inventory
The complete A–I inventory (with per-cluster script lists and this triage) is in the Mind prompt
active/release_validation_tail_burndown_2026_07.md. Not yet triaged on jax 0.10.2 beyond A and C (both env-drift). Runs: original29266305445(530p/26f), re-validated29279095224(539p/18f/5t).Autonomy:
--auto, effective supervised (test cap). Parked at the environment fork; per no-silent-guards, not loosening any assertion until failures are reproducible on the release stack.