Skip to content

prompt: retire the three shipped Clipper follow-ups to complete/ - #192

Merged
Jammy2211 merged 1 commit into
mainfrom
claude/clipper-followups-completion-records
Aug 16, 2026
Merged

prompt: retire the three shipped Clipper follow-ups to complete/#192
Jammy2211 merged 1 commit into
mainfrom
claude/clipper-followups-completion-records

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

All three follow-ups merged today, so they leave draft/. Left in place they would read as unstarted high-priority backlog on the dashboard people pick work from — the exact drift this session opened by finding phase 1 still sitting there after it had shipped.

prompt → record PR merge
clipper-usage-in-search-summary #1478 bbceff6
save-json-numpy-scalar-typeerror #1479 b6e89cd
crashed-run-poisons-resume #1480 5c9244b

Two corrections the records carry

Both are cases where the prompt asserted something implementing it disproved.

The search.summary prompt claimed there was "no search-specific channel at all". False. search_summary_from_samples already read samples.samples_info and already emitted the NaN counters and their rates, key-guarded so other searches are unaffected. The real gap was two specific omissions — n_clipped_lane_steps never leaving search_internal, and n_constrained_lane_steps reaching samples_info but never being printed — not a missing mechanism. Recorded because it nearly caused a rebuild of something that already existed.

The poisoned-resume prompt claimed the rerun was "a zero-step no-op that reads as a clean result". That did not reproduce. What reproduces is a hard JSONDecodeError on every rerun of the same search name, naming no file and offering no remedy. The no-op variant presumably needs a surviving search_internal whose restored total_steps short-circuits the loop — the crash path deletes it first. Same root cause, fix covers both, but only the crash is evidenced and the record says so.

Other things kept because they were learned, not planned

  • A second unguarded JSON writer the float32 prompt never namedSamples.info_to_json, and the more dangerous of the two, since samples_info gains a counter every time a search does. #1478 added two to that very dict the same day.
  • The resume-guard leg, found by auditing sibling code rather than from the prompt: the same narrow except-tuple meant a corrupt search_internal raised instead of falling into the fresh-start branch directly beneath it.
  • A test trap — an end-to-end resume test passes while asserting nothing if the second run is short-circuited as already-complete, and the .completed marker is not found by rglob under the test config.
  • The toy 3-parameter Gaussian that reproduces the autolens_profiling#128 mechanism in seconds (378 value-NaN lane-steps unclipped, 0 clipped, 414 clips at rate 0.958) — a far cheaper regression fixture than the imaging/mge cell.
  • LBFGS does not poison. It simply refits and overwrites; the hazard is specific to searches that read prior output while resuming.

Bookkeeping

active.md updated to shipped state with both corrections. Four dangling references repointed at the new records. lifecycle.py check and index --check both OK; dashboard.md regenerated (141 → 138 drafts).

🤖 Generated with Claude Code

https://claude.ai/code/session_01FzF2XmKQaqZRWZfZMxvTNR


Generated by Claude Code

All three merged today, so they leave draft/. Left in place they would read as
unstarted high-priority backlog on the dashboard people pick work from -- the
exact drift this session opened by finding phase 1 still sitting there after it
had shipped.

- clipper-usage-in-search-summary   PyAutoFit#1478  bbceff6
- save-json-numpy-scalar-typeerror  PyAutoFit#1479  b6e89cd
- crashed-run-poisons-resume        PyAutoFit#1480  5c9244b

Each record carries what implementing it taught, including two corrections to
what the prompts asserted:

- The search.summary prompt claimed there was "no search-specific channel at
  all". False. search_summary_from_samples already read samples_info and
  already emitted the NaN counters; the real gap was two omissions, not a
  missing mechanism. Recorded because it nearly caused a rebuild of something
  that existed.
- The poisoned-resume prompt claimed the rerun was "a zero-step no-op that
  reads as a clean result". That did not reproduce; a hard JSONDecodeError on
  every rerun did. The no-op variant presumably needs a surviving
  search_internal, which the crash path deletes first. Only the crash is
  evidenced, and the record says so.

Also kept: the second unguarded JSON writer the float32 prompt never named
(Samples.info_to_json, the more dangerous one, since samples_info gains a
counter every time a search does); the resume-guard leg found by audit rather
than by the prompt; the test trap where a run short-circuited as
already-complete passes an end-to-end resume test while asserting nothing; and
the toy 3-parameter Gaussian that reproduces the #128 mechanism in seconds,
which is a far cheaper regression fixture than the imaging/mge cell.

active.md updated to shipped state with both corrections. Four dangling
references repointed at the new records. lifecycle check + index check OK;
dashboard regenerated (141 -> 138 drafts).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FzF2XmKQaqZRWZfZMxvTNR
@Jammy2211
Jammy2211 merged commit db65dea into main Aug 16, 2026
2 checks passed
@Jammy2211
Jammy2211 deleted the claude/clipper-followups-completion-records branch August 17, 2026 20:58
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