From f3324d801d12605ec109eb852d19af55cc10c0c9 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 26 Aug 2026 12:22:49 +0000 Subject: [PATCH] =?UTF-8?q?mind:=20retire=20jax-likelihood-smoke-pins-stal?= =?UTF-8?q?e=20=E2=80=94=20fixed=20before=20it=20was=20filed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit /start_dev research on draft/bug/autolens/jax_likelihood_smoke_pins_stale.md found no reproducible bug left in it. Retired unstarted: no GitHub issue, no active.md entry, no development. Verified against autolens_workspace_test main 8be3d59, Smoke Tests run 32922456742 (2026-08-26 02:24 UTC), green on Python 3.12 and 3.13: 22/22 PASS, including all three of the named scripts still in the gate. The prompt's "20/24 until this lands" is now 22/22. Per claim: - imaging/jax_likelihood/lp.py - repinned -1.34797827e09 -> -6.74165366e08 in 197ce6e (autolens_workspace_test#257), the same day the prompt was filed. - fb1aefe0b "orphan worktree" - not orphaned. It is the head SHA of PyAutoLens#700, merged 2026-08-17, two days before the prompt called it unmerged; 197ce6e is the paired re-pin the prompt asked for. - interferometer/.../rectangular.py - pin -3164.286252 unchanged and green (re-verified in 99d63b3 incl. the TransformerNUFFT cross-check). The 08-19 miss was control-run environment drift, not a stale pin. - interferometer/.../mge.py - repinned by the same 197ce6e; a PositionsLH-doubling casualty, not independent drift. - multi_dataset/.../mge.py - never a pin problem. Out of the smoke gate since #262 (2026-08-22) for the XLA compile stall tracked in autolens_workspace_test#245; its pin is untouched since the multi -> multi_dataset rename. The completion record keeps the reusable findings: adjudicate an "orphan" worktree from the remote's merged PRs rather than from the worktree's own state, and do not group symptoms into a "family" by folder — three of the four scripts were one root cause. Follow-ups are local debris (a stale worktree on the laptop, /repo_cleanup) and one latent item owned by autolens_workspace_test#245's re-enable. Dashboard regenerated in the same commit. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01Egf8PFc5UKJfVWY1jbBKGU --- .../08/jax-likelihood-smoke-pins-stale.md | 130 ++++++++++++++++++ complete/index.md | 3 +- dashboard.html | 19 ++- dashboard.md | 22 +-- .../jax_likelihood_smoke_pins_stale.md | 34 ----- 5 files changed, 148 insertions(+), 60 deletions(-) create mode 100644 complete/2026/08/jax-likelihood-smoke-pins-stale.md delete mode 100644 draft/bug/autolens/jax_likelihood_smoke_pins_stale.md diff --git a/complete/2026/08/jax-likelihood-smoke-pins-stale.md b/complete/2026/08/jax-likelihood-smoke-pins-stale.md new file mode 100644 index 00000000..2cefbe47 --- /dev/null +++ b/complete/2026/08/jax-likelihood-smoke-pins-stale.md @@ -0,0 +1,130 @@ +# The jax_likelihood smoke-pin bug was already fixed when it was filed + +Retired unstarted on 2026-08-26 by a `/start_dev` research pass. Never issued +as a GitHub issue and never developed: the four failures the prompt describes +had all been resolved on `autolens_workspace_test` main by 2026-08-22, most of +them within hours of the prompt being written. Recorded rather than deleted +because the *reason* it went stale is the reusable finding. + +## Verified state at retirement + +`autolens_workspace_test` main `8be3d59`, Smoke Tests run +[32922456742](https://github.com/PyAutoLabs/autolens_workspace_test/actions/runs/32922456742) +(2026-08-26 02:24 UTC), green on both Python 3.12 and 3.13: + +``` +Running 22 listed scripts + scripts/imaging/jax_likelihood/lp.py ... PASS (9.8s) + scripts/interferometer/jax_likelihood/rectangular.py PASS (21.1s) + scripts/interferometer/jax_likelihood/mge.py ... PASS (12.6s) + ... 22/22 PASS +``` + +The prompt's headline — "every workspace_test smoke sweep reads 20/24 until +this lands" — is now 22/22. The denominator moved too: two further entries +left `smoke_tests.txt` for reasons unrelated to pins. + +## Disposition of each claim + +- **`imaging/jax_likelihood/lp.py`, pin `-1.34797827e09` is double.** Fixed. + Repinned to `-6.74165366e08` in `197ce6e` (autolens_workspace_test#257) on + 2026-08-19 — the same day the prompt was filed. +- **"The unmerged fix `fb1aefe0b` sits in the orphan worktree + `~/Code/PyAutoLabs-wt/positions-lh-penalty-accumulation`; landing it and + re-pinning must happen together."** Both had already happened. `fb1aefe0b` + is the head SHA of [PyAutoLens#700](https://github.com/PyAutoLabs/PyAutoLens/pull/700) + ("sum PositionsLH penalties instead of doubling the last entry", fixes + PyAutoLens#699), merged 2026-08-17 — two days *before* the prompt called it + unmerged. `197ce6e` is precisely the paired re-pin the prompt asked for, and + it repinned five scripts, not four (it also caught + `interferometer/jax_likelihood/lp.py` and both `imaging/substructure/subhalo.py` + pairs). +- **`interferometer/jax_likelihood/rectangular.py` misses pin `-3164.286252` by + 0.0124% vs rtol 1e-4.** Passing. The pin literal is *unchanged* to this day, + and `99d63b3` (2026-08-21) re-verified the script green including its + TransformerNUFFT cross-check. So the 08-19 miss was environment drift in the + control run, not a stale pin — nothing to recalibrate and no tolerance to + widen. +- **`interferometer/jax_likelihood/mge.py`, "same stale-pin family".** Fixed by + the same `197ce6e`: `-7.94439429e08` -> `-3.97221282e08`, i.e. it was a + PositionsLH-doubling casualty, not an independent drift. +- **`multi_dataset/jax_likelihood/mge.py`, "same stale-pin family".** Never a + pin problem. Commented out of `smoke_tests.txt` on 2026-08-22 (#262) for + hanging to the 300s cap — the family-wide XLA compile stall tracked in + autolens_workspace_test#245. Its pin (`EXPECTED_VMAP_LOG_LIKELIHOOD = + -2173221.43685875`) is untouched since the `multi` -> `multi_dataset` rename + (`d7cc60c`) and has never been shown wrong. + +## Key traps / findings + +- **A control-test finding has a shelf life measured in hours.** This prompt + was written from a control run taken during `lazy-heavy-imports` (#1505) and + was obsolete before the day was out — `197ce6e` landed 2026-08-19 10:25 EDT. + Filing a finding is not the same as checking whether someone is already on + it; a pass over recent commits touching the named files would have caught it. +- **"Orphan worktree" is a claim about a laptop, not about a repository.** A + local worktree whose branch has been merged and deleted upstream looks + identical to one holding genuinely unlanded work. The check that settles it + is the branch's head SHA against the remote's merged PRs — here `fb1aefe0b` + resolved straight to a PR merged two days earlier. Adjudicate an orphan from + the remote, never from the worktree's own state. +- **One root cause can wear several symptom labels.** Three of the four listed + scripts were the *same* bug (the 2x-last PositionsLH penalty), not a + "stale-pin family". Grouping symptoms by folder invented a class of drift + that did not exist and would have sent the fix in the wrong direction — + widening tolerances on correct pins. +- **A script leaving the smoke gate changes the denominator.** A pass/total + target like "20/24" is not a stable goal: `multi_dataset/jax_likelihood/mge.py` + and `multi_dataset/jax_likelihood/shared_preloads.py` both left the list for + timing reasons, so the sweep now reads 22/22 without any pin having been + touched for that. + +## Follow-ups + +- **Local debris only.** `~/Code/PyAutoLabs-wt/positions-lh-penalty-accumulation` + is a stale worktree over a merged-and-deleted branch on the laptop; it is a + `/repo_cleanup` item, not code work, and no cloud session can see or clear + it. +- **Latent, owned elsewhere.** `multi_dataset/jax_likelihood/mge.py`'s pin has + never been verified against a post-PyAutoLens#700 library. If + autolens_workspace_test#245's XLA stall is fixed and the script returns to + the gate, re-derive its pin as part of that re-enable rather than trusting + the pre-rename literal. Deliberately not filed as its own prompt — it has no + standalone trigger. + +## Original prompt + +# autolens_workspace_test jax_likelihood pins: 4 scripts fail smoke on main + +Type: bug +Target: autolens +Repos: +- @PyAutoLens +Difficulty: low +Autonomy: supervised +Priority: normal +Status: draft +Filed: 2026-08-19 (backfilled from git) + +## Finding (2026-08-19, control-tested during lazy-heavy-imports #1505) + +`pyauto-heart smoke autolens_test` fails 4/24 on canonical main (verified twice, +worktree and canonical identical): + +- `imaging/jax_likelihood/lp.py` — vmap result is ~half the hardcoded pin + `-1.34797827e09`. This is the positions-LH penalty-doubling: the unmerged fix + `fb1aefe0b` ("sum PositionsLH penalties instead of doubling the last entry") + sits in the orphan worktree `~/Code/PyAutoLabs-wt/positions-lh-penalty-accumulation` + (PyAutoLens). The pin was calibrated against the doubling behaviour — landing + that fix and re-pinning must happen together. +- `interferometer/jax_likelihood/rectangular.py` — misses pin `-3164.286252` by + 0.0124% vs rtol 1e-4 (stale-pin drift). +- `interferometer/jax_likelihood/mge.py`, `multi_dataset/jax_likelihood/mge.py` — + same stale-pin family. + +## Task + +Adjudicate the orphan positions-LH worktree (land or discard `fb1aefe0b`), then +recalibrate the four scripts' hardcoded pins against current main and widen +tolerances where the value is legitimately environment-sensitive. Every +workspace_test smoke sweep reads 20/24 until this lands. diff --git a/complete/index.md b/complete/index.md index 84c66e86..f8ea91dd 100644 --- a/complete/index.md +++ b/complete/index.md @@ -6,7 +6,7 @@ Token-light navigation over the finished-work records (schema: only then grep a dated bucket. Curators: edit the band between the CURATED markers; everything below GENERATED is rebuilt. -1142 records across 7 buckets. +1143 records across 7 buckets. ## Highlights @@ -122,6 +122,7 @@ _(curate hard-won records here — survives regeneration.)_ - [jax-grad-local-vs-ci-assertions](2026/08/jax-grad-local-vs-ci-assertions.md) - [jax-grad-smoke-timeout-budget](2026/08/jax-grad-smoke-timeout-budget.md) - [jax-likelihood-mass-sensitivity](2026/08/jax-likelihood-mass-sensitivity.md) — Audit + fix for median-literal mass blindness across all jax_likelihood/datacube scripts (phase 2 of the findi… +- [jax-likelihood-smoke-pins-stale](2026/08/jax-likelihood-smoke-pins-stale.md) - [jax-stall-shared-preloads-retime-refutation](2026/08/jax-stall-shared-preloads-retime-refutation.md) - [knowledge-board](2026/08/knowledge-board.md) — auto-closed on merge - [lacosmic-cr-option-and-star-pass-decoupling](2026/08/lacosmic-cr-option-and-star-pass-decoupling.md) — both deliberately OPEN — closure is the default-flip decision, not this ship diff --git a/dashboard.html b/dashboard.html index f1fa40b3..718265b2 100644 --- a/dashboard.html +++ b/dashboard.html @@ -185,7 +185,7 @@

