Skip to content

Commit f311aef

Browse files
Jammy2211claude
authored andcommitted
prompt: ship heart-state-clobber (#78) → complete (PR PyAutoHeart#79 merged)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 91deb0f commit f311aef

5 files changed

Lines changed: 103 additions & 10 deletions

File tree

active.md

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,20 +61,11 @@
6161

6262
## build-chain-umbrella
6363
- issue: https://github.com/PyAutoLabs/PyAutoBuild/issues/155
64-
- status: coordinating — epic over 6 phases; Phase 0a (heart-state-clobber) in flight, Phase 0b blocked (PyAutoBrain claimed ×2), Phases 1-5 issued sequentially as predecessors ship
64+
- status: coordinating — epic over 6 phases; Phase 0a MERGED (PyAutoHeart#79, 2026-07-16), Phase 0b blocked (PyAutoBrain claimed ×2), Phase 1 (pre_build audit) next
6565
- prompt: active/build_chain_umbrella.md (full decomposition)
6666
- autonomy: supervised
6767
- repos:
6868

69-
## heart-state-clobber
70-
- issue: https://github.com/PyAutoLabs/PyAutoHeart/issues/78
71-
- status: library-shipped, awaiting-merge (corrective-PR exception for Heart RED, human-authorized 2026-07-16)
72-
- library-pr: https://github.com/PyAutoLabs/PyAutoHeart/pull/79
73-
- worktree: ~/Code/PyAutoLabs-wt/heart-state-clobber
74-
- autonomy: supervised
75-
- parent: build-chain-umbrella (Phase 0a)
76-
- repos:
77-
- PyAutoHeart: feature/heart-state-clobber
7869

7970
## slope-hierarchy
8071
- issue: https://github.com/Jammy2211/slope_hierarchy/issues/1

active/coolest_standard_support.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# COOLEST standard support throughout PyAutoGalaxy and PyAutoLens
2+
3+
Type: feature
4+
Target: autolens
5+
Difficulty: large
6+
Autonomy: supervised
7+
Priority: high
8+
Status: formalised
9+
10+
## Context
11+
12+
Preparation for modeling the ~18,000 Euclid DR1 lenses: PyAutoLens results must
13+
be exchangeable with other lens-modeling codes (lenstronomy, herculens, Glee)
14+
via the COOLEST standard (https://github.com/aymgal/COOLEST).
15+
16+
Original request (verbatim):
17+
18+
> read this SLACK chat about the COOLEST standards, implement them throughout
19+
> PyAutoGalaxy and PyAutoLens, and then as a follow up try and make it so for
20+
> the power-law, which you will add a PowerLawIntermediate profile as
21+
> described, you get a direct link typing herculens's power-law to this one
22+
> via Coolest
23+
24+
Key points from the Slack thread (James Nightingale, Alessandro Sonnenfeld,
25+
Aymeric Galan):
26+
27+
- James's original plan: define every light/mass profile so that for input
28+
ndarrays of (y,x) coordinates it outputs deflections, convergence and the
29+
other COOLEST quantities; align PyAutoLens angle conventions with COOLEST;
30+
verify parity with lenstronomy/herculens on a Power Law + Shear (+ Sersic
31+
lens light and source) on one Euclid lens, including image orientation on
32+
load (no vertical flips).
33+
- Sonnenfeld + Galan both advised: do NOT change PyAutoLens internals; keep
34+
sampling on (e1, e2) with a (q, PA) wrapper, and write a conversion step
35+
(PyAutoLens ↔ COOLEST wrapper) instead. lenstronomy/herculens also let users
36+
define coordinates freely, so they too need a conversion step — internal
37+
changes would not by themselves buy parity.
38+
- The intermediate-axis-ratio question: autolens's Einstein radius and
39+
axis-ratio come out different from COOLEST (factors of sqrt(q)); James is
40+
considering making the mass profiles intermediate-axis internally, which is
41+
separable from the COOLEST wrapper work (handled in the follow-up prompt).
42+
- Einstein-radius definition must be unambiguous: Sonnenfeld assumes
43+
(A/pi)^(1/2) with A the area enclosing mean kappa=1; the Euclid DR1
44+
catalogue uses the area within the tangential critical curve (includes
45+
shear's shaping). The export must state its definition explicitly.
46+
- Export scope: analytic profile parameters only; deflection/convergence maps
47+
stay in the distributed .fits catalogue (optionally exportable later).
48+
- Sonnenfeld's COOLEST .json lens models for validation:
49+
https://gitlab.euclid-sgs.uk/asonnenf/goldenlenses/-/tree/e0ff0fbab2aa4c8bc19b4c18d7bcfe24bc367795/paper1/lens_models
50+
- James's descope in-thread: "focus on getting a wrapper from PyAutoLens to
51+
Coolest". The instruction above ("implement them throughout") supersedes but
52+
the plan must surface the wrapper-vs-internal-change scope decision for
53+
approval.
54+
55+
## Scope
56+
57+
- @PyAutoGalaxy: COOLEST conversion layer for light and mass profiles —
58+
bidirectional mapping of profile parameterisations (ellipticity (e1,e2) ↔
59+
(q, PA) with COOLEST position-angle convention, sqrt(q) intermediate-axis
60+
factors, angle/orientation conventions), covering the profiles COOLEST
61+
defines (Sersic, shear, SIE/PowerLaw, NFW, ...).
62+
- @PyAutoLens: COOLEST .json import/export of full lens models (lens light +
63+
mass + source), reading/writing the COOLEST template system; explicit,
64+
documented Einstein-radius definition on export.
65+
- Round-trip tests: import Sonnenfeld's golden-lens .json models, re-export,
66+
verify parameter fidelity; unit tests for every profile mapping including
67+
the sqrt(q) Einstein-radius rescaling.
68+
- Keep sampling and all internal model composition on (e1, e2) — the COOLEST
69+
layer is a conversion step at the model I/O boundary, not an internal
70+
convention change (per Sonnenfeld/Galan consensus; deviation from this needs
71+
explicit approval in the plan).
72+
73+
Follow-up prompt (separate task): feature/autolens/coolest_powerlaw_herculens_parity.md
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Retire the legacy PyAutoMind complete.md ledger in favour of the dated complete/ archive
2+
3+
Type: refactor
4+
Target: PyAutoMind
5+
Repos:
6+
- PyAutoBrain
7+
- PyAutoMind
8+
Difficulty: medium
9+
Autonomy: supervised
10+
Priority: normal
11+
Status: formalised
12+
13+
Retire the legacy PyAutoMind complete.md ledger in favour of the dated complete/ archive. User report (verbatim): 'The design of this seems to work very well, including the balance of tracking open issues, completed, etc. The only thing I am wary of when I look through it is that complete.md is getting huge, currently 4000 lines and counting. Is this something that will token burn or hurt context of an AI going forward? Should it link more concisely to the complete folder which now has date tracking?' Verified: complete.md is now 6,274 lines; the complete/ archive already exists (579 records, dated buckets, generated token-light index.md via lifecycle.py) and intake.md already calls complete.md 'legacy ... until retired'. Remaining work: repoint ship_library and ship_workspace in PyAutoBrain to write dated records into complete/ instead of appending to complete.md, repoint the memory faculty and intake reconcile to the archive, then migrate or freeze the legacy file so nothing grows it further.
14+
15+
<!-- formalised by the Intake (Conception) Agent on 2026-07-16 from user-intake -->

complete.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## heart-state-clobber
2+
- issue: https://github.com/PyAutoLabs/PyAutoHeart/issues/78
3+
- completed: 2026-07-16
4+
- library-pr: https://github.com/PyAutoLabs/PyAutoHeart/pull/79 (merged)
5+
- summary: PyAutoHeart test suite clobbered live ~/.pyauto-heart state; run() made side-effect-free in test_run + version_skew (sibling found by empirical sweep), persist moved to main() (tick unchanged), suite-wide HEART_STATE_DIR conftest sandbox + regression tests. Build-chain umbrella Phase 0a (epic PyAutoBuild#155). Shipped under human-authorized corrective-PR exception (Heart RED).
6+
17
## pyautolens-assistant-joss-paper (JOSS paper #2 scaffolded next to the software — SHIPPED)
28
- issue: https://github.com/PyAutoLabs/autolens_assistant/issues/69 (CLOSED)
39
- completed: 2026-07-15

active/test_suite_clobbers_live_heart_state.md renamed to complete/2026/07/heart-state-clobber.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
## heart-state-clobber
2+
- issue: https://github.com/PyAutoLabs/PyAutoHeart/issues/78
3+
- completed: 2026-07-16
4+
- library-pr: https://github.com/PyAutoLabs/PyAutoHeart/pull/79 (merged)
5+
- summary: PyAutoHeart test suite clobbered live ~/.pyauto-heart state; run() made side-effect-free in test_run + version_skew (sibling found by empirical sweep), persist moved to main() (tick unchanged), suite-wide HEART_STATE_DIR conftest sandbox + regression tests. Build-chain umbrella Phase 0a (epic PyAutoBuild#155). Shipped under human-authorized corrective-PR exception (Heart RED).
6+
7+
## Original prompt
8+
19
# PyAutoHeart's test suite writes into the user's live ~/.pyauto-heart state
210

311
Type: bug

0 commit comments

Comments
 (0)