Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 0 additions & 20 deletions active.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,5 @@
# Active Tasks

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

## transformed-message-factor-gradient-unpack
- issue: https://github.com/PyAutoLabs/PyAutoFit/issues/1501 (issued 2026-08-19)
- issued: 2026-08-19
Expand Down
25 changes: 0 additions & 25 deletions active/phase5_smoke_reenable_ordered_trap_scripts.md

This file was deleted.

131 changes: 131 additions & 0 deletions complete/2026/08/phase5-smoke-ordered-trap-scripts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
- completed: 2026-08-24
- issue: https://github.com/PyAutoLabs/autocti_workspace/issues/27
- prs:
- https://github.com/PyAutoLabs/autocti_workspace/pull/28 (merged)
- summary: |
CTI resurrection epic **Phase 5**. Smoke coverage for the ordered-trap
`modeling/start_here.py`-class scripts, unblocked by PyAutoFit#1520
(`438f56fac`). All nine verified running bypassed; a curated three promoted.
This is autocti_workspace's FIRST CI.

## The prompt's premise did not hold

The prompt said to "add them back to the workspace `smoke_tests.txt`". **There is
no `smoke_tests.txt`, and never was.** autocti_workspace has no `.github/`
directory and no `config/build/`; `git ls-files` finds neither, and
`git log --diff-filter=D` shows nothing was ever deleted. So the coverage had to
be *created*, not re-enabled — which is why the task was larger than its
"add lines to a file" sizing suggested.

That also surfaced pre-existing drift worth knowing about:
`PyAutoHeart/config/repos.yaml` lists autocti_workspace under `workspaces`,
whose required checks are `["Smoke Tests", "Navigator Check"]`. Neither workflow
existed, so that gate had been vacuous. This PR closes the smoke half.
(Heart's *local* smoke runner table — the `smoke:` block in the same file — has
no autocti entry either, and its `import_names` map has no PyAutoCTI. Untouched
here; a genuine follow-up.)

## Verification — all nine run bypassed

Stack built from source `main` with PyAutoFit at `438f56fac` (which is `main`
HEAD, so "a PyAutoFit main containing that SHA" is satisfied by definition),
autonerves/autoarray 2026.8.17.1, autocti 2024.11.13.2, arcticpy 2.6.

`output/` cleared between EVERY run. This matters: a bypassed fit calls
`paths.completed()`, so re-running with the same `unique_tag` replays the old
result via `result_via_completed_fit` and looks exactly like "the fix didn't
work".

| script | time | promoted |
|---|---|---|
| `dataset_1d/modeling/start_here.py` | 13 s | yes |
| `dataset_1d/modeling/customize/priors.py` | 12 s | no |
| `dataset_1d/modeling/features/species_x3.py` | 18 s | yes |
| `dataset_1d/modeling/features/visualize_full.py` | 20 s | no |
| `imaging_ci/modeling/start_here.py` | 96 s | yes |
| `imaging_ci/modeling/features/cosmic_rays.py` | 120 s | no |
| `imaging_ci/modeling/features/non_uniform.py` | 53 s | no |
| `imaging_ci/modeling/features/serial_cti.py` | 94 s | no |
| `imaging_ci/modeling/features/visualize_full.py` | 96 s | no |

All nine **pass**. The fix is directly visible in the output:
`dataset_1d/modeling/start_here.py` builds two `TrapInstantCapture` models with
identical priors under `trap_0.release_timescale < trap_1.release_timescale`,
and resolves them to `0.14` and `1.68` — distinct and correctly ordered — rather
than tying at the prior medians and hard-failing the bypass.

## Why three, not nine

Every CTI repo's AGENTS.md says to keep the smoke list a small curated subset
and not to mass-promote. Measured the existing CTI smoke suite
(autocti_workspace_test) for a like-for-like baseline: **20 s** total
(8 + 5 + 7). All nine here cost **~522 s** — a ~26x jump on the CTI smoke bill.

Promoted three, covering both dataset geometries and the multi-species
ordered-trap case — the surface the bypass fix actually unblocked. **132 s
measured cold**, with `dataset/` wiped to its committed state so every dataset
is simulated first (datasets are gitignored and auto-simulated by the scripts'
`should_simulate` guards, so a fresh CI checkout always pays that).

CI confirmed the estimate: the runner step took **129 s** on Python 3.12 and
~123 s on 3.13. Both legs green.

## What was added

- `.github/workflows/smoke_tests.yml` — thin caller for Heart's reusable smoke
workflow, chain `PyAutoNerves PyAutoFit PyAutoArray PyAutoCTI`, `arcticpy: true`.
- `.github/scripts/smoke_install.sh` — install epilogue carrying **no** arcticpy
recipe; the same-day arcticpy-install-standardisation task made Heart's
`install-arcticpy` action its single owner, and Heart runs it before this
epilogue. This repo never had a copy to delete.
- `.github/scripts/run_smoke.py` — thin shim over PyAutoHands' `run_python.py`,
mirroring autocti_workspace_test's. Holds no logic, so it needs none of the
sweeps the old 198-line copies did.
- `config/build/profile_smoke.yaml` — `PYAUTO_TEST_MODE=2` and cache dirs.
Passed Heart's strict env-profile validator first time.
- `smoke_tests.txt` — the curated three.
- `AGENTS.md` — a "Smoke tests (CI)" section carrying the full nine-script
timing table, so the next person promoting a script starts from numbers.

