fix: park EP script as NEEDS_FIX no_run for release testing - #131
Merged
Conversation
EP is not release-ready. The per-factor searches in the EP scripts are truncated (autofit_workspace_test graphical/ep.py caps maxcall/maxiter at 1000), so each search projects a posterior with an effective sample size of 1 - a single sample carries all the weight and the weighted variance of every parameter is exactly 0. EP feeds that degenerate projection back as the next cycle's prior, which is then either a delta function or, after the cavity division cancels two near-identical natural-parameter vectors, a prior whose mean has diverged (observed: shared centre = 6.4e7 for data spanning ~100 pixels). Either way the next search draws initial points that all yield an identical log likelihood, and PyAutoFit raises InitializerException. This is intermittent - it depends on where the truncated search happens to stop - and it broke the 2026-08-03 nightly release integrate (PyAutoHeart run 30788224561) after passing the five previous runs. Damping does not fix it: q* arrives already collapsed, so an EP updater with delta < 1 still ingests a zero-variance projection. The existing check_sigma_collapse diagnostic also misses it, because the collapse is a single-step drop rather than the monotone shrinkage it looks for. Park every EP script in the release matrix rather than papering over the instability in one script's search settings. Tagged NEEDS_FIX so each mega-run surfaces them until the underlying EP projection is fixed (PyAutoFit #1332 F10). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
EP is not release-ready, so every EP script in the release matrix is being
parked. This is the
autofit_workspacehalf; the root-cause investigation andthe failing script live in
autofit_workspace_test#82 (
scripts/graphical/ep.py).scripts/features/expectation_propagation.pypasses today. It is parkedbecause it shares the EP machinery whose message projection is unstable, not
because it is currently failing.
Root cause (summary — full detail in autofit_workspace_test#82)
The 2026-08-03 nightly release integrate failed on
graphical/ep.py(PyAutoHeart run 30788224561). Reproduced locally under the release profile:
size of 1 — a single sample carries all the weight, so the weighted std of
every parameter is exactly
0.q*arrives already collapsed:
q*_sigma=1.5e-06against a healthycavity_sigma=30).likelihood →
InitializerException.Damping does not help (
q*is degenerate before damping applies) andcheck_sigma_collapsemisses it (the collapse is a single-step drop, not themonotone shrinkage it looks for). See PyAutoFit #1332 F10.
Change
One
NEEDS_FIX-tagged entry inconfig/build/no_run.yaml, so every mega-runsurfaces it with a warning banner until EP is fixed.
Verification
.py-anchored and checked against the runner's ownshould_skip:exactly 1 script newly skipped, no over-match, not inert.
find_needs_fix_skipswith the correct date and reason.the equivalent end-to-end runner check was done in autofit_workspace_test#82,
where it exits 0.
🤖 Generated with Claude Code