Overview
Follow-up from PyAutoLabs/autogalaxy_workspace#143, which found that HowToGalaxy's config/build/no_run.yaml carried an entry copy-pasted wholesale from the parent workspace repo when the tutorials were split out. Auditing every entry in both HowTo repos against the real matcher (PyAutoHands/autobuild/build_util.py::should_skip) shows the copy-paste is systemic:
| Repo |
Entries |
Match ≥1 file |
Match zero files |
| HowToGalaxy |
18 |
1 (tutorial_searches) |
17 |
| HowToLens |
32 |
2 (tutorial_searches, tutorial_5_borders) |
30 |
This issue takes a deliberately narrow slice: the entries that actively mislead. The bulk cruft is reported but left alone.
The two problems being fixed
1. Dead NEEDS_FIX markers (3). These advertise open bugs that do not exist and inflate Heart's stale-parked-script count (currently 58):
- HowToGalaxy:
ellipse/modeling, guides/advanced/over_sampling
- HowToLens:
group/slam
None matches any file — HowToGalaxy holds only chapter_*/ + simulators/, HowToLens only chapter_*/ + simulator/, and patterns containing / are substring-matched against the file path.
2. A broken pattern whose stated reason rests on a cap that does not exist (1).
howtolens/chapter_4_pixelizations/tutorial_10_brightness_adaption # SLOW 2026-04-10 - pixelization tutorial exceeds 60s test timeout
This one is not dead cruft — the file genuinely exists at scripts/chapter_4_pixelizations/tutorial_10_brightness_adaption.py. The stale pre-split howtolens/ prefix means the substring never matches, so the entry has not applied since the repo split and the tutorial has been running in CI all along.
The obvious move — repair the prefix — is wrong:
- The 60s cap does not exist.
PyAutoHands/autobuild/run_all.py sets DEFAULT_TIMEOUT_SECS = 300.
- Measured: 233.7s, exit 0 under the HowToLens smoke profile. It fits the real cap.
So repairing the prefix would newly park a script that passes. Deleting the entry is behaviour-preserving (it is inert today) and matches reality. Deleted rather than repaired.
Plan
- Delete the 3 dead
NEEDS_FIX entries.
- Delete the 1 broken, inert
SLOW entry rather than repairing it, per the measurement above.
- Verify no live entry is lost: after the change HowToGalaxy still resolves
tutorial_searches, HowToLens still resolves tutorial_searches + tutorial_5_borders — byte-identical live sets.
- No script changes, so no notebook regeneration.
Detailed implementation plan
Affected Repositories
- HowToGalaxy (primary)
- HowToLens
Branch Survey
| Repository |
Current Branch |
Dirty? |
| ./HowToGalaxy |
main |
clean |
| ./HowToLens |
main |
clean |
Branch: feature/howto-no-run-stale-entries
Worktree: ~/Code/PyAutoLabs-wt/howto-no-run-stale-entries/
Implementation Steps
HowToGalaxy/config/build/no_run.yaml — delete the ellipse/modeling and guides/advanced/over_sampling lines.
HowToLens/config/build/no_run.yaml — delete the group/slam and howtolens/chapter_4_pixelizations/tutorial_10_brightness_adaption lines.
- Re-parse both YAMLs and re-run the
should_skip audit, asserting the live-entry set is unchanged and no NEEDS_FIX string remains.
Verification performed
should_skip audit of all 50 entries across both repos against every tracked scripts/**.py.
tutorial_10_brightness_adaption.py timed end-to-end: 233.7s, exit 0, zero tracebacks, under smoke profile (PYAUTO_TEST_MODE=2 + skips).
- Post-change: HowToGalaxy 16 entries / live
['tutorial_searches']; HowToLens 30 entries / live ['tutorial_searches', 'tutorial_5_borders'].
Out of scope — reported, not fixed
- ~44 remaining zero-match entries across both repos. Not blindly deleted: several are stem patterns (
fits_make, png_make, data_fitting, deflections) that would begin applying if a script with that stem is ever added, so they may be prospective guards rather than cruft. Needs a deliberate call.
tutorial_6_model_fit (HowToLens, # InversionException due to test mode) — no file of that stem has ever existed in HowToLens history, and the intended target is ambiguous (tutorial_8_model_fit.py exists in chapter_4). Left for a human rather than guessed at.
Risk note
tutorial_10_brightness_adaption consumes 233.7s of the 300s budget (22% headroom) on a laptop. If CI is slower it could time out. Should that happen, the correct fix is a correctly-spelled SLOW entry (chapter_4_pixelizations/tutorial_10_brightness_adaption), not the broken one being removed here.
Refs PyAutoLabs/autogalaxy_workspace#143
Original prompt
Filed as PyAutoMind/draft/bug/howto/howto_no_run_stale_and_broken_entries.md from the follow-up identified while closing #143.
Overview
Follow-up from PyAutoLabs/autogalaxy_workspace#143, which found that HowToGalaxy's
config/build/no_run.yamlcarried an entry copy-pasted wholesale from the parent workspace repo when the tutorials were split out. Auditing every entry in both HowTo repos against the real matcher (PyAutoHands/autobuild/build_util.py::should_skip) shows the copy-paste is systemic:tutorial_searches)tutorial_searches,tutorial_5_borders)This issue takes a deliberately narrow slice: the entries that actively mislead. The bulk cruft is reported but left alone.
The two problems being fixed
1. Dead
NEEDS_FIXmarkers (3). These advertise open bugs that do not exist and inflate Heart's stale-parked-script count (currently 58):ellipse/modeling,guides/advanced/over_samplinggroup/slamNone matches any file — HowToGalaxy holds only
chapter_*/+simulators/, HowToLens onlychapter_*/+simulator/, and patterns containing/are substring-matched against the file path.2. A broken pattern whose stated reason rests on a cap that does not exist (1).
howtolens/chapter_4_pixelizations/tutorial_10_brightness_adaption # SLOW 2026-04-10 - pixelization tutorial exceeds 60s test timeoutThis one is not dead cruft — the file genuinely exists at
scripts/chapter_4_pixelizations/tutorial_10_brightness_adaption.py. The stale pre-splithowtolens/prefix means the substring never matches, so the entry has not applied since the repo split and the tutorial has been running in CI all along.The obvious move — repair the prefix — is wrong:
PyAutoHands/autobuild/run_all.pysetsDEFAULT_TIMEOUT_SECS = 300.So repairing the prefix would newly park a script that passes. Deleting the entry is behaviour-preserving (it is inert today) and matches reality. Deleted rather than repaired.
Plan
NEEDS_FIXentries.SLOWentry rather than repairing it, per the measurement above.tutorial_searches, HowToLens still resolvestutorial_searches+tutorial_5_borders— byte-identical live sets.Detailed implementation plan
Affected Repositories
Branch Survey
Branch:
feature/howto-no-run-stale-entriesWorktree:
~/Code/PyAutoLabs-wt/howto-no-run-stale-entries/Implementation Steps
HowToGalaxy/config/build/no_run.yaml— delete theellipse/modelingandguides/advanced/over_samplinglines.HowToLens/config/build/no_run.yaml— delete thegroup/slamandhowtolens/chapter_4_pixelizations/tutorial_10_brightness_adaptionlines.should_skipaudit, asserting the live-entry set is unchanged and noNEEDS_FIXstring remains.Verification performed
should_skipaudit of all 50 entries across both repos against every trackedscripts/**.py.tutorial_10_brightness_adaption.pytimed end-to-end: 233.7s, exit 0, zero tracebacks, under smoke profile (PYAUTO_TEST_MODE=2+ skips).['tutorial_searches']; HowToLens 30 entries / live['tutorial_searches', 'tutorial_5_borders'].Out of scope — reported, not fixed
fits_make,png_make,data_fitting,deflections) that would begin applying if a script with that stem is ever added, so they may be prospective guards rather than cruft. Needs a deliberate call.tutorial_6_model_fit(HowToLens,# InversionException due to test mode) — no file of that stem has ever existed in HowToLens history, and the intended target is ambiguous (tutorial_8_model_fit.pyexists in chapter_4). Left for a human rather than guessed at.Risk note
tutorial_10_brightness_adaptionconsumes 233.7s of the 300s budget (22% headroom) on a laptop. If CI is slower it could time out. Should that happen, the correct fix is a correctly-spelledSLOWentry (chapter_4_pixelizations/tutorial_10_brightness_adaption), not the broken one being removed here.Refs PyAutoLabs/autogalaxy_workspace#143
Original prompt
Filed as
PyAutoMind/draft/bug/howto/howto_no_run_stale_and_broken_entries.mdfrom the follow-up identified while closing #143.