Skip to main content
Version: 0.1.0-alpha.4 (alpha)

Phase 2 completion review

Current status, September 13, 2026: Phase 2 was accepted when PR #245 merged as fa47cf9bfc8d7270868570e7abe23b8978cb72ab after all seven applicable CI checks passed. Gate #158 and epic #139 are closed. The report below retains its review-time conditions and measured source identities; subsequent merges do not replace those measurements. Phase 3 remains planned work.

Reviewed gate report​

Gate decision: accept Phase 2 on the reviewed, CI-passing merge of this report.

This report maps gate #158 to implemented delivery boundaries and their evidence, reviewed September 13, 2026. All eighteen implementation/documentation children are merged and closed; their exact revisions and successful checks are in the dependency ledger. The finite evidence runs and separate Wiki publication below are verified. The gate PR must pass all seven applicable CI checks before its reviewed merge authorizes closure of epic #139 and the Phase 2 milestone. Gate #158 records that final PR, checked head and merge decision. A proposed branch copy of this report does not itself establish that the merge occurred.

The Phase 1 completion and performance extension retain their original measurements, failures, source identities and qualifications. They supply catalog, routing, execution and ownership foundations; their receipts do not substitute for current Phase 2 evidence.

Current gate evidence​

These centrally executed results have compact retained receipts identifying their source, binaries, configuration, collectors and fixtures. They are separate observations; a later merge revision does not replace a measured revision. Earlier failed and superseded attempts remain in the attempt ledger.

CheckObserved result and exact scopeRetained evidence
Real authority through native execution3/3 PASS, 57.03 seconds in trust_currentness.rs: proof-age expiry, joint-policy expiry and publisher revocation. Each case performs one real isolated compilation and successful invocation before invalidation.Native currentness receipt, including test/source/compiler/fixture identities and the unprivileged execution profile.
Registry outage versus local eligibilityPASS: 24 CLI commands and 3 Invoke attempts: 2 successes and 1 revoked-release denial. The offline workflow authenticates transfer before registry shutdown; a new pull fails while the admitted local route still succeeds. Local revocation then denies use with the registry still stopped.Offline receipt, retaining transfer failure, denied Invoke, identities and actual shutdown/reap.
Dormant release/resource profileFinal rerun PASS for phase2-dormant-32-r1: 32 distinct signed releases, 16 deployments, exactly 2 warmed portable runtime images, 32 successful Invokes, 133 control commands and 12 OS samples. The other 30 releases remain unprepared. The final collector/validator checks passed 38/38.Resource receipt, 86,476 bytes, with all samples, fixed configuration, catalog counts, clean worker joins, process reap and temporary-output removal.
Complete operator workflowPASS: 114 CLI processes and 18 successful Invokes, including attributed canary evaluation/promotion, managed operation replay/lookup, rollback, restart and revocation.Operator receipt, with exact identities, decisions, operation receipts and shutdown records. The preceding failed attempt remains separately classified below.
Selected strict lint checksThe four centrally selected packages passed Clippy with all targets/features after the test-only fixes.Attempt ledger and dependency/check ledger. This result does not stand in for final gate CI.
Actual observed-build provenanceThe retained contracts-job artifact identifies the actual tested merge, build inputs, component and SBOM input inventory consumed by registry integration.Observed-build receipt and captured files, separate from synthetic workflow fixtures.
Published Wiki30 actual Git blobs verified: 26 pages, 4 assets and 147 links against the managed source inventory.Wiki publication receipt, with exact source/live revisions and successful publication run.

The new trust tests independently renew the bounded clock lease before checking the exact denial cause. They retain both readiness and an invocation future created before invalidation, then deny materialization, final start and owned and borrowed preparation. Isolated-compile, native-loader and guest-store counts do not increase. Reopening the same native cache cannot revive the catalog's old grant. Expired-policy and revoked-publisher catalog recovery keeps the historical record readable with denied eligibility. A fresh catalog recovery may reverify still-valid evidence after proof-age expiry; that documented refresh creates a new capability and does not upgrade an old in-process token.

The resource profile uses portable preparation. Its two warmed images are not two persistent native-cache hits. Native image mapping ownership and isolated child cleanup have their own focused tests. See the fixed resource profile and offline validation instructions.

All eighteen implementation and documentation dependencies​

