@@ -2437,6 +2437,178 @@ the acceptable-looking outputs do not validate the prior.
24372437 setpoint to ratchet toward its known-good ~ 60% while shipped
24382438 pairs improve, with no regression vs the fixed-60% runs.
24392439
2440+ ** AUTO-TARGET COLD START FALSIFIED -- msp1 abinitio3D REGRESSION
2441+ (2026-09-06).** Ten repeated msp1 abinitio3D runs at dc2eb9a7
2442+ (rec_backend=pcg, no prior flags): ` _lp ` stage snapshots normal
2443+ through stage 6, overfitted from stage 7, final postprocessed maps
2444+ wrecked. Mechanism, established from the controller law and the
2445+ recorded dataset operating points (no new instrumentation needed):
2446+ - msp1 sits at ~ 60% suppression AT THE DEFAULT lambda_rel=0.1 (the
2447+ 2026-08-28/29 zero-flag verification runs at pinned 0.1 were
2448+ healthy, 3.86 A Nyquist-limited; the fixed-60% controller held
2449+ there too). The AIMD outer loop cold-starts the setpoint at 15%,
2450+ so the very first inner-loop step sees supp ~ 60% vs target 15%
2451+ and steps lambda DOWN at the x5 clamp: 0.1 -> 0.02 -> 0.01
2452+ (floor) within three iterations of stage 6. Under R10 Q_NU is the
2453+ only replay precision, so lambda at the floor is an effectively
2454+ UNREGULARIZED ML solve (` PRIOR INERT ` banner): the merged matching
2455+ reference carries un-shrunk in-band noise.
2456+ - The outer loop cannot recover: it ratchets +5 points only while
2457+ the shipped-pair FSC=0.143 crossing improves by >= 2 shells, and
2458+ lp-limited ab initio stages stall (hold) almost immediately, so
2459+ the setpoint stays near 15% for the rest of the run. Worse, the
2460+ signal is the FSC of NON-independent halves (merged-reference
2461+ matching): overfitting inflates it (read as "improved"), and
2462+ regularization that removes correlated noise deflates it (read as
2463+ "degraded" -> x0.6 back-off). The loop therefore settles on the
2464+ weakest prior consistent with the highest correlated-noise FSC.
2465+ - Compounding factor: with nu_refine=no the matching-band handoff is
2466+ the RAW finest selected label (min_pct=0, "numerically unchanged
2467+ vs gridding"), i.e. the static bank's 3.98 A floor whenever a
2468+ single voxel selects it. On the gridding path that was harmless
2469+ (the references are NU-filtered); against soft Q_NU references it
2470+ matches noise. b46f5c257 caps the handoff at the stage ladder
2471+ (` lpstop ` ceiling), which restores the pre-NU matching band.
2472+ - Stage 6 survives because its first iterations still run at the
2473+ default strength and the schedule lp; stage 7 (nspace 5000,
2474+ greedy frac_best 0.85, finer crop, 12 iterations) starts with the
2475+ prior already at the floor and the project lp already promoted.
2476+ The final bootstrap_rec3D resumes the floored lambda (its
2477+ calibration keeps the ~ 15% target), then auto-B sharpens an
2478+ unregularized native-grid map.
2479+ Log evidence (ABINITIO3D_OUTPUT_RESTART1, one of the ten runs),
2480+ read 2026-09-06, confirming the mechanism with two additions:
2481+ - stage 6 (LP 7.5): iteration 1 at the default gives supp 42.4%;
2482+ the inner loop steps 0.1 -> 0.024 at once; the outer loop then
2483+ reads a one-shell shipped-pair change (4.41 -> 4.54 A) as
2484+ DEGRADED and backs the setpoint off 15 -> 9; lambda holds at
2485+ 0.024 while the readout decays 11.5 -> 3.8% over ten iterations
2486+ AT FIXED LAMBDA (the readout is not a steady-state response, see
2487+ below); one late step to 0.060.
2488+ - stage 7 (LP 6.7): the crop change re-scales the plant (22.6% at
2489+ 0.060), the outer loop backs off again to 5.4 and the inner loop
2490+ steps to 0.012. From then on the readout is NEGATIVE (-3 .. -2%,
2491+ floored to 0.1%) and, because the absolute +/-5 deadband contains
2492+ the 5% setpoint floor, every iteration logs ON TARGET and holds
2493+ 0.012 for the whole stage: a deadband deadlock at an inert prior.
2494+ Shipped-pair crossing walks 4.5 -> 6.3 A across the stage.
2495+ - stage 8 (LP 4.5): two IMPROVED steps raise the setpoint to 15 and
2496+ the inner loop ramps lambda 0.012 -> 0.06 -> 0.30 -> 1.4 -> 2.3
2497+ -> 3.7 -> 7.5 -> 12.1 -> 20.0 while the readout never exceeds
2498+ 14%: the plant gain has collapsed, the prior is stiff where it
2499+ acts and absent elsewhere.
2500+ - final bootstrap_rec3D: calibration at 0.1 reads 39% on the native
2501+ grid, adapts to 0.027 for the pinned 15% target, ships at 17.9%.
2502+ - matching handoff: constant per stage at the finest bank label
2503+ (4.415 / 4.120 / 4.013 A), i.e. the crop's static-bank floor every
2504+ iteration of every NU stage, unbounded at this commit.
2505+ - Readout validity: the ML replay warm-starts from the PREVIOUS
2506+ iteration's shipped ML half and runs maxits_pcg=2 iterations, so
2507+ the measured suppression is a lagged property of the iterate
2508+ (previous orientations, previous lambda), not the response to the
2509+ current lambda. The one-pole identification is therefore built
2510+ on a quantity that decays at fixed lambda (stage 6) and cannot
2511+ follow a 200x lambda ramp (stage 8). Negative readouts are the
2512+ signature: the warm-started replay carries more evidenced energy
2513+ than the fresh base.
2514+ USER VERDICT (2026-09-06): the fine NU handoff must not set the
2515+ abinitio3D matching band at all; the conservative ` lpstages ` ladder
2516+ value is the matching low-pass in the NU stages. b46f5c257 enforces
2517+ it (the ladder rides as the ` lpstop ` ceiling on every staged child
2518+ and the project handoff is clipped to it at every promotion).
2519+
2520+ LOG EVIDENCE AGAINST THE CEILING ON THE PCG PATH (2026-09-06, full
2521+ log sets: msp1 10 runs at dc2eb9a7 vs 10 runs at b46f5c25 (ceiling);
2522+ streptavidin 10 runs at 9201e797 vs 2 complete runs at a053ee07
2523+ (ceiling + legacy sigma)). Streptavidin is the clean comparison
2524+ (identical workflow, full sampling, crop box 88 throughout, sigma
2525+ init path identical at every stage):
2526+ - through stage 5 the ceiling runs sit inside the healthy envelope
2527+ (stage-5 FSC=0.5/0.143 4.29/3.71 in run 2 = the healthy median);
2528+ - every healthy run improves at stage 6 from 4.29/3.7-3.8 to
2529+ 3.6-3.9/3.2-3.6 A while matching at the bank's finest label 4.04 A
2530+ (the raw handoff, every iteration of stages 6-8);
2531+ - both ceiling runs match at the ladder 6.24 A in stages 6 and 7 and
2532+ do NOT improve at all (run 2: 4.29/3.52 -> 4.29/3.61; run 1:
2533+ 4.57/3.92 -> 4.57/4.04), then stage 8 (ladder 4.5 A) recovers
2534+ part of the gap (3.92/3.27 vs healthy 3.7-3.8/3.1-3.2) after its
2535+ full 25 iterations -- the observed "rescued in stage 8" and the
2536+ ~ 500 s longer wall time.
2537+ msp1 shows the same shape with a confound: the healthy set ran the
2538+ cavg_ini route (nested cavgs stages, per-particle sigma init every
2539+ stage), the ceiling set a checkpoint start at stage 4 with the
2540+ group-only sigma init ("reusing existing grouped sigmas") at every
2541+ stage. Even so: healthy stage 6 matches at 4.98 A and FSC=0.5 goes
2542+ 6.7 -> 4.9 A within the stage; ceiling stage 6 matches at 7.54 A and
2543+ FSC=0.5 stays at 7.0-7.2 A; ceiling stage 7 (6.72 A, nspace 5000,
2544+ frac_best 0.85) randomizes the search in all 10 runs (projection
2545+ distance 34 deg, in-plane 84 deg, shift 4.2 px, SCORE sdev 0.002 vs
2546+ 0.007-0.013 healthy) and ends at FSC 6.575/6.575 A, one shell inside
2547+ the band; stage 8 recovers to 4.35-4.48 A with the auto-lambda driven
2548+ to 15-29. All ten healthy runs end at 3.86-3.96 A.
2549+ Conclusion from the logs: on the pcg + Q_NU path the raw finest-label
2550+ handoff was the mechanism that carried the NU stages past the ladder;
2551+ the ladder ceiling removes it and the NU stages stall at the band.
2552+ The earlier "* LP* overfitted from stage 7" judgement on the dc2eb9a7
2553+ msp1 set is not supported by its FSC trajectories (ten consistent
2554+ runs, 3.9 A finals, FSC=0.5 4.0 A); the finest-label matching ran
2555+ between FSC=0.5 and FSC=0.143 of the current map, not beyond it.
2556+ Recommendation (not applied, user decision): revert the lpstop
2557+ ceiling for the pcg path, or replace it with a data-driven cap (e.g.
2558+ the base-pair FSC=0.5 crossing plus a shell or two) instead of the
2559+ class-FRC ladder, which is not informative about the particle map
2560+ once the NU stages begin.
2561+
2562+ SOLVE-SUPPORT POLICY CORRECTION (2026-09-06, user-directed). Dev item 5
2563+ (ca450fe54, 2026-09-01) and the 2026-09-02 review item made the
2564+ conservative density envelope the replay solve support unconditionally
2565+ in ML mode, independent of automsk; every msp1 and streptavidin run
2566+ since 2026-09-01 (including the ten healthy streptavidin runs at
2567+ 9201e797) solved the shipped pair on that envelope while the base pair
2568+ stayed spherical, so their two FSCs were never comparable. The healthy
2569+ msp1 set (dc2eb9a7, 2026-08-31) predates it. Rule now: no envelope
2570+ masking anywhere unless automsk=yes; only then may envfsc=yes extend
2571+ the envelope to the base solve. Implemented as
2572+ pcg_density_support_enabled(params) gating build_pcg_state_support and
2573+ both current-base-pair fallbacks (shared + distributed). The envfsc FSC
2574+ evaluation itself (phase-randomized masked FSC) is unchanged and still
2575+ envfsc-only.
2576+
2577+ The controller observations above stand as a record; the guard rails
2578+ below were drafted and then WITHDRAWN (not applied), so the validated
2579+ adaptive configuration (embb, exp_gate, PfCRT) is unchanged.
2580+ Withdrawn guard rails (not applied):
2581+ - Deadband half-width capped at half the setpoint
2582+ (` min(5, 0.5*target) ` ), so a readout below half the target always
2583+ steps the strength up; the 5%-floor deadlock cannot recur.
2584+ - ` NU_AUTOLAMBDA_LAMBDA_MIN ` 0.01 -> 0.1 (= the dynamic default).
2585+ The controller may only STRENGTHEN the prior relative to the
2586+ validated default; no recorded dataset (PfCRT, 1WCM, bgal,
2587+ streptavidin, msp1, embb) has a good operating point below it.
2588+ - Setpoint seeding: at the first controller step the AIMD setpoint
2589+ is seeded from the suppression the strength in use actually
2590+ delivers, ` max(15%, measured) ` (stats-file key
2591+ PCG_NU_AUTOTARGET_SEEDED, cleared with the stats file). PfCRT-class
2592+ datasets (3% at the default) still ramp from 15%; msp1-class ones
2593+ hold at their default operating point and ratchet from there.
2594+ ` NU_AUTOTARGET_COLD_START ` replaces the literal 15 in the
2595+ controller; the parameters default block keeps 15 as provisional.
2596+ - Open: whether staged abinitio3D should run the controllers at all. The 2026-08-28/29 healthy msp1
2597+ runs were pinned at 0.1; the readout is warm-start-lagged at
2598+ maxits_pcg=2 and the reward signal is a merged-reference FSC, so
2599+ the recommended interim policy is to pin lambda_rel at the default
2600+ for the staged workflow (or freeze both loops after seeding) and
2601+ let the controllers act only in gold-standard refine3D_auto.
2602+ - Open (not changed here): the AIMD reward signal. A shipped-pair
2603+ FSC from merged-reference (non-gold-standard) matching is not a
2604+ valid over-regularization diagnostic in abinitio3D; consider
2605+ freezing the setpoint at the seeded value in staged abinitio3D
2606+ (adapt only in gold-standard refine3D_auto), or gating the ratchet
2607+ on the base-pair FSC at the stage ladder limit. Also open: the
2608+ nu_refine=no raw-finest handoff should use the same 5%-supported
2609+ percentile as nu_refine=yes on the pcg path, now that the
2610+ reference is not NU-filtered.
2611+
24402612 ** FINAL-RECONSTRUCTION Q_NU POLICY (2026-08-31, user-directed).**
24412613 The original-sampling final reconstructions of abinitio3D and
24422614 refine3D_auto previously dropped the PCG backend and its prior
0 commit comments