Capture uncommitted solver robustness work (regularization, domain errors, linear solver lifecycle, tube DP/MSH), web workbench updates, and synced BMAD skills across IDE agent folders before starting BPHX pressure-drop. Co-authored-by: Cursor <cursoragent@cursor.com>
3.3 KiB
Jacobian Health Report (Epic 0 / Story 0.5)
Date: 2026-07-18
Gate: cargo test -p entropyk-components --test jacobian_health_sweep
Harness: entropyk_components::jacobian_fd
Allow-list: empty for Epic-0 P0 surfaces (EPIC0_ALLOW_LIST in the test binary)
How to regenerate
- Run:
cargo test -p entropyk-components --test jacobian_health_sweep -- --nocapture - Confirm all gated tests pass.
- Manually sync this markdown if grids, configs, or statuses change. Default CI tests do not rewrite this file (avoids dirty working trees).
Optional machine-readable twin: docs/audits/jacobian-health-report.json.
Config presets
| Preset | rel_epsilon |
h_floor |
rel_tol |
Notes |
|---|---|---|---|---|
DEFAULT_CFG |
1e-6 |
1e-3 |
1e-4 |
Documented default |
EDGE_CFG |
1e-6 |
1e-6 |
1e-4 |
C¹ smooth_clamp neighborhoods / actuator edges |
Status matrix (gated surfaces)
| Surface | Region / probes | Config | Status | Notes |
|---|---|---|---|---|
valve_flow / IsenthalpicOrifice |
openings {0,0.5,1} × {ΔP>0, ΔP≤0} |
helper FD / phantom checks | clean |
Informative dp_up at ΔP≤0; dp_down FD at interior ΔP>0 |
valve_flow / ExvCdA |
same grid | helper FD / phantom checks | clean |
Same as orifice model |
exv_orifice |
openings {0,0.5,1} × {dp_positive, dp_le_0} |
EDGE_CFG |
clean |
assert_jacobian_healthy via allow-list (empty) |
condenser_fan |
φ ∈ {0.005, 0.75, 1.495} |
EDGE_CFG |
clean |
Inside C¹ ramps (not exact kink) |
condenser_flood |
λ ∈ {0.005, 0.5, 0.975} |
EDGE_CFG |
clean |
Inside C¹ ramps |
two_phase_quality |
interior 0.5, near-band 0.005, exterior -0.2 / 1.2 |
helper checks | clean |
Soft≠hard in band; exterior saturates |
msh_dome_edge |
quality {0.5,0.8,0.90,0.95,0.99,0.999,1−ε} |
central FD on msh_gradient |
clean |
Bounded ∂g/∂x across Hermite blend |
Deferred debt (not probed — do not allow-list P0)
These remain documented debt and are out of the Epic-0 gate. Adding probes later requires either a fix or an explicit allow-list entry with rationale in this file and the audit catalogue.
| Item | Reason | Status |
|---|---|---|
heat_exchanger/exchanger.rs 4-port production FD Jacobian |
NFR9 — analytic path is already FD | not probed |
python_components* empty / stub Jacobians |
Binding stubs | not probed |
screw_economizer_compressor incomplete analytic rows / P1 clamps |
Separate remediation | not probed |
sat_domain.rs P1 pressure clamp |
Deferred P1 | not probed |
bphx_correlation P2 quality clamps |
Correlation-local P2 | not probed |
NFR11 attribution (pending Story 2.6)
Epic 0 regularized P0 Jacobian killers (valve ΔP≤0 phantom gradients, EXV opening C¹ clamps, two-phase quality / condenser fan-flood C¹, MSH Hermite near x→1).
First-try convergence % across the operating envelope (T_source / T_sink / load / fluid) will be measured by Story 2.6 robustness-sweep infrastructure.
Before/after delta attributable to Epic 0 regularization: TBD (fill when Story 2.6 lands). Do not invent placeholder percentages.