Skip to content

Commit b47bb6f

Browse files
authored
Merge pull request #298 from PyAutoLabs/claude/cti-ci-standardisation-phase-5-s52rxw
mind: ship phase5-smoke-ordered-trap-scripts → complete
2 parents 6063156 + d26ce43 commit b47bb6f

6 files changed

Lines changed: 147 additions & 69 deletions

File tree

active.md

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,5 @@
11
# Active Tasks
22

3-
## phase5-smoke-ordered-trap-scripts
4-
- issue: https://github.com/PyAutoLabs/autocti_workspace/issues/27
5-
- issued: 2026-08-24
6-
- prompt: active/phase5_smoke_reenable_ordered_trap_scripts.md
7-
- status: workspace-dev
8-
- worktree: ~/Code/PyAutoLabs-wt/phase5-smoke-ordered-trap-scripts
9-
- repos:
10-
- autocti_workspace: feature/phase5-smoke-ordered-trap-scripts
11-
- summary: |
12-
CTI epic Phase 5. PR autocti_workspace#28 open, CI running. The prompt's
13-
premise was wrong: autocti_workspace has no smoke_tests.txt and never had one
14-
(no .github/, no config/build/, nothing deleted in history), so this creates
15-
the repo's first CI rather than re-enabling anything — which also closes
16-
pre-existing drift, since PyAutoHeart/config/repos.yaml already lists this
17-
repo under `workspaces` with required checks "Smoke Tests" + "Navigator
18-
Check". All nine modeling/start_here.py-class scripts verified running
19-
bypassed against PyAutoFit 438f56fac; a curated three promoted (132s cold)
20-
rather than all nine (~522s), per the repos' no-mass-promote convention.
21-
Navigator Check deliberately left out of scope.
22-
233
## transformed-message-factor-gradient-unpack
244
- issue: https://github.com/PyAutoLabs/PyAutoFit/issues/1501 (issued 2026-08-19)
255
- issued: 2026-08-19

active/phase5_smoke_reenable_ordered_trap_scripts.md

