docs(perception): record external worker acceptance
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# External perception worker contract
|
||||
|
||||
## Boundary
|
||||
|
||||
```text
|
||||
K1
|
||||
-> XGRIDS device plugin / Mission Core Edge
|
||||
-> authoritative raw session on Mac
|
||||
-> bounded missioncore.compute-job/v1
|
||||
-> replaceable GPU worker / Triton
|
||||
-> content-addressed missioncore.compute-result/v1
|
||||
-> future optional Rerun derived layer
|
||||
```
|
||||
|
||||
The GPU worker cannot discover, provision, start or stop a K1. It receives an
|
||||
observation package and returns derived observations. The Mac archive is never
|
||||
rewritten when a job is prepared or a result is received.
|
||||
|
||||
## Recorded camera job v1
|
||||
|
||||
`k1link compute prepare-camera-job` accepts a sealed cataloged session, one
|
||||
camera source and one physical codec epoch. It performs the canonical camera
|
||||
checks before and after copying into a private staging directory:
|
||||
|
||||
- summary schema/source/epoch and per-segment durability contract;
|
||||
- exact ordered JSONL index and its summary SHA-256;
|
||||
- init SHA-256, every segment length/SHA-256 and complete stream SHA-256;
|
||||
- continuous ISO-BMFF decode timeline and finite media duration;
|
||||
- source session-time mapping through the captured host clock origin.
|
||||
|
||||
Publication atomically renames this layout below ignored storage:
|
||||
|
||||
```text
|
||||
<jobs>/<job-id>/
|
||||
├── job.json
|
||||
└── input/camera/<source-id>/epoch-N/
|
||||
├── summary.json
|
||||
├── index.jsonl
|
||||
├── init.mp4
|
||||
└── segments/*.m4s
|
||||
```
|
||||
|
||||
`input_sha256` is SHA-256 over canonical JSON for the complete path-free input
|
||||
descriptor. `job_id` includes its first 96 bits and validators require the full
|
||||
digest, so a prefix collision fails closed.
|
||||
|
||||
## Recorded result v1
|
||||
|
||||
The accepted worker profile verifies every transferred file, reconstructs the
|
||||
stream outside the job, decodes frames and preserves strictly increasing
|
||||
best-effort timestamps in session seconds. Its result identity is canonical JSON
|
||||
covering:
|
||||
|
||||
- job and full input generation;
|
||||
- pipeline ID/version;
|
||||
- model ID/version/weight SHA-256;
|
||||
- score/NMS thresholds, tensor shape, color order and letterbox policy.
|
||||
|
||||
The identity's full SHA-256 names an immutable `result-<sha256>` directory.
|
||||
The result manifest binds the detection artifact's length and SHA-256. A repeat
|
||||
with the same identity validates the existing directory and returns it without
|
||||
calling Triton.
|
||||
|
||||
## Accepted model profile
|
||||
|
||||
- YOLOX-S official ONNX from upstream release `0.1.1rc0`;
|
||||
- Apache-2.0;
|
||||
- SHA-256
|
||||
`c5c2d13e59ae883e6af3b45daea64af4833a4951c92d116ec270d9ddbe998063`;
|
||||
- FP32 input `[1,3,640,640]`, BGR, bilinear top-left letterbox, pad 114;
|
||||
- FP32 output `[1,8400,85]`, official grid/stride decode, COCO-80;
|
||||
- Triton 2.70.0 / ONNX Runtime GPU backend in the pinned 26.06 image.
|
||||
|
||||
This generic model is useful for proving the contract and timing path. It is not
|
||||
accepted for obstacle avoidance, free-space estimation or safety decisions.
|
||||
|
||||
## Open gates
|
||||
|
||||
1. Import the accepted result as an optional session-timestamped Rerun layer.
|
||||
2. Qualify TEST007's 206-second epoch and record throughput/resource telemetry.
|
||||
3. Replace SSH/SCP with a reviewed authenticated worker transport.
|
||||
4. Add bounded live queues, sampling/drop policy and acquisition-isolation
|
||||
tests.
|
||||
5. Introduce tracking, segmentation/free-space, calibration and point-cloud
|
||||
models as separate versioned pipelines.
|
||||
Reference in New Issue
Block a user