feat: gate heavy solver JSON, field traceability API, GUI rod/export depth

- C: emit profiles/diagnostics/fourier only when enable flags are set; null otherwise
- API: fieldTraceability on case parse/default and solve; fix GET /solve/default options
- Tests: golden fingerprint, quality gates, C diagnostics invariants; cardQa mean empty guard
- Makefile: test-solver-sanitize ASan/UBSan target; README and COMPUTE_PLAN updates
- GUI: taper weight/MTS/guides/sinker round-trip, rod catalog, solver output toggles,
  results (profiles/diagnostics/Fourier/traceability), engineering checks and tabs
- Restore canonical WellName in base-case for regression; trace TaperGuidesCountArray

Made-with: Cursor
This commit is contained in:
2026-04-16 23:19:00 -06:00
parent 10f6ae1c2b
commit 64e9d31373
39 changed files with 1318 additions and 369 deletions

View File

@@ -57,6 +57,10 @@ User goals: SROD-like transparency, measured card → downhole + pump movement,
| Fourier analytical baseline | §3 | **Deferred** |
| Full tubetube contact (Eisner) | §6 | **Deferred** |
### Tubing gradient (GUI helper)
The **Fluid** tab can fill `TubingGradient` from a **heuristic** bulk-liquid hydrostatic estimate (water cut, oil API, water SG), aligned with the simplified mixture density used in `solver-api/src/xmlParser.js#computeFluidDensityKgM3`. `TubingGradient` is still parsed to `tubingGradientPaM` in Node but is **not** forwarded on the C JSON stdin payload today (`docs/engineering/field-traceability.md`). Wiring it into the damped-wave / pressure BC model would require `MATH_SPEC.md` + C changes + golden refresh.
---
## 4. API (quick reference)
@@ -189,14 +193,14 @@ This section is the execution plan for the next pass, optimized for "feature-ric
### 8.4 Priority 4 — Contract hardening
- Keep `schemaVersion: 2` additive contract stable by default.
- Enforce option-gated heavy payloads (`profiles`, `diagnostics`, `fourier`).
- Add traceability metadata endpoint/payload support for GUI and audits.
- Enforce option-gated heavy payloads (`profiles`, `diagnostics`, `fourier`)**implemented in C stdout** (`enableProfiles`, `enableDiagnosticsDetail`, `enableFourierBaseline`); default API responses omit heavy blocks.
- Traceability metadata **`fieldTraceability` on `GET /case/default`, `POST /case/parse`, `POST /solve`, `GET /solve/default`** via [`solver-api/src/fieldTraceability.js`](../solver-api/src/fieldTraceability.js).
**Acceptance gate:** backward-compat tests pass on default endpoints.
### 8.5 Priority 5 — CI/release readiness
- Add sanitizer runs (ASan/UBSan) for C paths.
- Add sanitizer runs (ASan/UBSan) for C paths**`make test-solver-sanitize`** in root [`Makefile`](../Makefile).
- Add runtime/performance budgets on representative cases.
- Enforce quality artifact generation in CI (comparison summaries + drift reports).