The dependency ledger records the eighteen child issues, reviewed heads, merge revisions and required checks. All #140–157 children are delivered; #156 merged through PR #242 at bda3017345b0bf7d656d151cec10a5b3fd8cb165. Documentation #157 merged through PR #243 at 939cdc836bf2a512b6001dd1031c4ae636847ca3. The map below connects each dependency to its implementation and verification surface; source coverage alone is not a passing execution result.

ChildConcrete implementationFocused testsOperator or contract documentation
#140 immutable package identityPackage codec/modelGolden bytes, adversarial formatPackage format
#141 deterministic packagingPackaging and directory inventoryRoundtrip, component/WIT validationPackaging
#142 authenticated OCI transferOCI HTTP adapterReal registry, transport boundsRegistry profile
#143 signatures and publisher trustSigning and current publisher verificationPublisher trust, bounded trust inputsPublisher trust
#144 build provenanceBuilder verificationProvenance, actual observed-build registry roundtripBuild provenance
#145 digest-bound SBOMsSBOM generation, association and policyAssociation/policy, observed-build SBOM roundtripSBOM contract
#146 verified catalog admissionSupply-chain authority, catalog admissionReal signed catalog, historical validationPackage admission
#147 release compatibilityRuntime requirements, exact package comparisonPackage compatibility, deployment runtime checksRelease compatibility
#148 durable lifecycleLifecycle store and capabilitiesReal evidence renewal/revocation, runtime currentnessLifecycle and recovery
#149 bounded raw cacheRaw cacheCapacity, ownership and recovery, OCI cacheRaw cache
#150 isolated trusted compilerAOT supervisor, sandbox and authenticated outputSandbox, supervisor ownership, exact inputsTrusted AOT boundary
#151 persistent native reuseAuthenticated cache composition, audited loaderReopen/hit, tamper, retained imagesNative node settings
#152 audit and bounded observationsDurable journal, wire queries/leasesJournal tests, node audit startupPhase 2 audit
#153 durable rollout coordinationShared coordinator, combined catalogAtomic rollout publication, coordinator ownershipRollout protocol
#154 canary promotionSealed observation/evaluation, promotionPromotion assessment, actual node InvokeControlled promotion
#155 atomic rollbackRollback coordinator, combined catalog transactionRestoration and pins, target trustRollback and recovery
#156 management and CLICLI control workflows, managed deployment RPCCLI validation/projection, mixed managed writers, real process workflowOperator workflows, CLI reference
#157 operator documentationDelivery notes, delivery diagramLink/schema/diagram checks and verified Wiki publicationCapsule creation, quickstart, topology, validation

The #157 links name their final repository destinations, reviewed from the separate documentation worktree. Wiki synchronization is independently verified from source d9778eae9d83d5738e3f70b6ba15080a24c0d63a to live Wiki revision 7cd26bb98c751df82b530d635f978f9934131414 by run 34724297039. That publication describes delivered Phase 2 features, keeps gate #158 open and labels Phase 3 as planned; it does not claim a later documentation merge.

Acceptance-criterion reconciliation​

The following ten rows follow the gate issue's acceptance criteria in order. The retained receipts and dependency/check ledger carry execution results; the linked source suites show the precise boundary each result exercises.

