diff --git a/docs/CODEX_EXECUTION_LOG.md b/docs/CODEX_EXECUTION_LOG.md index b42a57fe..84994653 100644 --- a/docs/CODEX_EXECUTION_LOG.md +++ b/docs/CODEX_EXECUTION_LOG.md @@ -6895,12 +6895,50 @@ Open: - Ran `python scripts/export_operator_yolo_tile_dataset.py --help`: the CLI exposes `--drop-low-variance-negatives`, `--no-drop-low-variance-negatives` and `--blank-range-threshold` without loading GIS dependencies. - Ran `bash scripts/run_readiness_check.sh`: 460 backend tests passed, frontend typecheck passed, frontend build passed, readiness passed. +## Tower runtime evidence + +- Pushed commit `a159370` and redeployed the all-in-one Tower runtime at `http://192.168.10.150:1202`. +- Deploy validation passed: + - live migration smoke passed; + - browser runtime verification passed; + - container exposed `0.0.0.0:1202->80/tcp`. +- Regenerated the AOI1024 cleanpx dataset with low-variance negative filtering enabled: + - dataset: `/app/storage/operator-data/yolo-building-aoi1024-cleanpx12vis035` + - `drop_low_variance_negatives=true` + - `blank_range_threshold=3` + - tile count: `135` + - positive tiles: `114` + - negative tiles: `21` + - skipped negative tiles: `9` + - skipped low-variance negative tiles: `9` + - labels: `14632` + - train tiles: `108` + - validation tiles: `27` +- Dataset audit: + - report: `/app/artifacts/operator-yolo-dataset-audit/aoi1024-cleanpx12vis035-lowvarfilter/operator_yolo_dataset_quality_audit.json` + - status: `ok` + - invalid labels: `0` + - missing label files: `0` + - median normalized box area: `0.001373291016` + - small-box share: `0.0` +- Visual label QA: + - report: `/app/artifacts/operator-yolo-label-qa/aoi1024-cleanpx12vis035-lowvarfilter/operator_yolo_label_qa_summary.json` + - contact sheet: `/app/artifacts/operator-yolo-label-qa/aoi1024-cleanpx12vis035-lowvarfilter/contact_sheet_001.png` + - selected tiles: `32` + - rendered tiles: `32` + - valid labels: `7670` + - invalid labels: `0` + - missing images: `0` + - missing label files: `0` + - low-variance rendered tiles: `0` +- Visual inspection confirmed that the previous blank white `arendonk_heide` negatives are no longer present in the review sheet. The remaining selected pure-empty negatives are real visible orthophoto/context tiles. + ## Known limitations - The low-variance gate is deliberately simple and only identifies visually blank/no-data-looking negative tiles. -- It is opt-in to avoid silently changing historical dataset exports. - Operator visual contact-sheet review remains required before any new training run. +- The filtered dataset is now a cleaner input candidate, but model training is still not guaranteed to improve QA/QC; another training run must be gated through the existing positive-AOI and background promotion reports. ## Next recommended pass -- Redeploy Tower, regenerate the AOI1024 cleanpx dataset with `--drop-low-variance-negatives`, rerun dataset audit and contact-sheet QA, then decide whether the filtered dataset is suitable for another training run. +- Train one inactive candidate from the filtered AOI1024 cleanpx dataset, then run the existing positive-AOI matrix and split-background promotion workflow before considering default activation. diff --git a/docs/TODO.md b/docs/TODO.md index 9e83b6d5..94b048f5 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -132,7 +132,8 @@ This file now starts with the current implementation status. Older preparation/b - [x] Add per-sample YOLO dataset audit diagnostics for parsed labels, median box area, small-box share and AOI-specific warning codes. - [x] Add deterministic visual YOLO label QA contact sheets before spending more CPU on another training run. - [x] Filter no-data/low-variance pure-empty negative tiles from operator YOLO exports before the next training run. -- [ ] Regenerate the AOI1024 cleanpx YOLO dataset with low-variance negative filtering and rerun visual contact-sheet QA before training. +- [x] Regenerate the AOI1024 cleanpx YOLO dataset with low-variance negative filtering and rerun visual contact-sheet QA before training. +- [ ] Train one inactive candidate from the filtered AOI1024 cleanpx YOLO dataset and gate it through the positive-AOI plus split-background promotion workflow. - [ ] Apply promoted V1 default building detector only after explicit operator review of the emitted `.env` updates, followed by rebuild/restart and browser/runtime smoke. ## Sprint 8 status diff --git a/docs/superpowers/plans/2026-07-11-yolo-low-variance-negative-filter.md b/docs/superpowers/plans/2026-07-11-yolo-low-variance-negative-filter.md index e2b3e15e..3f7d89f2 100644 --- a/docs/superpowers/plans/2026-07-11-yolo-low-variance-negative-filter.md +++ b/docs/superpowers/plans/2026-07-11-yolo-low-variance-negative-filter.md @@ -51,6 +51,6 @@ - [x] Run targeted pytest for the exporter/contact-sheet tests. - [x] Run `bash scripts/run_readiness_check.sh`. -- [ ] Commit and push. -- [ ] Rebuild/deploy Tower if code changed. -- [ ] Regenerate the AOI1024 dataset with the new filter enabled, then render contact sheets and record the result. +- [x] Commit and push. +- [x] Rebuild/deploy Tower if code changed. +- [x] Regenerate the AOI1024 dataset with the new filter enabled, then render contact sheets and record the result.