Lines changed: 0 additions & 25 deletions
This file was deleted.
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
- completed: 2026-08-24
2+
- issue: https://github.com/PyAutoLabs/autocti_workspace/issues/27
3+
- prs:
4+
- https://github.com/PyAutoLabs/autocti_workspace/pull/28 (merged)
5+
- summary: |
6+
CTI resurrection epic **Phase 5**. Smoke coverage for the ordered-trap
7+
`modeling/start_here.py`-class scripts, unblocked by PyAutoFit#1520
8+
(`438f56fac`). All nine verified running bypassed; a curated three promoted.
9+
This is autocti_workspace's FIRST CI.
10+
11+
## The prompt's premise did not hold
12+
13+
The prompt said to "add them back to the workspace `smoke_tests.txt`". **There is
14+
no `smoke_tests.txt`, and never was.** autocti_workspace has no `.github/`
15+
directory and no `config/build/`; `git ls-files` finds neither, and
16+
`git log --diff-filter=D` shows nothing was ever deleted. So the coverage had to
17+
be *created*, not re-enabled — which is why the task was larger than its
18+
"add lines to a file" sizing suggested.
19+
20+
That also surfaced pre-existing drift worth knowing about:
21+
`PyAutoHeart/config/repos.yaml` lists autocti_workspace under `workspaces`,
22+
whose required checks are `["Smoke Tests", "Navigator Check"]`. Neither workflow
23+
existed, so that gate had been vacuous. This PR closes the smoke half.
24+
(Heart's *local* smoke runner table — the `smoke:` block in the same file — has
25+
no autocti entry either, and its `import_names` map has no PyAutoCTI. Untouched
26+
here; a genuine follow-up.)
27+
28+
## Verification — all nine run bypassed
29+
30+
Stack built from source `main` with PyAutoFit at `438f56fac` (which is `main`
31+
HEAD, so "a PyAutoFit main containing that SHA" is satisfied by definition),
32+
autonerves/autoarray 2026.8.17.1, autocti 2024.11.13.2, arcticpy 2.6.
33+
34+
`output/` cleared between EVERY run. This matters: a bypassed fit calls
35+
`paths.completed()`, so re-running with the same `unique_tag` replays the old
36+
result via `result_via_completed_fit` and looks exactly like "the fix didn't
37+
work".
38+
39+
| script | time | promoted |
40+
|---|---|---|
41+
| `dataset_1d/modeling/start_here.py` | 13 s | yes |
42+
| `dataset_1d/modeling/customize/priors.py` | 12 s | no |
43+
| `dataset_1d/modeling/features/species_x3.py` | 18 s | yes |
44+
| `dataset_1d/modeling/features/visualize_full.py` | 20 s | no |
45+
| `imaging_ci/modeling/start_here.py` | 96 s | yes |
46+
| `imaging_ci/modeling/features/cosmic_rays.py` | 120 s | no |
47+
| `imaging_ci/modeling/features/non_uniform.py` | 53 s | no |
48+
| `imaging_ci/modeling/features/serial_cti.py` | 94 s | no |
49+
| `imaging_ci/modeling/features/visualize_full.py` | 96 s | no |
50+
51+
All nine **pass**. The fix is directly visible in the output:
52+
`dataset_1d/modeling/start_here.py` builds two `TrapInstantCapture` models with
53+
identical priors under `trap_0.release_timescale < trap_1.release_timescale`,
54+
and resolves them to `0.14` and `1.68` — distinct and correctly ordered — rather
55+
than tying at the prior medians and hard-failing the bypass.
56+
57+
## Why three, not nine
58+
59+
Every CTI repo's AGENTS.md says to keep the smoke list a small curated subset
60+
and not to mass-promote. Measured the existing CTI smoke suite
61+
(autocti_workspace_test) for a like-for-like baseline: **20 s** total
62+
(8 + 5 + 7). All nine here cost **~522 s** — a ~26x jump on the CTI smoke bill.
63+
64+
Promoted three, covering both dataset geometries and the multi-species
65+
ordered-trap case — the surface the bypass fix actually unblocked. **132 s
66+
measured cold**, with `dataset/` wiped to its committed state so every dataset
67+
is simulated first (datasets are gitignored and auto-simulated by the scripts'
68+
`should_simulate` guards, so a fresh CI checkout always pays that).
69+
70+
CI confirmed the estimate: the runner step took **129 s** on Python 3.12 and
71+
~123 s on 3.13. Both legs green.
72+
73+
## What was added
74+
75+
- `.github/workflows/smoke_tests.yml` — thin caller for Heart's reusable smoke
76+
workflow, chain `PyAutoNerves PyAutoFit PyAutoArray PyAutoCTI`, `arcticpy: true`.
77+
- `.github/scripts/smoke_install.sh` — install epilogue carrying **no** arcticpy
78+
recipe; the same-day arcticpy-install-standardisation task made Heart's
79+
`install-arcticpy` action its single owner, and Heart runs it before this
80+
epilogue. This repo never had a copy to delete.
81+
- `.github/scripts/run_smoke.py` — thin shim over PyAutoHands' `run_python.py`,
82+
mirroring autocti_workspace_test's. Holds no logic, so it needs none of the
83+
sweeps the old 198-line copies did.
84+
- `config/build/profile_smoke.yaml``PYAUTO_TEST_MODE=2` and cache dirs.
85+
Passed Heart's strict env-profile validator first time.
86+
- `smoke_tests.txt` — the curated three.
87+
- `AGENTS.md` — a "Smoke tests (CI)" section carrying the full nine-script
88+
timing table, so the next person promoting a script starts from numbers.
89+
90+
## Left undone, deliberately
91+
92+
**Navigator Check.** Heart lists it as a required check for this repo alongside
93+
Smoke Tests and it is still absent. Out of scope for an ordered-trap smoke task;
94+
adding a second unrelated workflow would have widened the PR. Worth a follow-up
95+
prompt.
96+
97+
## Still open for a human
98+
99+
autocti_workspace_test's `## Conventions` says integration scripts are
100+
"single-trap" with no stated reason. The reason was almost certainly the bypass
101+
crash, which is now fixed — so either drop it and exercise multi-trap ordered
102+
models (better coverage, since ordered traps are the realistic CTI case), or
103+
write the real reason in. Deliberately not decided here.
104+
105+
## Original prompt
106+
107+
# Re-enable autocti_workspace smoke coverage of the ordered-trap modeling scripts
108+
109+
Type: test
110+
Target: autocti_workspace
111+
Repos:
112+
- @autocti_workspace
113+
Difficulty: medium
114+
Autonomy: supervised
115+
Priority: normal
116+
Status: formalised
117+
Filed: 2026-08-24
118+
Issued: 2026-08-24
119+
Epic: CTI resurrection — Phase 5
120+
121+
Re-homed from `draft/test/autofit/` by the filing session. Intake set
122+
`Target: PyAutoFit` and listed PyAutoFit as an affected repo — wrong on both:
123+
the PyAutoFit fix has already merged (438f56fac), so this task changes no
124+
library source and only needs a PyAutoFit main that contains it. Difficulty
125+
lowered from `large`: the work is verify-scripts-run, add lines to
126+
`smoke_tests.txt`, and time them against the gate cap — sized by script count,
127+
which is not yet known, hence `medium` rather than `small`.
128+
129+
Re-enable @autocti_workspace smoke coverage of the modeling/start_here.py-class scripts, unblocked by PyAutoFit#1520 (merged 438f56fac). Those scripts were un-smokeable at PYAUTO_TEST_MODE=2 because ordered trap models tie at the prior medians and the bypass hard-failed; the bypass now selects a deterministic assertion-valid point, at TEST_MODE 2 and 3. This is CTI resurrection epic Phase 5. Work: confirm the scripts now run bypassed against a PyAutoFit main that includes 438f56fac, add them back to the workspace smoke_tests.txt, and check timings against the smoke gate cap before adding them.
130+
131+
<!-- formalised by the Intake (Conception) Agent on 2026-08-24 from user-intake -->