CriterionImplementation and test evidenceEvidence disposition
1. Reconcile every requirement and childThe eighteen-row map above covers package identity through runbooks. The existing overlap rendezvous remains the owner of the #132 reliability correction.Dependency ledger and attempt dispositions; #132 retains its own closed disposition below.
2. Real registry through rollback/revoke/statusOperator scenario and canary schedule use actual CLI/node processes, separate storage, TLS registry transfer, verified publication, managed deployment, attributed invocation, promotion, rollback, restart and revocation.Passing 114-process/18-Invoke receipt binds exact package/component/policy/runtime and process/build identities. The earlier failure remains separate.
3. Reject invalid content before routing or preparationAuthority, catalog, runtime compatibility, deployment supply chain, runtime admission, native tamper/currentness tests cover independent negative boundaries.The real native currentness receipt adds expiry/revocation composition to the dependency suites. Negative checks do not derive authorization from positive cache state.
4. Evidence, scope, bounds and offline behaviorSignature currentness, provenance/SBOM tests, referrer bounds, HTTP cache ownership, management integration and the distinct outage/currentness schedules above.Actual observed-build artifact, offline transfer/denial evidence and dependency authentication/redaction suites. Registry availability does not determine local trust.
5. Concurrency, interrupted durability and monotonic rollbackLifecycle cutpoints, publication visibility, rollout recovery, managed-operation persistence, rollback/revocation tests and mixed-writer CAS tests.Dependency suites exercise revoke after preparation, failed post-rename synchronization, stale writers and preserved pins. The operator receipt separately retains real rollback/restart outcomes. A selected but unconfirmed publication remains uncertain.
6. AOT, caches, pins and actual cleanupSandbox/supervisor/source tests above; native reopen/tamper/image ownership; raw-cache staging, eviction, malformed recovery and pin tests. Native-loader source guard checks the audited unsafe boundary.Native receipt binds compiler/runtime/host identities and no-additional-work assertions. Focused owner suites retain separate compiler/output/read/image accounting; process receipts record actual joins/reap.
7. Fixed dormant/resource experimentFrozen profile, runner, OS observer and receipt validator tests.Final 12-sample receipt, fixed config, exact catalog counts, two-image preparation, shutdown joins and process reap; 38 collector/validator checks passed. The superseded observation is in the attempt ledger.
8. Current workflows, docs, diagrams and wiki#156 executable workflows, management reference, node configuration, API surface, architecture, #157 runbooks and delivery SVG.Wiki receipt verifies all 30 published blobs and 147 links against its exact source. Documentation merge/CI is covered by the gate decision above.
9. CI and compact reproducible evidenceRequired CI workflow, validation contract, focused security/restart/ownership suites and retention policy.Dependency/check ledger, compact receipts and failed/unavailable attempt records preserve actual reviewed/measured identities. No final gate CI result is inferred from local success.
10. Report and closure decisionThis report, dependency ledger and retained evidence support the decision.The explicit decision at the top governs closure. Later closure/merge identities do not rewrite the identities of measured executions.

Issue #132, “Make mixed memory containment overlap deterministic,” is closed as completed (September 12, 2026). That disposition belongs to #132. Phase 2 neither reopens, duplicates nor reassigns it, and does not erase the original reliability failure when citing the corrected overlap test.

Provenance and measurement boundaries​

The operator, offline and resource exporters create fresh publisher/builder signatures over exact package identities and regenerate their SBOM associations. Their build observation is explicitly synthetic test evidence. They establish signature production, transfer and policy/runtime composition for that fixture; they do not prove that a production build produced the component.

The separate real_observed_build_provenance_roundtrip consumes captured build inputs through the provenance integration. The CI contracts job publishes phase-2-observed-echo-<source revision> and the registry job consumes it. The retained artifact receipt binds PR #242 head a35a58950bff187b2702164fd2f13b0fb54b237b, actual tested merge c0c3d5c39acfcdc3326987805da49c17e69bfdcf, workflow run 34723362373 and artifact 10306997403. It records byte lengths and SHA-256 digests for the ten captured files, including the component, observation, contracts, WIT inventory and SBOM inputs. These are historical CI execution identities, not the later merge or gate head. The maintained observed build is nonhermetic, as documented in build provenance.

The dormant experiment measures one fixed single-node population. Thirty of its 32 releases remain unprepared; 16 deployments reference only the two warmed components. It reports OS observations separately from logical retained metadata, prepared images and invocation ownership. Reclamation means that the declared transient owners retire and shutdown actually completes. It does not require RSS to return to baseline or delete authoritative release/audit history. No result here establishes 100k Phase 2 scale, an arbitrary-duration leak bound, a latency/throughput SLO or production cluster capacity.

Retained failure and availability qualification​

The preceding operator attempt is FAILED, with an unclassified internal cause. CLI call 58 returned public Unavailable during the positive-canary schedule; no gRPC error code or distinguishing internal reason was retained. It did not establish a passing canary or a passing workflow. The attempt ledger retains that outcome and records completed owned cleanup. Compact retention does not make the missing internal diagnostic recoverable.

