{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://thinkloom.app/schemas/provenance/1.0/sanitized-export-manifest.schema.json", "title": "Sanitized export manifest", "description": "Disclosure, retained-evidence bindings, completeness boundary, and file inventory for a non-mutating sanitized HARP export.", "type": "object", "properties": { "schema_version": { "const": "1.0" }, "export_id": { "type": "string", "pattern": "^record_[0-9A-HJKMNP-TV-Z]{26}$" }, "project_id": { "type": "string", "pattern": "^project_[0-9A-HJKMNP-TV-Z]{26}$" }, "harp_id": { "type": "string", "pattern": "^harp_[0-9A-HJKMNP-TV-Z]{26}$" }, "harp_sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }, "deposit_sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }, "source_chain_head": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }, "profile": { "const": "sanitized" }, "completeness_claim": { "const": "selective_disclosed_subset" }, "verification_scope_statement": { "type": "string", "minLength": 1 }, "omission_rules": { "type": "array", "items": { "type": "object", "properties": { "category": { "enum": [ "private_conversation", "rejected_output", "rejected_model_output", "provider_detail", "provider_metadata_not_required", "credential_authorization_material", "personal_identifier", "internal_path", "source_body", "protected_source_body", "other" ] }, "action": { "enum": [ "exclude", "redact", "summarize" ] }, "count": { "type": "integer", "minimum": 0 }, "retained_binding_sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }, "disclosure_sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" } }, "required": [ "category", "action", "count", "retained_binding_sha256", "disclosure_sha256" ], "additionalProperties": false } }, "rules_sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }, "files": { "type": "array", "items": { "type": "object", "properties": { "path": { "type": "string", "minLength": 1, "pattern": "^(?!/)(?![A-Za-z]:)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(?:/|$))[^\\u0000-\\u001f]+$" }, "sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }, "size": { "type": "integer", "minimum": 0 } }, "required": [ "path", "sha256", "size" ], "additionalProperties": false }, "minItems": 1 }, "created_at": { "type": "string", "format": "date-time", "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$" } }, "required": [ "schema_version", "export_id", "project_id", "harp_id", "harp_sha256", "deposit_sha256", "source_chain_head", "profile", "completeness_claim", "verification_scope_statement", "omission_rules", "rules_sha256", "files", "created_at" ], "additionalProperties": false, "examples": [ { "schema_version": "1.0", "export_id": "record_01J00000000000000000000005", "project_id": "project_01J00000000000000000000001", "harp_id": "harp_01J00000000000000000000002", "harp_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333", "deposit_sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222", "source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444", "profile": "sanitized", "completeness_claim": "selective_disclosed_subset", "verification_scope_statement": "Verified only against disclosed retained evidence; this archive is intentionally incomplete.", "omission_rules": [ { "category": "private_conversation", "action": "exclude", "count": 2, "retained_binding_sha256": "sha256:5555555555555555555555555555555555555555555555555555555555555555", "disclosure_sha256": "sha256:b58311ab980eecb4da1b7af0b80a6151eb0f90e287c6b30352e0b91eab8cb59b" } ], "rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666", "files": [ { "path": "evidence/harp-binding.json", "sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444", "size": 1024 } ], "created_at": "2026-07-17T18:43:11.456Z" } ] }