diff --git a/active.md b/active.md index a23155e6..20e9817e 100644 --- a/active.md +++ b/active.md @@ -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 diff --git a/active/latex_raw_string_docstrings.md b/complete/2026/08/latex-raw-string-docstrings.md similarity index 67% rename from active/latex_raw_string_docstrings.md rename to complete/2026/08/latex-raw-string-docstrings.md index cae959a4..36308b63 100644 --- a/active/latex_raw_string_docstrings.md +++ b/complete/2026/08/latex-raw-string-docstrings.md @@ -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 diff --git a/complete/index.md b/complete/index.md index bc56e428..b0f18cdb 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. -1061 records across 7 buckets. +1062 records across 7 buckets. ## Highlights @@ -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) diff --git a/dashboard.html b/dashboard.html index 7de4b0ee..f65f7a31 100644 --- a/dashboard.html +++ b/dashboard.html @@ -38,7 +38,7 @@
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.
In flight 6 · Parked 3 · Planned 6 · Backlog 145 · markdown version
+In flight 5 · Parked 3 · Planned 6 · Backlog 145 · markdown version
TRIAGE: needs manual review before routing — medium · safe · high
@PyAutoFit TransformedMessage.factor_gradient crashes on first call — issue #1501 — HOLD — do not start dev. Fix-or-delete hangs off the PyAutoFit#1498 logpdf-contract
Make JAX a default (non-optional) dependency across the library stack — issue #702 — shipped-awaiting-release-followups — ALL ELEVEN PRs merged 2026-08-19 (human-authorized):
Raw-string the LaTeX docstrings across the six workspace repos — issue #491 — workspace-dev — 5 of 6 PRs MERGED; HowToLens#73 held RED (not this PR's failure)
Profiling infrastructure for the numba CPU sparse-operator likelihood — issue #151 — awaiting-merge — infra + Rectangular euclid/hst pass + Delaunay euclid pass on PR #152
Refresh the stale .script_sizes.json snapshot in @autolens_workspace — issue #490 — workspace-dev — PLANNED ONLY, NOT STARTED. Plan approved and filed on #490;