From b41a00801278fc11c1ac1b90eacffd1e6c507660 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 18 Aug 2026 20:00:44 +0000 Subject: [PATCH 1/3] prompt: file issue for cli-noise-pyautofit-batch (#1495) and register library-dev Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_018WXzGhe8dt8ANs4xaXHcuD --- active.md | 21 +++++++++++++++++++ .../cli_noise_pyautofit_batch.md | 0 2 files changed, 21 insertions(+) rename {draft/maintenance/pyautofit => active}/cli_noise_pyautofit_batch.md (100%) diff --git a/active.md b/active.md index fd9a4176..edcd65b5 100644 --- a/active.md +++ b/active.md @@ -1,5 +1,26 @@ # Active Tasks +## cli-noise-pyautofit-batch +- issue: https://github.com/PyAutoLabs/PyAutoFit/issues/1495 +- session: Claude Code web (remote), branch claude/pyautofit-cli-noise-fixes-vqs7mg +- status: library-dev +- worktree: none (remote web session — session clone, no local worktree) +- repos: + - PyAutoFit: claude/pyautofit-cli-noise-fixes-vqs7mg +- prompt: active/cli_noise_pyautofit_batch.md +- CONFLICT OVERRIDE (deliberate, 2026-08-18): PyAutoFit is also claimed by + `stored-sample-reconstruction-guard` (`autofit/non_linear/samples/`) and + `version-stamp-sync-guards` (`autofit/__init__.py` + `files/release.sh`). This task is + FILE-DISJOINT from both: it touches `non_linear/search/abstract_search.py`, + `non_linear/search/nest/nautilus/search.py`, `non_linear/search/mle/bfgs/search.py`, + `database/model/array.py` and two test files. Remote session on its own branch; if either + in-flight task grows into these files, re-coordinate before merge. +- summary: five mechanical CLI-noise fixes from the 2026-08-06 `-W all` audit — close the + `search.log` FileHandler in `configure_handler`'s `finally`; add SQLAlchemy `overlaps=` to the + `Fit.arrays`/`Fit.hdus`/`HDU.fit` relationship overlap; nautilus `evidence()` → `.log_z`; + stop passing scipy-deprecated `disp`/`iprint` to L-BFGS-B; module-local fork() + DeprecationWarning filter in `test_fork_context.py`. + ## stored-sample-reconstruction-guard - issue: https://github.com/PyAutoLabs/PyAutoFit/issues/1486 - status: library-dev — WORKSPACE HALF SHIPPED; the PyAutoFit hardening (#1486) is what remains diff --git a/draft/maintenance/pyautofit/cli_noise_pyautofit_batch.md b/active/cli_noise_pyautofit_batch.md similarity index 100% rename from draft/maintenance/pyautofit/cli_noise_pyautofit_batch.md rename to active/cli_noise_pyautofit_batch.md From daf850dd22d43a13dfa6d9417debe1e7fb6db0a4 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 18 Aug 2026 20:10:21 +0000 Subject: [PATCH 2/3] prompt: cli-noise-pyautofit-batch implementation pushed (PyAutoFit 7d1fe19) Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_018WXzGhe8dt8ANs4xaXHcuD --- active.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/active.md b/active.md index edcd65b5..dec88f72 100644 --- a/active.md +++ b/active.md @@ -3,7 +3,9 @@ ## cli-noise-pyautofit-batch - issue: https://github.com/PyAutoLabs/PyAutoFit/issues/1495 - session: Claude Code web (remote), branch claude/pyautofit-cli-noise-fixes-vqs7mg -- status: library-dev +- status: library-dev — IMPLEMENTATION PUSHED 2026-08-18 as PyAutoFit `7d1fe19` (6 files, +42/−5); + full suite 1884 passed / 3 skipped on py3.13 + scipy 1.17.1; all five warnings verified + reproduced-then-gone. No PR opened yet. - worktree: none (remote web session — session clone, no local worktree) - repos: - PyAutoFit: claude/pyautofit-cli-noise-fixes-vqs7mg From 5e79734437a71be74f2750463cf03169e532f0f7 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 18 Aug 2026 20:24:52 +0000 Subject: [PATCH 3/3] =?UTF-8?q?prompt:=20ship=20cli-noise-pyautofit-batch?= =?UTF-8?q?=20(#1495)=20=E2=86=92=20complete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PyAutoFit PR #1496 merged as 7d4d931 (all checks green). Dated record written, active/ prompt folded, active.md pruned, index + dashboard regenerated. lifecycle check: OK. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_018WXzGhe8dt8ANs4xaXHcuD --- active.md | 23 ----- active/cli_noise_pyautofit_batch.md | 35 ------- complete/2026/08/cli-noise-pyautofit-batch.md | 98 +++++++++++++++++++ complete/index.md | 3 +- dashboard.md | 8 +- 5 files changed, 103 insertions(+), 64 deletions(-) delete mode 100644 active/cli_noise_pyautofit_batch.md create mode 100644 complete/2026/08/cli-noise-pyautofit-batch.md diff --git a/active.md b/active.md index dec88f72..fd9a4176 100644 --- a/active.md +++ b/active.md @@ -1,28 +1,5 @@ # Active Tasks -## cli-noise-pyautofit-batch -- issue: https://github.com/PyAutoLabs/PyAutoFit/issues/1495 -- session: Claude Code web (remote), branch claude/pyautofit-cli-noise-fixes-vqs7mg -- status: library-dev — IMPLEMENTATION PUSHED 2026-08-18 as PyAutoFit `7d1fe19` (6 files, +42/−5); - full suite 1884 passed / 3 skipped on py3.13 + scipy 1.17.1; all five warnings verified - reproduced-then-gone. No PR opened yet. -- worktree: none (remote web session — session clone, no local worktree) -- repos: - - PyAutoFit: claude/pyautofit-cli-noise-fixes-vqs7mg -- prompt: active/cli_noise_pyautofit_batch.md -- CONFLICT OVERRIDE (deliberate, 2026-08-18): PyAutoFit is also claimed by - `stored-sample-reconstruction-guard` (`autofit/non_linear/samples/`) and - `version-stamp-sync-guards` (`autofit/__init__.py` + `files/release.sh`). This task is - FILE-DISJOINT from both: it touches `non_linear/search/abstract_search.py`, - `non_linear/search/nest/nautilus/search.py`, `non_linear/search/mle/bfgs/search.py`, - `database/model/array.py` and two test files. Remote session on its own branch; if either - in-flight task grows into these files, re-coordinate before merge. -- summary: five mechanical CLI-noise fixes from the 2026-08-06 `-W all` audit — close the - `search.log` FileHandler in `configure_handler`'s `finally`; add SQLAlchemy `overlaps=` to the - `Fit.arrays`/`Fit.hdus`/`HDU.fit` relationship overlap; nautilus `evidence()` → `.log_z`; - stop passing scipy-deprecated `disp`/`iprint` to L-BFGS-B; module-local fork() - DeprecationWarning filter in `test_fork_context.py`. - ## stored-sample-reconstruction-guard - issue: https://github.com/PyAutoLabs/PyAutoFit/issues/1486 - status: library-dev — WORKSPACE HALF SHIPPED; the PyAutoFit hardening (#1486) is what remains diff --git a/active/cli_noise_pyautofit_batch.md b/active/cli_noise_pyautofit_batch.md deleted file mode 100644 index df0c87f1..00000000 --- a/active/cli_noise_pyautofit_batch.md +++ /dev/null @@ -1,35 +0,0 @@ -# PyAutoFit CLI-noise batch: unclosed search.log handler + four small warning fixes - -Type: maintenance -Target: PyAutoFit -Repos: -- PyAutoFit -Difficulty: small -Autonomy: safe -Priority: normal -Status: formalised - -Filed 2026-08-06 from a full `/cli_noise_clean` audit (full PyAutoFit suite, -1667 tests, `-W all`). Five mechanical fixes, all in PyAutoFit: - -1. **Unclosed `search.log` FileHandler (44 warnings/run)** — - `autofit/non_linear/search/abstract_search.py:123-131` (`configure_handler`) - removes the handler in `finally` but never calls `handler.close()`. Add - `handler.close()` beside `removeHandler` at line 131. -2. **SQLAlchemy `SAWarning` relationship overlap** — `Fit.arrays`/`Fit.hdus` - vs `HDU.fit` ("will copy column fit.id ... conflicts"). Add the - `overlaps="..."` parameters SQLAlchemy suggests, in the DB model - definitions (fires from `configure_mappers()`, not the test). -3. **Nautilus deprecation** — `non_linear/search/nest/nautilus/search.py:535` - uses `search_internal.evidence()`; swap to the `.log_z` property. -4. **scipy L-BFGS-B deprecation** — `non_linear/search/mle/bfgs/search.py:194` - passes deprecated `disp`/`iprint` options; drop them per scipy's migration - note (or gate on scipy version). -5. **fork() DeprecationWarning in `test_fork_context.py`** — pytest's thread - pool + `os.fork()`; add a module-local `filterwarnings` mark or use the - `spawn` context in that test where feasible. - -Edge-case numerical warnings from tests that deliberately exercise degenerate -inputs (`LinAlgWarning`/`RuntimeWarning` in `interpolator/covariance.py`, -`messages/normal.py`, `fitness.py`) are lowest priority — silence locally in -the triggering tests with `warnings.catch_warnings()`, never globally. diff --git a/complete/2026/08/cli-noise-pyautofit-batch.md b/complete/2026/08/cli-noise-pyautofit-batch.md new file mode 100644 index 00000000..31a6f640 --- /dev/null +++ b/complete/2026/08/cli-noise-pyautofit-batch.md @@ -0,0 +1,98 @@ +# cli-noise-pyautofit-batch + +- shipped: 2026-08-18 +- issue: https://github.com/PyAutoLabs/PyAutoFit/issues/1495 +- library-pr: https://github.com/PyAutoLabs/PyAutoFit/pull/1496 (`pending-release`) — MERGED 2026-08-18 as `7d4d931`, all 3 checks green (unittest 3.12 + 3.13, docs-build) +- repos: + - PyAutoFit: `claude/pyautofit-cli-noise-fixes-vqs7mg` → `7d1fe19` +- session: Claude Code web (remote); no local worktree + +## Summary + +The five mechanical fixes from the 2026-08-06 `-W all` CLI-noise audit, in one +PyAutoFit PR (6 files, +42/−5). Each warning was reproduced on `main` first and +shown gone after the fix; full suite on py3.13 + scipy 1.17.1: 1884 passed, +3 skipped. + +1. `configure_handler` (`abstract_search.py`) now calls `handler.close()` + beside `removeHandler` in its `finally` — ends the 44-per-run + `ResourceWarning` and file-descriptor leak from `search.log`. +2. `Fit.arrays` carries `overlaps="fit"`, `Fit.hdus` carries + `overlaps="arrays,fit"` (`database/model/fit.py`) — the exact strings + SQLAlchemy 2.0.52's two `SAWarning`s suggest; `configure_mappers()` is now + silent. +3. Nautilus `samples_info_from` reads `.log_z` instead of the deprecated + `evidence()` (nautilus 1.0.5's method is a warn-then-`return self.log_z` + wrapper — exactly equivalent). +4. `LBFGS.options` drops the `disp`/`iprint` keys scipy 1.15 deprecated for + L-BFGS-B (removal slated 1.18); constructor still accepts both, `disp` + stays live for plain `BFGS`; `test_lbfgs.py` pins the contract. +5. `test_fork_context.py` filters both fork warnings module-locally — + CPython 3.12+'s DeprecationWarning *and* JAX's equivalent RuntimeWarning. + +## Traps / findings + +- **JAX adds a second fork warning.** Once JAX is imported it registers its own + `os.fork()` RuntimeWarning hook, so a filter for CPython's DeprecationWarning + alone leaves the module noisy in JAX-enabled runs. Both are needed; the + regexes differ (`This process` vs `os\.fork\(\) was called`). +- **SQLAlchemy names the fix for you.** The `SAWarning` text contains the exact + `overlaps="..."` string per relationship — reproduce with + `sa.orm.configure_mappers()` under `warnings.catch_warnings(record=True)` and + copy it verbatim rather than deriving the overlap set by hand. +- **Prompt line numbers drift.** The prompt's `bfgs/search.py:194` (filed + 2026-08-06) no longer matched; the sites were re-located by symbol + (`options` property / `samples_info_from`), not by line. +- Out of scope, still open on `main`: fork warnings from the dynesty pool tests + elsewhere in `test_autofit/non_linear/search/`, and the deliberately + degenerate-input numerical warnings (`interpolator/covariance.py`, + `messages/normal.py`, `fitness.py`) the prompt marked lowest priority. + +## Workflow notes + +- Remote web session: `pyauto-heart` unavailable, so the ship gate ran as the + WORKFLOW.md fallback (full repo suite as the verdict); vitals faculty not + consultable — noted here rather than silently skipped. +- Deliberate conflict override (file-disjoint) with the two in-flight PyAutoFit + claims `stored-sample-reconstruction-guard` and `version-stamp-sync-guards`, + documented in the `active.md` entry at registration. +- No workspace impact: API changes "None — internal"; no workspace migration + needed (option iii). + +## Original prompt + +# PyAutoFit CLI-noise batch: unclosed search.log handler + four small warning fixes + +Type: maintenance +Target: PyAutoFit +Repos: +- PyAutoFit +Difficulty: small +Autonomy: safe +Priority: normal +Status: formalised + +Filed 2026-08-06 from a full `/cli_noise_clean` audit (full PyAutoFit suite, +1667 tests, `-W all`). Five mechanical fixes, all in PyAutoFit: + +1. **Unclosed `search.log` FileHandler (44 warnings/run)** — + `autofit/non_linear/search/abstract_search.py:123-131` (`configure_handler`) + removes the handler in `finally` but never calls `handler.close()`. Add + `handler.close()` beside `removeHandler` at line 131. +2. **SQLAlchemy `SAWarning` relationship overlap** — `Fit.arrays`/`Fit.hdus` + vs `HDU.fit` ("will copy column fit.id ... conflicts"). Add the + `overlaps="..."` parameters SQLAlchemy suggests, in the DB model + definitions (fires from `configure_mappers()`, not the test). +3. **Nautilus deprecation** — `non_linear/search/nest/nautilus/search.py:535` + uses `search_internal.evidence()`; swap to the `.log_z` property. +4. **scipy L-BFGS-B deprecation** — `non_linear/search/mle/bfgs/search.py:194` + passes deprecated `disp`/`iprint` options; drop them per scipy's migration + note (or gate on scipy version). +5. **fork() DeprecationWarning in `test_fork_context.py`** — pytest's thread + pool + `os.fork()`; add a module-local `filterwarnings` mark or use the + `spawn` context in that test where feasible. + +Edge-case numerical warnings from tests that deliberately exercise degenerate +inputs (`LinAlgWarning`/`RuntimeWarning` in `interpolator/covariance.py`, +`messages/normal.py`, `fitness.py`) are lowest priority — silence locally in +the triggering tests with `warnings.catch_warnings()`, never globally. diff --git a/complete/index.md b/complete/index.md index a28745c8..266b2c19 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. -1018 records across 7 buckets. +1019 records across 7 buckets. ## Highlights @@ -33,6 +33,7 @@ _(curate hard-won records here — survives regeneration.)_ - [border-relocator-backend-parity](2026/08/border-relocator-backend-parity.md) — Isolated the native NumPy/JAX likelihood gap to mathematically non-unique PCA axes for a near-isotropic border… - [border-relocator-degenerate-pca](2026/08/border-relocator-degenerate-pca.md) — Stabilized near-isotropic border PCA axes with a deterministic axis-aligned branch at a scale-aware eigenvalue… - [circular-ell-comps-image-gradient](2026/08/circular-ell-comps-image-gradient.md) — Replaced the Sersic image path's Cartesian-to-polar ellipticity conversion with an algebraically equivalent Ca… +- [cli-noise-pyautofit-batch](2026/08/cli-noise-pyautofit-batch.md) - [clipper-usage-in-search-summary](2026/08/clipper-usage-in-search-summary.md) — `search.summary` now reports prior-support clipping. `n_clipped_lane_steps` - [clipper-validation-campaign](2026/08/clipper-validation-campaign.md) - [compile-axis-campaign-coverage](2026/08/compile-axis-campaign-coverage.md) diff --git a/dashboard.md b/dashboard.md index f70022b9..595dbeb2 100644 --- a/dashboard.md +++ b/dashboard.md @@ -11,7 +11,7 @@ Tasks only — the organism's health lives with the Heart (`/health`), not here. | [In flight](#in-flight) (`active/`) | 3 | | [Parked](#parked) (`parked.md`) | 1 | | [Planned](#planned) (`planned.md`) | 7 | -| [Backlog](#backlog) (`draft/`) | 134 | +| [Backlog](#backlog) (`draft/`) | 133 | Live on GitHub: [open issues](https://github.com/search?q=org%3APyAutoLabs+is%3Aissue+is%3Aopen&type=issues) · [open pull requests](https://github.com/search?q=org%3APyAutoLabs+is%3Apr+is%3Aopen&type=prs) @@ -35,7 +35,6 @@ Live on GitHub: [open issues](https://github.com/search?q=org%3APyAutoLabs+is%3A **Quick wins** (small enough, and safe enough to run unattended) - [Has the falsified-by checkpoint stage gone rote after ten ships](draft/research/pyautobrain/has_the_falsified_by_checkpoint_stage_gone.md) — pyautobrain · small · safe · normal -- [PyAutoFit CLI-noise batch: unclosed search.log handler + four small warning](draft/maintenance/pyautofit/cli_noise_pyautofit_batch.md) — pyautofit · small · safe · normal - [Tenant firewall: release_run.py carries an unlisted 'PyAutoLabs' instance fact](draft/bug/pyautoheart/tenant_firewall_release_run_instance_fact.md) — pyautoheart · small · safe · normal - [Silence the three autonerves-rooted CLI-noise sources (fits leak, pytest collection,](draft/maintenance/pyautonerves/cli_noise_autonerves_batch.md) — pyautonerves · small · safe · normal - [add-vincken-2026-wiki-and-cite-in-euclid](draft/docs/workspaces/add_vincken_2026_wiki_and_cite_in_euclid.md) — workspaces · small · safe · normal @@ -82,7 +81,7 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned. ## Backlog -**134** filed prompts, not started. Each section is sorted most-pickable first (priority, then size). +**133** filed prompts, not started. Each section is sorted most-pickable first (priority, then size).
bug — 35 @@ -187,10 +186,9 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned.
-maintenance — 20 +maintenance — 19 - [autolens_workspace_developer rectangular experiments — Gut stash + rename](draft/maintenance/autolens_workspace_developer/rectangular_experiments_gut_stash.md) — autolens_workspace_developer · small · supervised · normal -- [PyAutoFit CLI-noise batch: unclosed search.log handler + four small warning](draft/maintenance/pyautofit/cli_noise_pyautofit_batch.md) — pyautofit · small · safe · normal - [Silence the three autonerves-rooted CLI-noise sources (fits leak, pytest collection,](draft/maintenance/pyautonerves/cli_noise_autonerves_batch.md) — pyautonerves · small · safe · normal - [Mirror drifted library config keys into the workspace configs](draft/maintenance/workspaces/config_key_mirror_drift.md) — workspaces · small · supervised · normal - [Un-park imaging/features/scaling_relation/slam once PyAutoArray#431 merges](draft/maintenance/workspaces/unpark_imaging_scaling_relation_slam.md) — workspaces · small · supervised · normal