Files
Entropyk/docs/audits/jacobian-health-report.md
sepehr 5bd180b5b8
Some checks failed
CI / check (push) Has been cancelled
Snapshot WIP: solver HP epic progress, BPHX/HX physics, BMAD skill refresh.
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>
2026-07-19 16:35:31 +02:00

66 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.