Runtime Release Integrity
This guide documents deterministic runtime release validation for EverArcade.
Deterministic artifacts
Use scripts/hash_runtime_artifacts.sh to generate canonical hashes for runtime files, replay outputs, package archive, and runtime release manifest.
Canonical deterministic files:
runtime/manifests/runtime-release-manifest.jsonruntime/manifests/runtime-artifacts.sha256runtime/manifests/replay.sha256dist/runtime.sha256dist/runtime-manifest.sha256
Provenance metadata is emitted separately at runtime/manifests/build-provenance.json and includes a timestamp for human inspection only.
Replay determinism
Run scripts/verify_replay_determinism.sh to generate replay output twice and verify runtime/replay/latest/frame-0001.json has a stable SHA-256 hash.
Package integrity
Run scripts/build_vm_runtime_appliance.sh then scripts/verify_runtime_package.sh.
Package creation is hardened using stable archive ordering and normalized gzip headers.
Manifest signing
Use:
scripts/sign_runtime_manifest.shscripts/verify_runtime_manifest_signature.sh
The signer uses OpenSSL detached signatures (SHA-256 digest). If no key exists, a local RSA keypair is generated under runtime/manifests/keys/ for local testing.
Cross-machine verification
Run scripts/cross_machine_repro_check.sh on another Linux machine with the release artifacts. This validates:
- package hashes,
- replay hashes,
- runtime artifact hashes,
- required runtime files,
- manifest signature verification.
Current reproducibility limitations
- Full cross-machine binary reproducibility depends on Rust toolchain and linker equivalence.
- Provenance includes
generated_atand host metadata and is intentionally outside canonical deterministic hash scopes. - Signature trust distribution is local by default (no PKI or remote trust root in this phase).