0.2.0
Universal LayerStack
Portable root identity and native materialization
0.2.x is divided into dependency-ordered release slices. Every slice leaves the current runtime usable, adds one durable contract, and must pass correctness, recovery, portability, and performance gates before the next layer relies on it.
Delivery strategy
The critical sequence starts with runtime-neutral roots and atomic checkpoint publication. Graph APIs, rollout scheduling, and heterogeneous executors layer on only after the state invariants are proven.
0.2.0
Portable root identity and native materialization
0.2.1
Durable nodes, attempts, OCC, leases, recovery
0.2.2
Bounded scheduling, evaluators, trajectories, idempotency
0.2.3+
OCI/Linux + WASI adapters and locality-aware workers
Patch labels communicate ordering, not a promise that every capability lands in exactly one patch. Exit evidence decides the boundary.
Release slices
0.2.0
Exit gate
The same root verifies identically through the portable manifest walker and native OCI projection; a cold root hydrates once and hot reuse adds no reconstructed read path.
0.2.1
Exit gate
Crash and race tests prove atomic sealing, sibling isolation, zero lower payload duplication for hot forks, stale-promotion rejection, and lease-safe GC.
0.2.2
Exit gate
A large graph runs through a bounded worker pool; forced retries do not double-count outcomes; inactive nodes consume no process or mount residency; recovery preserves frontier leases.
0.2.3+
Exit gate
A graph selects supported backends reproducibly from declared capabilities; cross-backend logical roots verify equivalently; no target image supplies LayerStack utilities or durable checkpoint truth.
Validation program
The suite separates algorithm viability from environment setup. Every failure is classified as semantic, recovery, compatibility, capability, performance, or harness/setup before a storage approach is rejected.
| Lane | What it proves | Representative evidence | Blocks release |
|---|---|---|---|
| Correctness | Isolation, immutable roots, OCC, merge and promotion semantics | Concurrent sibling writes, conflicting publishes, manifest equivalence | Yes |
| Recovery | Journal, lease, seal, retry, evaluation and GC idempotency | Crash injection at every durable transition | Yes |
| Portability | Supported Docker hosts/images and WASI logical equivalence | Ubuntu Linux/arm64 and amd64 containers; minimal target images | Yes |
| Capability | Explicit behavior with and without required executor privilege | Mount probe, namespace probe, fail-closed diagnostics | Yes |
| Performance | Fork, activation, command I/O, seal, hydration and GC costs | Median, tail, bytes allocated, page cache, CPU and wall time | Regression budget |
| Scale | Bounded residency under large durable graphs | Frontier width, history depth, retry storms, worker loss | Yes |
Benchmark contract
Inputs
workspace size · history depth · fan-out
Measures
metadata bytes · payload bytes · latency
Inputs
hot/cold root · image size · backend
Measures
hydration bytes · mount/start latency · CPU
Inputs
read/write mix · file count · working set
Measures
throughput · p50/p95/p99 · page-cache impact
Inputs
changed bytes · path count · metadata churn
Measures
capture time · CAS writes · manifest size
Inputs
crash point · graph size · lease count
Measures
recovery time · orphan count · integrity violations
Inputs
reachable set · pruned subtrees · cache pressure
Measures
reclaimed bytes · pause time · false reclamation
| Docker Desktop host | macOS arm64 | Linux VM / arm64 | OCI fast path |
|---|---|---|---|
| Native Linux host | Ubuntu arm64 | Linux / arm64 | OCI fast path |
| Native Linux host | Ubuntu amd64 | Linux / amd64 | OCI fast path |
| Minimal target image | Any supported Docker host | Linux / matching arch | No helper utilities |
| WASI runtime | Host-agnostic runtime | wasm32-wasi | Capability-scoped filesystem |
Risk register
| Risk | Signal | Mitigation | Gate owner |
|---|---|---|---|
| Mount capability varies by runtime | Overlay probe fails or produces misleading EPERM/EINVAL. | Preflight capabilities, fail closed, keep privilege inside executor boundary, document supported runtime contract. | OCI executor |
| Portable manifests leak local filesystem identity | Cross-worker validation differs on inode/path/whiteout semantics. | Canonical schema, backend conformance corpus, no local paths or inode numbers as identity. | State plane |
| O(1) fork shifts cost into activation | Cold or deep roots hydrate repeatedly and dominate rollout time. | Verified worker cache, locality-aware placement, measure hot and cold curves separately. | Scheduler |
| GC races with selection | A frontier node loses an ancestor or object during activation. | Lease ancestor closure, epoch/reachability barriers, adversarial concurrent GC tests. | Storage |
| Retries corrupt search statistics | Rewards or visits increase more than accepted rollout count. | Idempotency keys, append-only acceptance records, transactional backpropagation. | Rollout service |
| WASI semantics are over-promised | Workload depends on syscalls, links, modes, or process behavior outside contract. | Capability declaration, compatibility tests, explicit OCI-only workload classification. | Executor API |
| Compatibility layer becomes permanent | Old session-only paths gain new features or bypass graph provenance. | Deprecation telemetry, one-way feature policy, removal gate after client migration. | Product API |
| Benchmarks hide setup defects | Approaches fail before exercising their algorithm. | Classify setup vs semantic failures, publish probes and artifacts, require self-review before rejection. | Release engineering |
Definition of done