docs(perception): record host telemetry recovery and scoped inventory evidence

This commit is contained in:
DCCONSTRUCTIONS
2026-09-02 16:56:22 +03:00
parent 61cbdb30a0
commit 03e8e71bea
3 changed files with 172 additions and 8 deletions
@@ -1,9 +1,9 @@
# ADR 0049 — Stream-first full perception profiles
Date: 2026-09-01; updated 2026-09-02 15:56 MSK. Status: stage-1 engineering
baseline complete; stage-2 full binary GPU pilot now supports input recovery.
Production collector, external transport, standalone image and product cutover
remain open; local recording/IPC proof is not physical-live acceptance.
Date: 2026-09-01; updated 2026-09-02 16:52 MSK. Status: stage-1 engineering
baseline complete; stage-2 full binary GPU pilot consumes real scoped host facts.
External transport/authentication, native-host GPU inventory, standalone image
and product cutover remain open; local proof is not physical-live acceptance.
Execution order remains the four stages in
[the ExecPlan](../OBSERVATORY_REALTIME_PROFILES_EXECPLAN.md).
@@ -54,6 +54,52 @@ local server are made by this ADR or the stage-1 validators.
## Versioned handshake and observations
### Current host observation adapter (2026-09-02 16:52, `61cbdb3`)
`WorkerControlChannel` / `WorkerControlPump` supply the common readiness monitor
with actual GPU name/driver/clocks and Docker image/configured resource limits /
GPU-access inventory from `collect_worker_host.ps1` on the trusted Windows host.
Only the host collector executes fixed read-only Docker/NVIDIA queries. The AI
container has no Docker socket, host setters or network access. Request and reply
directories are separate; the reply mount must be read-only and cannot also be
reachable through the writable output mount. This local filesystem authority is
NOT authentication for external sensor/GCS traffic.
One pending random nonce, activation digest, sequence and a16KiB reply bound
prevent history/queue growth. The collector reads facts AFTER receiving that
challenge. Observation time is the local Linux request-start monotonic value,
not the reply receipt or Windows timestamp. Delayed replies stay old; missing,
malformed or different-nonce replies cannot refresh readiness. A known matching
reply with changed container/image/owner or competitors fences execution.
Owner, effective config and warmup remain local-controller facts, never accepted
from the sensor stream or inferred from utilization. The pump does not renew the
lease; its I/O runs outside lifecycle locks and the heartbeat thread.
Scope is part of the sealed effective configuration: `docker-gpu-access` means
observed Docker GPU-capable containers, NOT all native host/WSL GPU processes.
It cannot satisfy an envelope requiring `host-compute`. Windows reports PID4 /
Insufficient Permissions; native host coverage stays explicitly unproved.
Incomplete inventory or unavailable GPU telemetry cannot be waived even by
`labelled-experiment`; measured low clocks can be logged as overload conditions.
Bootstrap acquires the local lease and attaches readiness before spawning any
model. Warmup telemetry lag blocks further startup without destroying already
loaded children or invalidating an input epoch that has not started. Active
stream lag pauses input, keeps models and local lease, then requires the existing
fresh-keyframe/sensor resynchronization and temporal reset. The bounded pilot's
outer watchdog remains; this is not yet a durable production controller.
Measured normal graph:128/128 exact raw outputs,50 real observations, p95/p99
91.157/97.946ms. Delaying a host reply2200ms:102 completed,26 intentional omissions,
two expired requests, same four resident PIDs/lease; resume seq50, old temporal
stores/cells absent, first scene fresh. Result receipt gap2.719s is NOT latency
from the Windows fault start (clock domains are not subtracted). Both trials
use the temporary authorized stock-clock envelope, not general qualification.
404 focused tests; evidence SHA-256
`aac125bd1b182d164c95d18089793fa54bf9797478bce1afe3de2a1d9093f6ef`.
The first warmup abort and Windows atomic-replacement correction are retained
in the experiment journal. Historical readiness notes below retain their dates.
`missioncore.perception-stream-start/v1` is represented by `StreamStart` in
`src/k1link/perception/realtime_contract.py`. It contains run/source/worker/epoch,
lease generation, profile/image/effective-config/calibration identities, clock