Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,3 +1,29 @@
# extra_galaxies feature parity — the parent prompt, arc complete

- completed: 2026-07-30 — ARC COMPLETE, recorded phase by phase.
- phases (all merged):
| Phase | Issue | PR |
|---|---|---|
| 1 — point_source | autolens_workspace#374 closed | autolens_workspace#376 (`e005caca`) |
| 2a — autogalaxy multi_galaxy | autogalaxy_workspace#182 closed | autogalaxy_workspace#184 (`78568683`) |
| 2b — autolens multi_galaxy | autolens_workspace#387 closed | autolens_workspace#391 (`9b274ff2`) |
- phase records: `complete/2026/07/extra-galaxies-point-source.md`,
`complete/2026/07/extra-galaxies-multi-galaxy.md`,
`complete/2026/07/extra-galaxies-multi-galaxy-lens.md`.
- summary: the user's scoping held throughout — `imaging/features/extra_galaxies`
and its interferometer twin were the standard to mirror; `point_source/features`
got the same style without a `slam.py`; `multi_galaxy` got it in both workspaces;
`group/` and `cluster/` were deliberately left untouched.

## Lifecycle note

`complete/2026/07/extra-galaxies-multi-galaxy-lens.md` already names this file as
its parent and declares the arc complete, but the parent prompt itself was never
advanced, so it kept rendering as pickable backlog. Recorded here by the 2026-08-24
completed-prompt reconciliation sweep.

## Original prompt

# extra_galaxies feature parity: point_source + multi_galaxy (both workspaces)

Type: docs
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,29 @@
# Adopt Python 3.12 as the PyAuto ecosystem minimum — the census

- completed: 2026-07-30 — the census this prompt asked for was produced (it is the
body below), and the migration it planned then shipped in full.
- implementation record: `complete/2026/07/python-312-floor.md` — every phase, from
the five core library floors through build/health machinery, a live
`2026.7.29.2` PyPI release, the independent downstream repos and the long-tail
selector census. The whole stack declares and enforces `Requires-Python >=3.12`.
- parent issues: PyAutoNerves#142 (with companions PyAutoCTI#100, PyAutoReduce#59,
PyAutoHeart#113), all closed 2026-07-30.
- sibling records: `python-312-workspace-runtime-pins.md`,
`python_312_floor_phase_4b_autoreduce.md`, `python-312-release-surfaces.md`,
`release-check-e-python-312.md`, `python-312-autofit-wiki-currency-ci.md`.
- still open, deliberately: `draft/bug/pyautoreduce/published_autoreduce_09_missing_312_floor.md`
— the `autoreduce 0.9` wheel already on PyPI predates the floor and needs a
release, not a code change.

## Lifecycle note

A research/census prompt whose acceptance criteria were all met by the shipped
migration; it was never advanced out of `draft/`, so it kept rendering as pickable
backlog carrying the same verbatim user request the migration was executed from.
Recorded here by the 2026-08-24 completed-prompt reconciliation sweep.

## Original prompt

# Adopt Python 3.12 as the PyAuto ecosystem minimum

Filed: 2026-07-28 (backfilled from git)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,28 @@
# Phase 2: workspace READMEs made assistant-first

