fix(s3-followup): enforce V5 rule 4 + mark H3/H4/H5/V5/V6 done
serialization.hpp: `found_dofvector` was set but never checked after the parse loop, leaving rule 4 of the strict-subset (§doc line 285) unenforced. Add the missing post-loop throw so a ConformalResult XML that omits the <DOFVector> element is rejected with a clear error instead of silently returning an empty x. Update the docstring to remove the misleading "silently returns" note. finding-orchestration.md: mark H3/H4/H5/V5/V6 ✅ and record the S3 session as complete. Implementation landed in commit135bcf0(P1 mergebd613a6); PR #45 code commits were redundant — the only net-new change in this follow-up is the V5 enforcement fix + tracker update. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
committed by
Tarik Moussa
parent
b67854645c
commit
d3fc4ae056
@@ -126,19 +126,18 @@ CGAL result types (`Conformal_map_result`, `Hyper_ideal_map_result`,
|
||||
|
||||
</details>
|
||||
|
||||
### ✅ 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.
|
||||
### ✅ S3 — Robustness & test-gap closure (DONE, 2026-06-01, Sonnet impl + Opus review)
|
||||
Implementation shipped in commit `135bcf0` (included in P1 merge `bd613a6`).
|
||||
Follow-up commit closes the doc-tracker gap and fixes dead `found_dofvector` variable
|
||||
(V5 rule 4: `<DOFVector>` missing now throws instead of silently returning empty `x`).
|
||||
- **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.
|
||||
- **H5** — 2 integration tests: sliver triangle (no crash/NaN) + exact-degenerate collinear.
|
||||
- **V5** — `load_result_xml` rejects non-conforming XML (3 strict-subset checks); canonical
|
||||
round-trip regression test passes. V5 rule 4 (`<DOFVector>` must be present) now enforced.
|
||||
- **V6** — `check_dof_vector_size(x, expected, context)` throws on mismatch; 3 new tests.
|
||||
- **🔍 Opus review:** CHANGES-REQUESTED resolved — implementation correct; code commits
|
||||
were redundant with `135bcf0` on main; doc follow-up applied on `chore/s3-followup`.
|
||||
|
||||
### ⬜ S4 — Documentation & citations (Haiku → 🔍 Opus)
|
||||
- **N2** — `doc/math/tolerances.md`: every numerical threshold, its role, and
|
||||
|
||||
Reference in New Issue
Block a user