PyAutoMindDashboard

Intent. Priority. Flow.

Every task the Mind is holding. Tap a task's 📋 and its /start_dev command is on your clipboard — paste it into a Claude Code chat to route Claude straight to that task. Recent is the same work by date — what has been happening rather than what to do next.

- +

Last updated 2026-08-26. This page is generated from active/, draft/ and the registry files, so it is only as current as they are. dashboard_refresh.yml re-renders it on every push to main — that heals a stale page, but not a stale prompt: a task that shipped without its prompt advancing to complete/ keeps rendering here as pickable backlog. Reconciling those is the refresh below.

latent-nan-guard-honest-run — planned 2026-07-22

Backlog markdown version

-

135 filed prompts, not started — sorted most-pickable first (priority, then size). 25 of them belong to an epic and are listed only under Epics below.

+

134 filed prompts, not started — sorted most-pickable first (priority, then size). 25 of them belong to an epic and are listed only under Epics below.

feature — 27 @@ -325,7 +325,7 @@

Backlog

Cluster-scale gradient-search benchmark (Prodigy vs Nautilus, point-source)🔬 researchautolens_profiling

-bug — 18 +bug — 17

Fix release JAX runtime compatibility and likelihood parity🐛 bughealth_fixestoo-largesupervisedhigh