Source inspection found no additional RPC or retained Rust owner introduced by the Python result collector. It also identified multiple fail-closed paths that can surface public Unavailable; the public result cannot establish which path ran. In particular, it does not establish that periodic clock lease maintenance caused this failure. The separate passing run used the same production binaries, maintained collector code, fixed bounds and logical workload with fresh signed fixtures. No failed Invoke was retried, removed from a denominator or converted into success; no resource limit was raised and no production fix explains the later pass.

Current policy/clock readiness and finite resource availability remain conditions of use. A retained grant or cache hit cannot bypass them, and nonblocking admission can deny a start when currentness cannot be established. The observed pass therefore provides finite workflow evidence, not a zero-error availability or SLO guarantee. The failed attempt is not dismissed as expected maintenance or classified as a resolved defect.

Follow-up #244 tracks the independently confirmed diagnostic ambiguity between TryLockError::WouldBlock and TryLockError::Poisoned. Both remain fail-closed; distinguishing their diagnostics neither attributes nor fixes the historical operator failure. The follow-up has no Phase 2 milestone and is not an additional required Phase 2 feature.

Migration, security and finite limits​

  • Package digest, component digest, publisher/builder proof, runtime profile and lifecycle permission remain distinct. Copying bytes, a diagnostic verify report or a cache hit cannot authorize execution. Currentness is checked on retained work as well as new preparation.
  • Catalog formats 1–4 preserve their documented decode and absent-field rules. Managed operations add global state-version CAS alongside object generation. Finite receipt lookup returns unknown for absent or evicted history; unknown does not prove an operation never ran. Retained replay never reapplies a mutation or renews a grant. See operator recovery.
  • Canary promotion requires the exact bound cohort, policy and completed, quiescent observation window. No data, incomplete capture and unavailable evidence cannot be promoted as healthy. Rollback restores the captured eligible target through a new monotonic generation; legacy plans without a captured target cannot synthesize one. See promotion and rollback.
  • Verified but ineligible desired rows recover as denying history so operators can inspect/remove/update them. Corruption still prevents authoritative recovery. Explicit fresh compilation, including startup recovery, may acquire current grants; retained in-process tokens never upgrade automatically.
  • Raw/native caches are replaceable and bounded independently of authoritative catalogs. Native reuse is opt-in on the documented Linux x86_64 sandbox profile, with an approved compiler and protected local authentication key. Native blob/receipt replacement cannot forge that key's authorization; trusted host administration and key protection remain part of the boundary. Page-rounded image charges are not total Wasmtime heap, COW storage or RSS.
  • Audit is finite, with explicit loss, outcome uncertainty and prior-session coverage limits. Catalog durability and audit acknowledgement are separate. Cancellation of a caller does not cancel already-owned disk work or prove a child has exited. Shutdown records actual joins/reap and reports late or incomplete cleanup as failure.
  • The standalone management listener remains authenticated loopback gRPC. Registry TLS does not provide remote node transport security. Browser/SSR packages are artifact contracts only. General HTTP/blob/secrets/events/service providers and application ingress/Angular execution belong to Phase 3; state, effects, cluster operation and durable workflows remain later phases.

Retained evidence inventory​

The compact evidence directory is benchmarks/phase2/2026-09-13/:

ArtifactScope
operator-receipt.jsonExact build/package/policy/configuration identities, 114 CLI processes, 18 successful Invokes, control/canary/rollback/revocation records and both node shutdowns.
offline-receipt.jsonAuthenticated transfer, owned registry stop, failed new transfer, successful local use, local revocation denial and process cleanup.
resource-receipt.jsonFixed profile/configuration, all 12 OS/inventory samples, exact catalog population and invocation identities, compiler/cleanup/audit/coordinator joins and process reap.
native-currentness-receipt.jsonThree real-authority native tests, exact test/source/compiler/fixture/host identities and bounded compile/load scope.
dependencies.jsonChild dispositions, reviewed heads, merge revisions and required CI/check identities.
wiki-publication.jsonActual source/live Wiki revisions, publication run, source manifest digest and verified published blob/link counts.
attempts.jsonFailed, unavailable, superseded and final passing attempts, with explicit diagnostic and retention limits.
observed-echo-receipt.json and observed-echo/Actual CI artifact identity and ten captured build/component/WIT/SBOM files with per-file lengths and SHA-256 digests.

These receipts preserve execution identities and qualifications independently of the completion decision. The gate owner records final CI/merge review and closure through the decision at the top; no local pass substitutes for that review.