Overview
Validate PyAutoReduce's HST/ACS path on a second SLACS lens: reduce slacs1430+4105 (J1430+4105) from archival ACS/WFC F814W data through the production pipeline and compare the modeling-ready product against the trusted legacy dataset at /mnt/c/Users/Jammy/Science/subhalo/dataset/slacs/slacs1430+4105 (collaborator-provided, used for years in subhalo work). Goes beyond the pixel-level parity of reduce_slacs0008.py (issue #2) by adding lens-model parity fits driven through autolens_assistant — the question is not just "do the pixels match" but "does the science answer change". Methodology settled here carries to the PJ011646 WFC3 follow-up task.
Plan
- Inspect the legacy slacs1430+4105 dataset (real-data gate: plot data/noise/PSF; it ships
positions.json, extra_galaxies_centres.json, mask_extra_galaxies.fits — that extra-galaxy treatment is reused identically on both datasets).
- Query MAST at J1430+4105 (RA 217.5171°, Dec +41.0992°) for ACS/WFC F814W exposures; confirm the SLACS proposal ID(s) from the archive rather than assuming slacs0008's 10886.
- Write
scripts/reduce_slacs1430.py adapted from scripts/reduce_slacs0008.py; run the production pipeline end-to-end (outputs to gitignored scripts/output/).
- Pixel-level parity:
autoreduce.validation.registered_ratios (sub-pixel registration) + side-by-side data / noise / S-N / PSF-profile comparison plots.
- Lens-model parity: identical model, mask, positions and priors fit to both datasets; compare posteriors, residuals and evidence, and check against literature values (θ_E = 1.52", q = 0.68, PA = 111.7°, σ = 322 km/s).
- Verdict on this issue: is the PyAutoReduce product scientifically interchangeable with the legacy reduction? Pipeline defects found escalate as new PyAutoMind prompts (PyAutoReduce source is claimed by
frame-products; no source edits here).
Detailed implementation plan
Work classification
Workspace (scripts + analysis; no library source edits). Autonomy: safe effective (--auto launch 2026-07-09; plan approved in-session by the human before launch). The Brain Feature Agent suggested re-homing the prompt as research/; the human explicitly classified it test at intake — kept, dissent recorded here.
Affected repositories
- PyAutoReduce (primary — new
scripts/reduce_slacs1430.py + parity-fit script)
- autolens_assistant (driver only: skills, real-data gate, API grounding; no commits — it is a generic public template, scratch outputs go to its gitignored
scripts/scratch/)
Branch survey (2026-07-09)
| Repository |
Current Branch |
Dirty? |
| ./PyAutoReduce |
main |
2 untracked (output/, prototypes/b1938_lens_fit.py — keck-ao task's parked analysis) |
| ./autolens_assistant |
main |
1 untracked (james.bib) |
Suggested branch: feature/slacs1430-acs-parity (created only at ship time)
Claim handling: PyAutoReduce's worktree is held by frame-products (library-dev). This task follows the keck-ao-acceptance-checks pattern: analysis runs on the PyAutoReduce main checkout with no worktree claim — reductions write only to gitignored scripts/output/; the script commit/PR is deferred until the claim releases (or ships via coordination). Registered in active.md with worktree: none.
Implementation steps
- Phase 0 — orient. Read
docs/design/hst_acs_pipeline.md (validation section). Plot the legacy dataset (data/noise/PSF + extra-galaxy mask overlay) via the assistant's al_prepare_imaging_data procedure; record pixel scale, shape, PSF stamp sizes. Post dataset.png + the extra-galaxy/artefact review to this issue (the real-data gate checkpoint — treatment is pinned by the legacy dataset's own mask files, flagged here for human review rather than blocking).
- Phase 1 — reduce. MAST query at (217.517083, +41.099194) → SLACS proposal ID(s) →
TargetSpec(name="slacs1430+4105", ra=..., dec=..., proposal_ids=(...,)) → reduce_target(...) with ~/venv/PyAuto/bin/python, mirroring reduce_slacs0008.py (cache under scripts/cache/, output under scripts/output/slacs1430+4105/). Write parity_summary.json (registered_ratios, correlated_noise_factor, PSF diagnostics).
- Phase 2 — pixel comparison. Registered data/noise ratio maps, S/N histograms, PSF radial-profile overlay (legacy
psf.fits/psf_full.fits vs new), grid/orientation/centering checks. Plots via assistant scratch; key figures attached to this issue.
- Phase 3 — model parity. Same model both datasets: SIE + external shear, lens light (Sersic/MGE per assistant guidance), same source parameterisation, legacy
positions.json, 3.5" circular mask (per legacy info.json), identical extra-galaxy handling. Nautilus, identical priors/settings. Compare θ_E, q, PA, source properties, residual maps, log-evidence; reference literature values above.
- Phase 4 — report + ship. Verdict comment on this issue;
reduce_slacs1430.py + parity-fit script committed to feature/slacs1430-acs-parity and PR opened behind the four-leg autonomous-ship gate once the PyAutoReduce claim allows (else parked uncommitted like keck-ao, with resume notes here). Calibration-log row appended at PR-open/park. Methodology notes → PJ011646 WFC3 follow-up prompt.
Key files
PyAutoReduce/scripts/reduce_slacs0008.py — template: production reduction + registered_ratios parity vs a legacy dataset in the same /mnt/c/.../subhalo/dataset/slacs/ tree
PyAutoReduce/autoreduce/validation.py — registered_ratios sub-pixel registration comparison
PyAutoReduce/docs/design/hst_acs_pipeline.md — authoritative ACS stage design + validation bar
/mnt/c/Users/Jammy/Science/subhalo/dataset/slacs/slacs1430+4105/ — legacy dataset (data, noise_map, psf, psf_full, positions.json, extra_galaxies_centres.json, mask_extra_galaxies.fits, info.json)
autolens_assistant/skills/al_prepare_imaging_data.md, al_build_imaging_model.md — assistant procedures driving phases 0 and 3
Original Prompt
Click to expand starting prompt
PyAutoReduce validation: slacs1430+4105 ACS reduction vs trusted legacy dataset
Type: test
Target: workspaces
Repos:
- autolens_assistant
- PyAutoReduce
Difficulty: medium
Autonomy: safe
Priority: normal
Status: formalised
Validate PyAutoReduce against a trusted legacy reduction: reduce the SLACS lens slacs1430+4105 from archival HST/ACS data using PyAutoReduce, then compare the resulting modeling-ready dataset (data, noise map, PSF) to the long-used collaborator-provided dataset at /mnt/c/Users/Jammy/Science/subhalo/dataset/slacs/slacs1430+4105 (used for many years in subhalo work). Comparison is a science project driven through autolens_assistant: image/noise/PSF residuals plus lens-model parity fits on both datasets.
Overview
Validate PyAutoReduce's HST/ACS path on a second SLACS lens: reduce slacs1430+4105 (J1430+4105) from archival ACS/WFC F814W data through the production pipeline and compare the modeling-ready product against the trusted legacy dataset at
/mnt/c/Users/Jammy/Science/subhalo/dataset/slacs/slacs1430+4105(collaborator-provided, used for years in subhalo work). Goes beyond the pixel-level parity ofreduce_slacs0008.py(issue #2) by adding lens-model parity fits driven through autolens_assistant — the question is not just "do the pixels match" but "does the science answer change". Methodology settled here carries to the PJ011646 WFC3 follow-up task.Plan
positions.json,extra_galaxies_centres.json,mask_extra_galaxies.fits— that extra-galaxy treatment is reused identically on both datasets).scripts/reduce_slacs1430.pyadapted fromscripts/reduce_slacs0008.py; run the production pipeline end-to-end (outputs to gitignoredscripts/output/).autoreduce.validation.registered_ratios(sub-pixel registration) + side-by-side data / noise / S-N / PSF-profile comparison plots.frame-products; no source edits here).Detailed implementation plan
Work classification
Workspace (scripts + analysis; no library source edits). Autonomy:
safeeffective (--autolaunch 2026-07-09; plan approved in-session by the human before launch). The Brain Feature Agent suggested re-homing the prompt asresearch/; the human explicitly classified ittestat intake — kept, dissent recorded here.Affected repositories
scripts/reduce_slacs1430.py+ parity-fit script)scripts/scratch/)Branch survey (2026-07-09)
output/,prototypes/b1938_lens_fit.py— keck-ao task's parked analysis)james.bib)Suggested branch:
feature/slacs1430-acs-parity(created only at ship time)Claim handling: PyAutoReduce's worktree is held by
frame-products(library-dev). This task follows thekeck-ao-acceptance-checkspattern: analysis runs on the PyAutoReduce main checkout with no worktree claim — reductions write only to gitignoredscripts/output/; the script commit/PR is deferred until the claim releases (or ships via coordination). Registered inactive.mdwithworktree: none.Implementation steps
docs/design/hst_acs_pipeline.md(validation section). Plot the legacy dataset (data/noise/PSF + extra-galaxy mask overlay) via the assistant'sal_prepare_imaging_dataprocedure; record pixel scale, shape, PSF stamp sizes. Postdataset.png+ the extra-galaxy/artefact review to this issue (the real-data gate checkpoint — treatment is pinned by the legacy dataset's own mask files, flagged here for human review rather than blocking).TargetSpec(name="slacs1430+4105", ra=..., dec=..., proposal_ids=(...,))→reduce_target(...)with~/venv/PyAuto/bin/python, mirroringreduce_slacs0008.py(cache underscripts/cache/, output underscripts/output/slacs1430+4105/). Writeparity_summary.json(registered_ratios,correlated_noise_factor, PSF diagnostics).psf.fits/psf_full.fitsvs new), grid/orientation/centering checks. Plots via assistant scratch; key figures attached to this issue.positions.json, 3.5" circular mask (per legacyinfo.json), identical extra-galaxy handling. Nautilus, identical priors/settings. Compare θ_E, q, PA, source properties, residual maps, log-evidence; reference literature values above.reduce_slacs1430.py+ parity-fit script committed tofeature/slacs1430-acs-parityand PR opened behind the four-leg autonomous-ship gate once the PyAutoReduce claim allows (else parked uncommitted like keck-ao, with resume notes here). Calibration-log row appended at PR-open/park. Methodology notes → PJ011646 WFC3 follow-up prompt.Key files
PyAutoReduce/scripts/reduce_slacs0008.py— template: production reduction +registered_ratiosparity vs a legacy dataset in the same/mnt/c/.../subhalo/dataset/slacs/treePyAutoReduce/autoreduce/validation.py—registered_ratiossub-pixel registration comparisonPyAutoReduce/docs/design/hst_acs_pipeline.md— authoritative ACS stage design + validation bar/mnt/c/Users/Jammy/Science/subhalo/dataset/slacs/slacs1430+4105/— legacy dataset (data, noise_map, psf, psf_full, positions.json, extra_galaxies_centres.json, mask_extra_galaxies.fits, info.json)autolens_assistant/skills/al_prepare_imaging_data.md,al_build_imaging_model.md— assistant procedures driving phases 0 and 3Original Prompt
Click to expand starting prompt
PyAutoReduce validation: slacs1430+4105 ACS reduction vs trusted legacy dataset
Type: test
Target: workspaces
Repos:
Difficulty: medium
Autonomy: safe
Priority: normal
Status: formalised
Validate PyAutoReduce against a trusted legacy reduction: reduce the SLACS lens slacs1430+4105 from archival HST/ACS data using PyAutoReduce, then compare the resulting modeling-ready dataset (data, noise map, PSF) to the long-used collaborator-provided dataset at /mnt/c/Users/Jammy/Science/subhalo/dataset/slacs/slacs1430+4105 (used for many years in subhalo work). Comparison is a science project driven through autolens_assistant: image/noise/PSF residuals plus lens-model parity fits on both datasets.