Skip to content

prompt: land the stranded point-source-dataset-cap-guard close-out (#710) - #294

Merged
Jammy2211 merged 5 commits into
mainfrom
claude/autolens-point-jax-vmap-parity-sd0q48
Aug 24, 2026
Merged

prompt: land the stranded point-source-dataset-cap-guard close-out (#710)#294
Jammy2211 merged 5 commits into
mainfrom
claude/autolens-point-jax-vmap-parity-sd0q48

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

Recovers the Mind close-out for PyAutoLens#710 (point-source-dataset-cap-guard), which was written but never reached main, and finishes the one piece it deferred.

Why this exists

/start_dev draft/bug/autolens/point_jax_vmap_parity_nondeterministic.md found the task already shipped:

Leg PR State
PyAutoLens #711 — make the PointSolver SMALL_DATASETS short-circuit announce itself MERGED
autolens_workspace_test #265 — guard the point-source parity scripts against the cap merged

PyAutoLens#710 is closed as completed. But the prompt was still sitting in draft/, the active.md entry never landed, and the sibling planned.md entry was still live — because the session that did the work left its Mind commits on claude/autolens-point-jax-vmap-parity-htyfi1, which never merged.

That branch had forked from an old main and could not be merged as-is: its diff against current main deletes ~5000 lines of subsequent work (scripts/lifecycle.py, tests/test_lifecycle_dates.py, a dozen complete/2026/08/ records). So its three relevant commits are cherry-picked here instead, onto current main.

Note that lifecycle.py check passed throughout this drift: a shipped-but-still-draft/ prompt with no active.md entry is invisible to the guard, which only checks that no active.md slug has a record. Worth a follow-up, not fixed here.

What lands

Cherry-picked from the stranded branch (a76314a4, 4a7cb760, b761a601)

  • Prompt advanced draft/bug/autolens/point_jax_vmap_parity_nondeterministic.mdcomplete/2026/08/point-source-dataset-cap-guard.md (active.md entry added and removed, net zero, as the real lifecycle would have done).
  • draft/bug/autolens/point_solver_error_bisect_health.md no longer absorbs the parity bug — the "same investigation surface" premise was false (a workspace env-declaration defect, not triangle-solve accuracy). Stale point_solver.py:111 reference corrected to :119.

New here (40ea0e11)

  • jax-point-source-point-smoke-sentinel retired. The stranded branch marked it "retire this entry and its prompt when #710 ships". #710 has shipped. Its -1e99 symptom was the same poisoning, and prompt: re-home pynufft removal to maintenance, file two follow-ups #265 measured point.py passing on main with the pin exact (-83.38049778) — which settles the "what is still unknown" question that prompt's own 2026-08-09 note left open. Entry removed from planned.md; prompt archived to complete/archive/shelved/ behind a WITHDRAWN banner, provenance only.
  • Completion record's reconciliation section rewritten from "retire" to "retired", naming the archive path.
  • Filed: 2026-07-22 backfilled onto the folded original prompt — main added it to the draft after the close-out branch forked.

The underlying finding, for the record

The prompt's leading hypothesis was right, and the mechanism was worse than it guessed. Under PYAUTO_SMALL_DATASETS=1, should_simulate() rmtrees the committed, gitignore-allowlisted dataset/point_source/simple — it is JSON-only, so there is no data.fits carrying the SMALLDAT stamp that PyAutoArray#471's guard reads — and PointSolver.solve short-circuits to a fixed, model-independent position pair. One run poisons the next. That is exactly the reported "run A → -1e+99, runs B/C/D → 16.131221" signature. No library numerical bug exists; the prompt's repro command set the cap by hand, overriding the script's own ENV: jax full_datasets declaration, so it could never have passed.

Verified against autolens_workspace_test@main while preparing this: all five parity scripts carry the pre-should_simulate cap guard, point_source/visualization/modeling_visualization_jit.py now declares ENV: full_datasets real_output, and the solver's one-shot logger.warning plus updated Notes docstring are in place on PyAutoLens@main.

Verification

origin/main was merged in (it moved during this work); the three generated-file conflicts (complete/index.md, dashboard.md, dashboard.html) were resolved by regenerating with the owning tooling, not by hand-merging. Net diff against current main is unchanged by that merge — the same 8 files, no collateral.

lifecycle.py check          OK
lifecycle.py index --check  OK
lifecycle.py orphans        none
registry_toc.py --check     fresh

Follow-up (not in this PR)

origin/claude/autolens-point-jax-vmap-parity-htyfi1 is now fully superseded and should be deleted, so nobody merges the stale version.


Generated by Claude Code

claude added 5 commits August 24, 2026 19:33
Advances the point.py JAX-vmap parity prompt draft/ → active/ and registers it
in active.md as library-dev against PyAutoLens#710.

The diagnosis is settled in-session rather than deferred: under
PYAUTO_SMALL_DATASETS=1, should_simulate() rmtree's the committed JSON
point-source dataset and PointSolver.solve returns a fixed, model-independent
position pair in silence. point.py itself passes on current main under the
correct profile, so the reported non-determinism was poisoned-on-disk data, not
a library bug. Remaining scope is hardening.

Also marks the planned.md jax-point-source-point-smoke-sentinel entry superseded
by the same finding.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJSb9kydhAgMgCCKh26ai2
point_solver_error_bisect_health.md claimed to absorb the point.py JAX-vmap parity
prompt on the grounds of a shared investigation surface. That is no longer true: the
parity failure was dataset poisoning under PYAUTO_SMALL_DATASETS, not triangle-solve
accuracy, and it shipped separately as point-source-dataset-cap-guard (PyAutoLens#710)
rather than waiting on a 12-phase epic.

Also corrects the stale point_solver.py:111 line reference to :119.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJSb9kydhAgMgCCKh26ai2
Both legs merged — PyAutoLens#711 (27126fb) then autolens_workspace_test#265
(051b051), library-first order held.

The reported parity non-determinism was on-disk dataset poisoning, not a library
numerical bug: should_simulate rmtree's the committed JSON point-source dataset
under PYAUTO_SMALL_DATASETS=1, and PointSolver.solve short-circuits to a
model-independent position pair. point.py passes on main with an intact dataset.

Record carries the two traps worth remembering — the SMALLDAT stamp cannot reach
JSON datasets, and real_output/real_plots do not release the cap — plus the two
follow-ups: the other workspaces are still unaudited, and per-script discipline
has now failed twice as the only protection.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJSb9kydhAgMgCCKh26ai2
Completes the registry reconciliation the point-source-dataset-cap-guard
close-out (PyAutoLens#710) left as a follow-up. #710 has shipped — PyAutoLens#711
and autolens_workspace_test#265 both merged 2026-08-23 — so the condition its
planned.md note attached ("retire this entry and its prompt when #710 ships") is
now met.

- planned.md: removed the jax-point-source-point-smoke-sentinel entry; its -1e99
  symptom was the same poisoned-on-disk dataset, and #265 measured point.py
  passing on main with the -83.38049778 pin exact. That settles the "what is
  still unknown" question the prompt's own 2026-08-09 note left open.
- Archived the prompt to complete/archive/shelved/ behind a WITHDRAWN banner
  (provenance only, do not start), per the repo's shelving convention.
- Rewrote the completion record's reconciliation section from "retire" to
  "retired", naming the archive path.
- Backfilled the Filed: 2026-07-22 header onto the folded original prompt, which
  main had added to the draft after the close-out branch forked.
- Regenerated complete/index.md, planned.md's contents block, and the dashboard.

lifecycle check / index --check / orphans and registry_toc --check all pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ArKXBR7EnFh49QRqNScF2y
# Conflicts:
#	complete/index.md
#	dashboard.html
#	dashboard.md
@Jammy2211
Jammy2211 merged commit 0dd852d into main Aug 24, 2026
2 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.

2 participants