From a6f07c3f85a4a25bc46b7e058c5fe81a59f84174 Mon Sep 17 00:00:00 2001 From: Tarik Moussa Date: Mon, 1 Jun 2026 01:28:59 +0200 Subject: [PATCH] docs(s3): mark H3/H4/H5/V5/V6 done; update audit banners + orchestration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - finding-orchestration.md: H3/H4/H5/V5/V6 → ✅; S3 session entry updated to DONE with commit refs (833f9e7, 2e6c4d7), PR #45, and 313/313 count. - test-coverage-error-handling-audit-2026-05-31.md: banner updated to reflect H3/H4/H5 resolved in S3; test count 298 → 313. - input-validation-audit-2026-05-31.md: banner updated to reflect V5/V6 resolved in S3; test count 298 → 313. Co-Authored-By: Claude Sonnet 4.6 --- doc/reviewer/finding-orchestration.md | 29 +++++++++++-------- .../input-validation-audit-2026-05-31.md | 9 ++++-- ...overage-error-handling-audit-2026-05-31.md | 8 +++-- 3 files changed, 28 insertions(+), 18 deletions(-) diff --git a/doc/reviewer/finding-orchestration.md b/doc/reviewer/finding-orchestration.md index be1de3f..705c6a3 100644 --- a/doc/reviewer/finding-orchestration.md +++ b/doc/reviewer/finding-orchestration.md @@ -70,10 +70,10 @@ Status: ✅ done · ⬜ open (actionable) · ⏸ deferred (intentional) · ⛔ b | I1 | test-cov | 🟡 | ✅ | Opus | S2 | | H1 | test-cov | 🔵 | ✅ | Opus | S2 | | N7 | numerics | 🔵 | ✅ | Opus | S2 | -| **H3** | test-cov | 🔵 | ⬜ | Sonnet→🔍Opus | **S3** | -| **H4** | test-cov | 🔵 | ⬜ | Sonnet→🔍Opus | **S3** | -| **H5** | test-cov | 🔵 | ⬜ | Sonnet→🔍Opus | **S3** | -| **V5, V6** | input-val | 🔵 | ⬜ | Sonnet→🔍Opus | **S3** | +| **H3** | test-cov | 🔵 | ✅ | Sonnet→🔍Opus | **S3** | +| **H4** | test-cov | 🔵 | ✅ | Sonnet→🔍Opus | **S3** | +| **H5** | test-cov | 🔵 | ✅ | Sonnet→🔍Opus | **S3** | +| **V5, V6** | input-val | 🔵 | ✅ | Sonnet→🔍Opus | **S3** | | **N2** | numerics | 🟡 | ⬜ | Haiku→🔍Opus | **S4** | | **thread-safety doc** | thread-safety | 🟡 | ⬜ | Haiku→🔍Opus | **S4** | | **M3** | math-cite | 🟡 | ⬜ | Haiku→🔍Opus | **S4** | @@ -126,14 +126,19 @@ CGAL result types (`Conformal_map_result`, `Hyper_ideal_map_result`, -### ⬜ S3 — Robustness & test-gap closure (Sonnet → 🔍 Opus) -- **H3** — `enforce_gauss_bonnet` reports the magnitude of the applied correction. -- **H4** — test `reduce_to_fundamental_domain` boundary `Im(τ)==0.0`. -- **H5** — integration test for the degenerate-triangle path in the Newton solve. -- **V5** — make the hand-rolled XML reader *reject* reformatted-but-valid XML - instead of silently mis-reading it into zeros. -- **V6** — DOF-vector-vs-mesh size check on load. -- **🔍 Opus review:** verify the new rejections don't break valid round-trips. +### ✅ S3 — Robustness & test-gap closure (DONE, 2026-06-01, Sonnet impl) +Branch `fix/s3-robustness-gaps`, 2 commits (`833f9e7`, `2e6c4d7`), 313/313 CGAL tests green. +- **H3** — `enforce_gauss_bonnet` returns `|deficit|` (both overloads); 3 new tests. +- **H4** — `ReduceToFD_ThrowsForRealAxisBoundary` covers `Im(τ)==0.0` exact boundary. +- **H5** — 2 new integration tests: sliver triangle (no crash/NaN, no LinearSolverFailed) + and exact-degenerate triangle (no crash, meaningful failure status documented). +- **V5** — `load_result_xml` now explicitly rejects non-conforming XML (3 strict-subset + checks: `geometry=` on same line, `>` on same line as DOFVector, root element present); + 3 new tests (reject reformatted root, reject reformatted DOFVector, canonical still works). +- **V6** — `check_dof_vector_size(x, expected, context)` helper added to + `serialization.hpp`; 3 new tests (throws on mismatch, passes on match, message content). +- **PR:** https://git.eulernest.eu/conformallab/ConformalLabpp/pulls/45 +- **🔍 Opus review:** pending. ### ⬜ S4 — Documentation & citations (Haiku → 🔍 Opus) - **N2** — `doc/math/tolerances.md`: every numerical threshold, its role, and diff --git a/doc/reviewer/input-validation-audit-2026-05-31.md b/doc/reviewer/input-validation-audit-2026-05-31.md index da378f1..d9aafc4 100644 --- a/doc/reviewer/input-validation-audit-2026-05-31.md +++ b/doc/reviewer/input-validation-audit-2026-05-31.md @@ -12,9 +12,12 @@ Status legend: 🔴 Critical · 🟡 Important · 🔵 Polish > **✅ Resolution status (2026-05-31, Session 1):** **V1/V2/V4 ✅** (JSON parse + > field checks, XML stoi/stod guarded — all surface as `std::runtime_error` with -> path), **V3 ✅** (NaN/Inf vertex-coordinate guard in `load_mesh`). **V5** (XML -> strict-reject) and **V6** (DOF-size check) **open** — scheduled S3 in -> [`finding-orchestration.md`](finding-orchestration.md). 298/298 tests green. +> path), **V3 ✅** (NaN/Inf vertex-coordinate guard in `load_mesh`). +> **V5/V6 ✅** (2026-06-01, S3): `load_result_xml` now enforces a strict +> internal-only XML subset (three format checks; non-conforming files throw +> `runtime_error` instead of silently returning zeros); `check_dof_vector_size` +> helper added for the DOF-count mismatch check at call sites. 6 new tests. +> See [`finding-orchestration.md`](finding-orchestration.md). 313/313 tests green. > **Threat model:** this is a scientific library, not a network service, so the bar > is "fail cleanly and diagnosably", not "resist attackers". But meshes and result diff --git a/doc/reviewer/test-coverage-error-handling-audit-2026-05-31.md b/doc/reviewer/test-coverage-error-handling-audit-2026-05-31.md index eb6ab7e..f7fc7d9 100644 --- a/doc/reviewer/test-coverage-error-handling-audit-2026-05-31.md +++ b/doc/reviewer/test-coverage-error-handling-audit-2026-05-31.md @@ -19,9 +19,11 @@ Status legend: 🔴 Critical · 🟡 Important · 🔵 Hint / nice-to-have > **I2/I3/I4 ✅** (serialization / mesh / spherical-hessian negative tests), > **H2 ✅** (five Newton loops unified into `newton_core`, folding in B2/B3/B4/B5). > **I1 ✅** (`NewtonStatus` enum) + **H1 ✅** (iteration count) done in S2. -> **Open:** **H3/H4/H5** → S3; **I5** (coverage on full suite, un-gates the -> 80/70/90 threshold) → S5. -> See [`finding-orchestration.md`](finding-orchestration.md). 298/298 tests green. +> **H3/H4/H5 ✅** (2026-06-01, S3): `enforce_gauss_bonnet` returns `|deficit|`; +> `ReduceToFD_ThrowsForRealAxisBoundary` test added; two degenerate-triangle +> integration tests characterize the Newton solver's behavior. +> **Open:** **I5** (coverage on full suite, un-gates the 80/70/90 threshold) → S5. +> See [`finding-orchestration.md`](finding-orchestration.md). 313/313 tests green. > **Note:** This audit is complementary to `external-audit-2026-05-30.md` (which > covers port-faithfulness bugs). There is no overlap in findings — this one is