feat(k1): wire dormant control lease

This commit is contained in:
DCCONSTRUCTIONS
2026-07-18 14:37:02 +03:00
parent ea811ff370
commit a4accf0fb6
21 changed files with 704 additions and 38 deletions
+10 -5
View File
@@ -21,7 +21,7 @@ Each gate produces evidence and an explicit GO, PAUSE or BLOCKED result.
| Stage 7 observation archive | GO (point/pose/telemetry contract) — durable catalog, recovery, capture-clock-bounded RRD preparation, archived metric time series, saved-session timeline and atomic playback are implemented |
| Stage 7 recorded cameras | GO (contract), acceptance pending — acquisition-owned fMP4 archive and player are implemented/tested; one real archived K1 camera plus point-cloud session has not passed playback yet |
| Plugin isolation | GO (laboratory control plane) — vendor backend/frontend and optional scene controls are plugin-owned; manifest/runtime descriptor parity, versioned handshake, lifecycle health and transport correlation fail closed while execution remains in-process |
| K1 application control | PAUSE (offline execution gate complete) — exact five-batch response-barrier orchestrator passes the retained 10-request dialogue; the 36-byte application authority loads only from macOS Keychain; current publisher boundary is structurally write-disabled and never touches its sink; runtime wiring, physical START/STOP and durable save remain closed gates |
| K1 application control | PAUSE (dormant runtime gate complete) — plugin v0.4.0 exposes operator-confirmed shadow arm/disarm/state; authority is held in a 15300 s non-exportable lease and revoked on expiry, reprovision, acquisition preparation or shutdown; orchestrator is facade-owned, but no emission method/live sink exists and vendor writes remain false |
| Stage 8 product storage | PAUSE — retention, replication, encryption, capacity monitoring and long-run browser/WASM stress remain deployment gates |
USB project copying remains optional ground truth rather than a blocker for the
@@ -41,9 +41,14 @@ is separately attested through live DeviceStatus. A fixed macOS Keychain loader
now reads the exact 36-byte authority without environment/file/browser fallback.
The response orchestrator correlates required headers/results and rejects
identity/profile drift. The installed publish boundary is a separate
write-disabled type that cannot call its injected sink. Runtime wiring, a
reviewed write-capable type and durable post-stop save remain unproven. The
physical button remains the known-safe fallback.
write-disabled type that cannot call its injected sink. A dormant coordinator
is now wired into the XGRIDS facade and plugin manifest. Explicit operator arm
loads the Keychain value into a bounded 15300 second process-memory lease;
expiry, disarm, reprovision, acquisition preparation and shutdown drop both the
lease and orchestrator. Public state contains only lease timing/booleans. There
is deliberately no batch-emission method, live MQTT sink or UI button. Keychain
item provisioning, a separately reviewed write-capable type and durable
post-stop save remain unproven. The physical button is the known-safe fallback.
The Stage 6 live path uses a bounded raw-first bridge: loss in the visualization
queue cannot discard MQTT evidence. The queue holds four preview messages;
@@ -262,7 +267,7 @@ useful stream is decoded or structurally identified.
- firmware or internal-Linux analysis;
- physical end-to-end shared-timeline playback for a newly archived session
containing point cloud plus one selected K1 camera;
- operator-owned Keychain provisioning/execution lease, authorized command transport
- operator-owned Keychain item provisioning, separately reviewed emission transport
and stable-artifact proof after the observed stop lifecycle;
- long-running large-session WebViewer/WASM memory telemetry;
- production retention, replication, encryption and cross-platform packaging.
+7 -3
View File
@@ -204,10 +204,14 @@ from `SCANNING` with a bound project. It emits only a non-executable digest and
wire metadata, uses QoS 2 with retain false, and declares automatic retry
forbidden. It has no MQTT publish dependency and cannot send a command.
Publishing remains deliberately disabled. The exact 36-byte authority now has a
Publishing remains deliberately disabled. The exact 36-byte authority has a
read-only macOS Keychain loader with no environment, file, browser or API
fallback, but it is not wired to the live facade. The current one-shot boundary
is structurally write-disabled and cannot touch its injected sink. The complete
fallback. A facade-owned dormant coordinator can arm it only after explicit
operator confirmation, a connected/attested K1, idle runtime and no active
acquisition. Its non-exportable process-memory lease is limited to 15300
seconds and is revoked by expiry, disarm, reprovision, acquisition preparation
or shutdown. The current one-shot boundary is structurally write-disabled,
exposes no emission method and cannot touch its injected sink. The complete
stop/save sequence has not physically proved a durable vendor project. A
correlated STOP success, stream quiescence, return to
`READY`/steady-green hardware state and appearance of a reusable native project
+6 -5
View File
@@ -148,9 +148,10 @@ observed pre-START requests plus START/STOP, correlates DeviceInfo and modeling
responses, and classifies live device states without importing MQTT or
publishing anything. One private application-level OpenAPI authority is kept
separate from the transient vendor ID/serial returned by the BLE-selected K1.
The fixed Keychain loader and offline response orchestrator now exist, but live
execution-lease wiring and durable save completion after stop remain open, so
`vendor_writes_enabled` is false and the physical-button workflow is canonical.
The fixed Keychain loader, bounded execution lease and dormant facade
orchestrator now exist. No emission method or live MQTT sink is installed, and
durable save completion after stop remains open, so `vendor_writes_enabled` is
false and the physical-button workflow is canonical.
## Automatic Rerun source and lifecycle
@@ -332,8 +333,8 @@ listener and its process memory must be closed unconditionally.
separate generic media path. Historical sessions predating that archive have
no recoverable video.
- Physical double-click remains the K1 scan start/stop control. Any MQTT command
publisher needs reviewed Keychain provisioning/execution-lease wiring,
response-gated one-shot behavior and a proven durable-save completion gate.
publisher needs reviewed Keychain item provisioning, a new write-capable
emission type, response-gated one-shot behavior and durable-save proof.
- No terrain map, elevation model, obstacle segmentation, localization fusion,
mission planner or vehicle control is implemented by this viewer milestone.
- Exact coordinate axes and the scanner-to-vehicle transform remain a mounting
+5 -4
View File
@@ -148,9 +148,10 @@ START/STOP, correlates live DeviceInfo/modeling responses and maps bounded
device-status values into an observation-only state machine. The OpenAPI value
is one private application-level authority; vendor ID and serial come from the
BLE-selected live K1 and are cross-checked against status. No MQTT publisher
exists. A fixed Keychain loader and offline response orchestrator are present;
operator execution-lease wiring and stable-artifact proof after STOP remain
unresolved, so `vendor_writes_enabled=false`.
exists. A fixed Keychain loader, bounded lease and dormant facade orchestrator
are present, but there is no emission method or live MQTT sink. Keychain item
provisioning and stable-artifact proof after STOP remain unresolved, so
`vendor_writes_enabled=false`.
## Semantic lifecycle
@@ -223,7 +224,7 @@ views.
read-only RTSP/H.264 adapter for each target OS, add disk-backed sealed media
caching and evolve same-host MSE delivery toward an authenticated Edge media
plane. Keep the modeling-command publisher disabled until operator-owned
Keychain execution-lease wiring and durable-save confirmation close its safety
Keychain item provisioning, reviewed emission and durable-save confirmation
gate.
Complex equipment will likely be assembled from separately useful component
+2 -2
View File
@@ -513,5 +513,5 @@ viewer/WASM payload. That is a packaging optimization item, not a failed gate.
No retained physical K1 session contains the new canonical camera archive, so a
real point-cloud plus one-camera recorded playback remains an explicit hardware
acceptance test. Automated protocol tests also do not authorize K1 modeling
publishing: operator-owned Keychain execution lease and durable save completion
remain separate physical/security gates.
publishing: operator-owned Keychain item provisioning, reviewed emission and
durable save remain separate physical/security gates.
@@ -114,7 +114,8 @@ The operator project name is normalized and validated by the K1 contribution,
stored as display/catalog metadata and never used as a path component. This ADR
does not claim that it reaches the scanner: the inert application-control codec
has no publisher, and automatic K1 writes remain disabled pending reviewed
operator-owned Keychain execution-lease wiring and durable post-stop save evidence.
operator-owned Keychain item provisioning, reviewed emission and durable
post-stop save evidence.
ADR 0011 subsequently places the action control plane behind a versioned
descriptor/handshake/health transport seam. Observation discovery and export
@@ -94,13 +94,21 @@ its injected transport sink can be called. Both shadow paths remain blocked by
`vendor-writes-disabled` and `publisher-not-installed`; no MQTT publisher or
automatic retry path exists.
`application_execution.py` adds the dormant facade boundary. An
operator-confirmed arm may retain authority for 15300 seconds in a
non-exportable process-memory lease and construct the shadow orchestrator. The
lease and orchestrator are dropped together on expiry/disarm and also before
reprovision, acquisition preparation or shutdown. Plugin v0.4.0 exposes only
shadow arm/disarm/state actions and redacted snapshots. The coordinator has no
request-emission method and the installed sink is explicitly uninstalled; this
runtime wiring does not widen write authority.
## Promotion gate
A future publisher requires separate review and an operator-present physical
acceptance:
1. provision the reviewed private authority into the fixed local Keychain item
and load it for one operator-owned execution lease;
1. provision the reviewed private authority into the fixed local Keychain item;
2. confirm battery/storage and select one K1 over BLE;
3. run the exact response-gated bootstrap and attest activated FW 3.0.2;
4. confirm READY identity against DeviceInfo and review shadow metadata;