Provenance Verification Runbook (Markdown)
The five checks a verifier must perform against the attestation fixtures in this category, and the exact result each one should produce — including the two that are meant to fail. Every package, version, hash and licence is fictional — the tree describes nothing real.
# Provenance verification runbook (SAMPLE)
> Signatures, key ids and certificates here are SAMPLE placeholders — the base64 decodes to the words 'SAMPLE SIGNATURE', so verification must fail. Nothing here is cryptographically valid and no key material is real.
Every file referenced below is in this category. Nothing here verifies successfully by design — the point is to exercise the failure path as well as the happy one.
## 1. Locate the attestation
Start from the artifact digest, not from a filename. The release artifact is `orchard-gateway-4.2.0.tgz` with sha256 `06af88e316cf889e0b72645f235f77c900d48972456b1ff6ba4df49ae24be734`. That digest appears as:
- the `subject[0].digest.sha256` of the in-toto statements,
- the `payloadHash` of the Rekor entry,
- the first line of `SHA256SUMS.txt`.
If those three disagree, stop: the attestation does not describe the artifact you have.
## 2. Unwrap the envelope
`dsse-envelope.json` carries the statement as base64 in `payload`. Decode it and check it byte-matches `in-toto-slsa-provenance-v1.json`. The bad-payload fixture in this family is the negative case: it must fail here, not later.
## 3. Check the builder
`predicate.runDetails.builder.id` must equal `https://build.orchard.example/builders/hosted/v1`, which is the only entry in the allowed list in `attestation-policy.yaml`. A provenance statement that verifies cryptographically but names an unexpected builder is still a policy failure.
## 4. Check transparency-log inclusion
`sigstore-bundle.json` and `rekor-log-entry.json` both carry an inclusion proof with a root hash and a tree size of 51201. Recompute the proof — do not trust the `signedEntryTimestamp` alone.
## 5. Apply the policy
`slsa-verification-summary.json` says PASSED at SLSA_BUILD_LEVEL_3. The dependency breakdown in `slsa-level-matrix.csv` shows two dependencies still at level 0, which the policy refuses — a green top-level result does not clear the tree beneath it.
## Expected outcome with these fixtures
| Step | Result |
| --- | --- |
| Digest agreement | passes |
| Payload decode | passes (fails for the bad-payload fixture) |
| Signature verification | **fails** — SAMPLE placeholder |
| Builder identity | passes |
| Log inclusion | passes structurally |
| Policy evaluation | **blocks** — two dependencies at level 0 |
Specifications
- Seed
- 51200
- Sample Only
- true
- Format
- Markdown
- Steps
- 5
- Expected Outcomes
- 6
- Line Endings
- LF
Testing contract
Reference control- Scenario
- Use a documented expected-outcome table to test a verifier end to end.
- Expected result
- A correct verifier reproduces all six rows: four passes, a signature failure and a policy block.
What is a .md file?
Markdown (MD) is a lightweight plain-text markup language that uses simple punctuation conventions to denote headings, lists, links, emphasis, and code. It is designed to be readable as-is and to convert cleanly to HTML. It is widely used for documentation, READMEs, and content authoring.
How to use this file
Use an example Markdown file to test parsers and renderers, verify GitHub-Flavored Markdown extensions like tables and fenced code, and exercise HTML-conversion pipelines.
How to use this file for testing
“Provenance Verification Runbook (Markdown)” is a deterministic Novus Examples fixture for Editor testing, Conversion testing. Text-based files you can open, edit, and download directly in the browser editor.
Documented properties for this file: seed 51200 · LF · Markdown. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
SBOM, lockfile, provenance, and advisory fixtures describe the same fabricated component tree across formats, so a converter or scanner can be diffed against a known answer. Every package name, version, hash, and advisory ID is invented — never treat a finding here as real.
Code examples
import markdown # pip install markdown
html = markdown.markdown(open("provenance-verification-runbook.md").read())
print(html[:200])Related files
- jsonCycloneDX 1.6 Application SBOM (JSON)A complete CycloneDX 1.6 SBOM in JSON for a fictional application and its nine dependencies, with purls, SHA-256 hashes, supplier records, external references and an explicit dependency graph. Every package, version, hash and licence is fictional — the tree describes nothing real.

- xmlCycloneDX 1.6 Application SBOM (XML)The same fictional CycloneDX 1.6 SBOM serialised as XML against the cyclonedx.org/schema/bom/1.6 namespace — the JSON twin of this file carries identical components and edges, so a converter can be diffed exactly. Every package, version, hash and licence is fictional — the tree describes nothing real.

- mmdDependency Graph (Mermaid Flowchart)The dependency graph as Mermaid, for embedding in Markdown documentation — labelled edges carry the declared range and a classDef highlights the two diamond joins. Every package, version, hash and licence is fictional — the tree describes nothing real.

- dotDependency Graph With Diamonds (Graphviz DOT)The same diamond graph as Graphviz DOT, with edge labels carrying the declared semver range and the two diamond joins filled — renderable to SVG and diffable against the JSON twin. Every package, version, hash and licence is fictional — the tree describes nothing real.

- mdSBOM Format Crosswalk (CycloneDX to SPDX)The field-by-field map between the CycloneDX 1.6 and SPDX 2.3 documents in this category, plus the five invariants a correct conversion preserves and the three things it legitimately loses. Every package, version, hash and licence is fictional — the tree describes nothing real.

- jsonSPDX 2.3 Application SBOM (JSON)An SPDX 2.3 SBOM in JSON describing the same fictional tree as the CycloneDX documents in this category, with SPDXIDs, purl external references, SHA-256 checksums and DESCRIBES/DEPENDS_ON relationships. Every package, version, hash and licence is fictional — the tree describes nothing real.

Generated by generation/supply_chain.py. Free for any use, no attribution required — license.