docs(reviewer): update audit status + add finding-orchestration plan
Session 1 (2026-05-31) resolved 26 findings across Sonnet/Haiku/Opus; 298/298 CGAL tests green. Bring the audit docs in line with reality: - README.md: G0 banner now records that the original authors were contacted by email about porting/relicensing rights (awaiting reply); headline-status cells updated per finding; new "Session 1 — implemented" record; link to the plan. - Per-audit resolution banners (api-performance, numerical-stability, input-validation, test-coverage, math-citation, thread-safety) + G0-blocked banners (cgal-submission, dependency-license). - NEW finding-orchestration.md: the meta-plan mapping every finding to a session, an implementing model (Haiku/Sonnet/Opus by the "how much must be understood" rule), and an Opus review gate after each implementation session. Records S1 (done) and lays out S2–S6 so the next session can be picked up cold. Docs only — no code change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -37,6 +37,21 @@ a concrete fix, and acceptance criteria.
|
||||
> submission. Referenced from three audits: `cgal-submission-readiness` (G0/G1),
|
||||
> `dependency-license` (D1/D2 — incl. the unlicensed test meshes), and indirectly
|
||||
> `math-derivation-citation` (provenance of the Sechelmann-2016 primary source).
|
||||
>
|
||||
> **🔄 Status 2026-05-31:** the original authors (Sechelmann / Springborn,
|
||||
> TU Berlin / Varylab) have been **contacted by email** to clarify
|
||||
> porting/relicensing rights. **Awaiting reply.** Until a written answer exists,
|
||||
> all G0-gated work (G1–G12, D1/D2, A4/A5, public release, CGAL submission)
|
||||
> stays paused.
|
||||
|
||||
## 🗺️ Working plan across sessions & models
|
||||
|
||||
See [`finding-orchestration.md`](finding-orchestration.md) — the meta-plan that
|
||||
maps every finding to a session, an implementing model (Haiku/Sonnet/Opus), and
|
||||
an Opus review gate. **Session 1 (2026-05-31) is complete:** 26 findings
|
||||
resolved across Sonnet/Haiku/Opus, 298/298 CGAL tests green (branch
|
||||
`fix/b1-v3-c1-quick-wins`). The orchestration doc lists the remaining sessions
|
||||
S2–S6.
|
||||
|
||||
## Correctness & port fidelity
|
||||
|
||||
@@ -45,33 +60,44 @@ a concrete fix, and acceptance criteria.
|
||||
| [`external-audit-2026-05-30.md`](external-audit-2026-05-30.md) | Correctness bugs | 3 findings (face_energy, Gauss–Bonnet, cotangent doc) — **all resolved** |
|
||||
| [`java-port-audit.md`](java-port-audit.md) | Java→C++ math fidelity | line-by-line port anomalies — mostly resolved |
|
||||
| [`java-ignore-crossvalidation.md`](java-ignore-crossvalidation.md) | `@Ignore` cross-validation | which Java tests were intentionally skipped and why |
|
||||
| [`numerical-stability-audit-2026-05-31.md`](numerical-stability-audit-2026-05-31.md) | FP robustness | N1: FD-Hessian step (`1e-5`) fights Newton tol (`1e-8`); clamps, cancellation, magic constants |
|
||||
| [`math-derivation-citation-audit-2026-05-31.md`](math-derivation-citation-audit-2026-05-31.md) | Derivations & citations | M1 Kolpakov–Mednykh missing from refs; M2 BPS cited "2010" vs "2015" |
|
||||
| [`numerical-stability-audit-2026-05-31.md`](numerical-stability-audit-2026-05-31.md) | FP robustness | **N3/N4/N5/N6 ✅** (clamp mode, named constants, Kahan area); **N1 ✅\*** subsumed by B1 block-FD; **N2/N7 open** |
|
||||
| [`math-derivation-citation-audit-2026-05-31.md`](math-derivation-citation-audit-2026-05-31.md) | Derivations & citations | **M1/M2/M4 ✅** (refs + year + citation format); **M3 open**, **M5 needs expert** |
|
||||
|
||||
## API, performance & packaging
|
||||
|
||||
| Document | Focus | Headline |
|
||||
|---|---|---|
|
||||
| [`api-performance-audit-2026-05-31.md`](api-performance-audit-2026-05-31.md) | API naming + Newton perf | A1–A5 naming (**decided**, see below); B1: block-FD Hessian exists but solver uses slow full-FD |
|
||||
| [`cgal-submission-readiness-audit-2026-05-31.md`](cgal-submission-readiness-audit-2026-05-31.md) | CGAL submission | G0 (rights), G1 (MIT≠GPL), layout, concept, user manual, test harness |
|
||||
| [`dependency-license-audit-2026-05-31.md`](dependency-license-audit-2026-05-31.md) | Deps + data licensing | D1 matrix predicated on the G0-undermined MIT premise; D2 test meshes have no provenance |
|
||||
| [`api-performance-audit-2026-05-31.md`](api-performance-audit-2026-05-31.md) | API naming + Newton perf | **A1–A3 ✅**, **B1 ✅** (both halves), **B2–B5 ✅** (newton_core refactor); **A4/A5 deferred** (G0/G1) |
|
||||
| [`cgal-submission-readiness-audit-2026-05-31.md`](cgal-submission-readiness-audit-2026-05-31.md) | CGAL submission | **⛔ blocked by G0** (author contacted); G1 (MIT≠GPL), layout, concept, manual, test harness all pending |
|
||||
| [`dependency-license-audit-2026-05-31.md`](dependency-license-audit-2026-05-31.md) | Deps + data licensing | **⛔ blocked by G0**; D1 matrix predicated on the G0-undermined MIT premise; D2 test meshes have no provenance |
|
||||
| [`usability-audit-2026-05-31.md`](usability-audit-2026-05-31.md) | Examples & docs | U1–U11 — **all resolved** (PR #34) |
|
||||
|
||||
## Robustness & operational
|
||||
|
||||
| Document | Focus | Headline |
|
||||
|---|---|---|
|
||||
| [`test-coverage-error-handling-audit-2026-05-31.md`](test-coverage-error-handling-audit-2026-05-31.md) | Coverage + error handling | C1 solver `ok` flag dropped; coverage gate **decided: 80 % line / 70 % branch / 90 % func** |
|
||||
| [`input-validation-audit-2026-05-31.md`](input-validation-audit-2026-05-31.md) | Malformed input | V3: NaN/Inf vertex coords flow silently into the solver |
|
||||
| [`thread-safety-audit-2026-05-31.md`](thread-safety-audit-2026-05-31.md) | Concurrency | no mutable static state (good); same-mesh concurrency contract undocumented |
|
||||
| [`test-coverage-error-handling-audit-2026-05-31.md`](test-coverage-error-handling-audit-2026-05-31.md) | Coverage + error handling | **C1/C2/C3 ✅**, **I2/I3/I4 ✅**, **H2 ✅** (newton_core); **I1/I5/H1/H3/H4/H5 open**; gate in ramp-up until I5 |
|
||||
| [`input-validation-audit-2026-05-31.md`](input-validation-audit-2026-05-31.md) | Malformed input | **V1/V2/V3/V4 ✅** (NaN/Inf guard + JSON/XML error handling); **V5/V6 open** (polish) |
|
||||
| [`thread-safety-audit-2026-05-31.md`](thread-safety-audit-2026-05-31.md) | Concurrency | no mutable static state (good); same-mesh concurrency contract **still undocumented (open, S4)** |
|
||||
|
||||
## Decisions taken (2026-05-31)
|
||||
## Session 1 — implemented (2026-05-31)
|
||||
|
||||
- **Coverage gate:** 80 % line / 70 % branch / 90 % function (after fixing the
|
||||
coverage script so it measures honestly — `test-coverage` C2/I5).
|
||||
Branch `fix/b1-v3-c1-quick-wins`, 9 commits, **298/298 CGAL tests green**.
|
||||
See [`finding-orchestration.md`](finding-orchestration.md) for the full plan.
|
||||
|
||||
- **Sonnet:** B1(HyperIdeal)/V3/C1; C2/C3 (coverage gate, ramp-up); V1/V2/V4; I2/I3/I4.
|
||||
- **Haiku:** N4/N6 (named constants); M1/M2/M4 (citations); A1–A3 (naming + `[[deprecated]]` aliases).
|
||||
- **Opus:** B1 inversive-distance block-FD port; N5 (Kahan area); N3 (selectable
|
||||
clamp mode `HardJava`|`SmoothBarrier`); H2 + B2/B3/B4/B5 (newton_core refactor).
|
||||
- **🔍 Opus review:** all Sonnet/Haiku commits validated (value-identity, error
|
||||
handling, coverage-gate logic, alias forwarding) — all correct.
|
||||
|
||||
### Decisions standing
|
||||
- **Coverage gate:** 80 % line / 70 % branch / 90 % function. Script now measures
|
||||
honestly (C2 ✅); gate is in **ramp-up** (`SKIP_COVERAGE_GATE=1`) until **I5**
|
||||
wires it to the full CGAL suite.
|
||||
- **API naming A1–A3 (internal):** standardized on `<verb>_<geom>_<rest>` with
|
||||
`[[deprecated]]` aliases — **implemented**, open as **PR #36**
|
||||
(`refactor/api-naming-a1-a3`), 277/277 tests green.
|
||||
`[[deprecated]]` aliases — **implemented**.
|
||||
- **API naming A4–A5 (public CGAL surface):** decided (`discrete_inversive_distance_euclidean`;
|
||||
both packers return `Circle_packing_result`) but **deferred** until the G0/G1
|
||||
outcome — no point stabilizing a public API on a package whose release status is open.
|
||||
@@ -79,9 +105,10 @@ a concrete fix, and acceptance criteria.
|
||||
## How to act on a finding in a new session
|
||||
|
||||
Open the relevant audit, pick a finding, follow its "Fix" + "Acceptance criteria".
|
||||
Build/verify with the commands in that document's header. Suggested first batch
|
||||
(low-risk, high-value quick wins): **B1** (HyperIdeal block-FD one-liner), **B3**,
|
||||
**C1**, **C2**, **V3**.
|
||||
Build/verify with the commands in that document's header. **The Session-1 quick-win
|
||||
batch (B1, B3, C1, C2, V3, …) is done** — for what to pick up next, follow the
|
||||
session plan in [`finding-orchestration.md`](finding-orchestration.md): the next
|
||||
pending batch is **S2** (I1 + H1 + N7, Sonnet→Opus review).
|
||||
|
||||
## When to send to the reviewer
|
||||
|
||||
|
||||
Reference in New Issue
Block a user