diff --git a/draft/maintenance/pyautonerves/cli_noise_autonerves_batch.md b/complete/2026/08/cli-noise-autonerves-batch.md
similarity index 53%
rename from draft/maintenance/pyautonerves/cli_noise_autonerves_batch.md
rename to complete/2026/08/cli-noise-autonerves-batch.md
index f663b0b1..416d6614 100644
--- a/draft/maintenance/pyautonerves/cli_noise_autonerves_batch.md
+++ b/complete/2026/08/cli-noise-autonerves-batch.md
@@ -1,3 +1,62 @@
+# cli-noise-autonerves-batch
+
+**Completed:** 2026-08-18 · **Type:** maintenance · **Target:** PyAutoNerves
+**PRs:** PyAutoNerves#149 (fixes), PyAutoMind#232 (implementation notes) — both
+merged 2026-08-18. No GitHub issue (small `Autonomy: safe` batch, driven
+straight from the draft prompt in a remote session).
+
+## What shipped
+
+The three autonerves-rooted CLI-noise sources from the 2026-08-06
+`/cli_noise_clean` audit, all fixed in one PyAutoNerves PR with regression
+tests:
+
+1. **fits leak** — `fitsable.ndarray_via_fits_from` called `fits.open` without
+ closing, emitting `ResourceWarning: unclosed file` in every downstream repo
+ that loads FITS. Now `with fits.open(...)`. The same fix was applied to
+ `header_obj_from`, which had the identical unclosed-handle pattern a few
+ lines below the one the audit named — an astropy `Header` stays valid after
+ the file closes, so the `with` block is safe there too.
+2. **pytest collection** — `test_test_mode.py` imported the real API functions
+ `test_mode_level`/`test_mode_samples` by bare name, so pytest collected them
+ as tests (`PytestReturnNotNoneWarning`, an ERROR in a future pytest). The
+ unused `test_mode_level` import was dropped; `test_mode_samples` is aliased
+ to `_test_mode_samples`, with a comment so nobody "cleans up" the alias.
+3. **`check_version` false positive** — fix option (b) from the prompt:
+ `check_version` now returns silently when its root (defaulting to cwd) is a
+ package source checkout (`setup.py` or `pyproject.toml` at its top level)
+ and no version floor is recorded. A recorded floor is still enforced even in
+ a source checkout, and a genuine workspace missing its version keys still
+ warns. Chosen over option (a) (per-library conftest env vars) because it is
+ self-contained in autonerves — no changes needed in the five library repos.
+
+Full `test_autonerves` suite green (157/157) under `pytest -W all`; verified
+`check_version()` is silent with cwd at a library repo root and that
+`test_mode_*` no longer appear in `pytest --collect-only`.
+
+## Surface decision (the prompt's item-3 open question)
+
+The prompt flagged that PyAutoArray/PyAutoNerves don't call `check_version` at
+all, unlike autofit/autogalaxy/autolens. Decided: **the asymmetry is intended,
+not drift.** `check_version` is the surface of the *workspace-facing* libraries
+only — users run scripts from workspace clones that import those three.
+autoarray and autonerves are infrastructure layers never driven from a
+workspace cwd directly. No library `__init__` was changed.
+
+## Traps / findings
+
+- The audit named one leak site (`fitsable.py:210`); the sibling
+ `header_obj_from` had the same leak and would have kept a residual
+ ResourceWarning trickle if only the named line were fixed. When fixing a
+ pattern-shaped noise source, grep the module for the pattern, not the line.
+- The downstream ResourceWarning surfaces the audit lists
+ (`autofit/database/aggregator/scrape.py`, `autoarray` visibilities /
+ interferometer dataset, Galaxy/Lens runs) all route through these two
+ helpers, so no downstream-repo changes are needed — re-run the audit after
+ the next release picks up autonerves to confirm the stack-wide clearance.
+
+## Original prompt
+
# Silence the three autonerves-rooted CLI-noise sources (fits leak, pytest collection, check_version false positive)
Type: maintenance
diff --git a/complete/index.md b/complete/index.md
index bfb1c14a..a5710403 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.
-1020 records across 7 buckets.
+1021 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-autonerves-batch](2026/08/cli-noise-autonerves-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 f5e7b3ab..78ce8eed 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/`) | 130 |
+| [Backlog](#backlog) (`draft/`) | 129 |
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)
@@ -36,7 +36,6 @@ Live on GitHub: [open issues](https://github.com/search?q=org%3APyAutoLabs+is%3A
- [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
- [`add_notebook_quotes` mistakes a code string literal's closing delimiter for a](draft/bug/hands/notebook_quotes_string_literal_closing_delimiter.md) — hands · small · safe · low
- [Markdown renderings batch 2a — leftovers (ellipse/modeling + PNG size)](draft/docs/pyautobuild/markdown_renderings_2a_leftovers.md) — pyautobuild · small · safe · low
@@ -81,7 +80,7 @@ Scoped but not started; some are not yet prompt files. Full detail in [`planned.
## Backlog
-**130** filed prompts, not started. Each section is sorted most-pickable first (priority, then size).
+**129** filed prompts, not started. Each section is sorted most-pickable first (priority, then size).
bug — 35
@@ -158,11 +157,10 @@ 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
- [autolens_workspace_developer: broad stale-API rot (56 symbols, no CI)](draft/maintenance/autolens_workspace_developer/stale_api_rot_audit.md) — autolens_workspace_developer · medium · supervised · normal