Forge as a Muninn Consumer

July 28, 2026 ยท View on GitHub

Status: charter amendment. This document changes the identity and evidence model for future Forge work; it does not activate a new capsule or WIT surface.

Forge builds and deterministic tests are derivations, not a second cache system.

Build identity

A reproducible capsule build uses the complete invocation contract:

source closure
toolchain closure
target and build profile
canonical build parameters
runtime semantic profile
packaging contract
    -> canonical capsule artifact and build manifest

The source closure includes every source, generated input, lockfile, vendored dependency, build script, and declared environment object visible to the build. The toolchain closure includes compiler, linker, astrid-build, canonical WIT inputs, target libraries, and packaging implementation. Ambient host paths, time, locale, network state, and undeclared environment are absent from a reusable build.

The exact transform closure and contracts participate in InvocationId. Changing compiler bytes, target semantics, feature flags, packaging grammar, or any declared input produces a different invocation. A build lookup is permitted only after ordinary source/input authorization.

Test identity

A deterministic test outcome is keyed by:

(code-and-fixture closure, test contract, runtime semantic profile,
 canonical parameters)

The evidence records pass/fail, canonical output artifacts, measurements, and the executing engine build. Unchanged deterministic tests become Muninn lookups, but operator sampling re-runs a selected subset. A mismatch becomes a security event and makes the entry suspect; it is never silently blessed as a new expected result.

Tests that observe clock, random, external services, undeclared filesystem state, races, or backend-dependent numerics remain snapshot-bound or nondeterministic. Forge does not label a flaky test pure to improve its hit rate.

Side-effect boundary

Compilation, packaging, and deterministic verification can be reused. Installing a capsule, granting authority, signing a release, publishing an artifact, changing a channel, and charging an account remain fresh effectful operations. A memo hit supplies verified preparation; it never replays or claims an external effect.

Evidence and economics

Build and test results use DerivationEvidence; the live lookup is Muninn. The durable result remains an ordinary principal-authorized object. Cross-domain hits receive the same logical compute charge as misses, while saved physical work is the operator's dividend.

The fleet goals are therefore precise:

  • an unchanged reproducible build is a verified lookup;
  • an unchanged deterministic test is an evidence lookup subject to sampling;
  • deleting the disposable index changes speed only; and
  • a source or toolchain change invalidates exactly the affected invocations.

Acceptance

  • Two fresh processes produce byte-identical capsule and manifest ObjectIds from one complete invocation.
  • Every semantics-visible source, toolchain, target, and packaging change changes InvocationId.
  • An undeclared clock, random, network, environment, or filesystem read makes the build ineligible for pure reuse.
  • Install, signing, and publication execute on every authorized request.
  • Deleting Muninn rebuilds the index from retained evidence.
  • A sampled divergent build/test quarantines the entry and emits audit evidence.
  • Cache presence cannot be probed across computation-sharing domains.