# 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 1. Run: ```bash cargo test -p entropyk-components --test jacobian_health_sweep -- --nocapture ``` 2. Confirm all gated tests pass. 3. 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.