| Build |
Every declared tuple; minimum OS baseline; exact Node and native dependency
versions; SBOM and provenance
|
Archive runs on target, contents match manifest, native signatures pass, no
unexpected platform package remains
|
| Platform selection |
glibc/musl and version probes, BusyBox, Alpine, containers, old glibc, Rosetta,
noisy and conflicting output
|
One compatible tuple is selected, or unknown deterministically selects tested
legacy behavior
|
| Remote environment |
No Node/npm/Python/compiler/tar/hash tools; blocked egress; missing required
primitives; BusyBox; NVM below shell guard; read-only/noexec home; quota and
inode exhaustion
|
Declared POSIX or Windows primitive baselines connect without undeclared tools;
missing primitives and filesystem constraints classify compatibly and never
improvise an untrusted command path
|
| Download and cache |
Redirect and header scoping, proxy, deleted asset, cold/warm/offline cache,
multiple app processes, eviction, permissions, cancellation, timeout,
404/429/5xx, disk full, corruption
|
One verified cache entry or clean availability fallback; corruption is
quarantined and recovered only from freshly verified bytes or fails closed
|
| Archive security |
Bad signature/hash/native signature, wrong tuple, traversal path, absolute path,
symlink escape, oversized expansion
|
Manifest/archive failures are rejected before transfer; native trust is verified
on target-native build/read-back and again by target-policy probes before
finalization; every integrity failure fails closed
|
| SSH deployment |
Full-size runtime over SFTP and POSIX/Windows system SSH; tar/no-tar; no remote
hash tools; corrupted upload; bundled-Node corruption/failure; bounded memory
and concurrency; MaxSessions=1; interrupted upload; stale lock
|
Bundled Node hashes the full staged tree before sentinel write;
corruption/failure leaves no complete install, memory stays in budget, and the
ordering is asserted
|
| PTY and watcher |
Spawn, input, resize, exit, shell environment, create/rename/modify/delete
events, watcher crash
|
Exact PTY bytes and watcher events; relay PID and existing PTY survive watcher
replacement
|
| Relay API conformance |
PTY, Git, filesystem and streaming RPCs, preflight, agent hooks, port scan,
aborts, and protocol handshake
|
The packaged runtime matches existing relay request, response, streaming,
cancellation, and error contracts
|
| Lifecycle and fallback |
Reconnect, PTY reattach, restart, concurrent clients, upgrade, downgrade,
interrupted upgrade, GC, timeout-to-legacy, forced rollback
|
No lost session, protocol drift, late mutation, background process, cross-mode
lock/sentinel use, or deletion of a live version
|
| Performance |
Cold and warm paths over 1/10/100 Mbps links and 50–200 ms latency |
Warm path has no meaningful regression; cold p95 does not exceed agreed legacy
baseline
|