Commit 0fef2cc
docs(handoff): restore HANDOFF_HEAVY_TEST_GAPS.md with investigation update
The handoff was removed in e9837a0 ("Remove HANDOFF_HEAVY_TEST_GAPS.md
per user request") earlier this session. Restoring the original content
from 3facdec and appending a session-2 investigation update with
concrete root-cause data for each gap:
Gap 1 — FIXED in 03bf3f8 (CLLLC netlist precision: std::fixed was
rounding sub-microscale Cr / maxStep values to "0.000000" and
ngspice rejected the netlist syntactically). [clllc-topology][
ngspice-simulation] tests go from 2 SKIPPED → 2 cases / 14 assertions
all pass. WebFrontend `runSimulated` step should complete instead of
the previous 180-360 s timeout.
Gap 2 — `[!silent-shortcut]` 60 s wall-clock budget attempt
(commit 4b4ebc4) was reverted in 0fd66d0 per the CLAUDE.md "no
fallbacks, no silent shortcuts — throw" policy. The right fix is
the structural one the handoff originally suggested: candidate-
budgeted top-K per winding in the inner wind loop, capping at K^N
instead of |wireDatabase|^N. Needs a deterministic MKF-side
reproducer first (capture the actual MAS JSON the WebFrontend
posts to `calculate_advised_coil` and write a unit test against it).
Gap 3 — Concrete diagnoses from running PSFB through MagneticAdviser
with Logger::setLevel(INFO):
PSFB ferrite path drops 168 → 0 at the **Saturation** filter.
All 168 ferrite cores that satisfy the inductance constraint
exceed the 1.2× Bsat margin at PSFB's V·s peak with the
initial-N derived from `add_initial_turns_by_inductance`.
PSFB powder path drops 4000 → 0 at the **Inductance** filter.
Powder cores' lower max permeability can't reach PSFB's
requested Lm at any reasonable N for the dimension-passing
shapes.
Underlying issue: PhaseShiftedFullBridge.cpp:220-226's
Im_target=0 path forces `Lm = max(Lm, 20 * Lr)` which for
600 W at 12 V × 50 A drives Lm high enough that initial-N
selection puts B_peak past Bsat for the entire catalog.
PFC at 50 W takes 5:25 in standalone MKF; CoreAdviser is the
bottleneck (CoilAdviser is fast for single-winding PFC).
Needs per-stage time profiling to target the specific
filter — most likely `add_ferrite_materials_by_losses`
sweeping the candidate set × operating points.
Gap 4 — likely cascades from Gap 2 + Gap 3 fixes.
Recommended fix order for next session is captured in the doc;
none of the gaps are fixed in this commit, but the diagnostic
work is now actionable instead of speculative.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 0fd66d0 commit 0fef2cc
1 file changed
Lines changed: 427 additions & 0 deletions
0 commit comments