{ "schema": "https://thinkloom.app/schemas/provenance/1.0/project-key-manifest.schema.json", "cases": [ { "description": "project-key-manifest.schema_version: reject missing required property", "instance": { "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.project_id: reject missing required property", "instance": { "schema_version": "1.0", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.key_id: reject missing required property", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.algorithm: reject missing required property", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.device_envelope_path: reject missing required property", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.recovery_envelope_path: reject missing required property", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.recovery_verified_at: reject missing required property", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.created_at: reject missing required property", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest: reject unexpected property", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z", "__unexpected": true } }, { "description": "project-key-manifest.schema_version: reject value different from const", "instance": { "schema_version": "__INVALID_CONST__", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.project_id: reject pattern mismatch", "instance": { "schema_version": "1.0", "project_id": "invalid-id", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.key_id: reject pattern mismatch", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "invalid-id", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.algorithm: reject value different from const", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "__INVALID_CONST__", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.device_envelope_path: reject pattern mismatch", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "../outside-project", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.device_envelope_path: reject string below minLength", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.recovery_envelope_path: reject pattern mismatch", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "../outside-project", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.recovery_envelope_path: reject string below minLength", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.recovery_verified_at: reject pattern mismatch", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "not-a-timestamp", "created_at": "2026-07-17T18:42:10.123Z" } }, { "description": "project-key-manifest.created_at: reject pattern mismatch", "instance": { "schema_version": "1.0", "project_id": "project_01J00000000000000000000001", "key_id": "key_01J0000000000000000000000G", "algorithm": "xchacha20-poly1305", "device_envelope_path": "provenance/keys/device-envelope.json", "recovery_envelope_path": "provenance/keys/recovery-envelope.json", "recovery_verified_at": "2026-07-17T18:42:10.123Z", "created_at": "not-a-timestamp" } } ] }