# Leibodex Capture Bundle v1 - Version: `v1` - Status: active - `bundle_spec`: `leibodex.capture_bundle.v1` ## Purpose Define a capture-focused ZIP artifact for browser/mobile/manual capture flows that is hash-stamped in Leibodex. ## Hashing Rule - Compute SHA-256 over the exact ZIP bytes. - Stamp that hash via `POST /v1/stamps`. - Canonical verification URL is `/verify/`. ## Required Files - `manifest.json` - At least one captured content file (for example `front.jpg` or `capture.png`). ## Optional Files - `statement.txt` - `receipt.txt` - `certificate.json` - `signatures/*` payload files (for optional Signed Bundle Mode attachments) ## `manifest.json` Schema (v1) Canonical top-level keys (sorted lexicographically in deterministic tooling): - `bundle_spec` (string, required) - `created_at_utc` (ISO8601 Z, required) - `description` (string, optional) - `internal_file_count` (integer, optional) - `metadata` (object, optional) - `signatures` (array, optional) - `title` (string, optional) `metadata` suggested keys: - `bundle_type` (`capture` recommended) - `creator_alias` `signatures[]` object shape (optional): - `type` (`pgp | webauthn | detached`) - `public_key` (optional) - `fingerprint` (optional) - `signature_hash` (optional, SHA-256 hex) - `signed_at_utc` (optional ISO8601 Z) - `attestation_statement` (optional) ## Example `manifest.json` ```json { "bundle_spec": "leibodex.capture_bundle.v1", "created_at_utc": "2026-03-01T00:00:00Z", "description": "camera capture", "internal_file_count": 3, "metadata": { "bundle_type": "capture", "creator_alias": "mobile" }, "signatures": [], "title": "artifact capture" } ``` ## Determinism Notes - Browser bundles are best-effort deterministic. - CLI bundles are strict deterministic (stable file order, stable key ordering, stable archive metadata).