Expand description
The signed release manifest, and the box.json that must agree with it.
These types are the runtime shape check. Node and Python validate the same documents against the
canonical JSON schemas at runtime; this crate encodes those schemas as types instead, because the
schemas set additionalProperties: false throughout and a typed deny_unknown_fields parse says
exactly that — while a JSON Schema evaluator for the eighteen keywords these schemas actually use
would be six hundred lines of validation logic whose failure mode is validating less than it
claims.
The equivalence is not assumed. tests/schema.rs validates the same documents against the
bundled canonical schemas and asserts the two agree, so a type that drifts from its schema is a
red test rather than a silent divergence between implementations.
What the types cannot express — patterns, non-empty strings, positive integers, and the
weights/assets co-requirement — is checked explicitly in ReleaseManifest::validate.
Structs§
- Archive
- Where the archive lives and what it must hash and weigh.
- Asset
Descriptor - One on-demand asset a caller must materialise before execution.
- BoxManifest
- The box’s self-description, carried inside the archive.
- Compatibility
- Host requirements a caller may enforce. Scrollcase records them; it does not decide policy.
- Payload
Digest Commitment - What a release commits to about its own extracted tree.
- Provenance
- How the box was produced. Recorded, signed, and never fabricated.
- Release
Manifest - The immutable description of one built box.
- Self
Test - The import check a box must pass with its own interpreter.
Enums§
- Execution
- The optional, shell-free application entry point.