diff --git a/CHANGELOG.md b/CHANGELOG.md index c08a2bea..4ec37003 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1418,3 +1418,4 @@ Added: - Fixed the all-in-one Dockerfile so documented operator scripts are copied into `/app/scripts/`, then prepared and audited the new Tower `yolo-building-tile-uniquehardneg160` dataset as the next training candidate. - Fixed the YOLO preflight CLI so it respects environment-provided runtime configuration instead of reporting `not_configured` unless CLI flags were supplied. - Rebuilt the Tower all-in-one image with AI dependencies and verified live migration smoke, browser runtime and YOLO preflight readiness against an existing raster tile manifest. +- Fixed the all-in-one Dockerfile so the operator YOLO training wrapper is available and executable inside `/app/scripts`. diff --git a/backend/tests/test_docker_runtime_config.py b/backend/tests/test_docker_runtime_config.py index 532f8344..2a5d2234 100644 --- a/backend/tests/test_docker_runtime_config.py +++ b/backend/tests/test_docker_runtime_config.py @@ -61,6 +61,7 @@ def test_all_in_one_dockerfile_copies_operator_scripts_for_runtime_use() -> None assert "COPY scripts/prepare_operator_real_data_samples.py /app/scripts/prepare_operator_real_data_samples.py" in dockerfile assert "COPY scripts/export_operator_yolo_tile_dataset.py /app/scripts/export_operator_yolo_tile_dataset.py" in dockerfile assert "COPY scripts/audit_operator_yolo_dataset_quality.py /app/scripts/audit_operator_yolo_dataset_quality.py" in dockerfile + assert "COPY scripts/train_operator_yolo_detector.sh /app/scripts/train_operator_yolo_detector.sh" in dockerfile def test_compose_does_not_require_missing_root_env_file() -> None: diff --git a/deploy/unraid/Dockerfile.all-in-one b/deploy/unraid/Dockerfile.all-in-one index 1b28bd7a..b2ffacff 100644 --- a/deploy/unraid/Dockerfile.all-in-one +++ b/deploy/unraid/Dockerfile.all-in-one @@ -49,6 +49,7 @@ COPY fixtures/ /app/fixtures/ COPY scripts/prepare_operator_real_data_samples.py /app/scripts/prepare_operator_real_data_samples.py COPY scripts/export_operator_yolo_tile_dataset.py /app/scripts/export_operator_yolo_tile_dataset.py COPY scripts/audit_operator_yolo_dataset_quality.py /app/scripts/audit_operator_yolo_dataset_quality.py +COPY scripts/train_operator_yolo_detector.sh /app/scripts/train_operator_yolo_detector.sh COPY deploy/unraid/nginx-all-in-one.conf /etc/nginx/conf.d/default.conf COPY deploy/unraid/all-in-one-start.sh /usr/local/bin/geointel-all-in-one-start COPY --from=frontend-build /frontend/dist/ /usr/share/nginx/html/ @@ -61,6 +62,7 @@ RUN /usr/bin/python3.11 -m venv /opt/geointel/venv \ && python scripts/gis_import_smoke.py \ && python scripts/yolo_preflight.py --json >/tmp/geointel-yolo-preflight.json \ && chmod +x /usr/local/bin/geointel-all-in-one-start \ + && chmod +x /app/scripts/train_operator_yolo_detector.sh \ && rm -f /etc/nginx/sites-enabled/default \ && mkdir -p /app/storage /run/nginx /var/log/nginx diff --git a/docs/CODEX_EXECUTION_LOG.md b/docs/CODEX_EXECUTION_LOG.md index 793069f8..330387fb 100644 --- a/docs/CODEX_EXECUTION_LOG.md +++ b/docs/CODEX_EXECUTION_LOG.md @@ -5680,6 +5680,7 @@ Open: - Added sample-registry test coverage for minimum unique background count, unique centers and regional spread. - Updated operator documentation with the expanded default corpus and the next required Tower regeneration step. - Fixed the all-in-one Dockerfile so the documented operator scripts are copied into `/app/scripts/` during normal rebuilds. +- Fixed the all-in-one Dockerfile training-runtime gap so `/app/scripts/train_operator_yolo_detector.sh` is also copied into the rebuilt container and marked executable. - Fixed `scripts/yolo_preflight.py` so it respects `YOLO_ENABLED`, `YOLO_MODEL_PATH` and `YOLO_MAX_TILES` from the runtime environment unless explicit CLI overrides are supplied. - Prepared the expanded Tower operator manifest and exported `yolo-building-tile-uniquehardneg160`. @@ -5688,6 +5689,8 @@ Open: - `python -m pytest backend\tests\test_sprint131_operator_sample_expansion.py -q` - `python -m pytest backend\tests\test_sprint127_operator_sample_quality_matrix.py backend\tests\test_sprint131_operator_sample_expansion.py -q` - `python -m pytest backend\tests\test_sprint13_yolo_preflight.py -q` +- Red/green Docker runtime guard for the training wrapper: `python -m pytest backend\tests\test_docker_runtime_config.py::test_all_in_one_dockerfile_copies_operator_scripts_for_runtime_use -q` +- `python -m pytest backend\tests\test_docker_runtime_config.py -q` - `bash scripts/run_readiness_check.sh` - Tower live operator sample prep: - manifest samples: 16 total, 7 reference and 9 background candidates.