Compare commits
2 Commits
fix/s3-rob
...
chore/s3-f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3fc4ae056 | ||
| b67854645c |
@@ -283,8 +283,8 @@ inline void save_result_xml(
|
|||||||
/// 3. A line containing `<DOFVector` must carry the `>` character (tag
|
/// 3. A line containing `<DOFVector` must carry the `>` character (tag
|
||||||
/// open) on the same line.
|
/// open) on the same line.
|
||||||
/// 4. The `<DOFVector` element must be present and must produce a
|
/// 4. The `<DOFVector` element must be present and must produce a
|
||||||
/// non-empty doubles list (a missing DOFVector silently returns an
|
/// non-empty doubles list (a missing DOFVector element causes a
|
||||||
/// empty x, which is incorrect for any mesh with at least one DOF).
|
/// `std::runtime_error` — enforced after the parse loop).
|
||||||
inline std::vector<double> load_result_xml(
|
inline std::vector<double> load_result_xml(
|
||||||
const std::string& path,
|
const std::string& path,
|
||||||
NewtonResult* res = nullptr,
|
NewtonResult* res = nullptr,
|
||||||
@@ -386,6 +386,13 @@ inline std::vector<double> load_result_xml(
|
|||||||
" Only the format written by save_result_xml is supported.");
|
" Only the format written by save_result_xml is supported.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// V5 rule 4: <DOFVector> must be present in every well-formed ConformalResult.
|
||||||
|
if (found_root && !found_dofvector)
|
||||||
|
throw std::runtime_error(
|
||||||
|
"conformallab: XML strict-subset violation in " + path
|
||||||
|
+ ": <DOFVector> element not found. Only the format written by"
|
||||||
|
" save_result_xml is supported.");
|
||||||
|
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -126,19 +126,18 @@ CGAL result types (`Conformal_map_result`, `Hyper_ideal_map_result`,
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
### ✅ S3 — Robustness & test-gap closure (DONE, 2026-06-01, Sonnet impl)
|
### ✅ S3 — Robustness & test-gap closure (DONE, 2026-06-01, Sonnet impl + Opus review)
|
||||||
Branch `fix/s3-robustness-gaps`, 2 commits (`833f9e7`, `2e6c4d7`), 313/313 CGAL tests green.
|
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.
|
- **H3** — `enforce_gauss_bonnet` returns `|deficit|` (both overloads); 3 new tests.
|
||||||
- **H4** — `ReduceToFD_ThrowsForRealAxisBoundary` covers `Im(τ)==0.0` exact boundary.
|
- **H4** — `ReduceToFD_ThrowsForRealAxisBoundary` covers `Im(τ)==0.0` exact boundary.
|
||||||
- **H5** — 2 new integration tests: sliver triangle (no crash/NaN, no LinearSolverFailed)
|
- **H5** — 2 integration tests: sliver triangle (no crash/NaN) + exact-degenerate collinear.
|
||||||
and exact-degenerate triangle (no crash, meaningful failure status documented).
|
- **V5** — `load_result_xml` rejects non-conforming XML (3 strict-subset checks); canonical
|
||||||
- **V5** — `load_result_xml` now explicitly rejects non-conforming XML (3 strict-subset
|
round-trip regression test passes. V5 rule 4 (`<DOFVector>` must be present) now enforced.
|
||||||
checks: `geometry=` on same line, `>` on same line as DOFVector, root element present);
|
- **V6** — `check_dof_vector_size(x, expected, context)` throws on mismatch; 3 new tests.
|
||||||
3 new tests (reject reformatted root, reject reformatted DOFVector, canonical still works).
|
- **🔍 Opus review:** CHANGES-REQUESTED resolved — implementation correct; code commits
|
||||||
- **V6** — `check_dof_vector_size(x, expected, context)` helper added to
|
were redundant with `135bcf0` on main; doc follow-up applied on `chore/s3-followup`.
|
||||||
`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)
|
### ⬜ S4 — Documentation & citations (Haiku → 🔍 Opus)
|
||||||
- **N2** — `doc/math/tolerances.md`: every numerical threshold, its role, and
|
- **N2** — `doc/math/tolerances.md`: every numerical threshold, its role, and
|
||||||
|
|||||||
Reference in New Issue
Block a user