Some checks failed
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
Mirror Thin Bundle Sign & Verify / mirror-sign (push) Has been cancelled
api-governance / spectral-lint (push) Has been cancelled
1.4 KiB
1.4 KiB
Excititor Locker Manifest (OBS-53-001)
Defines the manifest for evidence snapshots stored in Evidence Locker / sealed-mode bundles.
Manifest structure
{
"tenant": "default",
"manifestId": "locker:excititor:2025-11-23:0001",
"createdAt": "2025-11-23T23:10:00Z",
"items": [
{
"observationId": "vex:obs:sha256:...",
"providerId": "ubuntu-csaf",
"contentHash": "sha256:...",
"linksetId": "CVE-2024-0001:pkg:maven/org.demo/app@1.2.3",
"dsseEnvelopeHash": "sha256:...",
"provenance": {
"source": "mirror|ingest",
"mirrorGeneration": 12,
"exportCenterManifest": "sha256:..."
}
}
],
"merkleRoot": "sha256:...", // over `items[*].contentHash`
"signature": null, // populated in OBS-54-001 (DSSE)
"metadata": {"sealed": true}
}
Rules
itemssorted byobservationId, thenproviderId.merkleRootuses SHA-256 over concatenated item hashes (stable order above).signatureis a DSSE envelope (hash recorded indsseEnvelopeHash) when OBS-54-001 is enabled; otherwisenull.- Manifests are immutable; version using
manifestIdsuffix.
Storage and replay
- Store manifests alongside payloads in object storage; key prefix:
locker/excititor/<tenant>/<manifestId>. - Replay tools must verify
merkleRootbefore loading payloads; reject if mismatched.