feat(perception): establish object centric contracts

This commit is contained in:
DCCONSTRUCTIONS
2026-08-05 13:32:34 +03:00
parent 8ef215e98f
commit ae1e41f7fe
8 changed files with 2665 additions and 0 deletions
@@ -623,6 +623,39 @@ Milestone 4 is complete only when all of the following are true:
- [ ] The Ops card contains exact files, commits, result IDs and validation.
- [ ] Physical live, mounted geometry, navigation and safety remain visibly deferred.
## Implementation record
### 2026-08-05 — M4.0 and M4.1
M4.0 is closed by the executable baseline
`config/perception/m4-recorded-realtime-baseline-v1.json`. It binds only
RAVNOVES00 and the exact source-fusion, E32, E33, E34, E35 and E46J result
documents, KB4 calibration, valid-FOV, YOLOX model/config/profile identities and
the observed E15 Worker 006 rollback process. `k1link.perception.baseline`
validates the profile and resolves all six immutable evidence documents by file
SHA-256, schema, result and identity. The reusable/historical split is frozen in
`config/perception/m4-reuse-inventory-v1.json` and enforced by an import-boundary
test.
M4.1 is closed by `k1link.perception.contracts`, `providers` and `adapters`:
- six exact-key versioned serializers implement SourceEnvelope,
ObjectProposal2D, ObstacleObservation, TemporalObstacle, LocalObstacleMap and
ThreatAssessment;
- provider protocols and one strict graph-configuration contract pin all six
roles, bounded queues, deadlines and replay-only authority;
- one-way TrackGeometry and E34 adapters preserve exact point ownership,
camera-only uncertainty, held/expired state and ephemeral component identity;
- adversarial tests reject class-dependent occupancy identity, duplicate point
ownership, range without current qualified points, held-as-current,
missing-LiDAR-as-free and physical/command authority in replay.
Validation at this increment: 17 focused M4 tests, 60 related geometry/temporal/
telemetry tests and the complete Python suite (`1205 passed, 1 skipped`). Scoped
Ruff and strict mypy pass for `src/k1link/perception`. Repository-wide Ruff and
mypy remain red only in pre-existing legacy experiment/web modules; those errors
were not hidden or expanded into this product boundary.
## Implementation order
The implementation sequence is intentionally strict: