From 7943d28dcbb43719b49c5a7bf25d054d8be43512 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 27 Aug 2026 18:13:09 +0000 Subject: [PATCH 1/2] =?UTF-8?q?prompt:=20retire=20smoke-install-stale-jax-?= =?UTF-8?q?pin=20=E2=80=94=20shipped=202026-08-23,=20never=20recorded?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The prompt described a defect that no longer exists. autolens_workspace_test#266 was opened from this prompt verbatim on 2026-08-23 and closed by PR #268 (a97f052, merged same day): the `jax<0.7 jaxlib<0.7` pin is gone from smoke_install.sh, replaced by the #82 -> #184 trail comment and a JAXCHECK assertion on the resolved version. autogalaxy_workspace_test carries the identical fix. All four of the prompt's scope items are covered, including the sibling sweep — an org-wide search for `jaxlib<0.7` now returns no live script. The task shipped without touching Mind state: no active.md entry, no active/ move, no completion record. The prompt stayed in draft/ and kept rendering on dashboard.md as pickable backlog with a live /start_dev chip, which is how it came to be picked again on 2026-08-27. lifecycle.py check could not see it — its invariant is that no active.md slug has a record, and this task was in neither place. Write complete/2026/08/smoke-install-stale-jax-pin.md (the record, folding the original prompt), remove the draft file, refresh complete/index.md, regenerate the dashboard. lifecycle check and index --check both OK. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01GJ1DqnZMoRLEyaHpxgWu5Y --- .../2026/08/smoke-install-stale-jax-pin.md | 168 ++++++++++++++++++ complete/index.md | 3 +- dashboard.html | 19 +- dashboard.md | 22 +-- .../ci/smoke_install_stale_jax_pin.md | 69 ------- 5 files changed, 186 insertions(+), 95 deletions(-) create mode 100644 complete/2026/08/smoke-install-stale-jax-pin.md delete mode 100644 draft/maintenance/ci/smoke_install_stale_jax_pin.md diff --git a/complete/2026/08/smoke-install-stale-jax-pin.md b/complete/2026/08/smoke-install-stale-jax-pin.md new file mode 100644 index 000000000..19c394c6e --- /dev/null +++ b/complete/2026/08/smoke-install-stale-jax-pin.md @@ -0,0 +1,168 @@ +## smoke-install-stale-jax-pin +- issue: https://github.com/PyAutoLabs/autolens_workspace_test/issues/266 +- completed: 2026-08-23 +- workspace-pr: https://github.com/PyAutoLabs/autolens_workspace_test/pull/268 (merged a97f052) +- sibling-pr: autogalaxy_workspace_test — companion PR, identical change; its smoke_install.sh on main carries the same JAXCHECK block +- summary: Dropped the vestigial `jax<0.7 jaxlib<0.7` pin from smoke_install.sh. Added in #82 solely to keep tensorflow-probability==0.25.0 importable; #184 removed that dependency for tfp-nightly and left the pin behind. Not inert: jax is a base dep of autonerves (>=0.7.0,<0.12.0), so the pin downgraded a conforming install to 0.6.2 and only the following `[optional]` re-resolution pulled it back to 0.10.2 — CI green by line ordering, not by constraint. Replaced with a #82→#184 trail comment plus a JAXCHECK heredoc asserting the resolved version in [0.7.0, 0.12.0). +- mind-drift: shipped without touching Mind state; retired to complete/ on 2026-08-27 after the still-live dashboard chip caused a re-pick. See the close-out note below. + +`autolens_workspace_test/.github/scripts/smoke_install.sh` pinned +`jax<0.7 jaxlib<0.7`. The pin was added in #82 for exactly one reason, stated in +its own commit message: keeping `tensorflow-probability==0.25.0` importable, +since `tfp.substrates.jax` referenced `jax.interpreters.xla.pytype_aval_mappings`, +removed in JAX 0.7.0. #184 then deleted `pip install tensorflow-probability==0.25.0` +when the stack moved to `tfp-nightly` (pinned by `PyAutoArray[optional]`, whose +own comment documents the nightly as the `jax>=0.7`-compatible one). The pin +outlived the dependency it protected. + +The framing that made it worth fixing rather than shrugging at: it was **not +inert**. `jax` is a *base* dependency of `autonerves` (`jax>=0.7.0,<0.12.0`, +PyAutoLens#702), so the preceding line already installed a conforming jax; the +pin then downgraded it to 0.6.2 — a configuration the stack does not claim to +support — and only the *following* `[optional]` re-resolution pulled it back to +0.10.2. CI was green by **line ordering, not by constraint**. Reordering those +two lines, or a change in what the extras resolve, would have dropped the whole +smoke suite onto jax 0.6.2 silently, surfacing as unexplained smoke breakage +rather than as an install error. + +## PRs + +- autolens_workspace_test#268 → `a97f052` (issue autolens_workspace_test#266 closed), + branch `feature/smoke-install-stale-jax-pin`, merged 2026-08-23. +23/−1, one file. +- `autogalaxy_workspace_test` carried the identical line and was fixed in a + companion PR; its `smoke_install.sh` on `main` now carries the same `JAXCHECK` + block. + +## The fix + +Delete the pin and let `autonerves`' base requirement govern. In its place: + +1. A comment recording the #82 → #184 trail, so the pin is not reintroduced by + someone reading the file cold. +2. A `JAXCHECK` heredoc appended after the final + `pip install --force-reinstall --no-deps ./PyAutoNerves`, asserting + `(0, 7) <= (major, minor) < (0, 12)` on the resolved `jax.__version__` and + printing it to the CI log. With `set -e` at the top, a violation aborts the + install step. + +The `tfp-nightly` NOTE block and the trailing `--force-reinstall --no-deps +./PyAutoNerves` were preserved verbatim — both remain accurate. + +Two decisions worth not "simplifying" later: + +- **Deleted, not rewritten as an honest `jax>=0.7,<0.12`.** A second copy of the + constraint drifts, and this one already had: the range was `<0.11` when the + defect was filed and `<0.12` by the time it was fixed. The assertion checks the + range without owning it. +- **The guard compares a major/minor tuple, not `packaging.version`.** It runs + inside the install epilogue, where an undeclared import would fail the install + rather than fail softly. `import jax` is deliberately unguarded: the workflow + runs on `ubuntu-latest`, where `autonerves`' platform marker always installs + jax, so an absent jax is itself worth catching. That would need softening only + if this workflow ever ran on Intel macOS. + +## Verification + +The PR's own Smoke Tests run **is** the from-scratch install replay the prompt +asked for; the guard is what turns it from an inference into a check. Before +that: `bash -n` clean; the guard executed as a real bash heredoc against a stub +`jax` (`0.10.2` prints and exits 0; `0.6.2` and `0.12.0` exit 1 with the +explanatory message); boundary cases `0.7.0`/`0.9.0`/`0.10.2`/`0.11.4` pass and +`0.6.2`/`0.12.0`/`1.0.0` fail. + +## Sibling sweep (the prompt's scope item 4) + +`autocti_workspace_test` and `autofit_workspace_test` were checked at fix time +and carry no jax pin. Re-confirmed at close-out: an org-wide code search for +`jaxlib<0.7` across PyAutoLabs returns **no live script** — only this prompt's +own text in PyAutoMind and one prose mention in +`complete/2026/08/jax-grad-local-vs-ci-assertions.md`. + +## Close-out note: this record is late, and why + +The task shipped on 2026-08-23 without ever touching Mind state — no `active.md` +entry, no `active/` move, no record. The prompt sat in +`draft/maintenance/ci/` and kept rendering on `dashboard.md` as pickable +backlog with a live `/start_dev` chip, which is how it came to be picked again on +2026-08-27. Nothing downstream could tell the difference: as `AGENTS.md` notes, +a shipped-but-unretired prompt renders faithfully and no workflow detects it. +`lifecycle.py check` did not catch it either — its invariant is that no +`active.md` slug has a record, and this task was in neither place. + +The re-pick cost only a verification pass, because the prompt named the file and +the file's current contents were the answer. The generalisable check for the next +one: before opening an issue, read the prompt's own target file on `main`. If the +defect it describes is not there, look for the merged PR before doing anything +else. + +## Original prompt + +# smoke_install.sh's stale `jax<0.7` pin — CI is on the right jax by accident + +Type: maintenance +Target: ci +Repos: +- @autolens_workspace_test +Difficulty: low +Autonomy: supervised +Priority: medium +Status: formalised +Filed: 2026-08-22 (backfilled from git) + +Found 2026-08-22 while building a CI-equivalent environment to reproduce +autolens_workspace_test#260. Latent — CI is green today — but it is green for the +wrong reason. + +## The defect + +`autolens_workspace_test/.github/scripts/smoke_install.sh:9`: + +```bash +pip install "jax<0.7" "jaxlib<0.7" +``` + +Replaying the install script verbatim, that line **downgrades jax to 0.6.2** and +raises a resolver conflict against autonerves' own requirement: + +``` +autonerves 9999.0.0.dev0 requires jax<0.11.0,>=0.7.0; ... but you have jax 0.6.2 +which is incompatible. +Successfully installed jax-0.6.2 jaxlib-0.6.2 +``` + +The install only ends up on the intended **0.10.2** because the *next* line's +`[optional]` extras happen to pull it back up: + +```bash +pip install "./PyAutoArray[optional]" "./PyAutoGalaxy[optional]" "./PyAutoLens[optional]" +``` + +## Why it matters + +The pin no longer expresses the intent it was written for, and the correct +outcome now depends on line ordering rather than on the constraint. Any +reordering of those two lines, or a change to what the `[optional]` extras +resolve, would silently drop the entire smoke suite onto jax 0.6.2 — and because +`autonerves` declares `jax>=0.7`, that is a configuration the stack does not +claim to support. The failure would surface as unexplained smoke breakage, not as +an install error. + +The comment block immediately below that line (about `tfp-nightly` vs +`tensorflow-probability`) is still accurate and should be preserved. + +## Suggested scope + +1. Establish what the `jax<0.7` pin was originally protecting against, and whether + that reason still holds — do not simply delete it because it looks stale. +2. Either remove it (letting `autonerves`' `jax<0.11.0,>=0.7.0` govern) or replace + it with a pin that states the real intended range. +3. Verify by replaying the install from scratch and asserting the resolved jax + version, rather than inferring it from a green run. +4. Check whether sibling workspaces' install epilogues carry the same stale pin. + + + + diff --git a/complete/index.md b/complete/index.md index 37cf4819a..02285b986 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. -1162 records across 7 buckets. +1163 records across 7 buckets. ## Highlights @@ -248,6 +248,7 @@ _(curate hard-won records here — survives regeneration.)_ - [small-datasets-loader-pixel-scales](2026/08/small-datasets-loader-pixel-scales.md) - [small-datasets-regime-stamp](2026/08/small-datasets-regime-stamp.md) - [small-datasets-rmtree-committed-data](2026/08/small-datasets-rmtree-committed-data.md) +- [smoke-install-stale-jax-pin](2026/08/smoke-install-stale-jax-pin.md) — Dropped the vestigial `jax<0.7 jaxlib<0.7` pin from smoke_install.sh. Added in #82 solely to keep tensorflow-p… - [smoke-runner-delegation](2026/08/smoke-runner-delegation.md) - [smoke-runner-jupyter-guard](2026/08/smoke-runner-jupyter-guard.md) - [smoke-surface-retime-sweep](2026/08/smoke-surface-retime-sweep.md) diff --git a/dashboard.html b/dashboard.html index 89e4b4461..2069ea5c9 100644 --- a/dashboard.html +++ b/dashboard.html @@ -204,7 +204,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-27. 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

-

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

+

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

feature — 28 @@ -321,9 +321,8 @@

Backlog

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

-maintenance — 20 +maintenance — 19

Untrack the generated FITS test artifacts in autoarray🧹 maintenancelibrariessmallsupervisedmedium

-

autolens_workspace_developer rectangular experiments — Gut stash + rename🧹 maintenanceautolens_workspace_developersmallsupervisednormal

Mirror drifted library config keys into the workspace configs🧹 maintenanceworkspacessmallsupervisednormal

@@ -508,12 +507,6 @@

Backlog 2026-08-22 filed -smoke_install.sh's stale jax<0.7 pin — CI is on the right jax… - - - -2026-08-22 -filed Untrack the generated FITS test artifacts in autoarray @@ -709,6 +702,12 @@

Backlog Un-park imaging/features/scaling_relation/slam — the PyAutoArray#431… + +2026-07-31 +filed +Quick-update plotting cost — minutes per update, and it is not JAX… + +

Epics markdown version

diff --git a/dashboard.md b/dashboard.md index 290101bda..042d99572 100644 --- a/dashboard.md +++ b/dashboard.md @@ -45,7 +45,7 @@ anything you could not verify. | [In flight](#in-flight) (`active/`) | 2 | | [Parked](#parked) (`parked.md`) | 3 | | [Planned](#planned) (`planned.md`) | 5 | -| [Backlog](#backlog) (`draft/`) | 132 | +| [Backlog](#backlog) (`draft/`) | 131 | ## Start here @@ -255,7 +255,7 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned. ## Backlog -**132** filed prompts, not started. Each section is sorted most-pickable first (priority, then size). **24** of them belong to an epic and are listed only under [Epics](#epics) below. +**131** filed prompts, not started. Each section is sorted most-pickable first (priority, then size). **24** of them belong to an epic and are listed only under [Epics](#epics) below.
feature — 28 @@ -612,7 +612,7 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned.
-maintenance — 20 +maintenance — 19
📋 Untrack the generated FITS test artifacts in autoarray — libraries · small · supervised · medium @@ -622,14 +622,6 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned.
-
📋 smoke_install.sh's stale jax<0.7 pin — CI is on the right jax… — ci · low · supervised · medium - -``` -/start_dev draft/maintenance/ci/smoke_install_stale_jax_pin.md -``` - -
-
📋 autolens_workspace_developer rectangular experiments — Gut stash + rename — autolens_workspace_developer · small · supervised · normal ``` @@ -1193,16 +1185,15 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 2026-08-23 | filed | pynufft removal: unswept downstream residue (1 hard break + stale… | | 2026-08-23 | filed | Phase 3: stop installing pynufft in Hands/Heart CI and PyAutoCTI… | | 2026-08-23 | filed | Brain board follow-ups: what real mornings surface | -| 2026-08-22 | filed | smoke_install.sh's stale jax<0.7 pin — CI is on the right jax… | | 2026-08-22 | filed | Untrack the generated FITS test artifacts in autoarray | | 2026-08-22 | filed | The reconstruction noise map describes a different estimator than the… | | 2026-08-22 | filed | Point-source JSON datasets record no resolution regime | +| 2026-08-22 | filed | Is Intel macOS a supported platform, and what is the numpy-only… |
… 10 more (30 left) | Date | Event | Task | |------|-------|------| -| 2026-08-22 | filed | Is Intel macOS a supported platform, and what is the numpy-only… | | 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 +… | @@ -1212,12 +1203,12 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 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 | | 2026-08-19 | filed | Bug in autocti_workspace: the dataset_1d results/database example… | +| 2026-08-18 | parked | single-source-density-design |
… 10 more (20 left) | Date | Event | Task | |------|-------|------| -| 2026-08-18 | parked | single-source-density-design | | 2026-08-18 | parked | prior-message-collapse-design | | 2026-08-18 | filed | @PyAutoFit TransformedMessage.logpdf/pdf omit the transform… | | 2026-08-17 | filed | Which other searches need prior-support handling — coverage audit… | @@ -1227,12 +1218,12 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 2026-08-08 | parked | pyautoreduce-slacs1430-acs-comparison | | 2026-08-08 | filed | Regenerate autolens_workspace markdown/ so the MGE pages show… | | 2026-08-07 | filed | Regenerate setup_notebook-drifted notebooks in… | +| 2026-08-06 | filed | Triage: Convolver "No blurring_image provided" warning in canonical… |
… 10 more (10 left) | Date | Event | Task | |------|-------|------| -| 2026-08-06 | filed | Triage: Convolver "No blurring_image provided" warning in canonical… | | 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… | @@ -1242,6 +1233,7 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 2026-08-04 | filed | Nightly release has been blocked 8 nights running — triage the streak | | 2026-08-04 | filed | HowToLens ch4 tutorial 3: mask overlay is never actually drawn | | 2026-08-03 | filed | Un-park imaging/features/scaling_relation/slam — the PyAutoArray#431… | +| 2026-07-31 | filed | Quick-update plotting cost — minutes per update, and it is not JAX… |
diff --git a/draft/maintenance/ci/smoke_install_stale_jax_pin.md b/draft/maintenance/ci/smoke_install_stale_jax_pin.md deleted file mode 100644 index 0431db40f..000000000 --- a/draft/maintenance/ci/smoke_install_stale_jax_pin.md +++ /dev/null @@ -1,69 +0,0 @@ -# smoke_install.sh's stale `jax<0.7` pin — CI is on the right jax by accident - -Type: maintenance -Target: ci -Repos: -- @autolens_workspace_test -Difficulty: low -Autonomy: supervised -Priority: medium -Status: formalised -Filed: 2026-08-22 (backfilled from git) - -Found 2026-08-22 while building a CI-equivalent environment to reproduce -autolens_workspace_test#260. Latent — CI is green today — but it is green for the -wrong reason. - -## The defect - -`autolens_workspace_test/.github/scripts/smoke_install.sh:9`: - -```bash -pip install "jax<0.7" "jaxlib<0.7" -``` - -Replaying the install script verbatim, that line **downgrades jax to 0.6.2** and -raises a resolver conflict against autonerves' own requirement: - -``` -autonerves 9999.0.0.dev0 requires jax<0.11.0,>=0.7.0; ... but you have jax 0.6.2 -which is incompatible. -Successfully installed jax-0.6.2 jaxlib-0.6.2 -``` - -The install only ends up on the intended **0.10.2** because the *next* line's -`[optional]` extras happen to pull it back up: - -```bash -pip install "./PyAutoArray[optional]" "./PyAutoGalaxy[optional]" "./PyAutoLens[optional]" -``` - -## Why it matters - -The pin no longer expresses the intent it was written for, and the correct -outcome now depends on line ordering rather than on the constraint. Any -reordering of those two lines, or a change to what the `[optional]` extras -resolve, would silently drop the entire smoke suite onto jax 0.6.2 — and because -`autonerves` declares `jax>=0.7`, that is a configuration the stack does not -claim to support. The failure would surface as unexplained smoke breakage, not as -an install error. - -The comment block immediately below that line (about `tfp-nightly` vs -`tensorflow-probability`) is still accurate and should be preserved. - -## Suggested scope - -1. Establish what the `jax<0.7` pin was originally protecting against, and whether - that reason still holds — do not simply delete it because it looks stale. -2. Either remove it (letting `autonerves`' `jax<0.11.0,>=0.7.0` govern) or replace - it with a pin that states the real intended range. -3. Verify by replaying the install from scratch and asserting the resolved jax - version, rather than inferring it from a green run. -4. Check whether sibling workspaces' install epilogues carry the same stale pin. - - - - From 845bbefba67da3d74b5d07cbfc1b0ad413aa8741 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 27 Aug 2026 18:19:30 +0000 Subject: [PATCH 2/2] prompt: file intake_reconcile_absence_signal (drift this backlog cannot detect) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up from retiring smoke-install-stale-jax-pin in the previous commit. That prompt shipped on 2026-08-23 with no Mind-side trace at all — no active.md entry, no active/ move, no complete/ record — and so kept rendering as pickable backlog until it was re-picked four days later. Two guards were checked directly against the restored prompt, and neither sees it: - lifecycle.py check passes; its invariant is that no active.md slug has a record, and a task that skips Mind state is in neither place. - intake reconcile reports 0 suspects of 132 scanned, including in `--repo autolens_workspace_test` mode pointed straight at the right repo. The reason is the shape of the signal. `--repo` tests PRESENCE ("the prompt names things that exist upstream"), and the file this prompt named does still exist. The defect it described was an ABSENCE: it quoted the literal `pip install "jax<0.7"` line, which is gone. A backlog prompt quoting a source line that no longer exists in the file it names is close to a proof the work shipped, and it fires exactly in the no-trace case the current signals are blind to. Filed as a prompt only; no dev work. Header corrected by hand from the intake classifier's output, which resolved target=workspaces/autolens_workspace_test and difficulty=large by keying on the evidence repo rather than on _intake.py's home in PyAutoBrain — the same failure the prompt is about. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01GJ1DqnZMoRLEyaHpxgWu5Y --- dashboard.html | 21 ++--- dashboard.md | 24 ++++-- .../intake_reconcile_absence_signal.md | 84 +++++++++++++++++++ 3 files changed, 111 insertions(+), 18 deletions(-) create mode 100644 draft/feature/pyautobrain/intake_reconcile_absence_signal.md diff --git a/dashboard.html b/dashboard.html index 2069ea5c9..14b760f15 100644 --- a/dashboard.html +++ b/dashboard.html @@ -204,7 +204,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.

-
  • 2In flight
  • 3Parked
  • 5Planned
  • 131Backlog
+
  • 2In flight
  • 3Parked
  • 5Planned
  • 132Backlog

Last updated 2026-08-27. 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

-

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

+

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

-feature — 28 +feature — 29

Give PyAutoFit searches a seed — today no search can be made…✨ featureautofitmediumsupervisedmedium

+

Brain board follow-ups: what real mornings surface✨ featurepyautobrainsmallsupervisednormal

Can create a list of InversionMatrix objects for each dataset✨ featureautoarraymediumsupervisednormal

Tune cluster-scale JOSS benchmarks toward their 5-minute targets✨ featureautolens_workspacemediumsupervisednormal

@@ -410,6 +411,12 @@

Backlog 2026-08-27 +filed +intake reconcile cannot see a prompt that shipped with no Mind-side… + + + +2026-08-27 issued Why does XLA CPU's Eigen thread pool wedge on the multi_dataset vmap… @@ -462,7 +469,7 @@

Backlog wiki-currency's --check-version gate rots on every library main merge - + 2026-08-24 filed interferometer/jax_grad/gradient.py: eager and jitted likelihoods… @@ -702,12 +709,6 @@

Backlog Un-park imaging/features/scaling_relation/slam — the PyAutoArray#431… - -2026-07-31 -filed -Quick-update plotting cost — minutes per update, and it is not JAX… - -

Epics markdown version

diff --git a/dashboard.md b/dashboard.md index 042d99572..4225501bf 100644 --- a/dashboard.md +++ b/dashboard.md @@ -45,7 +45,7 @@ anything you could not verify. | [In flight](#in-flight) (`active/`) | 2 | | [Parked](#parked) (`parked.md`) | 3 | | [Planned](#planned) (`planned.md`) | 5 | -| [Backlog](#backlog) (`draft/`) | 131 | +| [Backlog](#backlog) (`draft/`) | 132 | ## Start here @@ -255,10 +255,10 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned. ## Backlog -**131** filed prompts, not started. Each section is sorted most-pickable first (priority, then size). **24** of them belong to an epic and are listed only under [Epics](#epics) below. +**132** filed prompts, not started. Each section is sorted most-pickable first (priority, then size). **24** of them belong to an epic and are listed only under [Epics](#epics) below.
-feature — 28 +feature — 29
📋 Numba CPU likelihood phase 1: batched MGE convolution + operated-matrix caching — autoarray · medium · supervised · high @@ -300,6 +300,14 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned.
+
📋 intake reconcile cannot see a prompt that shipped with no Mind-side trace — pyautobrain · medium · supervised · medium + +``` +/start_dev draft/feature/pyautobrain/intake_reconcile_absence_signal.md +``` + +
+
📋 Brain board follow-ups: what real mornings surface — pyautobrain · small · supervised · normal ``` @@ -1164,6 +1172,7 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | Date | Event | Task | |------|-------|------| +| 2026-08-27 | filed | intake reconcile cannot see a prompt that shipped with no Mind-side… | | 2026-08-27 | issued | Why does XLA CPU's Eigen thread pool wedge on the multi_dataset vmap… | | 2026-08-27 | filed | Should TransformedMessage carry its own support, rather than the… | | 2026-08-27 | filed | One construction path for plane-bound lensing quantities | @@ -1173,12 +1182,12 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 2026-08-26 | filed | jax_profiling/gradient/imaging/pixelization.py: 3.2% of its pin move… | | 2026-08-26 | filed | The Brain board should work in a session that has no gh | | 2026-08-24 | filed | wiki-currency's --check-version gate rots on every library main merge | -| 2026-08-24 | filed | interferometer/jax_grad/gradient.py: eager and jitted likelihoods… |
… 10 more (40 left) | Date | Event | Task | |------|-------|------| +| 2026-08-24 | filed | interferometer/jax_grad/gradient.py: eager and jitted likelihoods… | | 2026-08-24 | filed | Un-park multi_galaxy/features/scaling_relation/slam once a capped run… | | 2026-08-24 | filed | Induct PyAutoReduce into the PyAutoHands release machinery (date… | | 2026-08-24 | filed | Heart's local smoke runner cannot run any CTI workspace — no autocti… | @@ -1188,12 +1197,12 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 2026-08-22 | filed | Untrack the generated FITS test artifacts in autoarray | | 2026-08-22 | filed | The reconstruction noise map describes a different estimator than the… | | 2026-08-22 | filed | Point-source JSON datasets record no resolution regime | -| 2026-08-22 | filed | Is Intel macOS a supported platform, and what is the numpy-only… |
… 10 more (30 left) | Date | Event | Task | |------|-------|------| +| 2026-08-22 | filed | Is Intel macOS a supported platform, and what is the numpy-only… | | 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 +… | @@ -1203,12 +1212,12 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 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 | | 2026-08-19 | filed | Bug in autocti_workspace: the dataset_1d results/database example… | -| 2026-08-18 | parked | single-source-density-design |
… 10 more (20 left) | Date | Event | Task | |------|-------|------| +| 2026-08-18 | parked | single-source-density-design | | 2026-08-18 | parked | prior-message-collapse-design | | 2026-08-18 | filed | @PyAutoFit TransformedMessage.logpdf/pdf omit the transform… | | 2026-08-17 | filed | Which other searches need prior-support handling — coverage audit… | @@ -1218,12 +1227,12 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 2026-08-08 | parked | pyautoreduce-slacs1430-acs-comparison | | 2026-08-08 | filed | Regenerate autolens_workspace markdown/ so the MGE pages show… | | 2026-08-07 | filed | Regenerate setup_notebook-drifted notebooks in… | -| 2026-08-06 | filed | Triage: Convolver "No blurring_image provided" warning in canonical… |
… 10 more (10 left) | Date | Event | Task | |------|-------|------| +| 2026-08-06 | filed | Triage: Convolver "No blurring_image provided" warning in canonical… | | 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… | @@ -1233,7 +1242,6 @@ The 50 newest things to happen to the work in hand, newest first — issued, par | 2026-08-04 | filed | Nightly release has been blocked 8 nights running — triage the streak | | 2026-08-04 | filed | HowToLens ch4 tutorial 3: mask overlay is never actually drawn | | 2026-08-03 | filed | Un-park imaging/features/scaling_relation/slam — the PyAutoArray#431… | -| 2026-07-31 | filed | Quick-update plotting cost — minutes per update, and it is not JAX… |
diff --git a/draft/feature/pyautobrain/intake_reconcile_absence_signal.md b/draft/feature/pyautobrain/intake_reconcile_absence_signal.md new file mode 100644 index 000000000..0041fdd60 --- /dev/null +++ b/draft/feature/pyautobrain/intake_reconcile_absence_signal.md @@ -0,0 +1,84 @@ +# `intake reconcile` cannot see a prompt that shipped with no Mind-side trace + +Type: feature +Target: pyautobrain +Repos: +- @PyAutoBrain +Difficulty: medium +Autonomy: supervised +Priority: medium +Status: formalised +Filed: 2026-08-27 + +Add the inverted signal: a prompt quoting a literal line that is GONE upstream. + +Found 2026-08-27 by re-picking draft/maintenance/ci/smoke_install_stale_jax_pin.md +via /start_dev. The prompt had shipped four days earlier +(autolens_workspace_test#266, closed by PR #268, a97f052, merged 2026-08-23) and +had never been retired: no active.md entry, no active/ move, no complete/ record. +It kept rendering on dashboard.md as pickable backlog with a live /start_dev chip, +which is exactly how it got picked again. + +Nothing detects this class today. Two guards were checked directly against the +restored prompt: + +1. `lifecycle.py check` — its invariant is that no active.md slug has a record. + A task that skips Mind state entirely is in NEITHER place, so the check passes. +2. `pyauto-brain intake reconcile` — every signal it emits (`referenced`, + `record-says-shipped`, `shared-identifiers`, `rare-topic-overlap`, + `stale-status`) needs a Mind-side trace. With the prompt restored, + `intake reconcile maintenance/ci` did not flag it. Neither did + `intake reconcile maintenance/ci --repo autolens_workspace_test`, pointed + straight at the right repo reading its live source: **0 suspects of 132 + scanned**. + +## Why --repo missed it + +`--repo` tests PRESENCE: "the prompt NAMES things that exist upstream". This +prompt names `smoke_install.sh`, which does still exist — so presence tells you +nothing. + +The defect this prompt described was an ABSENCE. It quoted a literal line: + +```bash +pip install "jax<0.7" "jaxlib<0.7" +``` + +That line is gone from upstream. A backlog prompt quoting a literal code line +that no longer exists in the file it names is close to a proof the work shipped — +far stronger than the presence signal already implemented, and it fires precisely +in the no-Mind-side-trace case the existing signals are blind to. + +## Suggested scope + +1. Add an absence signal to `intake reconcile --repo`: for each fenced code block + or backticked line in the prompt that looks like source (not prose), check + whether it still occurs in the file the prompt names. Quoted-and-now-absent + ranks higher than any current signal. +2. Keep it in the existing `needs-review` band and keep retirement human — the + same guard rail reconcile already states. A quoted line can vanish for reasons + other than the prompt shipping (an unrelated refactor, a reworded quote), so + this ranks for review, it does not retire. +3. Consider whether the prompt's `Repos:` header should drive the upstream target + automatically. Here the target FOLDER was `ci` (not a repo, so `--repo` is + refused and must be passed by hand) while the header named + `@autolens_workspace_test`. The header had the answer the flag had to be told. +4. Decide whether anything should run this on a schedule. Today reconcile is + on-demand and read-only, so the drift persists silently until someone re-picks + the prompt — which is a working detector, just an expensive one. + +Not in scope: closing the loop by having the ship skills record Mind state. That +is the upstream cause and deserves its own prompt if it is worth chasing; this one +is about detecting the drift that already exists. + + + +