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 almost everywhere 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.
Almost everywhere: Compatibility is the one object the schemas leave open, and the types
leave it open too. A typed parse is a faithful stand-in for a schema only where the schema is
closed, and reading deny_unknown_fields as the house style rather than as a per-object
statement is exactly how this crate once came to refuse releases the format defines as valid.
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.