Fix JIT quick-update visualization output regressions🐛 bughealth_fixestoo-largesupervisedhigh

Fix release result/sample parameter-path regressions🐛 bughealth_fixestoo-largesupervisedhigh

@@ -340,7 +340,6 @@

Backlog

Resolve release-profile timeout scripts deliberately🐛 bughealth_fixestoo-largesupervisednormal

Priors & Messages cleanup — tracker🐛 bugpriorstoo-largesupervisednormal

-

Point-source JSON datasets record no resolution regime🐛 bugpyautolensmediumsupervisedlow

@@ -502,12 +501,6 @@

Backlog 2026-08-19 filed -autolens_workspace_test jax_likelihood pins: 4 scripts fail smoke on… - - - -2026-08-19 -filed autofit_profiling: bootstrap the repo + general PyAutoFit profiling… @@ -691,6 +684,12 @@

Backlog plot coverage — follow-ups deferred from plot-coverage-gaps + +2026-07-30 +filed +generate.py deletes notebooks/ before rejecting an unknown project + +

Epics markdown version

diff --git a/dashboard.md b/dashboard.md index eb8cee04..a1a562d6 100644 --- a/dashboard.md +++ b/dashboard.md @@ -45,7 +45,7 @@ anything you could not verify. | [In flight](#in-flight) (`active/`) | 1 | | [Parked](#parked) (`parked.md`) | 3 | | [Planned](#planned) (`planned.md`) | 5 | -| [Backlog](#backlog) (`draft/`) | 135 | +| [Backlog](#backlog) (`draft/`) | 134 | ## Start here @@ -247,7 +247,7 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned. ## Backlog -**135** filed prompts, not started. Each section is sorted most-pickable first (priority, then size). **25** of them belong to an epic and are listed only under [Epics](#epics) below. +**134** filed prompts, not started. Each section is sorted most-pickable first (priority, then size). **25** of them belong to an epic and are listed only under [Epics](#epics) below.
feature — 27 @@ -777,7 +777,7 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned.
-bug — 18 +bug — 17
📋 Fix release JAX runtime compatibility and likelihood parity — health_fixes · too-large · supervised · high @@ -891,14 +891,6 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned.
-
📋 autolens_workspace_test jax_likelihood pins: 4 scripts fail smoke on main — autolens · low · supervised · normal - -``` -/start_dev draft/bug/autolens/jax_likelihood_smoke_pins_stale.md -``` - -
-
📋 The reconstruction noise map describes a different estimator than the default solver — autoarray · medium · human-required · low ``` @@ -1203,14 +1195,13 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 2026-08-21 | filed | Rectangular mesh split: Bilinear (fast CPU default) vs RTU… | | 2026-08-20 | filed | Numba CPU likelihood phase 2: kernel-CDF numba fast path (the 49-88%… | | 2026-08-20 | filed | Numba CPU likelihood phase 1: batched MGE convolution +… | -| 2026-08-19 | filed | autolens_workspace_test jax_likelihood pins: 4 scripts fail smoke on… | | 2026-08-19 | filed | autofit_profiling: bootstrap the repo + general PyAutoFit profiling… | +| 2026-08-19 | issued | @PyAutoFit TransformedMessage.factor_gradient crashes on first… |
… 10 more (30 left) | Date | Event | Task | |------|-------|------| -| 2026-08-19 | issued | @PyAutoFit TransformedMessage.factor_gradient crashes on first… | | 2026-08-19 | filed | Release board: local run_logs enrichment | | 2026-08-19 | filed | RTD organism docs currency: Nerves page, organ-count drift, hands.md… | | 2026-08-19 | filed | Deduplicate repos_sync.py's check/write pairs | @@ -1220,12 +1211,12 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 2026-08-18 | filed | @PyAutoFit TransformedMessage.logpdf/pdf omit the transform… | | 2026-08-17 | filed | Which other searches need prior-support handling — coverage audit… | | 2026-08-17 | filed | Teach repos_sync --write to stamp organ config surfaces | +| 2026-08-16 | filed | LogGaussianPrior misreports its own support as (-inf, inf) |
… 10 more (20 left) | Date | Event | Task | |------|-------|------| -| 2026-08-16 | filed | LogGaussianPrior misreports its own support as (-inf, inf) | | 2026-08-14 | filed | Three jax_likelihood pins are stale by ~1.24e-4 and fail the smoke… | | 2026-08-09 | found | isothermal-ell-sph-oversampling-at-the-cusp | | 2026-08-08 | parked | pyautoreduce-slacs1430-acs-comparison | @@ -1235,12 +1226,12 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 2026-08-06 | filed | Rewrite PyAutoCTI docs/api — 55 of 89 autosummary entries are dead | | 2026-08-06 | filed | Dependency-cap refresh 2026-08: safe bumps, astropy 8 decision, two… | | 2026-08-05 | filed | Give PyAutoFit searches a seed — today no search can be made… | +| 2026-08-04 | filed | dataset/imaging/jwst_lw is untracked because the gitignore was never… |
… 10 more (10 left) | Date | Event | Task | |------|-------|------| -| 2026-08-04 | filed | dataset/imaging/jwst_lw is untracked because the gitignore was never… | | 2026-08-04 | filed | cosmos_web_ring stores boolean masks as float64, wasting ~3.4 MB of… | | 2026-08-04 | filed | autolens_workspace_developer: broad stale-API rot (56 symbols, no CI) | | 2026-08-04 | filed | Nightly release has been blocked 8 nights running — triage the streak | @@ -1250,6 +1241,7 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 2026-07-31 | filed | Quick-update plotting cost — minutes per update, and it is not JAX… | | 2026-07-31 | filed | Cluster-scale gradient-search benchmark (Prodigy vs Nautilus… | | 2026-07-30 | filed | plot coverage — follow-ups deferred from plot-coverage-gaps | +| 2026-07-30 | filed | generate.py deletes notebooks/ before rejecting an unknown project |
diff --git a/draft/bug/autolens/jax_likelihood_smoke_pins_stale.md b/draft/bug/autolens/jax_likelihood_smoke_pins_stale.md deleted file mode 100644 index a4b4cd83..00000000 --- a/draft/bug/autolens/jax_likelihood_smoke_pins_stale.md +++ /dev/null @@ -1,34 +0,0 @@ -# autolens_workspace_test jax_likelihood pins: 4 scripts fail smoke on main - -Type: bug -Target: autolens -Repos: -- @PyAutoLens -Difficulty: low -Autonomy: supervised -Priority: normal -Status: draft -Filed: 2026-08-19 (backfilled from git) - -## Finding (2026-08-19, control-tested during lazy-heavy-imports #1505) - -`pyauto-heart smoke autolens_test` fails 4/24 on canonical main (verified twice, -worktree and canonical identical): - -- `imaging/jax_likelihood/lp.py` — vmap result is ~half the hardcoded pin - `-1.34797827e09`. This is the positions-LH penalty-doubling: the unmerged fix - `fb1aefe0b` ("sum PositionsLH penalties instead of doubling the last entry") - sits in the orphan worktree `~/Code/PyAutoLabs-wt/positions-lh-penalty-accumulation` - (PyAutoLens). The pin was calibrated against the doubling behaviour — landing - that fix and re-pinning must happen together. -- `interferometer/jax_likelihood/rectangular.py` — misses pin `-3164.286252` by - 0.0124% vs rtol 1e-4 (stale-pin drift). -- `interferometer/jax_likelihood/mge.py`, `multi_dataset/jax_likelihood/mge.py` — - same stale-pin family. - -## Task - -Adjudicate the orphan positions-LH worktree (land or discard `fb1aefe0b`), then -recalibrate the four scripts' hardcoded pins against current main and widen -tolerances where the value is legitimately environment-sensitive. Every -workspace_test smoke sweep reads 20/24 until this lands.