You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Pixelized-source likelihoods contain deterministic single-float-input branch flips (width < 1e-15 in the parameter; ΔLL ≈ 1.577e-3 on the interferometer sparse 8×8 config, ~14 on imaging 28×28; same ΔLL for orthogonal parameter directions on a config; present under reg.Constant AND reg.Adapt; surface exactly linear elsewhere). Discovered during the kernel-CDF certification (#373, probes in that thread); they poison single-step FD (the jax_grad harness now runs an FD-step-sweep) and perturb any sampler landing on a bad float. Prime suspect: positive-only solver (PDIP/fnnls) iteration/tie-break knife-edges; related knob: nnls_solver_tol (Settings, default off, PR#371).
Instrument the solve: diff iteration count / active set / solution vector / residual between the bad float and adjacent clean floats; locate the branch point.
Mechanism tests: does nnls_solver_tol move/remove the flips; does the unconstrained solve show any; does flip magnitude track tolerance.
Deliverable: mechanism + recommendation here (tolerance/tie-break fix, documented LL accuracy floor, or won't-fix-documented). Small clearly-safe fix may ship behind the normal gates; anything larger files as its own task.
Read-only research on main (no worktree claim); probes in scratch; findings land here.
Original Prompt
PyAutoMind/research/autoarray/solver_branch_flips.md (verbatim in repo).
Overview
Pixelized-source likelihoods contain deterministic single-float-input branch flips (width < 1e-15 in the parameter; ΔLL ≈ 1.577e-3 on the interferometer sparse 8×8 config, ~14 on imaging 28×28; same ΔLL for orthogonal parameter directions on a config; present under
reg.ConstantANDreg.Adapt; surface exactly linear elsewhere). Discovered during the kernel-CDF certification (#373, probes in that thread); they poison single-step FD (the jax_grad harness now runs an FD-step-sweep) and perturb any sampler landing on a bad float. Prime suspect: positive-only solver (PDIP/fnnls) iteration/tie-break knife-edges; related knob:nnls_solver_tol(Settings, default off, PR#371).Plan
nnls_solver_tolmove/remove the flips; does the unconstrained solve show any; does flip magnitude track tolerance.Read-only research on main (no worktree claim); probes in scratch; findings land here.
Original Prompt
PyAutoMind/research/autoarray/solver_branch_flips.md(verbatim in repo).🤖 Generated with Claude Code