Skip to content

maintenance: floor autonerves at the first release carrying the SMALLDAT stamp - #483

Merged
Jammy2211 merged 1 commit into
mainfrom
claude/small-datasets-regime-stamp-tlvobd
Aug 23, 2026
Merged

maintenance: floor autonerves at the first release carrying the SMALLDAT stamp#483
Jammy2211 merged 1 commit into
mainfrom
claude/small-datasets-regime-stamp-tlvobd

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

Closes #482.

What this does

The floor was autonerves>=2026.8.22.1, which predates the SMALLDAT regime stamp shipped by PyAutoNerves#153/#154. An autoarray installed from PyPI therefore resolved an autonerves whose writer emits no card at all: should_simulate saw an absent stamp, read it as "unknown", and fell back to the shape heuristic — which cannot see capped interferometer datasets, the exact case the stamp exists for. The fix was inert for anyone installing rather than running from a checkout.

This bumps the floor to 2026.8.23.1, the first release that actually carries it.

Why 2026.8.23.1 is the right floor

Verified by unpacking both wheels from PyPI, rather than inferring membership from commit dates:

2026.8.22.1 (old floor) 2026.8.23.1 (new floor)
stamp_small_datasets_regime absent fitsable.py:29
SMALL_DATASETS_HEADER_KEY = "SMALLDAT" absent fitsable.py:25
header comment fix (0ecefa0) no — still header.append((key_str, value, [""])) yes — ""
JAX in base Requires-Dist yes yes

No release sits between the two, so 2026.8.23.1 is the first stamped release. It carries both commits named in the prompt (39014b6, 0ecefa0).

The pin comment now states both load-bearing reasons. The JAX-in-base-dependencies requirement (PyAutoLens#687/#702) stays alongside the stamp; its old "bump once it exists" phrasing was stale, since that condition has been satisfied since 2026.8.22.1.

The duplicated SMALLDAT literal — kept, for a new reason

dataset_util.py duplicates the "SMALLDAT" literal rather than importing it. Its comment justified that by saying the floor named a pre-stamp release, so an import would hard-fail — this change makes that reason false, so it had to be rewritten either way.

The duplication is kept anyway, on a different rationale: a floor constrains dependency resolution only. An editable checkout, a pip install --no-deps, or a hand-built virtualenv can still put a pre-stamp autonerves on the path. Under the literal, such an autonerves yields "card absent" and the reader falls through to the shape heuristic — the safe direction, and the same path every pre-stamp dataset on disk already takes. Under an import it would be an ImportError at module load. Trading a silent-safe degradation for a hard failure to delete one string is the wrong way round.

Not changed

Both fallbacks — should_simulate's shape heuristic and _is_capped_at_the_current_cap — are untouched. Every dataset already on disk is unstamped and depends on them.

The regenerated FITS fixture

test_autoarray/structures/arrays/files/array/output_test/array.fits changed as a byproduct. It is test output, not an input expectation: test_uniform_2d.py:201-208 rmtrees the directory, recreates it, writes the file, and reads it back. The newly-floored autonerves drops the / [''] comment literal (PyAutoNerves#155), so the committed copy no longer matched what a compliant install produces.

Verified cosmetic — identical cards, values, data and byte size (5760 → 5760); only the comment text differs:

HEAD   : PIXSCAY =                  1.0 / ['']
WORKING: PIXSCAY =                  1.0

Leaving it stale would dirty the tree on every suite run under the new floor. Only 1 of 61 tracked .fits files is affected.

Separately worth noting: a generated artifact being tracked in git is a pre-existing hygiene issue that will recur on the next autonerves writer change. Filed as its own task rather than widened into this PR.

Testing

Fresh install under the new floor, confirming the change achieves its purpose end to end:

autonerves 2026.8.23.1 resolved
resolved stamp key: SMALLDAT   stamp fn present: True
autoarray literal: SMALLDAT  | in sync: True
python -m pytest test_autoarray/util/test_dataset_util.py test_autoarray/util/test_catalogue_cap.py
  -> 33 passed

python -m pytest test_autoarray/
  -> 1178 passed, 1 skipped

Run on Python 3.13.


Generated by Claude Code

…DAT stamp

The floor was `autonerves>=2026.8.22.1`, which predates the SMALLDAT regime
stamp shipped by PyAutoNerves#153/#154. An autoarray installed from PyPI
therefore resolved an autonerves whose writer emits no card at all:
`should_simulate` saw an absent stamp, read it as "unknown", and fell back to
the shape heuristic — which cannot see capped interferometer datasets, the case
the stamp exists for. The fix was inert for anyone installing rather than
running from a checkout.

`autonerves 2026.8.23.1` is the first release carrying it. Verified by
unpacking both wheels from PyPI rather than inferring from commit dates:
2026.8.22.1 has neither `stamp_small_datasets_regime` nor
`SMALL_DATASETS_HEADER_KEY`, and still writes the `[""]` header comment;
2026.8.23.1 has both and the `""` fix. No release sits between them, so it is
the first. Both floor reasons are now stated in the pin comment — the
JAX-in-base-dependencies requirement (PyAutoLens#687/#702) stays load-bearing
alongside the stamp.

The rationale on the duplicated SMALLDAT literal in `dataset_util.py` was
rewritten because this bump makes its stated reason false — it claimed the
floor named a pre-stamp release, so an import would hard-fail. The duplication
is kept anyway, for a different reason: a floor constrains dependency
resolution only, and an editable checkout or `--no-deps` install can still put
a pre-stamp autonerves on the path. The literal degrades to "card absent" and
falls through to the shape heuristic; an import would be an ImportError at
module load. Silent-safe beats hard-fail.

Both fallbacks (`should_simulate`'s shape heuristic and
`_is_capped_at_the_current_cap`) are untouched — every dataset already on disk
is unstamped and depends on them.

`test_autoarray/structures/arrays/files/array/output_test/array.fits` is
regenerated as a byproduct: it is test output that the suite rmtrees and
rewrites, and the newly-floored autonerves drops the `/ ['']` comment literal
(PyAutoNerves#155). Verified cosmetic — identical cards, values, data and byte
size; only the comment text differs. Leaving it stale would dirty the tree on
every suite run under the new floor.

Closes #482.

Co-Authored-By: Claude <[email protected]>
@Jammy2211
Jammy2211 merged commit 0f75c3d into main Aug 23, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

maintenance: floor autonerves at the first release carrying the SMALLDAT stamp

2 participants