Add guarded promoted YOLO activation
This commit is contained in:
@@ -6532,3 +6532,44 @@ Open:
|
||||
## Next recommended pass
|
||||
|
||||
- Add a guarded model activation/operator-selection workflow that can mark a promoted candidate as active only after the report artifact and candidate key are explicitly supplied.
|
||||
|
||||
# Sprint 163 - Guarded promoted YOLO activation workflow
|
||||
|
||||
## What changed
|
||||
|
||||
- Added `scripts/activate_promoted_yolo_candidate.py`.
|
||||
- The helper validates:
|
||||
- the promotion report file exists and is valid JSON;
|
||||
- the exact supplied `candidate_key` matches the report recommended candidate;
|
||||
- the candidate has `promotion_status=promote_candidate`;
|
||||
- positive sample count, background sample count, mean F1 and max background detections still satisfy report gates;
|
||||
- the candidate `model_asset_id` resolves to an existing local model file under the mounted models directory.
|
||||
- The helper emits `.env` updates in dry-run mode by default and writes them only when `--apply` is supplied.
|
||||
- Updated Detection Lab operator profiles:
|
||||
- `balanced-review` at threshold `0.15` remains candidate-only because pure-empty false-positive pressure failed.
|
||||
- `conservative-review` at threshold `0.35` is marked as promoted/default-approved based on the split-background pure-empty gate.
|
||||
- Added docs for the guarded activation command in `docs/AI_PIPELINES.md`, `scripts/README.md`, `backend/README.md` and `frontend/README.md`.
|
||||
- Added readiness coverage for compiling the new helper.
|
||||
- No API contract, database migration, provider fetching, fake detection path, model file mutation, model download or automatic runtime activation was introduced in code.
|
||||
|
||||
## What was tested locally
|
||||
|
||||
- RED: `python -m pytest tests/test_sprint162_promoted_model_activation.py -q` failed while `scripts/activate_promoted_yolo_candidate.py` was absent.
|
||||
- RED: `python -m pytest tests/test_sprint155_detection_operator_profiles.py -q` failed before `conservative-review` was marked promoted.
|
||||
- RED: `python -m pytest tests/test_sprint162_promoted_model_activation.py::test_readiness_gate_compiles_promoted_activation_script -q` failed before readiness compiled the helper.
|
||||
- Ran `python -m pytest tests/test_sprint162_promoted_model_activation.py tests/test_sprint155_detection_operator_profiles.py -q`: 7 passed.
|
||||
- Ran `python -m py_compile scripts/activate_promoted_yolo_candidate.py`.
|
||||
- Ran `python -m compileall backend/app`.
|
||||
- Ran `python -m pytest` in `backend`: 454 passed, 17 existing Pydantic protected-namespace warnings.
|
||||
- Ran `npm run typecheck` in `frontend`.
|
||||
- Ran `npm run build` in `frontend`.
|
||||
- Ran `bash scripts/run_readiness_check.sh`: passed.
|
||||
|
||||
## Known limitations
|
||||
|
||||
- The helper updates runtime environment only; a container restart or rebuild is still required for `YOLO_MODEL_PATH` changes to take effect.
|
||||
- The promoted threshold is represented in the operator profile and promotion report. The backend detection endpoint still requires clients to submit the intended confidence threshold explicitly.
|
||||
|
||||
## Next recommended pass
|
||||
|
||||
- Push this helper to Tower, run it first as dry-run against the high-threshold promotion report, then apply and redeploy/restart only if the emitted `YOLO_MODEL_PATH` matches the promoted local asset.
|
||||
|
||||
Reference in New Issue
Block a user