Skip to content

release-validation tail burn-down: dev(jax0.9.2)↔release(jax0.10.2) env drift + 18f/5t #72

Description

@Jammy2211

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)

  1. 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).
  2. 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).
  3. 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.
  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions