# description
Three-step signed chain from publish to install. Chain linking is verified by structural integrity (prev_hash matches sha256 of prior step). Signatures at v0.1 are placeholder ed25519 with NO trust root - no sigstore, no fulcio, no rekor, no key authority. Trust-root crypto lands in v0.2. Do not interpret a verified chain as a verified identity.

# properties.chain_id.description
prov_ + ULID (26-char Crockford base32).

# properties.package_sha256.description
Content hash of the package artifact bound by this chain.

# properties.steps.description
Ordered chain. Canonical order is publish -> retrieval -> install but partial chains (publish-only) are valid.

# properties.trustRoot.description
Always this literal at v0.1. Surface in every UI.

# $defs.step.properties.step_type.description
publish = publisher signs the package. retrieval = registry signs what was served. install = agent signs what was installed.

# $defs.step.properties.actor.properties.id.description
publisher slug, registry hostname, or agent slug

# $defs.step.properties.actor.properties.key_id.description
ed25519 key identifier. At v0.1 these are placeholder strings, not enrolled in any key authority.

# $defs.step.properties.payload_sha256.description
sha256 of the JSON-stable serialization of this step's payload (excluding the signature field itself).

# $defs.step.properties.prev_hash.description
sha256 of the prior step's payload_sha256+signature concatenation, or the literal 'GENESIS' for the first step.

# $defs.step.properties.signature.description
ed25519 signature over payload_sha256+prev_hash. At v0.1 always 'stub-ed25519:<hex>'. Not verifiable against any authority.

# $defs.step.properties.payload.description
Step-specific data. Shape varies by step_type. See $defs.publishPayload / retrievalPayload / installPayload.

# $defs.publishPayload.description
What the publisher attests at publish time. SLSA-style materials + invocation.

# $defs.publishPayload.properties.build_type.description
URL of build process spec, e.g. github-actions, manual

# $defs.retrievalPayload.description
What the registry attests at fetch time.

# $defs.retrievalPayload.properties.served_to.description
fetcher identity (agent slug or anonymous)

# $defs.installPayload.description
What the agent attests at install time. Links the install receipt back into the chain.