- shipped: 2026-07-24, inside the phase-1 task rather than as a separate PR —
see `complete/2026/07/assistant-first-docs.md`.
- issue: https://github.com/PyAutoLabs/PyAutoLens/issues/645
- workspace-prs: https://github.com/PyAutoLabs/autolens_workspace/pull/329,
https://github.com/PyAutoLabs/autogalaxy_workspace/pull/155
(library legs PyAutoLens#646 + PyAutoGalaxy#521 were phase 1).
- summary: this prompt's whole scope — one concise **AI Assistant** route first in
each workspace README's Getting Started, **Three Ways to Learn PyAutoLens**
removed, Colab/notebook/browsable-example routes preserved, remaining links
described as human-readable documentation — landed as the workspace leg of
`assistant-first-docs`, which unified library README, Read the Docs *and*
workspace onboarding in one pass. The PyAutoGalaxy assistant URL was
deliberately allowed to 404 until its repository exists.

## Lifecycle note

Phase 1 recorded the workspace PRs but the phase-2 prompt file was never advanced,
so it kept rendering as pickable backlog long after the work merged. Recorded here
by the 2026-08-24 completed-prompt reconciliation sweep — the split into phases 1/2
was a planning artefact that the shipping session collapsed.

## Original prompt

# Phase 2: Make workspace READMEs assistant-first

Filed: 2026-07-24 (backfilled from git)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,36 @@
# Explore: dashboardify the Brain's operational surfaces — resolved, and built

- completed: 2026-08-23 — investigation resolved *and* the implementation it led to
shipped; the Brain board has been iterated on several times since.
- write-up (the deliverable this prompt asked for):
`PyAutoMind/docs/pyautobrain/brain_board_assessment.md` — inventory of
`/wake_up`'s legs and where each landed, what was deliberately NOT dashboarded,
and the sibling-board architecture.
- human direction at unpark (2026-08-23): build the PyAutoBrain dashboard, move the
`/wake_up` routine onto it, make it the morning starting point, and run the local
repo sync as a terminal command. So the "recommend a subset, or none" outcome was
overtaken — the answer was "build it".
- what is live on PyAutoBrain `main`: `board/_board.py` (+ `_publish.py`, `_theme.py`,
`board.sh`, `gallery/`), `.github/workflows/brain_board.yml` publishing the board
each morning, `bin/morning.sh` as the local sync/clean leg, and `/wake_up` demoted
to the fallback door — all documented in PyAutoBrain's `AGENTS.md` § command
surface. Later PRs #258–#263 (morning timer, cloud hygiene, organ logos, the
test-performance surface, the board gallery) have built on it.
- related records: `complete/2026/08/actionable-health-board.md` (the Heart board
this pattern came from), `complete/2026/08/one-tap-dashboard-rollout.md`,
`complete/2026/08/organism-board-final-readmes.md` (the arc's finale).
- follow-ups still open: `draft/feature/pyautobrain/brain_board_follow_ups.md`
("what real mornings surface", filed 2026-08-23).

## Lifecycle note

The prompt was updated in place on 2026-08-23 with "investigation resolved;
implementation begun" but never advanced out of `draft/`, so it kept rendering as
pickable backlog for a board that already exists. Recorded here by the 2026-08-24
completed-prompt reconciliation sweep.

## Original prompt

# Explore: dashboardify the Brain's operational surfaces with pasteable conductor prompts

Type: research
Expand Down
23 changes: 23 additions & 0 deletions complete/2026/08/delaunay-nan-probe-fix.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,25 @@
<<<<<<<< HEAD:complete/2026/08/delaunay-nan-probe-ell-comps-validator.md
# The delaunay.py NaN-poisoning probe died in ell_comps validation

- shipped: 2026-08-24 — autolens_workspace_test#277 (merged `995f0c9`)
- classification: bug (autolens_workspace_test + PyAutoGalaxy) — the JAX NaN-lane
probe in `scripts/interferometer/jax_likelihood/delaunay.py`
- validation: retime run 32759921650 — NEITHER on both matrix legs, full PASS
sequence restored on the script.
- summary: `instance_from_vector` handed the deliberate all-NaN vector's
`ell_comps` to autogalaxy's `validate.validate_ell_comps`, which raised
`ModelParameterException` at instance construction — so the probe exited 1
before it could test the thing it exists for (that an invalid Delaunay mesh
reaches the raw interferometer likelihood as NaN rather than crashing or
returning a plausible number). Fixed probe-side.

## Lifecycle note

The shipping session closed the prompt out in place (Mind commit `9f5e6972`,
`Status: shipped 2026-08-24`) but never advanced it out of `draft/`, so it kept
rendering as pickable backlog on the dashboard. Recorded here by the 2026-08-24
completed-prompt reconciliation sweep; no further work.
========
# The delaunay NaN probe injected above the boundary the validator guards

autolens_workspace_test#277 (`995f0c9`), shipped 2026-08-24 — the first of the
Expand Down Expand Up @@ -45,6 +67,7 @@ None of its own. The sibling bug found by the same sweep —
`gradient_eager_jit_divergence_py313.md`, root-caused to an NNLS
`while_loop` branch flip — remains in `draft/` with its fix direction
recorded (pin `nnls_solver_tol`/`max_iter`).
>>>>>>>> origin/main:complete/2026/08/delaunay-nan-probe-fix.md

## Original prompt

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,36 @@
# Single-source the "Never rewrite history" policy as a generated AGENTS.md block

- shipped: 2026-08-23 (Mind `18a6a82b`).
- classification: maintenance (PyAutoMind + every repo in `repos.yaml`).
- what landed, exactly as the prompt specified:
- the canonical text lives in a file, not a code constant —
`PyAutoMind/policy/never_rewrite_history.md` (`HISTORY_POLICY_FILE`), the
recommendation the prompt made so a safety policy is editable without
touching generator code;
- `scripts/repos_sync.py` gained `load_history_policy()` +
`HISTORY_BEGIN`/`HISTORY_END` (`<!-- repos_sync:history:begin/end -->`) and
writes the block into every checked-out repo's `AGENTS.md` on `--write`,
opt-in by markers and tolerant of absent repos, mirroring the `system_map`
rollout;
- `check_history_blocks()` is a registered check in `main()`, so a stale block
fails the drift guard rather than rotting.
- the guardrail was not weakened: the full `## Never rewrite history` section is
still inline and always-loaded in every `AGENTS.md` (verified in PyAutoMind and
PyAutoBrain), and `PyAutoMind/AGENTS.md` § Hard rules keeps its one-line summary.
The 2026-07-12 proposal to simply delete the section stays rejected.
- epic context: `complete/archive/epics/agents_md_standardization.md`, whose fourth
generated block this was.

## Lifecycle note

Shipped without a completion record and never advanced out of `draft/`, so it kept
rendering as pickable backlog against machinery that is already on `main` and
CI-gated. Recorded here by the 2026-08-24 completed-prompt reconciliation sweep.

## Original prompt

# Single-source the "Never rewrite history" policy as a generated AGENTS.md block

Type: maintenance
Target: PyAutoMind
Repos:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,36 @@
# interferometer Delaunay — non-PD FitException in test-mode bypass

- completed: 2026-08-07 — both halves merged; the script is un-parked and in smoke.
- prs: **PyAutoFit#1408** (phase 1 — `PYAUTO_TEST_MODE=2` bypass tolerates a
single-eval `FitException` as a resample-to-reject sentinel) and
**autolens_workspace#311** (phase 1 — un-park
`interferometer/features/pixelization/delaunay` + add it to smoke); then
**PyAutoArray#436** (merged `efaf3041`, phase 2 — the numerical producer fix,
CI green first run on both matrix legs).
- implementation record: `complete/2026/08/interferometer-delaunay-flaky-fitexception.md`,
which shipped under the sibling filing
`draft/bug/autoarray/interferometer_delaunay_intermittent_qhull_nan.md`
(correct target: the autoarray Delaunay interpolator, not autolens).
- the actual producer, against this prompt's guess: not the `fnnls.py:134`
divide-by-zero (599 exercises, zero degenerate denominators — those warnings are
a downstream symptom) but `cholesky_funcs.py -> cholinsertlast`, whose unchecked
`math.sqrt(x[index] - S12.dot(S12))` goes imaginary when two near-coincident
source-mesh vertices make the Schur complement zero to within rounding
(measured ±1.776e-15, 8·eps). This prompt's own instinct — *fix the producer,
do not swallow the FitException* — is what shipped.
- earlier false start on the record: `complete/2026/07/drop-interferometer-delaunay-marker.md`
(marker-removal PR autolens_workspace#310 closed without merge; three passing
local runs are not enough to call a ~50%-flaky script fixed).

