feat(perception): add frozen yolox provider

This commit is contained in:
DCCONSTRUCTIONS
2026-08-05 14:09:51 +03:00
parent 029b486c67
commit a680debfaf
10 changed files with 965 additions and 11 deletions
@@ -2,7 +2,7 @@
Date: 2026-08-05
Status: in progress; M4.0M4.2 implemented
Status: in progress; M4.0M4.2 implemented, M4.3 runtime gate open
Audit base: `1b3e0b3` on `feat/simulation-polygon-s1`
@@ -679,6 +679,36 @@ geometry/temporal/degradation/telemetry tests and the complete Python suite
`src/k1link/perception`. The canonical GUI remained on `127.0.0.1:8000`; no
duplicate development server or Worker 006 mutation was introduced.
### 2026-08-05 — M4.3 provider increment, runtime gate remains open
The product detector seam is implemented without importing the immutable E46J
wrapper:
- `k1link.compute.yolox_object_detector` contains only the frozen raw-KB4
valid-FOV fill, top-left bilinear letterbox, Triton V2 binary HTTP transport,
standard YOLOX decode, fixed score/class-wise NMS and FOV/box validation;
- `k1link.perception.detector.FrozenYoloxDetectorProvider` turns exactly one
decoded image into class-agnostic `ObjectProposal2D` rows; the COCO label is
retained only as optional `semantic_hint`, and no tracklet is published;
- model, config, valid-FOV, score, NMS, target classes and raster identities are
frozen against in-place tuning;
- zero-proposal, pathological/non-finite and provider-failure frames are counted
explicitly; graph stage telemetry remains the common latency path;
- the recorded source now has a separate sequential PyAV decode seam, so image
decoding remains source work and no detector logic enters the adapter;
- all 4,489 accepted immutable E46J frame documents and 15,499 detections map to
the new proposal contract with exact frame accounting.
This increment does **not** claim a new 4,489-frame Triton execution. The existing
E46J 47.840 FPS result remains the baseline evidence. A fresh provider execution
requires a digest-bound shadow package; ad-hoc executable staging on Worker 006
is prohibited by the deployment canon. Therefore M4.3 runtime/capacity exit and
its final checker remain open, and M4.4 does not start yet.
Validation at this increment: 76 focused-and-related tests and the complete
Python suite (`1221 passed, 1 skipped`). Scoped Ruff and strict mypy pass for the
new compute primitive and complete `src/k1link/perception` package.
## Implementation order
The implementation sequence is intentionally strict: