feat: close measured model review evidence
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:34:04 +02:00
parent 2a9b48d2b5
commit 919e102069
11 changed files with 512 additions and 9 deletions
+8
View File
@@ -172,6 +172,14 @@ not treated as reviewable model misses. This renderer does not alter persisted
QA metrics; coverage-adjusted values remain audit diagnostics until the QA
service evaluation population is deliberately hardened.
`validate_detection_false_negative_review_decisions.py` provides the same
fail-closed validation as the false-positive workflow. It requires an exact
one-to-one set of reviewed reference ids and emits only explicit
`confirmed_model_false_negative` geometries. `--require-complete` rejects any
remaining `unreviewed` row. The July 2026 96-card review is recorded in
`docs/reviews/2026-07-15-small-building-model-review.md`; it yielded no novel,
leakage-free labels and therefore did not trigger model training.
### Local model asset catalog
GeoIntel can list local runtime model files mounted into the backend model
+37
View File
@@ -8192,3 +8192,40 @@ 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.
## Sprint 198 - Evidence-closed model review (2026-07-15)
Implemented:
- Generated the previously missing 48-card false-negative contact-sheet bundle
from the exact persisted inference manifests for Geel, Herentals and
Turnhout; 731 references outside tile coverage remained explicitly excluded.
- Completed all 96 FP/FN decisions through orthophoto inspection plus
persisted geometry-overlap diagnostics. The result is 5 confirmed model FP,
10 confirmed model FN, 59 QA-alignment cases, 10 reference-gap/change cases
and 12 uncertain/obscured cases.
- Added `validate_detection_false_negative_review_decisions.py`, mirroring the
existing FP safety contract and exporting only explicit confirmed misses.
- Audited confirmed evidence against the active training split. Geel and
Herentals are existing training sources; Turnhout is an excluded operational
holdout. The review therefore provides zero novel leakage-free labels and a
new fine-tuning run was deliberately rejected.
- Added strict match count plus the existing diagnostic reference-envelope
result to the map analysis panel. Canonical footprint IoU metrics remain
unchanged.
Validation:
- Both 48-row decision CSVs completed with zero `unreviewed` records and passed
their validators with `--require-complete`.
- Focused validator/readiness/map-contract tests passed.
- Full readiness passed 596 backend tests, backend compilation, 88 documented
API routes, one Alembic head, frontend typecheck/build and shell syntax gates.
Known limitation:
- The active local model remains useful but imperfect. A new candidate requires
independently collected training-only AOIs and complete tile labels; holdout
review evidence must not be recycled into training.
Next:
- Collect a new training-only small-building/background evidence pack outside
all operational holdouts, then train an inactive candidate only if the pack
passes label, leakage and sample-volume audits.
+2 -1
View File
@@ -50,7 +50,8 @@ This file now starts with the current implementation status. Older preparation/b
- [x] Persist paginated false-positive/false-negative operator decisions and expose them in the Quality workspace.
- [x] Bound QA evidence resolution to persisted evidence ids instead of loading complete regional reference datasets.
- [x] Compare confidence `0.10` and `0.15` over independent Mol holdouts; retain `0.15` because it wins F1 in every positive zone while both pass the empty-background control.
- [ ] Complete manual decisions for the generated 48 false-negative and 48 false-positive review cards before constructing any new training corpus.
- [x] Complete conservative decisions for the generated 48 false-negative and 48 false-positive review cards, validate both roles fail-closed and retain only 15 confirmed model errors.
- [x] Audit the confirmed review evidence against the active corpus and holdouts; reject retraining because it provides zero novel leakage-free labels.
- [x] Backend FastAPI foundation, health endpoint and service structure.
- [x] React/TypeScript frontend foundation and MapLibre workbench.
- [x] Map layer visibility, opacity and feature property inspection.
@@ -0,0 +1,71 @@
# Small-building model review - 2026-07-15
## Scope
This review uses persisted configured-YOLO detections, persisted GRB building
features and the exact orthophoto inference tiles from Geel, Herentals and
Turnhout. It does not infer labels from QA status alone and does not alter the
active model.
- Model asset: `geointel-building-yolov8s-smallbld-minpx3-img640-ft30-pt`
- SHA256: `a9088b8491dfae36694b53e9e9406cb4e3511d334a5712fa34f75078a47759c1`
- Canonical QA method: candidate polygon versus GRB footprint IoU `0.25`
- False-positive cards reviewed: 48
- False-negative cards reviewed: 48
- False negatives outside persisted inference-tile coverage: 731, excluded
Every card was checked against its orthophoto and the persisted candidate and
reference overlays. Geometric overlap diagnostics were used to distinguish a
model error from box/footprint or one-to-one matching effects. Ambiguous cards
remain excluded from training.
## Decisions
| Evidence | Confirmed model error | QA alignment | Reference gap/change | Uncertain/obscured |
| --- | ---: | ---: | ---: | ---: |
| False positive | 5 | 34 | 5 | 4 |
| False negative | 10 | 25 | 5 | 8 |
| Total | 15 | 59 | 10 | 12 |
The dominant finding is not a model error. In 59 of 96 reviewed cards, a real
candidate and reference overlap but the canonical box-versus-footprint or
one-to-one assignment does not count that pair as a match. Those records must
not become positive or negative training labels.
## Training-readiness audit
The active tile corpus already uses Geel and Herentals as training sources and
keeps Turnhout excluded as an operation-level holdout.
| Confirmed evidence | Geel | Herentals | Turnhout holdout |
| --- | ---: | ---: | ---: |
| False positive | 3 | 1 | 1 |
| False negative | 0 | 4 | 6 |
- The four confirmed false negatives in Herentals already exist as GRB labels
in the current training source. Re-adding them would not add new ground
truth; it would only change sample weighting.
- Confirmed false-positive detections in Geel and Herentals occur on urban
source tiles that also contain valid GRB buildings. Treating those complete
tiles as empty hard negatives would create false negative labels.
- The seven confirmed errors in Turnhout remain holdout evidence and cannot be
used for training without invalidating the independent benchmark.
Result: **0 novel, leakage-free training labels are available from this review
bundle.** A new fine-tuning run is therefore rejected. The active model and
confidence `0.15` remain unchanged.
## Required next evidence before training
1. Collect new training-only orthophoto AOIs outside all Mol/Turnhout/Retie/
Westerlo operational holdouts.
2. Label the complete contents of each selected tile from an authoritative
reference snapshot; never label only the reviewed detection box.
3. Add enough independent confirmed small-building and true empty-background
examples to justify a separate candidate.
4. Keep the candidate inactive until it passes the same positive-AOI,
pure-empty-background and Mol holdout gates.
The review CSVs, contact sheets and validator outputs remain under the
persistent operator-data mount and are intentionally not committed as generated
repository artifacts.