Build manifest
Inspect the trusted base and runtime contract obligations emitted by sakura build --manifest.
The source-built JS compiler supports:
sakura build --manifest srcA successful build writes JavaScript to target/sakura/js and the manifest to target/sakura/manifest.json, relative to the working directory. --out-dir changes the JavaScript directory; the manifest path stays target/sakura/manifest.json. A failed build does not write a new manifest, so check the exit status before consuming an existing file.
The manifest is one JSON object with:
schema_version: "1.0"and the inputsnapshothash.compiler.versionandcompiler.git; local builds may have a null git value.trustedentries for the compiler, emitted runtime (with SHA-256), std host bindings, user@externaldeclarations,@trustreasons and@totaldeclarations.obligationswith an ID, symbol ID, clause, status and source span. Current contract records have statusruntime_checked.
Obligation IDs use o: followed by a digest of the symbol, clause name and normalized predicate. A function-body edit that preserves these does not change its obligation ID. That identity is not a proof-cache validity guarantee: M4 verification must also track bodies and other dependencies.
This records assumptions and runtime obligations; it does not certify the program. Compile-time literal evaluation already decides some introductions, while sakura verify and proof-driven check removal remain planned M4 integration. See the roadmap.