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
45 changes: 0 additions & 45 deletions active.md
Original file line number Diff line number Diff line change
@@ -1,50 +1,5 @@
# Active Tasks

## latex-raw-string-docstrings
- issue: https://github.com/PyAutoLabs/autolens_workspace/issues/491
- status: workspace-dev — 5 of 6 PRs MERGED; HowToLens#73 held RED (not this PR's failure)
- issue-umbrella: autolens_workspace#491 (one issue, six PRs)
- merged: HowToFit#47, HowToGalaxy#70, autofit_workspace#145, autogalaxy_workspace#218,
autolens_workspace#492 — all green, incl. the CI 'Catalogue staleness' check, which
independently re-confirms the regeneration gate.
- BLOCKED: HowToLens#73 red on smoke (3.12 + 3.13). Two scripts fail with numba
'Pass nopython_type_inference': chapter_3_pixelizations/tutorial_8_adaptive_pixelization.py
and tutorial_11_brightness_adaption.py. NEITHER is in the diff, and all 8 files that ARE
in it pass. Reproduced identically on one re-run. A docstring r-prefix cannot cause a numba
typing error. Prime suspect: PyAutoArray#453 (in-place Cholesky buffer + new numba kernels
for fnnls_cholesky) merged 2026-08-20 22:09:30 UTC, minutes before this run; CI installs
autoarray from source at HEAD, and the last green HowToLens main run (04:29 UTC) predates
it. NOT yet proven: two specific mechanisms were tested and BOTH passed under the exact CI
versions (numba 0.67.0 + scipy 1.17.1) — a strided Ubuf view into _cholupdate, and the new
np.dot inside _cho_solve_buffer. So the suspicion rests on timing + code area, not a
reproduced mechanism. Control experiment running: re-run of the last GREEN main build
(same commit, fresh dependency install) — if it now fails the same way, the break is on
main/library drift and this PR is clean.
- prompt: active/latex_raw_string_docstrings.md
- repos (all on branch claude/latex-raw-string-docstrings-9h4ine):
- HowToFit: 4 files, 13 literals, 7 corruptions repaired
- HowToGalaxy: 4 files, 20 literals, 13 repaired
- HowToLens: 8 files, 32 literals, 21 repaired
- autofit_workspace: 2 files, 2 literals, 1 repaired
- autogalaxy_workspace: 6 files, 30 literals, 28 repaired
- autolens_workspace: 17 files, 83 literals, 61 repaired
- totals: 41 files, 180 literals, 131 corruptions repaired — 41 matches the survey exactly.
- verification (per repo, in order): baseline regeneration is a NO-OP; both sweeps zero;
runtime value check (every changed literal's value compared HEAD vs worktree — the prefix
may only REMOVE corruption) = 131 repaired / 0 unexpected; diff-empty gate passes
byte-exactly on notebooks/ markdown/ llms-full.txt workspace_index.json. autolens_workspace
additionally: all 57 __Env__ declarations re-read IDENTICALLY, and 4 of the raw-stringed
files carry __Env__, so the PyAutoHands#251 fix is exercised end to end.
- gate refinement: HowToFit's 4 `plt.ylabel` labels are runtime strings in CODE cells, which
copy source verbatim, so the `r` legitimately shows there. The gate holds exactly as written
for every docstring; that one code-cell delta is by design.
- residue: autolens_workspace scripts/group/likelihood_function.py keeps 2 warned + 1 silent.
Three docstrings use the DOUBLE-backslash convention ($\\theta$, \\frac, \\vec) mixed with
single-backslash macros; adding `r` would double the correct ones. Needs a convention
decision + un-doubling 18 backslashes = a prose edit this task excludes. Follow-up.
- follow-up to file: -W error::SyntaxWarning compile guard in workspace CI (catches only the
warned class; the silent class needs the AST sweep).

