feat: add measured detection review loop
GeoIntel CI / docs-smoke (push) Canceled after 0s
GeoIntel CI / contract-smoke (push) Canceled after 0s

This commit is contained in:
Codex
2026-07-15 03:00:08 +02:00
parent 94ecd377b7
commit d22abe8e7b
27 changed files with 1578 additions and 29 deletions
+37
View File
@@ -8135,3 +8135,40 @@ Next:
- Add a review workflow for accepted/rejected detections and use those audited
labels as the gate for model calibration or retraining. Do not present the
current F1 score as production-grade accuracy.
## Sprint 197 - Measured detection accuracy and durable review (2026-07-15)
Implemented:
- Added first-class `detection_reviews` persistence linked to Project,
QualityCheck, AnalysisRun, Detection and reference VectorFeature, with
role-constrained decisions and one durable row per evidence item.
- Added canonical paginated GET/POST review endpoints and a frontend review
queue with role/status filters, notes, summary counts and map handoff.
- Changed map-driven detection QA from generic UI IoU `0.50` to the documented
box-versus-footprint operational IoU `0.25`.
- Reworded map output as candidates and exposed persisted matches, precision,
recall, F1, false positives and false negatives.
- Bounded evidence lookup to persisted evidence ids; complete regional GRB
layers are no longer materialized for a small review overlay.
Live model evidence before deployment:
- Re-ran the active model at confidence `0.10` and `0.15` on Mol Achterbos,
Gompel, Donk and Postel with QA IoU `0.25`.
- Confidence `0.15` won F1 in all four positive holdouts: `0.6694`, `0.6564`,
`0.5894` and `0.4749`. Confidence `0.10` measured `0.6287`, `0.6348`,
`0.5636` and `0.4435` respectively.
- Both thresholds produced zero detections on the pure-empty Postel forest
control. The active confidence remains `0.15`; no model or asset was trained,
downloaded or promoted.
Validation before deployment:
- The complete readiness gate passed 592 backend tests, the API/document audit
for 88 implemented routes, backend compilation, one Alembic head, offline
migration SQL generation, frontend typecheck/build and shell smoke checks.
- Focused review/evidence regressions passed and the production bundle retained
separate React, application and MapLibre chunks.
Next:
- Deploy the migration and UI, verify one live review queue and map QA result,
then complete representative manual decisions before constructing any new
model-training corpus.