## Lifecycle note

Two prompts were filed for one defect from different repos. The autoarray-targeted
one advanced correctly; this autolens-targeted duplicate stayed in `draft/` and kept
rendering as pickable backlog. Recorded here by the 2026-08-24 completed-prompt
reconciliation sweep.

## Original prompt

# interferometer Delaunay pixelization — non-PD FitException in test-mode bypass

Type: bug
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,32 @@
# Profile and speed up JAX likelihood-function compile times — absorbed, then shipped

- completed: 2026-08-10 — absorbed into the compile-axis arc and shipped there; no
work remained under this slug.
- absorbed-into: `draft/feature/profiling/compile_warm_baseline_dashboard.md`
(phase 2 of the compile-axis arc), shipped as
`complete/2026/08/compile-warm-baseline-dashboard.md` — autolens_profiling#104
(`355d555`) + PyAutoBrain#220 (`74d7b1b`). Merged there because the dashboard and
the Profiling Agent that reads it are two halves of one thing, and building them
from opposite ends risks incompatible schemas.
- the earlier legs were already spent by then: the compile-time speed-up arc
(`#71 → #77`) closed the "can we make it faster" question — settings suffice
(persistent cache 117.0 s → 2.3 s; autotune-off 498 s → 29 s) — and the
search-transform measurement scope was executed by the MultiStartProdigy census
(autolens_profiling#93).
- one claim of this prompt is overturned on the record: its "autotuning ruled out"
section was wrong — that A/B never actually flipped the flag. See
`autolens_profiling/scripts/misc/jax_compile/README.md`.
- arc record: `profiling-agent-compile-axis-arc`.

## Lifecycle note

Banner-marked "ABSORBED 2026-08-10 — do not start from this file" but left in
`draft/` at `Priority: high`, so it kept rendering in the dashboard's top pick list.
Recorded here by the 2026-08-24 completed-prompt reconciliation sweep; the
measurements and overturned-claim trail are preserved in the original prompt below.

## Original prompt

# Profile and speed up JAX likelihood-function compile times (all use cases)

> **ABSORBED 2026-08-10 — do not start from this file.** The surviving scope (the
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,35 @@
# LaTeX in non-raw docstrings — superseded, and the wider fix shipped

- outcome: SUPERSEDED 2026-08-20; the defect it reported was then fixed at wider
scope on the same day.
- superseded-by: `draft/maintenance/workspaces/latex_raw_string_docstrings.md`,
shipped as `complete/2026/08/latex-raw-string-docstrings.md` —
autolens_workspace#491, six PRs merged 2026-08-20 (HowToFit#47, HowToGalaxy#70,
HowToLens#73, autofit_workspace#145, autogalaxy_workspace#218,
autolens_workspace#492): 41 files, 180 literals, 131 silent corruptions
repaired. Prerequisite `hands-raw-string-docstring-prefix` (PyAutoHands#251)
cleared first.
- why it was superseded rather than run: same defect, same fix, wider scope. The
2026-08-20 survey swept all six workspace repos; the 17 `autolens_workspace`
files it listed are exactly the 17 measured here (top-six warning counts match
line for line), and it found a second, *silent* class this filing never saw —
`\t` in `\theta`, `\f` in `\frac`, escapes Python DOES recognise, so they corrupt
the string with no warning at all.
- carried across, so nothing was lost: the interpreter trap (§ TRAP) became the
successor's sweep spec and verification gate, and "do not reword the LaTeX or the
prose" became its § Constraints.
- origin trail kept below: autolens_workspace#457 / PR#459, and the 2026-08-09
measurement (80 warnings across 17 files on `9974f891`).

## Lifecycle note

Marked `Status: SUPERSEDED` in place but left in `draft/`, so it kept rendering as
pickable backlog after the successor merged. Recorded here by the 2026-08-24
completed-prompt reconciliation sweep — which is also what widened the dashboard's
drift detector to read a prompt's own `Status:` header, the signal that surfaced it.

## Original prompt

# LaTeX in non-raw docstrings emits SyntaxWarning: invalid escape sequence

Type: maintenance
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,26 @@
# multi_dataset/jax_likelihood XLA compile stall — superseded by the jax-compile-stall epic

- outcome: SUPERSEDED 2026-08-23, never issued — no PR, no code change under this slug.
- superseded-by: `draft/bug/ci/jax_vmap_jit_compile_stall.md` (the `jax-compile-stall`
epic ledger), whose phases carry the same defect with cross-repo evidence.
- shipped elsewhere: phase 1 `complete/2026/08/jax-compile-stall-evidence.md`;
phase 2 `complete/2026/08/jax-compile-stall-slow-vs-stall-audit.md`;
phase 3 remains open as `draft/bug/ci/jax_compile_stall_3_root_cause.md`.
- summary: filed 2026-08-22 after `multi_dataset/jax_likelihood/mge.py` was parked
out of the smoke gate. One root cause is one task, so the filing was folded into
the epic the following day. The two asks this file carried that the epic did not
— dump a stack trace on timeout (solved library-side in phase 1) and re-enable
`mge.py` / `shared_preloads.py` in `smoke_tests.txt` (phase 3) — were both folded
in, so nothing was lost.

## Lifecycle note

Marked `Status: superseded` in place on 2026-08-23 but left in `draft/`, so it kept
rendering as pickable backlog. Recorded here by the 2026-08-24 completed-prompt
reconciliation sweep. Its evidence is preserved in the original prompt below.

## Original prompt

# multi_dataset/jax_likelihood scripts hang to the timeout cap (XLA compile stall)

Type: bug
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,35 @@
# Census of priors and messages — the audit, fully graduated

- completed: 2026-08-18 — retired as a historical record; nothing was left to
action from this file.
- A1–A9, all nine confirmed bugs: FIXED on PyAutoFit `main`. Batch 1 (A1–A5, A8)
via #1344 / PR#1345 (merged `c0b6c94b8`, 2026-07-10); batch 2 (A6, A9) via
#1346 / PR#1348 (merged `cf0cc4bbb`, 2026-07-10); A7 vectorised in PR#1345. All
five open decisions resolved on hub #1331 (2026-07-14 comment): Beta clamp →
raise; σ<0 rejected / σ=0 kept; Gamma `from_mode` matches mean+variance;
normalisation → Option A (drop constants + a `Prior.log_normalisation()` hook);
width modifier → `abs(mean)` + opt-in floor + `PriorException`. Locked in by
`test_priors_messages_fixes_1331.py` and `test_prior_width_safety.py`.
- records: `complete/2026/07/priors-messages-fixes.md`,
`complete/2026/08/prior-width-safety.md`,
`complete/2026/07/ep-priors-fable-reassess.md`,
`complete/2026/08/prior-property-tests.md`,
`complete/2026/08/transformed-message-semantics-doc.md`.
- C-findings: C2 shipped with the A5 decision (PR#1345); C6's reversal-convention
half via #1333 / PR#1334, its `LinearShiftTransform` half 2026-08-18 via PR#1499;
C3 shipped 2026-08-18 as the property sweep (PR#1499, `21288bb`).
- still tracked elsewhere, deliberately: the remaining C-findings live as
`draft/bug/priors/` prompts (09, 11–14) under the tracker
`draft/bug/priors/z_features.md`, whose phase 4 is open.

## Lifecycle note

Marked `Status: RETIRED — historical record` in place on 2026-08-18 but left in
`draft/` at `Priority: high`, so a spent census kept rendering near the top of the
dashboard. Recorded here by the 2026-08-24 completed-prompt reconciliation sweep.

## Original prompt

# Census of priors and messages — confirmed bugs + redesign ideas

Type: research
Expand Down
Loading
Loading