Some checks failed
CI / check (push) Has been cancelled
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>
66 lines
3.3 KiB
Markdown
66 lines
3.3 KiB
Markdown
# 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.
|