feat(observatory): add portable LAB V1 foundation
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
# ADR 0046: Durable Observatory recorded queue and live K1 priority
|
||||
|
||||
Date: 2026-08-31
|
||||
Status: accepted; durable queue core implemented; Worker and live-trigger wiring pending
|
||||
Status: accepted; portable LAB V1 admission and Worker pull foundations implemented;
|
||||
production executor, claim lease, result publication, Worker deployment and
|
||||
live-trigger wiring pending
|
||||
|
||||
## Context
|
||||
|
||||
@@ -51,11 +53,24 @@ The same key with changed identity is a conflict. Jobs advance through `accepted
|
||||
`paused`, `preemption-pending` and `reconciliation-required` expose safety-relevant
|
||||
branches. Mission Core admits only one active recorded compute owner.
|
||||
|
||||
The queue is an orchestration and evidence boundary, not a Worker transport. A
|
||||
queued job proves durable admission, not remote execution or eventual success.
|
||||
Worker claims, terminal result publication and telemetry must later use a separate
|
||||
authenticated, versioned service boundary; no arbitrary PowerShell or filesystem
|
||||
payload is added to this contract.
|
||||
The queue remains the authoritative orchestration and evidence boundary. A queued
|
||||
job proves durable admission, not remote execution or eventual success. An
|
||||
authenticated, versioned Worker pull protocol is now implemented as a separate
|
||||
boundary. The configured Worker contour may claim one server-sealed job and
|
||||
advance it through start, checkpoint, succeed or fail receipts. The caller cannot
|
||||
supply commands, paths, environment variables, container images, model identities,
|
||||
resource policy or priority. This protocol and its tests are foundation only.
|
||||
The production app hard-disables the Worker router even when a valid private
|
||||
credential exists. A token must not turn an incomplete transport into a production
|
||||
execution surface before an expiring claim lease and verified result publisher
|
||||
are implemented and accepted. The gate remains isolated from K1, Simulation and
|
||||
legacy LAB startup.
|
||||
|
||||
The transport receipt is not result publication. A Worker `succeed` transition
|
||||
records the returned result id and SHA-256 against the claim, but a separate
|
||||
publisher must still validate the generic result contract, immutable artifacts,
|
||||
source/job/definition/model identities and observation-only authority before the
|
||||
result enters the Observatory catalog.
|
||||
|
||||
## Current setup admission
|
||||
|
||||
@@ -74,12 +89,41 @@ binding deliberately does not pin a digest of the whole mutable catalog: the
|
||||
exact compute input is the immutable source pack, while the catalog snapshot is
|
||||
job-specific provenance.
|
||||
|
||||
`LAB V1 · EoMT Cityscapes Large 1024 + DDRNet-39` remains result-only. The
|
||||
published evidence stays viewable, but the setup cannot be queued until a new
|
||||
independently versioned source adapter, RunDefinition and executable release are
|
||||
created and accepted. The same fail-closed rule applies to every other
|
||||
session/setup combination. The product may grow toward any admitted setup over
|
||||
any compatible recorded source, but compatibility is evidence, not an assumption.
|
||||
`LAB V1 · EoMT Cityscapes Large 1024 + DDRNet-39` now has a source-independent
|
||||
portable RunDefinition. Its identity contains the exact EoMT and DDRNet model
|
||||
artifacts, algorithm/configuration components, resource profile, observation-only
|
||||
authority and the generic `missioncore.recorded-eomt-ddrnet-review/v2` result
|
||||
contract. It contains no source session id, source label, host path, command,
|
||||
environment or caller-selected priority. The old
|
||||
`missioncore.lab-v1-vegetation-shadow/v1` result is not an exact or existing
|
||||
result of this generic v2 definition, including for its original RAV004 source.
|
||||
It remains available only through the immutable legacy LAB catalog; the portable
|
||||
catalog neither maps nor projects it.
|
||||
|
||||
Compatibility is decided by capability admission against the immutable selected
|
||||
Session, not by `RAVNOVES*` naming. The source must satisfy the admitted K1
|
||||
plugin/archive, point-cloud/trajectory/video modalities, RIGHT-camera semantic
|
||||
channel, exact recorded media profile, single seekable media epoch and sealed
|
||||
calibration identity. Catalog compatibility uses a lightweight `probe` result
|
||||
containing only the selected Session/catalog identity, source-adapter identity and
|
||||
camera segment count. It neither prepares/restores a recorded-media sidecar nor
|
||||
builds a source bundle or capability manifest. A later explicit admission performs
|
||||
the full immutable read, emits content-addressed path-free documents and rejects
|
||||
source or definition drift before writing contracts or a queue intent.
|
||||
|
||||
This portable definition is intentionally not executable yet. Its executor state
|
||||
is `not-installed`; no executor release or image identity is sealed. Conversion to
|
||||
the durable queue definition therefore fails before source persistence or queue
|
||||
mutation. A compatible recording, including RAV004, has only a successful
|
||||
source-capability probe, not an existing portable result or runnable LAB V1 job.
|
||||
The legacy RAV004 result remains independently viewable in the legacy catalog.
|
||||
The same fail-closed rule applies to every other session/setup combination.
|
||||
|
||||
The implemented Worker 006 agent core accepts only path-free queue projections,
|
||||
validates their sealed identities and resolves execution through a local
|
||||
four-digest allowlist: executor release, image, model manifest and resource
|
||||
profile. Network polling cadence, model/runtime installation and deployment are
|
||||
outside that core and are not inferred from its presence in the repository.
|
||||
|
||||
## Priority and preemption protocol
|
||||
|
||||
@@ -110,22 +154,43 @@ zero; partial staging never becomes evidence.
|
||||
## Acceptance boundary
|
||||
|
||||
This decision accepts the durable queue core and its identity, lifecycle,
|
||||
idempotency and preemption contracts. It does not claim that the complete compute
|
||||
loop is deployed. The following remain implementation gates:
|
||||
idempotency and preemption contracts; the source-independent LAB V1
|
||||
RunDefinition; capability-based recorded-source admission; the fail-closed bridge
|
||||
from portable identities to the durable queue; the authenticated Worker pull
|
||||
protocol; and the transport-agnostic Worker agent core. It does not claim that the
|
||||
complete compute loop is deployed. The following remain implementation gates:
|
||||
|
||||
- authenticated Worker claim and result transport;
|
||||
- sealing and installing a production LAB V1 executor release and container image
|
||||
with the exact EoMT/DDRNet artifacts on Worker 006;
|
||||
- implementing and accepting the generic v2 result assembler, validator and
|
||||
idempotent Observatory publisher rather than trusting a terminal Worker receipt;
|
||||
- replacing the current one-shot claim receipt with an expiring, renewable claim
|
||||
lease whose loss prevents stale execution and terminal acknowledgement;
|
||||
- deploying, credentialing and physically validating the Worker pull agent and
|
||||
its local four-digest executor allowlist;
|
||||
- installation of the exact M4.9T5 executor on the Worker;
|
||||
- binding real K1 acquisition start/terminal events to live-lease triggers;
|
||||
- physical acceptance that cancellation releases the required Worker resources
|
||||
and that recorded work resumes only after the live lease terminates.
|
||||
|
||||
Until those gates close, an M4.9T5 submission may remain honestly `queued`. LAB V1
|
||||
cannot be submitted, and no UI state may present it as executable.
|
||||
cannot be submitted. The UI must project source compatibility independently from
|
||||
executor readiness: a compatible recording may show capability `pass` while the
|
||||
`not-installed` executor keeps preflight blocked. The portable v2 setup always
|
||||
reports no existing result; its historical vegetation result stays in legacy LAB.
|
||||
Even a future `ready` executor cannot make this projector expose enqueue until
|
||||
server-side definition-SHA and check-SHA fenced check/submit endpoints are
|
||||
implemented and accepted. No current UI state may promise or expose LAB V1
|
||||
enqueue.
|
||||
|
||||
## Consequences
|
||||
|
||||
- The UI stays a bounded selector and submitter; executable authority remains on
|
||||
the server.
|
||||
- The UI stays a bounded selector and read-only preflight surface; executable
|
||||
authority remains on the server, and LAB V1 enqueue stays absent while its
|
||||
executor is `not-installed`.
|
||||
- Source compatibility and executor readiness are separate product facts; neither
|
||||
labels nor an existing result upgrades a compatible Session into an executable
|
||||
definition.
|
||||
- Every accepted job is reproducible from sealed source, setup, executor, model
|
||||
and resource identities rather than mutable host paths.
|
||||
- Live K1 can receive hard priority without silently losing or concurrently
|
||||
@@ -133,6 +198,7 @@ cannot be submitted, and no UI state may present it as executable.
|
||||
- Non-checkpointable replay pays the deliberate cost of discard and
|
||||
restart-from-zero after preemption.
|
||||
- K1 acquisition/control principles, the legacy LAB archive and
|
||||
Simulation/Gaussian remain unchanged.
|
||||
Simulation/Gaussian remain unchanged; this foundation adds no viewer profile,
|
||||
data migration, equipment command or lifecycle coupling to those contours.
|
||||
- Adding a setup or source requires an admitted adapter and RunDefinition; a
|
||||
display name or historical result is insufficient.
|
||||
|
||||
Reference in New Issue
Block a user