diff --git a/active.md b/active.md index 20e9817e..a23155e6 100644 --- a/active.md +++ b/active.md @@ -1,5 +1,50 @@ # 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/draft/maintenance/workspaces/latex_raw_string_docstrings.md b/active/latex_raw_string_docstrings.md similarity index 74% rename from draft/maintenance/workspaces/latex_raw_string_docstrings.md rename to active/latex_raw_string_docstrings.md index 5e9b0e02..cae959a4 100644 --- a/draft/maintenance/workspaces/latex_raw_string_docstrings.md +++ b/active/latex_raw_string_docstrings.md @@ -33,7 +33,12 @@ corner of the problem, and found a hard dependency the prompt did not know about. Both sweeps are ~20 lines each and specified below — rebuild them rather than trusting these counts blind. -### BLOCKED BY: `draft/bug/hands/raw_string_docstring_prefix.md` +### ~~BLOCKED BY~~ — CLEARED 2026-08-20 + +The PyAutoHands prerequisite **merged**: issue #250 / PR #251 (merge `c887290`), all 3 +CI matrix jobs green. Both parsers accept `r`/`R` prefixes now, verified on `main`. This +task is ready to start. History of the block, kept because it explains the gate below: + Two PyAutoHands docstring parsers **silently** mis-handle an `r"""` opener, so raw-stringing these scripts today would break the generated artefacts rather @@ -47,7 +52,22 @@ than fix them. Both reproduced, neither raises: `.../potential_correction/`), so their smoke env profile would be silently rerouted. -Do not start this task until that Hands fix has merged. +~~Do not start this task until that Hands fix has merged.~~ It has. + +**Re-verified 2026-08-20 (resumed `/start_dev`): still blocked, still unfixed.** +Against PyAutoHands `main` @ `cdea28c`, on a probe pair differing only by an `r` +on the first narrative docstring: + +- `_narrative_docstring_ranges` → plain `[(0, 2), (6, 10)]` vs raw `[(6, 10)]` + — the raw block is dropped, silently, no exception. +- `read_env_declaration` → plain `['jax']` vs raw `None` — silently, no exception. + +`add_notebook_quotes.py:67` still reads `lines[start].startswith('"""')` and +`env_config.py:110` still reads `^(?:"""|''')\s*$`; neither accepts an `r`/`R` +prefix. No `feature/hands-raw-string-docstring-prefix` branch exists on the +remote yet, and its own blocker (`feature/hands-hygiene-leftovers`) is still +open. Re-run this two-probe check at the next `/start_dev` rather than trusting +this note. ### Two sweeps are needed, not one @@ -63,6 +83,17 @@ diagnostic at all — `\t` in `\theta`, `\f` in `\frac`, `\r` in `\rm`, `\b` in segment contains a backslash, flag any control character (`ord < 32`, `\n` excepted) in the *value* — **132 hits**. +**The warning sweep is interpreter-dependent — check this before trusting a +zero.** Invalid escape sequences are a `SyntaxWarning` only on **Python 3.12+**; +on 3.11 and earlier they are a `DeprecationWarning`. A sweep that collects +`SyntaxWarning` on a 3.11 interpreter reports **0 hits** and is +indistinguishable from "already fixed" — verified 2026-08-20 on 3.11.15, where +`compile()` on a docstring containing `$\odot$` yields 0 `SyntaxWarning` and 1 +`DeprecationWarning`. Collect **both** categories, or assert the interpreter is +3.12+ before believing the count. (`-m compileall` needs `-f` too, or +`__pycache__` suppresses recompilation and the counts silently drop.) This +already cost one mis-grade on the 2026-08-09 sweep. + `HowToLens/scripts/chapter_4_scaling_up_lensing/tutorial_5_cluster_scale.py` has **only** silent hits and zero warnings, so a warning-only sweep skips it entirely. Drive the edit off the union of both. @@ -142,9 +173,18 @@ The four matplotlib labels in - `autocti_workspace`, every `*_workspace_test` / `*_workspace_developer`, and `PyAutoFit` / `PyAutoArray` / `PyAutoLens` source: swept, **zero** hits. +## Constraints + +- Docstring content is user-facing tutorial prose. Add the `r` prefix and change + **nothing else** — do not reword the LaTeX or the surrounding sentences. + Prose changes belong to a docs task, not this one. +- Notebooks are regenerated, never hand-edited. + ## Verification per repo (the diff-empty gate) -1. Both sweeps return zero. +1. Both sweeps return zero — on a **3.12+** interpreter, or collecting + `DeprecationWarning` as well (see the interpreter trap above). A zero from a + 3.11 `SyntaxWarning`-only sweep is vacuous and does not clear this gate. 2. Regenerate: `PYTHONPATH=../PyAutoHands/autohands python3 ../PyAutoHands/autohands/generate.py ` (`howtofit`, `howtogalaxy`, `howtolens`, `autofit`, `autogalaxy`, `autolens`). @@ -158,6 +198,17 @@ The four matplotlib labels in Ship as six independent PRs, one per repo. Prose-only, no API surface, so no cross-repo merge ordering. +## Supersedes + +`draft/maintenance/autolens_workspace/latex_docstrings_invalid_escape_warnings.md` +(filed 2026-08-09, split from #457) is the same defect measured on +`autolens_workspace` alone — its 80 warnings across 17 files are exactly the 17 +files listed above, top-six counts matching. This prompt subsumes it across all +six repos and adds the silent-escape class. Its unique content (the interpreter +trap, now folded in above; the "do not reword the LaTeX or the prose while +fixing the escapes" constraint) is carried here. One task, one prompt — pick up +this file, not that one. + ## Follow-up worth filing A `-W error::SyntaxWarning` compile guard in workspace CI, so this cannot diff --git a/draft/bug/hands/raw_string_docstring_prefix.md b/complete/2026/08/hands-raw-string-docstring-prefix.md similarity index 53% rename from draft/bug/hands/raw_string_docstring_prefix.md rename to complete/2026/08/hands-raw-string-docstring-prefix.md index ddf26615..2514fb16 100644 --- a/draft/bug/hands/raw_string_docstring_prefix.md +++ b/complete/2026/08/hands-raw-string-docstring-prefix.md @@ -1,3 +1,50 @@ +- issue: https://github.com/PyAutoLabs/PyAutoHands/issues/250 (closed on merge) +- shipped: 2026-08-20 — PyAutoHands PR https://github.com/PyAutoLabs/PyAutoHands/pull/251 + (merge `c887290`, commit `27c828c`); all 3 CI matrix jobs green (pytest 3.12/3.13/3.14). +- classification: bug (PyAutoHands) — silent parser defect, two sites. +- summary: two independent docstring parsers silently mis-handled an `r"""` opener, and + neither raised. `add_notebook_quotes._narrative_docstring_ranges` tested + `lines[start].startswith('"""')`; a raw block is a perfectly good column-0 + `ast.Expr(Constant(str))`, so it reached that test and failed it — the block was dropped + as a cell boundary and the tutorial prose would have shipped as a Python CODE cell + containing a bare string literal. `env_config._DOCSTRING_DELIM_RE` matched a bare + delimiter only, so an `r"""` opener was walked past and the block's CLOSER matched as an + opener instead — docstring parity inverted for the rest of the file and an `__Env__` + section further down was read as if outside a docstring, so `read_env_declaration` + returned `None` and the script's smoke env profile was silently rerouted. Both sites now + accept an optional `r`/`R` prefix on either delimiter + (`_TRIPLE_DELIM_OPENER_RE`, `_DOCSTRING_DELIM_RE`). Unblocks latex-raw-string-docstrings + (41 workspace files across 6 repos). +- validation: 6 new regression tests, EACH verified to fail with the source change reverted + and pass with it. Full suite 14F/337P on branch vs 14F/331P on main — identical failure + sets, all 14 from `ipynb-py-convert` being unbuildable in the container (CI installs it, + and CI ran green on all three Python versions). +- key traps: + - **The recorded blocker was not real.** The prompt said "blocked by hands-hygiene-leftovers + (worktree dirty)". That was LOCAL WORKTREE CONTENTION, not a code dependency: + `feature/hands-hygiene-leftovers` touches AGENTS.md, generate_release_notes.py, + bin/autohands and two unrelated tests — ZERO overlap with the two files here. Done in a + separate clone; the two merge in either order. Read a blocker before honouring it. + - **The parity case is the test that matters.** `read_env_declaration` breaks when the raw + docstring is NOT the one carrying the declaration — a single-block test passes while the + defect is live. Test an EARLIER raw docstring. + - **Do not run `black` on this repo.** It is not black-formatted: 44 files on main would + reformat. Match surrounding style instead. + - `ipynb-py-convert` will not build in a modern container, so the 14 notebook-level tests + cannot run locally. Assert on the CONVERTED SOURCE instead — the converter replaces the + opener line outright, so byte-identical conversion is the tighter claim and needs no + external tool. + - Checked and NOT affected, verified rather than assumed: `generate_markdown.script_title` + (its regex finds the `"""` after the `r` — same title either way) and `navigator.py` + (reads already-converted output). Boundary set confirmed not to have widened: column-0 + raw single-quoted strings, assigned literals, raw bytes literals and f-strings all + remain non-boundaries. + - `pyauto-brain bug` mis-read this task: "owner unresolved", sized *large*, + "split into phases", for a two-line fix in a repo the prompt names in its header. + Worth a look at the Bug Agent's owner map for `hands`. + +## Original prompt + # Teach the notebook/env parsers to accept raw-string (`r"""`) docstrings Type: bug diff --git a/complete/index.md b/complete/index.md index 9482cad5..bc56e428 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. -1060 records across 7 buckets. +1061 records across 7 buckets. ## Highlights @@ -69,6 +69,7 @@ _(curate hard-won records here — survives regeneration.)_ - [folder-list-ref-drift-sweep](2026/08/folder-list-ref-drift-sweep.md) — Fixed the 12 real defects from the 2026-08-19 hygiene refs scan — 2 autoCTI_workspace/output casing refs, 2 ho… - [frozen-lane-counter](2026/08/frozen-lane-counter.md) — Added a third disjoint lane counter to the multi-start gradient search - [group-data-preparation-readme](2026/08/group-data-preparation-readme.md) +- [hands-raw-string-docstring-prefix](2026/08/hands-raw-string-docstring-prefix.md) — closed on merge - [hazard-profiling-likelihood-tier](2026/08/hazard-profiling-likelihood-tier.md) — Tier-2 likelihood profiling landed with five persistent findings and corrected NNLS continuity semantics. - [health-conductor-stale-verdict](2026/08/health-conductor-stale-verdict.md) - [heart-green-validation-ingest](2026/08/heart-green-validation-ingest.md) diff --git a/dashboard.html b/dashboard.html index 62038921..7de4b0ee 100644 --- a/dashboard.html +++ b/dashboard.html @@ -38,7 +38,7 @@

📋 PyAutoMind Dashboard

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 5 · Parked 3 · Planned 8 · Backlog 147 · markdown version

+

In flight 6 · Parked 3 · Planned 6 · Backlog 145 · markdown version

Start here

Highest priority (filed as high) — showing 12 of 33

TRIAGE: needs manual review before routingmedium · safe · high

@@ -54,12 +54,13 @@

Highest priority (filed as high) — showing 12 of 33

Profile and speed up JAX likelihood-function compile times (all useautolens_profiling · large · supervised · high

Give the Profiling Agent a compile-time axis — the arcprofiling · large · supervised · high

Quick wins (small enough, and safe enough to run unattended)

- +

(none right now)

In flight markdown version

Issued — each has an open GitHub issue and usually a branch.

@PyAutoFit TransformedMessage.factor_gradient crashes on first callissue #1501HOLD — do not start dev. Fix-or-delete hangs off the PyAutoFit#1498 logpdf-contract

Make JAX a default (non-optional) dependency across the library stackissue #702shipped-awaiting-release-followups — ALL ELEVEN PRs merged 2026-08-19 (human-authorized):

+

Raw-string the LaTeX docstrings across the six workspace reposissue #491workspace-dev — 5 of 6 PRs MERGED; HowToLens#73 held RED (not this PR's failure)

Profiling infrastructure for the numba CPU sparse-operator likelihoodissue #151awaiting-merge — infra + Rectangular euclid/hst pass + Delaunay euclid pass on PR #152

Refresh the stale .script_sizes.json snapshot in @autolens_workspaceissue #490workspace-dev — PLANNED ONLY, NOT STARTED. Plan approved and filed on #490;

Epics markdown version

@@ -76,20 +77,18 @@

Parked markdown version

-8 task(s) +6 task(s)

isothermal-ell-sph-oversampling-at-the-cuspplanned — NOT yet a prompt file; file one via /intake before starting

remote-mcp-deployment-tiersissue #20DESIGN-COMPLETE, build BLOCKED-ON-DEMAND — issue #20 holds the full auth/transport/hosting design + Richard/PyAutoMCP…

samples-parameter-pathsissue #1327parked

jax-point-source-point-smoke-sentinelplanned

piemass-potentialplanned

latent-nan-guard-honest-run

-

hands-raw-string-docstring-prefix

-

latex-raw-string-docstrings

Backlog markdown version

-

147 filed prompts, not started — sorted most-pickable first (priority, then size).

+

145 filed prompts, not started — sorted most-pickable first (priority, then size).

-bug — 37 +bug — 36

EP hierarchical parent-scale collapse: cure the basin, or document theautofit · too-large · human-required · high

@@ -101,7 +100,6 @@

Backlog

Fix release result/sample parameter-path regressionshealth_fixes · too-large · supervised · high

pixel_scales given as an int (or np.float64) is never widenedautoarray · small · supervised · medium

-

Heart script_timing baselines are orphaned by path moves and filledpyautoheart · small · supervised · medium

jax_grad scripts fail assertions locally that PASS in CIautolens_workspace_test · medium · supervised · medium

PyNUFFT dev extra is incompatible with current SciPy on Pythonautoarray · small · supervised · normal

@@ -195,7 +193,7 @@

Backlog

Adopt Python 3.12 as the PyAuto ecosystem minimumlibraries

-maintenance — 18 +maintenance — 17

autolens_workspace_developer rectangular experiments — Gut stash + renameautolens_workspace_developer · small · supervised · normal

Mirror drifted library config keys into the workspace configsworkspaces · small · supervised · normal

Un-park imaging/features/scaling_relation/slam once PyAutoArray#431 mergesworkspaces · small · supervised · normal

@@ -212,7 +210,6 @@

Backlog

cosmos_web_ring stores boolean masks as float64, wasting ~3.4 MB ofautolens_workspace · small · supervised · low

LaTeX in non-raw docstrings emits SyntaxWarning: invalid escape sequenceautolens_workspace · small · supervised · low

-

Raw-string the LaTeX docstrings across the six workspace reposworkspaces · medium · safe · low

Refactor Agent witness map lacks PyAutoNerves test suitepyautobrain · low · safe · low

diff --git a/dashboard.md b/dashboard.md index e4ebaf18..1bfa52b5 100644 --- a/dashboard.md +++ b/dashboard.md @@ -8,10 +8,10 @@ Every task the Mind is holding, on one page: what is in flight, what is parked, | Where | Count | |-------|------:| -| [In flight](#in-flight) (`active/`) | 5 | +| [In flight](#in-flight) (`active/`) | 6 | | [Parked](#parked) (`parked.md`) | 3 | -| [Planned](#planned) (`planned.md`) | 8 | -| [Backlog](#backlog) (`draft/`) | 147 | +| [Planned](#planned) (`planned.md`) | 6 | +| [Backlog](#backlog) (`draft/`) | 145 | ## Start here @@ -115,13 +115,7 @@ Every task the Mind is holding, on one page: what is in flight, what is parked, **Quick wins** (small enough, and safe enough to run unattended) -
📋 Teach the notebook/env parsers to accept raw-string (r""") docstrings — hands · small · safe · medium - -``` -/start_dev draft/bug/hands/raw_string_docstring_prefix.md -``` - -
+- _(none right now)_ ## In flight @@ -151,6 +145,14 @@ Issued — each has an open GitHub issue and usually a branch. The full record f
+
📋 Raw-string the LaTeX docstrings across the six workspace reposissue #491 — workspace-dev — 5 of 6 PRs MERGED; HowToLens#73 held RED (not this PR's failure) + +``` +/start_dev active/latex_raw_string_docstrings.md +``` + +
+
📋 Profiling infrastructure for the numba CPU sparse-operator likelihoodissue #151 — awaiting-merge — infra + Rectangular euclid/hst pass + Delaunay euclid pass on PR #152 ``` @@ -233,7 +235,7 @@ Started or scoped, not currently in flight — resume by moving the row back to Scoped but not started; some are not yet prompt files. Full detail in [`planned.md`](planned.md).
-8 task(s) +6 task(s)
📋 isothermal-ell-sph-oversampling-at-the-cusp — planned — NOT yet a prompt file; file one via /intake before starting @@ -283,30 +285,14 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned.
-
📋 hands-raw-string-docstring-prefix - -``` -/start_dev draft/bug/hands/raw_string_docstring_prefix.md -``` - -
- -
📋 latex-raw-string-docstrings - -``` -/start_dev draft/maintenance/workspaces/latex_raw_string_docstrings.md -``` - -
-
## Backlog -**147** filed prompts, not started. Each section is sorted most-pickable first (priority, then size). +**145** filed prompts, not started. Each section is sorted most-pickable first (priority, then size).
-bug — 37 +bug — 36
📋 Numba sparse-operator likelihood: first-call garbage / intermittent worker corruption — autoarray · medium · supervised · high @@ -396,14 +382,6 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned.
-
📋 Teach the notebook/env parsers to accept raw-string (r""") docstrings — hands · small · safe · medium - -``` -/start_dev draft/bug/hands/raw_string_docstring_prefix.md -``` - -
-
📋 Heart script_timing baselines are orphaned by path moves and filled — pyautoheart · small · supervised · medium ``` @@ -1097,7 +1075,7 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned.
-maintenance — 18 +maintenance — 17
📋 autolens_workspace_developer rectangular experiments — Gut stash + rename — autolens_workspace_developer · small · supervised · normal @@ -1227,14 +1205,6 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned.
-
📋 Raw-string the LaTeX docstrings across the six workspace repos — workspaces · medium · safe · low - -``` -/start_dev draft/maintenance/workspaces/latex_raw_string_docstrings.md -``` - -
-
📋 Refactor Agent witness map lacks PyAutoNerves test suite — pyautobrain · low · safe · low ``` diff --git a/draft/maintenance/autolens_workspace/latex_docstrings_invalid_escape_warnings.md b/draft/maintenance/autolens_workspace/latex_docstrings_invalid_escape_warnings.md index b1c011fc..9226ae79 100644 --- a/draft/maintenance/autolens_workspace/latex_docstrings_invalid_escape_warnings.md +++ b/draft/maintenance/autolens_workspace/latex_docstrings_invalid_escape_warnings.md @@ -7,7 +7,22 @@ Repos: Difficulty: small Autonomy: supervised Priority: low -Status: draft — the § "Scope to establish first" measurement is DONE for autolens_workspace (2026-08-09) +Status: SUPERSEDED 2026-08-20 — do not pick this up; see below + +## SUPERSEDED by `draft/maintenance/workspaces/latex_raw_string_docstrings.md` + +Same defect, same fix, wider scope. The 2026-08-20 survey swept all six workspace +repos and found 41 files; the 17 `autolens_workspace` files it lists are exactly +the 17 measured below (top-six warning counts match line for line). It also found +a second, *silent* class this prompt never saw (`\t` in `\theta`, `\f` in +`\frac` — escapes Python DOES recognise, so they corrupt the string with no +warning at all) and a hard PyAutoHands prerequisite. + +Everything unique to this file has been carried across: the interpreter trap +below (§ TRAP) now sits in that prompt's sweep spec and its verification gate, +and the "do not reword the LaTeX or the prose" constraint is in its § Constraints. +Kept for its origin trail (#457 / PR #459) and the 2026-08-09 measurement. + ## 2026-08-09 — the sweep this prompt asks for, run diff --git a/planned.md b/planned.md index d7f2421b..cc0de759 100644 --- a/planned.md +++ b/planned.md @@ -8,8 +8,6 @@ - [jax-point-source-point-smoke-sentinel](#jax-point-source-point-smoke-sentinel) - [piemass-potential](#piemass-potential) - [latent-nan-guard-honest-run](#latent-nan-guard-honest-run) -- [hands-raw-string-docstring-prefix](#hands-raw-string-docstring-prefix) -- [latex-raw-string-docstrings](#latex-raw-string-docstrings) @@ -109,82 +107,3 @@ - autolens_workspace_test - note: latent/latent_nan_robustness.py PASSES but VACUOUSLY under the smoke profile — TEST_MODE=2 yields only 4 bypass samples, and DISABLE_JAX=1 silently flips its deliberate AnalysisImaging(use_jax=True) to False (PyAutoLens analysis/analysis/dataset.py:89), so the JAX column-masking branch the guard exists to catch is never taken. MultiStartAdam/BlackJAXNUTS precedent. Work = (1) config/build/env_vars.yaml override for `latent/latent_nan_robustness` with unset: [PYAUTO_TEST_MODE, PYAUTO_DISABLE_JAX]; (2) trim the script under the 300s cap. MEASURED: honest run = 412s; PYAUTO_TEST_MODE=1 does NOT help (455s) — Nautilus is NOT the bottleneck (~136s post-fit results update + ~56s latent compute on 100 samples), so the lever is sample count. Script is in the curated smoke_tests.txt, which DOES read env_vars.yaml, so this lands in the per-PR gate. Adjacent to the blocker's own follow-up ("re-time the SLOW siblings"). NOT bugs, verified passing from clean output, no change needed: imaging/model_fit.py and latent/latent_variables_smoke.py. -## hands-raw-string-docstring-prefix -- prompt: draft/bug/hands/raw_string_docstring_prefix.md -- issue: NOT YET FILED — file at `/start_dev` time, once `hands-hygiene-leftovers` is close to shipping -- planned: 2026-08-20 -- classification: library (PyAutoHands) — bug, silent parser defect -- suggested-branch: feature/hands-raw-string-docstring-prefix -- blocked-by: hands-hygiene-leftovers (using PyAutoHands; worktree dirty, 3 files) -- summary: | - Two PyAutoHands docstring parsers silently mis-handle an `r"""` opener, and - neither raises. `add_notebook_quotes.py:67` tests - `lines[start].startswith('"""')`, so an r-string narrative block is dropped - as a cell boundary and the tutorial prose ships as a Python CODE cell. - `env_config.py:110` (`_DOCSTRING_DELIM_RE = ^(?:"""|''')\s*$`) misses the - opener, then matches the block's CLOSER as an opener — parity inverts for - the rest of the file and `read_env_declaration` returns None instead of the - declared tokens. - - BOTH REPRODUCED 2026-08-20 on probe files: `_narrative_docstring_ranges` - returned only the plain block, and `read_env_declaration` gave `['jax']` for - a plain file vs `None` for the same file with an `r` on an earlier - docstring. Zero `r"""` narrative docstrings exist in any workspace today, - which is why this has never fired. - - Fix is two lines plus tests: accept an optional `r`/`R` prefix at both - sites. `generate_markdown.script_title` and `navigator.py` were checked and - are NOT affected (the former's regex finds the `"""` after the `r`; the - latter reads already-converted `'''` output). -- blocks: latex-raw-string-docstrings (41 workspace files cannot be raw-stringed until this lands) -- affected-repos: - - PyAutoHands - -## latex-raw-string-docstrings -- prompt: draft/maintenance/workspaces/latex_raw_string_docstrings.md -- issue: NOT YET FILED — file at `/start_dev` time, after hands-raw-string-docstring-prefix merges -- planned: 2026-08-20 -- classification: workspace (6 repos) — maintenance, prose-only -- suggested-branch: feature/latex-raw-string-docstrings -- blocked-by: hands-raw-string-docstring-prefix (raw-stringing before it lands BREAKS the generated notebooks and silently drops 7 `__Env__` declarations) -- summary: | - Prefix `r` on every module-level narrative docstring containing LaTeX, in - 41 files across 6 workspace repos. The 2026-08-06 prompt named 4 lines in 2 - repos; the 2026-08-20 survey found the real surface. - - TWO sweeps are required, not one. `SyntaxWarning` fires only for escapes - Python does NOT recognise (171 hits). The ones it DOES recognise fire - silently and corrupt the string with no diagnostic — `\t` in `\theta`, `\f` - in `\frac`, `\r` in `\rm`, `\b` in `\beta`, `\a` in `\alpha`, `\v` in - `\vec` (132 hits). HowToLens chapter_4 tutorial_5_cluster_scale.py has ONLY - silent hits and zero warnings, so a warning-only sweep skips it. Drive the - edit off the UNION. - - Per-repo file counts: HowToFit 4, HowToGalaxy 4, HowToLens 8, - autofit_workspace 2, autogalaxy_workspace 6, autolens_workspace 17. Full - per-file list with counts is in the prompt. - - Notebooks are NOT currently corrupt — the generator reads source text, not - runtime values — so this is warning noise plus latent breakage, not a - shipped-artefact bug. - - VERIFICATION GATE: after regenerating each repo - (`PYTHONPATH=../PyAutoHands/autohands python3 - ../PyAutoHands/autohands/generate.py `), `git diff notebooks/ - markdown/ llms-full.txt workspace_index.json` MUST be empty — the generator - swaps the delimiter for `'''` either way, so a non-empty diff means the - Hands prerequisite is incomplete. - - EXCLUDED: `autolens_workspace/dataset/cluster/a2744/prep.py:38` is a genuine - TSV tab, not LaTeX. Also excluded, and worth a separate library prompt: - PyAutoGalaxy (4 warnings) and PyAutoCTI (19) carry the same defect in - source, but need ship_library + a pending-release gate. autocti_workspace, - every *_workspace_test / *_workspace_developer, and PyAutoFit / PyAutoArray - / PyAutoLens source were swept and are clean. -- affected-repos: - - HowToFit - - HowToGalaxy - - HowToLens - - autofit_workspace - - autogalaxy_workspace - - autolens_workspace