## numba-cpu-likelihood-profiling
- issue: https://github.com/PyAutoLabs/autolens_profiling/issues/151
- pr: https://github.com/PyAutoLabs/autolens_profiling/pull/152
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,75 @@
- issue: https://github.com/PyAutoLabs/autolens_workspace/issues/491 (one issue, six PRs)
- shipped: 2026-08-20 — all six merged:
HowToFit#47, HowToGalaxy#70, HowToLens#73, autofit_workspace#145,
autogalaxy_workspace#218, autolens_workspace#492.
- classification: maintenance (6 workspace repos) — prose-only, no API surface.
- blocked-by (cleared): hands-raw-string-docstring-prefix / PyAutoHands#251.
- summary: prefixed `r` on every LaTeX-carrying docstring across the six workspace repos —
**41 files, 180 literals, 131 silent corruptions repaired**. 41 files matches the
2026-08-20 survey exactly, and autolens_workspace's 17 files / 80 warnings match the
independent 2026-08-09 measurement line for line. Per repo: HowToFit 4/13/7,
HowToGalaxy 4/20/13, HowToLens 8/32/21, autofit_workspace 2/2/1,
autogalaxy_workspace 6/30/28, autolens_workspace 17/83/61 (files/literals/repaired).
- the two damage classes: `SyntaxWarning` fires only for escapes Python does NOT recognise
(`\s`, `\l`, `\[`). The ones it DOES recognise — `\t` in `\theta`, `\f` in `\frac`,
`\r` in `\rm`, `\b` in `\beta` — corrupt the value with NO diagnostic at all.
`\theta_E` in HowToLens chapter_4 was literally TAB + "heta_E". Confirmed repaired.
- key traps:
- **THE DIFF-EMPTY GATE CANNOT CATCH A WRONG EDIT HERE.** The prompt's gate (regenerate,
assert notebooks/markdown/llms-full.txt/workspace_index.json unchanged) is necessary but
structurally blind: the generator reads SOURCE TEXT, not runtime values, so a corrupted
value regenerates byte-identically. The check that actually catches mistakes is comparing
every changed literal's RUNTIME VALUE HEAD vs worktree and asserting the `r` prefix only
ever REMOVES corruption. It caught two real errors mid-task: a `print("\nInfo:")` newline
about to be destroyed, and 12 already-escaped `$\\chi^2$` about to be doubled into LaTeX
line breaks. Final tally: 131 repaired, 0 unexpected. **Build this check first.**
- **`\\` is ALWAYS deliberate, whatever the surrounding context.** In a non-raw literal
`\\` already means one literal backslash — the author got it right; adding `r` doubles it.
A math-context rule alone lets these through (they sit inside `$...$`).
- **The warning sweep is interpreter-dependent.** Invalid escapes are a `SyntaxWarning`
only on Python 3.12+; on 3.11 they are a `DeprecationWarning`. Verified on 3.11.15: a
docstring with `$\odot$` yields 0 SyntaxWarning and 1 DeprecationWarning — so a
SyntaxWarning-only sweep returns a VACUOUS zero that looks exactly like "already fixed".
Collect both. (`compileall` also needs `-f`, or `__pycache__` hides the counts.)
- **Run the generator BEFORE editing and confirm a no-op.** Otherwise pre-existing
generator drift is indistinguishable from damage your edit caused.
- **Preserve line endings.** Several scripts are CRLF; a `write_text` round-trip normalises
the whole file and turns a 1-character edit into a 549-line diff. Use `newline=""`.
- Auto-fix only where EVERY backslash sits in a LaTeX context — `$...$`, `\(...\)`,
`\[...\]`, `\begin{}...\end{}`, or a markdown code span. Four docstrings with malformed
or unbalanced delimiters were read in full and prefixed by hand; their delimiters were
left exactly as found (fixing them is a prose change this task excluded).
- **Gate refinement**: runtime label strings (e.g. HowToFit's four `plt.ylabel`) live in
CODE cells, which copy source verbatim, so the `r` legitimately appears in the notebook.
The gate holds exactly as written for every docstring; that one delta is by design.
- residue (deliberate, worth a follow-up): `autolens_workspace/scripts/group/likelihood_function.py`
keeps 2 warned + 1 silent. Three of its docstrings use the DOUBLE-backslash convention
(`$\\theta$`, `\\frac`, `\\vec`) mixed with single-backslash macros; adding `r` would double
the already-correct ones, and fixing it properly means un-doubling 18 backslashes — a prose
edit this task excluded. Needs a convention decision.
- also left alone: already-escaped `\\` anywhere (two autogalaxy interferometer files,
autofit `samples.py:410`), real newlines in `print()`, and
`autolens_workspace/dataset/cluster/a2744/prep.py:38` where `line.split("\t")` is a genuine
TSV tab.
- **HowToLens#73 was merged with smoke RED, and the red was proven not to be this PR's.**
Two chapter_3 pixelization scripts fail numba `Pass nopython_type_inference`; neither is in
the diff and all 8 files that are in it pass. Decisive control: re-running the last GREEN
`main` build (run 255, commit `dcb67e9`, zero changes from the branch, fresh dependency
install) now FAILS identically — `main` itself is red. Suspected cause, NOT proven:
PyAutoArray#453 (in-place Cholesky buffer + new numba kernels for `fnnls_cholesky`) merged
22:09:30 UTC, minutes before. Two candidate mechanisms were tested under the exact CI
versions (numba 0.67.0 + scipy 1.17.1) and BOTH passed — a strided `Ubuf` view into
`_cholupdate`, and the new `np.dot` in `_cho_solve_buffer`. A new numba release was ruled
out (0.67.0 shipped nine days before the last green run). **Open question for whoever owns
that solver.**
- follow-up shipped: PyAutoBrain#245 added a `hygiene escapes` mode so this debt is caught
continuously — it reports both classes, marks files with ONLY silent damage, and handles
both interpreter traps. Preferred over the originally-proposed
`-W error::SyntaxWarning` CI guard, which would catch only the warned class and pass
vacuously on 3.11.

## Original prompt

# Raw-string the LaTeX docstrings across the six workspace repos

Type: maintenance
Expand Down
3 changes: 2 additions & 1 deletion complete/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

1061 records across 7 buckets.
1062 records across 7 buckets.

<!-- CURATED:START -->
## Highlights
Expand Down Expand Up @@ -93,6 +93,7 @@ _(curate hard-won records here — survives regeneration.)_
- [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…
- [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
- [latex-raw-string-docstrings](2026/08/latex-raw-string-docstrings.md) — one issue, six PRs
- [lazy-heavy-imports](2026/08/lazy-heavy-imports.md) — Deferred all heavy non-essential imports to first use. `import autolens` 4.07s → 1.2–1.3s
- [llms-txt-census-fixes](2026/08/llms-txt-census-fixes.md)
- [markdown-renderings-2a-leftovers](2026/08/markdown-renderings-2a-leftovers.md)
Expand Down
3 changes: 1 addition & 2 deletions dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
<body>
<h1>📋 PyAutoMind Dashboard</h1>
<p>Every task the Mind is holding. Tap a task's 📋 and its <code>/start_dev</code> command is on your clipboard — paste it into a Claude Code chat to route Claude straight to that task.</p>
<p class="muted">In flight 6 · Parked 3 · Planned 6 · Backlog 145 · <a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/dashboard.md">markdown version</a></p>
<p class="muted">In flight 5 · Parked 3 · Planned 6 · Backlog 145 · <a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/dashboard.md">markdown version</a></p>
<h2>Start here</h2>
<h3>Highest priority <span class="facets">(filed as high) — showing 12 of 33</span></h3>
<div class="task"><button class="copy" data-cmd="/start_dev draft/triage/jax_zero_contour.md" aria-label="Copy the Claude command">📋</button><p><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/draft/triage/jax_zero_contour.md">TRIAGE: needs manual review before routing</a> — <span class="facets">medium · safe · high</span></p></div>
Expand All @@ -60,7 +60,6 @@ <h2>In flight <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/bl
<div class="task"><button class="copy" data-cmd="/start_dev active/16_transformed_message_factor_gradient_unpack.md" aria-label="Copy the Claude command">📋</button><p><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/active/16_transformed_message_factor_gradient_unpack.md"><code>@PyAutoFit</code> <code>TransformedMessage.factor_gradient</code> crashes on first call</a> — <a href="https://github.com/PyAutoLabs/PyAutoFit/issues/1501">issue #1501</a> — <span class="facets">HOLD — do not start dev. Fix-or-delete hangs off the PyAutoFit#1498 logpdf-contract</span></p></div>
<div class="task"><button class="copy" data-cmd="/start_dev active/hands_hygiene_leftovers.md" aria-label="Copy the Claude command">📋</button><p><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/active/hands_hygiene_leftovers.md">Hands hygiene: expired announcement dead code, unregistered modules</a> — <a href="https://github.com/PyAutoLabs/PyAutoHands/issues/249">issue #249</a> — <span class="facets">library-dev</span></p></div>
<div class="task"><button class="copy" data-cmd="/start_dev active/jax_default_dependency.md" aria-label="Copy the Claude command">📋</button><p><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/active/jax_default_dependency.md">Make JAX a default (non-optional) dependency across the library stack</a> — <a href="https://github.com/PyAutoLabs/PyAutoLens/issues/702">issue #702</a> — <span class="facets">shipped-awaiting-release-followups — ALL ELEVEN PRs merged 2026-08-19 (human-authorized):</span></p></div>
<div class="task"><button class="copy" data-cmd="/start_dev active/latex_raw_string_docstrings.md" aria-label="Copy the Claude command">📋</button><p><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/active/latex_raw_string_docstrings.md">Raw-string the LaTeX docstrings across the six workspace repos</a> — <a href="https://github.com/PyAutoLabs/autolens_workspace/issues/491">issue #491</a> — <span class="facets">workspace-dev — 5 of 6 PRs MERGED; HowToLens#73 held RED (not this PR's failure)</span></p></div>
<div class="task"><button class="copy" data-cmd="/start_dev active/numba_cpu_likelihood_profiling.md" aria-label="Copy the Claude command">📋</button><p><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/active/numba_cpu_likelihood_profiling.md">Profiling infrastructure for the numba CPU sparse-operator likelihood</a> — <a href="https://github.com/PyAutoLabs/autolens_profiling/issues/151">issue #151</a> — <span class="facets">awaiting-merge — infra + Rectangular euclid/hst pass + Delaunay euclid pass on PR #152</span></p></div>
<div class="task"><button class="copy" data-cmd="/start_dev active/script_sizes_snapshot_drift.md" aria-label="Copy the Claude command">📋</button><p><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/active/script_sizes_snapshot_drift.md">Refresh the stale <code>.script_sizes.json</code> snapshot in @autolens_workspace</a> — <a href="https://github.com/PyAutoLabs/autolens_workspace/issues/490">issue #490</a> — <span class="facets">workspace-dev — PLANNED ONLY, NOT STARTED. Plan approved and filed on #490;</span></p></div>
<h2>Epics <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/epics.md">markdown version</a></h2>
Expand Down
10 changes: 1 addition & 9 deletions dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Every task the Mind is holding, on one page: what is in flight, what is parked,

| Where | Count |
|-------|------:|
| [In flight](#in-flight) (`active/`) | 6 |
| [In flight](#in-flight) (`active/`) | 5 |
| [Parked](#parked) (`parked.md`) | 3 |
| [Planned](#planned) (`planned.md`) | 6 |
| [Backlog](#backlog) (`draft/`) | 145 |
Expand Down Expand Up @@ -145,14 +145,6 @@ Issued — each has an open GitHub issue and usually a branch. The full record f

</details>

<details><summary>📋 <a href="active/latex_raw_string_docstrings.md">Raw-string the LaTeX docstrings across the six workspace repos</a> — <a href="https://github.com/PyAutoLabs/autolens_workspace/issues/491">issue #491</a> — workspace-dev — 5 of 6 PRs MERGED; HowToLens#73 held RED (not this PR's failure)</summary>

```
/start_dev active/latex_raw_string_docstrings.md
```

</details>

<details><summary>📋 <a href="active/numba_cpu_likelihood_profiling.md">Profiling infrastructure for the numba CPU sparse-operator likelihood</a> — <a href="https://github.com/PyAutoLabs/autolens_profiling/issues/151">issue #151</a> — awaiting-merge — infra + Rectangular euclid/hst pass + Delaunay euclid pass on PR #152</summary>

```
Expand Down
Loading