Classify operator background corpus
GeoIntel CI / docs-smoke (push) Has been cancelled
GeoIntel CI / contract-smoke (push) Has been cancelled

This commit is contained in:
Codex
2026-07-10 02:06:13 +02:00
parent 90048ffb4a
commit 64dac0d9b7
9 changed files with 218 additions and 16 deletions
+38
View File
@@ -6197,3 +6197,41 @@ Open:
- The profiles are review/demo aids only. The background corpus still needs to be split into pure-empty negatives and sparse-building contextual AOIs before retraining or recalibrating for a default detector decision.
- No backend API contract, migration, provider fetching, fake detection output, model download behavior or active runtime default changed.
# Sprint 156 - Background corpus classification
## What changed
- Added explicit background category classification to operator sample preparation:
- `pure_empty_negative` when a background candidate has zero GRB reference buildings.
- `sparse_building_context` when a background candidate has one or more GRB reference buildings.
- `reference_aoi` for normal positive reference samples.
- Persisted `background_category` into generated operator sample manifests and reference GeoJSON metadata.
- Added `OPERATOR_BACKGROUND_CATEGORIES` to `scripts/run_operator_hard_negative_detection_matrix.sh` so the strict default-promotion hard-negative gate can run only on `pure_empty_negative` samples, while `sparse_building_context` samples can be reviewed separately.
- Preserved `background_category` in YOLO tile export metadata so negative-tile provenance survives training dataset audits.
- Updated operator pipeline docs, TODO and changelog.
## What was tested
- Added regression coverage in `backend/tests/test_sprint156_background_corpus_classification.py`.
- Ran `python -m pytest tests/test_sprint156_background_corpus_classification.py -q`.
- Ran `python -m pytest tests/test_sprint156_background_corpus_classification.py tests/test_sprint131_operator_sample_expansion.py tests/test_sprint132_operator_hard_negative_matrix.py tests/test_sprint130_operator_yolo_tile_dataset.py -q`: 17 passed.
- Ran `python -m compileall backend/app`.
- Ran `python -m pytest` in `backend`: 439 passed.
- Ran `cd frontend && npm run typecheck`.
- Ran `cd frontend && npm run build`.
- Ran `bash scripts/run_readiness_check.sh`.
- Ran `cd backend && python -m alembic heads` and `cd backend && python -m alembic upgrade head --sql`.
- Ran `bash -n scripts/live_migration_smoke.sh` and `bash -n scripts/run_operator_hard_negative_detection_matrix.sh`.
## Known limitations
- This pass adds the cleaner corpus/gate contract only. It does not regenerate Tower manifests, retrain YOLO, rerun the live hard-negative matrices or change any model default.
- No backend API contract, database migration, provider fetching, fake detection output or model download behavior changed.
## Next recommended pass
- Redeploy/rebuild the runtime scripts, regenerate the operator sample manifest, then run:
- `OPERATOR_BACKGROUND_CATEGORIES="pure_empty_negative"` for the strict default-promotion false-positive gate.
- `OPERATOR_BACKGROUND_CATEGORIES="sparse_building_context"` for contextual review evidence.
- Retrain or recalibrate the inactive AOI1024 local model candidate only after those two matrices are available.