complete/index.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Token-light navigation over the finished-work records (schema:
66
only then grep a dated bucket. Curators: edit the band between the CURATED
77
markers; everything below GENERATED is rebuilt.
88

9-
1118 records across 7 buckets.
9+
1119 records across 7 buckets.
1010

1111
<!-- CURATED:START -->
1212
## Highlights
@@ -149,6 +149,7 @@ _(curate hard-won records here — survives regeneration.)_
149149
- [paper-management-pipeline](2026/08/paper-management-pipeline.md) — auto-closed on merge
150150
- [per-parameter-step-scaling](2026/08/per-parameter-step-scaling.md)
151151
- [persist-smoke-environments](2026/08/persist-smoke-environments.md) — Made smoke dependency environments durable and isolated per library and Python version, with version-handshake…
152+
- [phase5-smoke-ordered-trap-scripts](2026/08/phase5-smoke-ordered-trap-scripts.md)
152153
- [pix-prodigy-gpu-compat](2026/08/pix-prodigy-gpu-compat.md)
153154
- [pixelization-eager-jit-divergence](2026/08/pixelization-eager-jit-divergence.md)
154155
- [plot-array-stale-kwargs](2026/08/plot-array-stale-kwargs.md)

dashboard.html

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@
142142
</head>
143143
<body>
144144
<header class="hero"><span class="orb"><svg class="mark" viewBox="0 0 48 48" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="24" cy="24" r="20.4"/><path d="M20.2,37.6 L20.2,33.6 C20.2,32.4 19.4,31.6 18.4,30.8 C16.8,29.6 15.8,28.2 15.6,26.6 C15.5,25.6 14.9,25.2 13.9,24.9 C12.6,24.5 12.3,23.7 13.0,22.7 C13.8,21.6 14.5,20.6 14.6,19.4 C15.0,15.4 18.2,12.2 22.4,11.8 C27.2,11.3 31.6,14.6 32.3,19.2 C32.8,22.4 31.6,25.0 30.6,27.0 C29.9,28.4 29.6,29.6 29.6,31.2 L29.6,37.6"/><circle cx="24.6" cy="19.6" r="4.4"/><path d="M22.5,19.7 L24.0,21.3 L26.8,18.1"/><path d="M34.2,16.5 L38.8,16.5 M35.2,21.0 L39.4,21.0 M33.6,25.5 L37.2,25.5"/><g fill="currentColor" stroke="none"><circle cx="40.1" cy="16.5" r="1.4"/><circle cx="40.7" cy="21.0" r="1.4"/><circle cx="38.5" cy="25.5" r="1.4"/></g></svg></span><h1>PyAuto<b>Mind</b><span class="kind">Dashboard</span></h1><div class="rule"></div><p class="tag">Intent. Priority. Flow.</p></header><p class="lede">Every task the Mind is holding. Tap a task's 📋 and its <code>/start_dev</code> command is on your clipboard — paste it into a Claude Code chat to route Claude straight to that task. <a href="#recent">Recent</a> is the same work by date — what has been happening rather than what to do next.</p>
145-
<ul class="stats"><li><b>2</b><span>In flight</span></li><li><b>3</b><span>Parked</span></li><li><b>5</b><span>Planned</span></li><li><b>139</b><span>Backlog</span></li></ul>
145+
<ul class="stats"><li><b>1</b><span>In flight</span></li><li><b>3</b><span>Parked</span></li><li><b>5</b><span>Planned</span></li><li><b>139</b><span>Backlog</span></li></ul>
146146
<div class="fresh"><p><b>Last updated 2026-08-24.</b> This page is generated from <code>active/</code>, <code>draft/</code> and the registry files, so it is only as current as they are. <code>dashboard_refresh.yml</code> re-renders it on every push to <code>main</code> — that heals a stale page, but not a stale prompt: a task that shipped without its prompt advancing to <code>complete/</code> keeps rendering here as pickable backlog. Reconciling those is the refresh below.</p>
147147
<div class="task"><button class="copy" data-cmd="Bring the PyAutoMind dashboard up to date. Work in the PyAutoMind checkout:
148148
@@ -192,7 +192,6 @@ <h3>Quick wins <span class="facets">(small enough, and safe enough to run unatte
192192
<h2>In flight <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/active.md">markdown version</a></h2>
193193
<p class="muted">Issued — each has an open GitHub issue and usually a branch.</p>
194194
<div class="task"><button class="copy" data-cmd="/start_dev active/16_transformed_message_factor_gradient_unpack.md" aria-label="Copy the Claude command">📋</button><p><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/active/16_transformed_message_factor_gradient_unpack.md"><code>@PyAutoFit</code> <code>TransformedMessage.factor_gradient</code> crashes on first call</a><a href="https://github.com/PyAutoLabs/PyAutoFit/issues/1501">issue #1501</a><span class="facets"> — issued 2026-08-19</span><span class="facets">HOLD — do not start dev. Fix-or-delete hangs off the PyAutoFit#1498 logpdf-contract</span></p></div>
195-
<div class="task"><button class="copy" data-cmd="/start_dev active/phase5_smoke_reenable_ordered_trap_scripts.md" aria-label="Copy the Claude command">📋</button><p><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/active/phase5_smoke_reenable_ordered_trap_scripts.md">Re-enable autocti_workspace smoke coverage of the ordered-trap modeling scripts</a><a href="https://github.com/PyAutoLabs/autocti_workspace/issues/27">issue #27</a><span class="facets"> — issued 2026-08-24</span><span class="facets">workspace-dev</span></p></div>
196195
<h2>Parked <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/parked.md">markdown version</a></h2>
197196
<details>
198197
<summary>3 task(s)</summary>
@@ -374,12 +373,6 @@ <h2>Backlog <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/tree
374373
<td class="pick"><button class="copy" data-cmd="/start_dev draft/maintenance/pyautoheart/weekly_smoke_timings_artifact_naming.md" aria-label="Copy the Claude command">📋</button></td>
375374
</tr>
376375
<tr>
377-
<td class="when">2026-08-24</td>
378-
<td class="what">issued</td>
379-
<td><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/active/phase5_smoke_reenable_ordered_trap_scripts.md">Re-enable autocti_workspace smoke coverage of the ordered-trap…</a></td>
380-
<td class="pick"><button class="copy" data-cmd="/start_dev active/phase5_smoke_reenable_ordered_trap_scripts.md" aria-label="Copy the Claude command">📋</button></td>
381-
</tr>
382-
<tr>
383376
<td class="when">2026-08-23</td>
384377
<td class="what">filed</td>
385378
<td><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/draft/maintenance/workspaces/pynufft_removal_downstream_residue.md">pynufft removal: unswept downstream residue (1 hard break + stale…</a></td>
@@ -415,7 +408,7 @@ <h2>Backlog <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/tree
415408
<td><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/draft/bug/autoarray/reconstruction_noise_map_solver_mismatch.md">The reconstruction noise map describes a different estimator than the…</a></td>
416409
<td class="pick"><button class="copy" data-cmd="/start_dev draft/bug/autoarray/reconstruction_noise_map_solver_mismatch.md" aria-label="Copy the Claude command">📋</button></td>
417410
</tr>
418-
<tr hidden>
411+
<tr>
419412
<td class="when">2026-08-22</td>
420413
<td class="what">filed</td>
421414
<td><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/draft/bug/pyautolens/point_source_json_datasets_record_no_regime.md">Point-source JSON datasets record no resolution regime</a></td>
@@ -655,6 +648,12 @@ <h2>Backlog <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/tree
655648
<td><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/draft/triage/nightly_release_blocked_eight_nights.md">Nightly release has been blocked 8 nights running — triage the streak</a></td>
656649
<td class="pick"><button class="copy" data-cmd="/start_dev draft/triage/nightly_release_blocked_eight_nights.md" aria-label="Copy the Claude command">📋</button></td>
657650
</tr>
651+
<tr hidden>
652+
<td class="when">2026-08-04</td>
653+
<td class="what">filed</td>
654+
<td><a href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/draft/docs/howtolens/ch4_mask_overlay_never_drawn.md">HowToLens ch4 tutorial 3: mask overlay is never actually drawn</a></td>
655+
<td class="pick"><button class="copy" data-cmd="/start_dev draft/docs/howtolens/ch4_mask_overlay_never_drawn.md" aria-label="Copy the Claude command">📋</button></td>
656+
</tr>
658657
</table>
659658
<button class="more" data-page="10">… 10 more (40 left)</button>
660659
<h2>Epics <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/epics.md">markdown version</a></h2>

0 commit comments

Comments
 (0)