## Left undone, deliberately

**Navigator Check.** Heart lists it as a required check for this repo alongside
Smoke Tests and it is still absent. Out of scope for an ordered-trap smoke task;
adding a second unrelated workflow would have widened the PR. Worth a follow-up
prompt.

## Still open for a human

autocti_workspace_test's `## Conventions` says integration scripts are
"single-trap" with no stated reason. The reason was almost certainly the bypass
crash, which is now fixed — so either drop it and exercise multi-trap ordered
models (better coverage, since ordered traps are the realistic CTI case), or
write the real reason in. Deliberately not decided here.

## Original prompt

# Re-enable autocti_workspace smoke coverage of the ordered-trap modeling scripts

Type: test
Target: autocti_workspace
Repos:
- @autocti_workspace
Difficulty: medium
Autonomy: supervised
Priority: normal
Status: formalised
Filed: 2026-08-24
Issued: 2026-08-24
Epic: CTI resurrection — Phase 5

Re-homed from `draft/test/autofit/` by the filing session. Intake set
`Target: PyAutoFit` and listed PyAutoFit as an affected repo — wrong on both:
the PyAutoFit fix has already merged (438f56fac), so this task changes no
library source and only needs a PyAutoFit main that contains it. Difficulty
lowered from `large`: the work is verify-scripts-run, add lines to
`smoke_tests.txt`, and time them against the gate cap — sized by script count,
which is not yet known, hence `medium` rather than `small`.

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.

<!-- formalised by the Intake (Conception) Agent on 2026-08-24 from user-intake -->
3 changes: 2 additions & 1 deletion complete/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Token-light navigation over the finished-work records (schema:
only then grep a dated bucket. Curators: edit the band between the CURATED
markers; everything below GENERATED is rebuilt.

1118 records across 7 buckets.
1119 records across 7 buckets.

<!-- CURATED:START -->
## Highlights
Expand Down Expand Up @@ -149,6 +149,7 @@ _(curate hard-won records here — survives regeneration.)_
- [paper-management-pipeline](2026/08/paper-management-pipeline.md) — auto-closed on merge
- [per-parameter-step-scaling](2026/08/per-parameter-step-scaling.md)
- [persist-smoke-environments](2026/08/persist-smoke-environments.md) — Made smoke dependency environments durable and isolated per library and Python version, with version-handshake…
- [phase5-smoke-ordered-trap-scripts](2026/08/phase5-smoke-ordered-trap-scripts.md)
- [pix-prodigy-gpu-compat](2026/08/pix-prodigy-gpu-compat.md)
- [pixelization-eager-jit-divergence](2026/08/pixelization-eager-jit-divergence.md)
- [plot-array-stale-kwargs](2026/08/plot-array-stale-kwargs.md)
Expand Down
17 changes: 8 additions & 9 deletions dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@
</head>
<body>
<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>
<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>
<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>
<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>
<div class="task"><button class="copy" data-cmd="Bring the PyAutoMind dashboard up to date. Work in the PyAutoMind checkout:

Expand Down Expand Up @@ -192,7 +192,6 @@ <h3>Quick wins <span class="facets">(small enough, and safe enough to run unatte
<h2>In flight <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/active.md">markdown version</a></h2>
<p class="muted">Issued — each has an open GitHub issue and usually a branch.</p>
<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>
<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>
<h2>Parked <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/parked.md">markdown version</a></h2>
<details>
<summary>3 task(s)</summary>
Expand Down Expand Up @@ -374,12 +373,6 @@ <h2>Backlog <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/tree
<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>
</tr>
<tr>
<td class="when">2026-08-24</td>
<td class="what">issued</td>
<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>
<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>
</tr>
<tr>
<td class="when">2026-08-23</td>
<td class="what">filed</td>
<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>
Expand Down Expand Up @@ -415,7 +408,7 @@ <h2>Backlog <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/tree
<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>
<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>
</tr>
<tr hidden>
<tr>
<td class="when">2026-08-22</td>
<td class="what">filed</td>
<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>
Expand Down Expand Up @@ -655,6 +648,12 @@ <h2>Backlog <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/tree
<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>
<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>
</tr>
<tr hidden>
<td class="when">2026-08-04</td>
<td class="what">filed</td>
<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>
<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>
</tr>
</table>
<button class="more" data-page="10">… 10 more (40 left)</button>
<h2>Epics <a class="mdsrc" href="https://github.com/PyAutoLabs/PyAutoMind/blob/main/epics.md">markdown version</a></h2>
Expand Down
Loading
Loading