Runpack v6 and Offline Verification Architecture

Runpack export, verification, and artifact integrity.

Authority relation

For one accepted checkpoint H, the backend-neutral export authority exposes a coherent immutable prefix:

E_H = Export(AcceptedAuthority[<= H], Law, Retention, RunpackV6)

CurrentState(H)
    = Replay(AcceptedHistory[<= H])
    = Reconstruct(E_H)

decision-gate-core owns the accepted-run audit-export interface and sealed checkpoint/page projections. The in-memory and SQLite authorities implement that same relation. decision-gate-runpack owns format-v6 construction, nominal identities, deterministic object trees, and the immutable local repository. decision-gate-verifier owns the independent supplied-material reducer and exact claim report. MCP and CLI only compose these authorities.

Runpack-v6 subject

The manifest binds the format/canonicalization version, accepted authority domain, exact RunKey, scenario-law and Xarxa graph identities, accepted head, effective limit profiles, fixed tree parameters, and the roots of all twelve mandatory artifact families. Empty histories use a canonical empty-family root; family omission is not another spelling of empty.

The twelve families are scenario source, validated scenario law, effective profiles, run-allocation tombstone membership, creation receipt, accepted current state, accepted mutation records, accepted operation receipts, stage-open records, evaluation-attempt records, submission records, and committed intent records.

Objects are bounded canonical JSON. Leaves contain no more than 256 records or 32 MiB, index fanout is no more than 256, tree depth is no more than eight, and the manifest is no more than 256 KiB. Object identity binds format, artifact family, object kind, key/ordinal range, and canonical bytes. Manifest identity binds the complete manifest subject under the dg/runpack/v6 domain. Builders stream in bounded memory; representability is not defined by one monolithic bundle-size limit.

Runpack v5 and every older format reject at hostile rehydration. SQLite schema 11 is the only current local durable schema; schema 10 and older reject without migration or compatibility parsing.

Backend-neutral export

An export begins by capturing an AcceptedRunAuditCheckpoint. Every subsequent bounded page is tied to that checkpoint and may contain no record after its accepted head. Later accepted mutations therefore cannot change the exported subject. Page construction derives the continuation cursor from strictly ascending revision-bound rows; callers cannot independently assert a cursor, an after-checkpoint row, or an over-limit page. Attempt, submission, and intent projections retain their owning accepted revision, and intent families retain and revalidate the owning accepted-record identity. Memory captures the checkpoint while holding the run-cell authority; SQLite captures it transactionally and streams indexed immutable rows without holding a history-length transaction.

Normal export work is bounded by page, leaf, and index fanout. The status and mutation hot paths do not replay full history. A backend is not qualified by implementing the trait alone; it must pass the shared accepted-run and audit- export conformance suites for its declared durability profile.

Publication authority

The only supported OSS repository is local and capability-rooted. An operator admits one ambient root through platform_filesystem_authority::ExplicitAmbientAuthority; semantic and MCP code receive sealed relative targets, never arbitrary trusted paths.

Objects are published with create-new semantics. Existing objects are reused only after exact byte verification. The manifest is published last, so orphan objects do not make a runpack visible. Publication returns the closed knowledge family Published, AlreadyPresentExact, Conflict, Unavailable, Indeterminate, or IntegrityFailure.

There is no overwrite, deletion, caller-selected object key, arbitrary manifest name, network fetch, S3/object-store runtime, or generic resolver in the initial OSS profile. The secure local-filesystem claim is Linux-only, following the platform filesystem authority. Remote immutable publication is a deferred, independently specified DG-E/PF-08 capability.

Supplied-material verification

Verification consumes a complete in-memory bundle or an explicitly supplied local capability root, plus optional explicitly supplied supplemental bytes whose kind, digest, bound, and owning relation are validated. The verifier has no network, provider, MCP, SQLite, clock, ambient path, or runtime-acquisition dependency. A locator is not material; missing material yields an exact Unavailable claim and never triggers retrieval.

The supplemental-material boundary is presently a verifier-library seam, not a generic CLI directory option. Digest-bound bytes establish only content integrity. Until an external authority family owns a constructor that validates the exact witness syntax and relation, those bytes cannot satisfy authenticity, currentness, rollback, dispatch, deployment, or build-provenance claims. The CLI therefore does not expose a misleading --material-root argument.

The independent reducer does not trust the stored current state or call the production mutation finalizer. The verifier first completes the independent bounded object-tree integrity procedure for all twelve families; semantic malformation therefore cannot mask or reclassify the structural-integrity claim. It then reconstructs accepted history from canonical records and checks head/predecessor continuity, receipt and operation-family ownership, stage-open/attempt/submission indexes, intent ownership, acceptance-time stability, and equality with the stored current projection. It reuses RET, Xarxa, typed observation admission, and pure evaluation as named trusted mathematical bases rather than duplicating their laws.

MCP verification performs tool authorization, reads only the bounded canonical manifest to resolve the exact namespace, completes namespace authorization, and only then permits object-tree traversal and semantic replay. Unauthorized callers cannot spend the full verification budget or probe object availability.

The closed claim registry contains 29 dependency-ordered claims. Every report contains every registry row with one of Satisfied, Disproved, Unavailable, NotRequested, NotApplicable, Indeterminate, or VerifierFailure. Profiles select requested rows; they never collapse the report into an authoritative boolean. Dependency failure prevents a downstream positive result.

The default CompleteOfflineReplayV1 profile decides everything supported by the supplied material. Source authenticity, currentness, coherent rollback resistance, dispatch/effect recovery, deployment qualification, and external build provenance remain unavailable unless a separately qualified exact witness is supplied. PF-05 implements no signing authority and never converts digest consistency into authenticity.

Current evidence and nonclaims

Focused evidence covers canonical identity known-answer behavior, hostile manifest/object reconstruction, deterministic multi-level trees, local repository symlink and retained-byte substitution, exact budget exhaustion, claim dependency propagation, cryptographically self-consistent history/index/ current-state mutations, partial-publication failure, page-constructor falsification, verifier dependency exclusion, memory/SQLite export parity, and current outward-contract generation. Filesystem-authority failures other than proved absence are classified as integrity failures rather than ordinary material unavailability. The registered golden_runpack_cross_os proof reconstructs one deterministic in-memory accepted subject, performs supplied-material offline verification, and checks its exact canonical runpack-v6 identity through the generated proof catalog. The Kani harnesses for fixed-width decoding and checked tree/count arithmetic are present, but no DG Kani execution result is yet claimed. The repository already separates its production Rust 1.96 workspace from an isolated Kani 0.67.0 proof workspace generated for Kani’s bundled Rust 1.93 toolchain. The remaining PF-05 obligation is a DG-owned manifest/profile under that same materialized runner, complete harness enumeration, execution, and immutable result retention; the toolchain-version difference is not a blocker.

The golden proof has passed on the local Linux evidence path. The checked-in Ubuntu/Windows matrix has not yet produced an observed Windows result for this candidate, so cross-OS qualification remains open. The present SQLite 1/1,000/100,000 history diagnostics likewise do not close million-record streaming, peak-memory, or calibrated product-runner qualification.

PF-05 does not prove source truth, current authority, rollback protection, external effects, deployment isolation, remote repository correctness, or release readiness. Those remain exact later-profile claims.