Add provenance schema contract for v0.3.0
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
# Thinkloom provenance schemas 1.0
|
||||
|
||||
This generated package is the formal Stage 2 contract for the approved provenance architecture. It targets JSON Schema Draft 2020-12 and ships with 38 schemas, valid fixtures, invalid fixture suites, and deterministic verification vectors.
|
||||
|
||||
- `catalog.json` is the machine-readable inventory.
|
||||
- `*.schema.json` are the formal contracts.
|
||||
- `fixtures/valid` contains one canonical valid instance per schema.
|
||||
- `fixtures/invalid` covers required fields, closed-object policy, and populated enum, pattern, and numeric/string/array bounds.
|
||||
- `vectors` fixes canonicalization, timestamps, paths, JSONL, event and segment chains, self-digests, protected records, key rotation and recovery, retention policy, sanitized export, deterministic indexes, verification reports, backups, and release-Merkle behavior.
|
||||
|
||||
Regenerate with `npm run provenance:schema:generate`. Verify with `npm run provenance:schema:test`. Generated files must be committed together with generator and vector changes. Runtime adoption is a later implementation stage; presence of this package does not imply the current native writer already conforms.
|
||||
@@ -0,0 +1,150 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/backup-manifest.schema.json",
|
||||
"title": "Project backup manifest",
|
||||
"description": "Complete staged-backup inventory including a verified online SQLite snapshot.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"application_version": {
|
||||
"type": "string",
|
||||
"pattern": "^\\d+\\.\\d+\\.\\d+$"
|
||||
},
|
||||
"project_id": {
|
||||
"type": "string",
|
||||
"pattern": "^project_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"created_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"source_chain_head": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"sqlite_snapshot": {
|
||||
"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": 1
|
||||
},
|
||||
"sqlite_version": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"database_schema_version": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"completed_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"path",
|
||||
"sha256",
|
||||
"size",
|
||||
"sqlite_version",
|
||||
"database_schema_version",
|
||||
"completed_at"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"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
|
||||
},
|
||||
"protected": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"recovery_key_envelope_path": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"pattern": "^(?!/)(?![A-Za-z]:)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(?:/|$))[^\\u0000-\\u001f]+$"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"schema_version",
|
||||
"application_version",
|
||||
"project_id",
|
||||
"created_at",
|
||||
"source_chain_head",
|
||||
"sqlite_snapshot",
|
||||
"files",
|
||||
"protected",
|
||||
"recovery_key_envelope_path"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,280 @@
|
||||
{
|
||||
"catalog_version": "1.0",
|
||||
"dialect": "https://json-schema.org/draft/2020-12/schema",
|
||||
"provenance_schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"compatible_application_versions": [
|
||||
"0.3.0"
|
||||
],
|
||||
"native_writer_conformance": false,
|
||||
"normative_specification": "../../../docs/provenance/STAGE-1-NORMATIVE-SPECIFICATION.md",
|
||||
"generated_by": "scripts/generate-provenance-stage2.mjs",
|
||||
"schemas": [
|
||||
{
|
||||
"name": "backup-manifest",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/backup-manifest.schema.json",
|
||||
"file": "backup-manifest.schema.json",
|
||||
"valid_fixture": "fixtures/valid/backup-manifest.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/backup-manifest.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "chain-head",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/chain-head.schema.json",
|
||||
"file": "chain-head.schema.json",
|
||||
"valid_fixture": "fixtures/valid/chain-head.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/chain-head.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "content-reference",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/content-reference.schema.json",
|
||||
"file": "content-reference.schema.json",
|
||||
"valid_fixture": "fixtures/valid/content-reference.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/content-reference.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "conversation-session",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/conversation-session.schema.json",
|
||||
"file": "conversation-session.schema.json",
|
||||
"valid_fixture": "fixtures/valid/conversation-session.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/conversation-session.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "derived-index-manifest",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/derived-index-manifest.schema.json",
|
||||
"file": "derived-index-manifest.schema.json",
|
||||
"valid_fixture": "fixtures/valid/derived-index-manifest.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/derived-index-manifest.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "disposition-revision",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/disposition-revision.schema.json",
|
||||
"file": "disposition-revision.schema.json",
|
||||
"valid_fixture": "fixtures/valid/disposition-revision.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/disposition-revision.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "edit-transaction",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/edit-transaction.schema.json",
|
||||
"file": "edit-transaction.schema.json",
|
||||
"valid_fixture": "fixtures/valid/edit-transaction.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/edit-transaction.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "encrypted-key-envelope",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/encrypted-key-envelope.schema.json",
|
||||
"file": "encrypted-key-envelope.schema.json",
|
||||
"valid_fixture": "fixtures/valid/encrypted-key-envelope.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/encrypted-key-envelope.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "idea",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/idea.schema.json",
|
||||
"file": "idea.schema.json",
|
||||
"valid_fixture": "fixtures/valid/idea.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/idea.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "idea-revision",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/idea-revision.schema.json",
|
||||
"file": "idea-revision.schema.json",
|
||||
"valid_fixture": "fixtures/valid/idea-revision.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/idea-revision.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "invocation-failure",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/invocation-failure.schema.json",
|
||||
"file": "invocation-failure.schema.json",
|
||||
"valid_fixture": "fixtures/valid/invocation-failure.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/invocation-failure.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "invocation-request",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/invocation-request.schema.json",
|
||||
"file": "invocation-request.schema.json",
|
||||
"valid_fixture": "fixtures/valid/invocation-request.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/invocation-request.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "invocation-response",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/invocation-response.schema.json",
|
||||
"file": "invocation-response.schema.json",
|
||||
"valid_fixture": "fixtures/valid/invocation-response.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/invocation-response.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "invocation-state",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/invocation-state.schema.json",
|
||||
"file": "invocation-state.schema.json",
|
||||
"valid_fixture": "fixtures/valid/invocation-state.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/invocation-state.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "invocation-stream-state",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/invocation-stream-state.schema.json",
|
||||
"file": "invocation-stream-state.schema.json",
|
||||
"valid_fixture": "fixtures/valid/invocation-stream-state.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/invocation-stream-state.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "invocation-stream-summary",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/invocation-stream-summary.schema.json",
|
||||
"file": "invocation-stream-summary.schema.json",
|
||||
"valid_fixture": "fixtures/valid/invocation-stream-summary.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/invocation-stream-summary.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "ledger-segment-manifest",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/ledger-segment-manifest.schema.json",
|
||||
"file": "ledger-segment-manifest.schema.json",
|
||||
"valid_fixture": "fixtures/valid/ledger-segment-manifest.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/ledger-segment-manifest.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "manuscript-revision",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/manuscript-revision.schema.json",
|
||||
"file": "manuscript-revision.schema.json",
|
||||
"valid_fixture": "fixtures/valid/manuscript-revision.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/manuscript-revision.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "model-capability-snapshot",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/model-capability-snapshot.schema.json",
|
||||
"file": "model-capability-snapshot.schema.json",
|
||||
"valid_fixture": "fixtures/valid/model-capability-snapshot.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/model-capability-snapshot.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "model-configuration-snapshot",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/model-configuration-snapshot.schema.json",
|
||||
"file": "model-configuration-snapshot.schema.json",
|
||||
"valid_fixture": "fixtures/valid/model-configuration-snapshot.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/model-configuration-snapshot.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "project-key-manifest",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/project-key-manifest.schema.json",
|
||||
"file": "project-key-manifest.schema.json",
|
||||
"valid_fixture": "fixtures/valid/project-key-manifest.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/project-key-manifest.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "project-manifest",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/project-manifest.schema.json",
|
||||
"file": "project-manifest.schema.json",
|
||||
"valid_fixture": "fixtures/valid/project-manifest.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/project-manifest.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "prompt-template",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/prompt-template.schema.json",
|
||||
"file": "prompt-template.schema.json",
|
||||
"valid_fixture": "fixtures/valid/prompt-template.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/prompt-template.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "prompt-template-reference",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/prompt-template-reference.schema.json",
|
||||
"file": "prompt-template-reference.schema.json",
|
||||
"valid_fixture": "fixtures/valid/prompt-template-reference.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/prompt-template-reference.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "provenance-event",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/provenance-event.schema.json",
|
||||
"file": "provenance-event.schema.json",
|
||||
"valid_fixture": "fixtures/valid/provenance-event.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/provenance-event.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "provenance-policy",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/provenance-policy.schema.json",
|
||||
"file": "provenance-policy.schema.json",
|
||||
"valid_fixture": "fixtures/valid/provenance-policy.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/provenance-policy.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "purge-manifest",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/purge-manifest.schema.json",
|
||||
"file": "purge-manifest.schema.json",
|
||||
"valid_fixture": "fixtures/valid/purge-manifest.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/purge-manifest.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "record-envelope",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/record-envelope.schema.json",
|
||||
"file": "record-envelope.schema.json",
|
||||
"valid_fixture": "fixtures/valid/record-envelope.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/record-envelope.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "recovery-key-envelope",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/recovery-key-envelope.schema.json",
|
||||
"file": "recovery-key-envelope.schema.json",
|
||||
"valid_fixture": "fixtures/valid/recovery-key-envelope.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/recovery-key-envelope.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "release-manifest",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/release-manifest.schema.json",
|
||||
"file": "release-manifest.schema.json",
|
||||
"valid_fixture": "fixtures/valid/release-manifest.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/release-manifest.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "release-state",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/release-state.schema.json",
|
||||
"file": "release-state.schema.json",
|
||||
"valid_fixture": "fixtures/valid/release-state.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/release-state.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "sanitized-export-manifest",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/sanitized-export-manifest.schema.json",
|
||||
"file": "sanitized-export-manifest.schema.json",
|
||||
"valid_fixture": "fixtures/valid/sanitized-export-manifest.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/sanitized-export-manifest.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "text-fragment-reference",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/text-fragment-reference.schema.json",
|
||||
"file": "text-fragment-reference.schema.json",
|
||||
"valid_fixture": "fixtures/valid/text-fragment-reference.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/text-fragment-reference.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "transcript-correction",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/transcript-correction.schema.json",
|
||||
"file": "transcript-correction.schema.json",
|
||||
"valid_fixture": "fixtures/valid/transcript-correction.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/transcript-correction.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "transcript-normalization",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/transcript-normalization.schema.json",
|
||||
"file": "transcript-normalization.schema.json",
|
||||
"valid_fixture": "fixtures/valid/transcript-normalization.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/transcript-normalization.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "transcript-turn",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/transcript-turn.schema.json",
|
||||
"file": "transcript-turn.schema.json",
|
||||
"valid_fixture": "fixtures/valid/transcript-turn.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/transcript-turn.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "verification-report",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/verification-report.schema.json",
|
||||
"file": "verification-report.schema.json",
|
||||
"valid_fixture": "fixtures/valid/verification-report.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/verification-report.invalid.json"
|
||||
},
|
||||
{
|
||||
"name": "write-intent",
|
||||
"id": "https://thinkloom.app/schemas/provenance/1.0/write-intent.schema.json",
|
||||
"file": "write-intent.schema.json",
|
||||
"valid_fixture": "fixtures/valid/write-intent.valid.json",
|
||||
"invalid_fixture": "fixtures/invalid/write-intent.invalid.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/chain-head.schema.json",
|
||||
"title": "Chain head",
|
||||
"description": "Durable pointer to the last committed provenance event.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"project_id": {
|
||||
"type": "string",
|
||||
"pattern": "^project_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"active_segment_number": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"event_id": {
|
||||
"type": "string",
|
||||
"pattern": "^event_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"event_sequence": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"event_hash": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"updated_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",
|
||||
"project_id",
|
||||
"active_segment_number",
|
||||
"event_id",
|
||||
"event_sequence",
|
||||
"event_hash",
|
||||
"updated_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/content-reference.schema.json",
|
||||
"title": "Content reference",
|
||||
"description": "Content-addressed link to an authoritative record or revision.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"record_id": {
|
||||
"type": "string",
|
||||
"pattern": "^record_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"record_type": {
|
||||
"enum": [
|
||||
"conversation_turn",
|
||||
"invocation_request",
|
||||
"invocation_response",
|
||||
"invocation_failure",
|
||||
"idea_revision",
|
||||
"manuscript_revision",
|
||||
"edit_transaction",
|
||||
"prompt_template",
|
||||
"model_configuration",
|
||||
"release_file",
|
||||
"source",
|
||||
"other"
|
||||
]
|
||||
},
|
||||
"sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"path": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"pattern": "^(?!/)(?![A-Za-z]:)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(?:/|$))[^\\u0000-\\u001f]+$"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"revision_id": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "^revision_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"range": {
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "https://thinkloom.app/schemas/provenance/1.0/text-fragment-reference.schema.json"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"schema_version",
|
||||
"record_id",
|
||||
"record_type",
|
||||
"sha256",
|
||||
"path",
|
||||
"revision_id",
|
||||
"range"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/conversation-session.schema.json",
|
||||
"title": "Conversation session",
|
||||
"description": "Canonical conversation-session metadata without audio retention.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"session_id": {
|
||||
"type": "string",
|
||||
"pattern": "^session_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"project_id": {
|
||||
"type": "string",
|
||||
"pattern": "^project_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"mode": {
|
||||
"enum": [
|
||||
"typed",
|
||||
"voice",
|
||||
"mixed"
|
||||
]
|
||||
},
|
||||
"started_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"ended_at": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"turn_count": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"audio_retained": {
|
||||
"const": false
|
||||
},
|
||||
"retention_mode": {
|
||||
"enum": [
|
||||
"minimal",
|
||||
"full_private"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"schema_version",
|
||||
"session_id",
|
||||
"project_id",
|
||||
"title",
|
||||
"mode",
|
||||
"started_at",
|
||||
"ended_at",
|
||||
"turn_count",
|
||||
"audio_retained",
|
||||
"retention_mode"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/derived-index-manifest.schema.json",
|
||||
"title": "Derived index manifest",
|
||||
"description": "Non-authoritative reproducibility metadata for a derived index.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"index_type": {
|
||||
"enum": [
|
||||
"content_index",
|
||||
"contribution_graph",
|
||||
"manuscript_lineage",
|
||||
"checkpoint_index"
|
||||
]
|
||||
},
|
||||
"source_chain_head": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"source_event_count": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"generator": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"version": {
|
||||
"type": "string",
|
||||
"pattern": "^\\d+\\.\\d+\\.\\d+$"
|
||||
},
|
||||
"configuration_sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"version",
|
||||
"configuration_sha256"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"content_sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"generated_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",
|
||||
"index_type",
|
||||
"source_chain_head",
|
||||
"source_event_count",
|
||||
"generator",
|
||||
"content_sha256",
|
||||
"generated_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,154 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/disposition-revision.schema.json",
|
||||
"title": "Invocation disposition revision",
|
||||
"description": "Immutable ordered record of user action on one model result.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"disposition_id": {
|
||||
"type": "string",
|
||||
"pattern": "^disposition_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"invocation_id": {
|
||||
"type": "string",
|
||||
"pattern": "^invocation_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"revision_number": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"status": {
|
||||
"enum": [
|
||||
"staged",
|
||||
"accepted",
|
||||
"partially_accepted",
|
||||
"rejected",
|
||||
"discarded"
|
||||
]
|
||||
},
|
||||
"accepted_ranges": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "https://thinkloom.app/schemas/provenance/1.0/text-fragment-reference.schema.json"
|
||||
}
|
||||
},
|
||||
"rejected_ranges": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "https://thinkloom.app/schemas/provenance/1.0/text-fragment-reference.schema.json"
|
||||
}
|
||||
},
|
||||
"destination": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"revision_id": {
|
||||
"type": "string",
|
||||
"pattern": "^revision_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"pattern": "^(?!/)(?![A-Za-z]:)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(?:/|$))[^\\u0000-\\u001f]+$"
|
||||
},
|
||||
"operation": {
|
||||
"enum": [
|
||||
"insert",
|
||||
"replace",
|
||||
"append",
|
||||
"new_section"
|
||||
]
|
||||
},
|
||||
"position": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"revision_id",
|
||||
"path",
|
||||
"operation",
|
||||
"position"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"stale_context_resolution": {
|
||||
"enum": [
|
||||
"not_stale",
|
||||
"revalidated",
|
||||
"rebased",
|
||||
"explicitly_confirmed",
|
||||
"rejected"
|
||||
]
|
||||
},
|
||||
"decided_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"event_id": {
|
||||
"type": "string",
|
||||
"pattern": "^event_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"schema_version",
|
||||
"disposition_id",
|
||||
"invocation_id",
|
||||
"revision_number",
|
||||
"status",
|
||||
"accepted_ranges",
|
||||
"rejected_ranges",
|
||||
"destination",
|
||||
"stale_context_resolution",
|
||||
"decided_at",
|
||||
"event_id"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"disposition_id": "disposition_01J0000000000000000000000M",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"revision_number": 1,
|
||||
"status": "partially_accepted",
|
||||
"accepted_ranges": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"rejected_ranges": [],
|
||||
"destination": {
|
||||
"revision_id": "revision_01J0000000000000000000000B",
|
||||
"path": "manuscript/revisions/revision.md",
|
||||
"operation": "insert",
|
||||
"position": 0
|
||||
},
|
||||
"stale_context_resolution": "revalidated",
|
||||
"decided_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/edit-transaction.schema.json",
|
||||
"title": "Manuscript edit transaction",
|
||||
"description": "Meaningful coalesced manual or acceptance-driven edit transaction.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"transaction_id": {
|
||||
"type": "string",
|
||||
"pattern": "^transaction_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"project_id": {
|
||||
"type": "string",
|
||||
"pattern": "^project_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"base_revision_id": {
|
||||
"type": "string",
|
||||
"pattern": "^revision_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"result_revision_id": {
|
||||
"type": "string",
|
||||
"pattern": "^revision_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"started_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"ended_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"operations": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"operation_type": {
|
||||
"enum": [
|
||||
"insert",
|
||||
"delete",
|
||||
"replace",
|
||||
"move",
|
||||
"format"
|
||||
]
|
||||
},
|
||||
"source_range": {
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "https://thinkloom.app/schemas/provenance/1.0/text-fragment-reference.schema.json"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"destination_position": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"inserted_text_sha256": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"result_fragment_id": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "^fragment_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"operation_type",
|
||||
"source_range",
|
||||
"destination_position",
|
||||
"inserted_text_sha256",
|
||||
"result_fragment_id"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"minItems": 1
|
||||
},
|
||||
"preimage_sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"result_sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"schema_version",
|
||||
"transaction_id",
|
||||
"project_id",
|
||||
"base_revision_id",
|
||||
"result_revision_id",
|
||||
"started_at",
|
||||
"ended_at",
|
||||
"operations",
|
||||
"preimage_sha256",
|
||||
"result_sha256"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/encrypted-key-envelope.schema.json",
|
||||
"title": "Encrypted key envelope",
|
||||
"description": "Authenticated envelope wrapping a project data-encryption key.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"envelope_id": {
|
||||
"type": "string",
|
||||
"pattern": "^record_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"key_id": {
|
||||
"type": "string",
|
||||
"pattern": "^key_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"envelope_type": {
|
||||
"enum": [
|
||||
"device",
|
||||
"recovery"
|
||||
]
|
||||
},
|
||||
"algorithm": {
|
||||
"enum": [
|
||||
"xchacha20-poly1305"
|
||||
]
|
||||
},
|
||||
"key_derivation": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"algorithm": {
|
||||
"const": "argon2id"
|
||||
},
|
||||
"memory_kib": {
|
||||
"type": "integer",
|
||||
"minimum": 65536
|
||||
},
|
||||
"iterations": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"parallelism": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"salt": {
|
||||
"type": "string",
|
||||
"minLength": 16
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"algorithm",
|
||||
"memory_kib",
|
||||
"iterations",
|
||||
"parallelism",
|
||||
"salt"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"nonce": {
|
||||
"type": "string",
|
||||
"minLength": 32
|
||||
},
|
||||
"wrapped_key": {
|
||||
"type": "string",
|
||||
"minLength": 16
|
||||
},
|
||||
"ciphertext_sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"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",
|
||||
"envelope_id",
|
||||
"key_id",
|
||||
"envelope_type",
|
||||
"algorithm",
|
||||
"key_derivation",
|
||||
"nonce",
|
||||
"wrapped_key",
|
||||
"ciphertext_sha256",
|
||||
"created_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,997 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/backup-manifest.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "backup-manifest.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.application_version: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.source_chain_head: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.files: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.protected: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.recovery_key_envelope_path: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null,
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.application_version: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": " invalid!",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "invalid-id",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "not-a-timestamp",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.source_chain_head: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:INVALID",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.path: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.size: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.sqlite_version: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.database_schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.completed_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z",
|
||||
"__unexpected": true
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.path: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "../outside-project",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.path: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:INVALID",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.size: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 0,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.sqlite_version: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.database_schema_version: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 0,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.sqlite_snapshot.completed_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "not-a-timestamp"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.files: reject array below minItems",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.files[0].path: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.files[0].sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.files[0].size: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333"
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.files[0]: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256,
|
||||
"__unexpected": true
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.files[0].path: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "../outside-project",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.files[0].path: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.files[0].sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:INVALID",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "backup-manifest.files[0].size: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": -1
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,179 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/chain-head.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "chain-head.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.active_segment_number: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.event_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.event_sequence: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.event_hash: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.updated_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "invalid-id",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.active_segment_number: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 0,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.event_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "invalid-id",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.event_sequence: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 0,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.event_hash: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:INVALID",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "chain-head.updated_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,585 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/content-reference.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "content-reference.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.record_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.record_type: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.path: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.revision_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
},
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.record_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "invalid-id",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.record_type: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "__INVALID_ENUM__",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:INVALID",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.path: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "../outside-project",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.path: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.revision_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "invalid-id",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.document_revision_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.coordinate_system: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.start: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.end: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.preimage_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.text_fragment_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C",
|
||||
"__unexpected": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.document_revision_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "invalid-id",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.coordinate_system: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "__INVALID_ENUM__",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.start: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": -1,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.end: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": -1,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.preimage_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:INVALID",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "content-reference.range.text_fragment_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "invalid-id"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,296 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/conversation-session.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "conversation-session.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.session_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.title: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.mode: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.started_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.ended_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.turn_count: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.audio_retained: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.retention_mode: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.session_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "invalid-id",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "invalid-id",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.mode: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "__INVALID_ENUM__",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.started_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "not-a-timestamp",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.ended_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "not-a-timestamp",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.turn_count: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": -1,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.audio_retained: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": true,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "conversation-session.retention_mode: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "__INVALID_ENUM__"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,329 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/derived-index-manifest.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "derived-index-manifest.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.index_type: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.source_chain_head: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.source_event_count: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.generator: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.content_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.generated_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.index_type: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "__INVALID_ENUM__",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.source_chain_head: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:INVALID",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.source_event_count: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": -1,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.generator.name: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.generator.version: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.generator.configuration_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.generator: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"__unexpected": true
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.generator.name: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.generator.version: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": " invalid!",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.generator.configuration_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:INVALID"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.content_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:INVALID",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "derived-index-manifest.generated_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,689 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/edit-transaction.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "edit-transaction.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.transaction_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.base_revision_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.result_revision_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.started_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.ended_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.operations: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.preimage_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.result_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.transaction_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "invalid-id",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "invalid-id",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.base_revision_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "invalid-id",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.result_revision_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "invalid-id",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.started_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "not-a-timestamp",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.ended_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "not-a-timestamp",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.operations: reject array below minItems",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.operations[0].operation_type: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.operations[0].source_range: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.operations[0].destination_position: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.operations[0].inserted_text_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.operations[0].result_fragment_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.operations[0]: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C",
|
||||
"__unexpected": true
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.operations[0].operation_type: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "__INVALID_ENUM__",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.operations[0].destination_position: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": -1,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.operations[0].inserted_text_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:INVALID",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.operations[0].result_fragment_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "invalid-id"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.preimage_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:INVALID",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "edit-transaction.result_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:INVALID"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,296 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/encrypted-key-envelope.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "encrypted-key-envelope.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.envelope_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.key_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.envelope_type: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.algorithm: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.key_derivation: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.nonce: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.wrapped_key: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.ciphertext_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.envelope_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "invalid-id",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.key_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "invalid-id",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.envelope_type: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "__INVALID_ENUM__",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.algorithm: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "__INVALID_ENUM__",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.nonce: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.wrapped_key: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.ciphertext_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:INVALID",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "encrypted-key-envelope.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,539 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/idea-revision.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "idea-revision.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.revision_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.idea_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.revision_number: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.title: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.summary: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.detail: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.tags: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.source_turn_ids: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.parent_idea_ids: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.created_by: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.content_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.revision_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "invalid-id",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.idea_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "invalid-id",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.revision_number: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 0,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.title: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.summary: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.tags[0]: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
""
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.source_turn_ids[0]: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"invalid-id"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.created_by: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "__INVALID_ENUM__",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "not-a-timestamp",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea-revision.content_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:INVALID"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,179 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/idea.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "idea.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.idea_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.current_revision_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.status: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.updated_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.idea_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "invalid-id",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "invalid-id",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.current_revision_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "invalid-id",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.status: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "__INVALID_ENUM__",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"created_at": "not-a-timestamp",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "idea.updated_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,249 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/invocation-failure.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "invocation-failure.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.failure_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.invocation_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.code: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.category: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.recoverable: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.bounded_summary: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.partial_output_preserved: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.occurred_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.failure_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "invalid-id",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.invocation_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invalid-id",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.code: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": " invalid!",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.category: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "__INVALID_ENUM__",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.bounded_summary: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.bounded_summary: reject string above maxLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-failure.occurred_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,737 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/invocation-response.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "invocation-response.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.record_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.invocation_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.retention_mode: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.content_type: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.retained_text: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.finish_reason: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.usage: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.provider_metadata: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.validation: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.content_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.record_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "invalid-id",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.invocation_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invalid-id",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.retention_mode: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "__INVALID_ENUM__",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.content_type: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "__INVALID_ENUM__",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.finish_reason: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.usage.input_tokens: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.usage.output_tokens: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.usage: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14,
|
||||
"__unexpected": true
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.usage.input_tokens: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": -1,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.usage.output_tokens: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": -1
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.validation.schema_valid: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.validation.repair_attempted: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.validation: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false,
|
||||
"__unexpected": true
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.content_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:INVALID",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-response.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/invocation-state.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "invocation-state.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "REQUEST_RECORDED",
|
||||
"state_sequence": 2,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"failure_id": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-state.invocation_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"state": "REQUEST_RECORDED",
|
||||
"state_sequence": 2,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"failure_id": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-state.state: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state_sequence": 2,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"failure_id": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-state.state_sequence: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "REQUEST_RECORDED",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"failure_id": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-state.updated_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "REQUEST_RECORDED",
|
||||
"state_sequence": 2,
|
||||
"failure_id": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-state.failure_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "REQUEST_RECORDED",
|
||||
"state_sequence": 2,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-state: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "REQUEST_RECORDED",
|
||||
"state_sequence": 2,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"failure_id": null,
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-state.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "REQUEST_RECORDED",
|
||||
"state_sequence": 2,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"failure_id": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-state.invocation_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invalid-id",
|
||||
"state": "REQUEST_RECORDED",
|
||||
"state_sequence": 2,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"failure_id": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-state.state: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "__INVALID_ENUM__",
|
||||
"state_sequence": 2,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"failure_id": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-state.state_sequence: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "REQUEST_RECORDED",
|
||||
"state_sequence": 0,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"failure_id": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-state.updated_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "REQUEST_RECORDED",
|
||||
"state_sequence": 2,
|
||||
"updated_at": "not-a-timestamp",
|
||||
"failure_id": null
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,191 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/invocation-stream-state.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "invocation-stream-state.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.stream_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.invocation_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.state: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.bytes_received: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.started_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.updated_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.stream_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "invalid-id",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.invocation_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invalid-id",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.state: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "__INVALID_ENUM__",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.bytes_received: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": -1,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.bytes_received: reject value above maximum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 67108865,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.started_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"started_at": "not-a-timestamp",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-state.updated_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,277 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/invocation-stream-summary.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "invocation-stream-summary.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.stream_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.invocation_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.terminal_state: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.bytes_received: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.chunks_received: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.duration_milliseconds: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.partial_output_preserved: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.completed_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.stream_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "invalid-id",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.invocation_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invalid-id",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.terminal_state: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "__INVALID_ENUM__",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.bytes_received: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": -1,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.bytes_received: reject value above maximum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 67108865,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.chunks_received: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": -1,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.duration_milliseconds: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": -1,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.duration_milliseconds: reject value above maximum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 1800001,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "invocation-stream-summary.completed_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,402 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/ledger-segment-manifest.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "ledger-segment-manifest.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.segment_number: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.previous_segment_file_hash: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.first_event_hash: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.final_event_hash: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.first_event_sequence: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.final_event_sequence: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.event_count: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.byte_length: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.segment_file_hash: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.sealed_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "invalid-id",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.segment_number: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 0,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.first_event_hash: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:INVALID",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.final_event_hash: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:INVALID",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.first_event_sequence: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 0,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.final_event_sequence: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 0,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.event_count: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 0,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.byte_length: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 0,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.segment_file_hash: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:INVALID",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "ledger-segment-manifest.sealed_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,263 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/manuscript-revision.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "manuscript-revision.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.revision_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.parent_revision_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.canonical_markdown_path: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.canonical_markdown_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.word_count: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.created_by: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.revision_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "invalid-id",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "invalid-id",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.canonical_markdown_path: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "../outside-project",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.canonical_markdown_path: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.canonical_markdown_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:INVALID",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.word_count: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": -1,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.created_by: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "__INVALID_ENUM__",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "manuscript-revision.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/model-capability-snapshot.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "model-capability-snapshot.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.snapshot_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.provider_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.model_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.capabilities: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.observed_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.snapshot_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "invalid-id",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.provider_id: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.model_id: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.capabilities.streaming: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.capabilities.structured_output: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.capabilities.tools: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.capabilities.vision: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.capabilities: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false,
|
||||
"__unexpected": true
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-capability-snapshot.observed_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,479 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/model-configuration-snapshot.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "model-configuration-snapshot.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.snapshot_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.provider_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.model_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.processing_mode: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.endpoint_classification: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.temperature_milli: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.context_limit: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.maximum_output: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.structured_output_mode: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.tool_configuration: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.capability_snapshot_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.snapshot_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "invalid-id",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.provider_id: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.model_id: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.processing_mode: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "__INVALID_ENUM__",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.endpoint_classification: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "__INVALID_ENUM__",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.temperature_milli: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": -1,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.temperature_milli: reject value above maximum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 2001,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.context_limit: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 0,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.maximum_output: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 0,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.structured_output_mode: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "__INVALID_ENUM__",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.capability_snapshot_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:INVALID",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "model-configuration-snapshot.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,245 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,311 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/project-manifest.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "project-manifest.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.application_version: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.title: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.updated_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.current_phase: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.publication_status: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.provenance_policy_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.audio_retained: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false,
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.application_version: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": " invalid!",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "invalid-id",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.title: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "not-a-timestamp",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.updated_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "not-a-timestamp",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.current_phase: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "__INVALID_ENUM__",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.publication_status: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "__INVALID_ENUM__",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.provenance_policy_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "invalid-id",
|
||||
"audio_retained": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "project-manifest.audio_retained: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/prompt-template-reference.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "prompt-template-reference.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"path": "records/prompt-templates/drafting/template.json",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template-reference.template_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"version": 1,
|
||||
"path": "records/prompt-templates/drafting/template.json",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template-reference.version: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"path": "records/prompt-templates/drafting/template.json",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template-reference.path: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template-reference.template_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"path": "records/prompt-templates/drafting/template.json"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template-reference: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"path": "records/prompt-templates/drafting/template.json",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template-reference.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"path": "records/prompt-templates/drafting/template.json",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template-reference.template_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "invalid-id",
|
||||
"version": 1,
|
||||
"path": "records/prompt-templates/drafting/template.json",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template-reference.version: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 0,
|
||||
"path": "records/prompt-templates/drafting/template.json",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template-reference.path: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"path": "../outside-project",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template-reference.path: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"path": "",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template-reference.template_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"path": "records/prompt-templates/drafting/template.json",
|
||||
"template_sha256": "sha256:INVALID"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,391 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/prompt-template.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "prompt-template.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.template_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.version: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.purpose: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.canonical_template_body: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.variables: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.creation_application_version: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.retention_classification: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.template_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.template_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "invalid-id",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.version: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 0,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.purpose: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": " invalid!",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.canonical_template_body: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.creation_application_version: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": " invalid!",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.retention_classification: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "__INVALID_ENUM__",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.template_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:INVALID",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "prompt-template.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,179 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/provenance-policy.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "provenance-policy.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.policy_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.retention_mode: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.encryption_mode: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "minimal",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.default_export_profile: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "none",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.effective_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "sanitized"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.policy_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "invalid-id",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "invalid-id",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.retention_mode: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "__INVALID_ENUM__",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.encryption_mode: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "__INVALID_ENUM__",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.default_export_profile: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "__INVALID_ENUM__",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "provenance-policy.effective_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,625 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/purge-manifest.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "purge-manifest.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.purge_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.requested_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.completed_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.reason: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.superseded_chain_head: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.new_chain_root: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.affected_record_ids: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.affected_paths: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.git_history_rewritten: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.prior_copies_revocable: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.confirmation_phrase_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.purge_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "invalid-id",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "invalid-id",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.requested_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "not-a-timestamp",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.completed_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "not-a-timestamp",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.reason: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.superseded_chain_head: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:INVALID",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.new_chain_root: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:INVALID",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.affected_record_ids: reject array below minItems",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.affected_record_ids[0]: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"invalid-id"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.affected_paths[0]: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"../outside-project"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.affected_paths[0]: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
""
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.git_history_rewritten: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": false,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.prior_copies_revocable: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": true,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "purge-manifest.confirmation_phrase_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:INVALID"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,524 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/record-envelope.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "record-envelope.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.record_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.record_type: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.protection: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.plaintext_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.payload: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.encryption: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
},
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "invalid-id",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.record_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "invalid-id",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.record_type: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": " invalid!",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.protection: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "__INVALID_ENUM__",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.plaintext_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:INVALID",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.encryption.algorithm: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.encryption.key_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.encryption.nonce: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.encryption.ciphertext: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.encryption.ciphertext_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.encryption: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
||||
"__unexpected": true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.encryption.algorithm: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "__INVALID_CONST__",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.encryption.key_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "invalid-id",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.encryption.nonce: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.encryption.ciphertext: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope.encryption.ciphertext_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:INVALID"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope: protected payload must not remain plaintext",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": {
|
||||
"leaked": true
|
||||
},
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "record-envelope: unprotected payload requires null encryption",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "none",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": {
|
||||
"retained": true
|
||||
},
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,652 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/recovery-key-envelope.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "recovery-key-envelope.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.envelope_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.envelope_type: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.algorithm: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_derivation: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.nonce: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.wrapped_key: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.ciphertext_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.envelope_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "invalid-id",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "invalid-id",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.envelope_type: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "__INVALID_CONST__",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.algorithm: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "__INVALID_ENUM__",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_derivation.algorithm: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_derivation.memory_kib: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_derivation.iterations: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_derivation.parallelism: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_derivation.salt: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_derivation: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t",
|
||||
"__unexpected": true
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_derivation.algorithm: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "__INVALID_CONST__",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_derivation.memory_kib: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65535,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_derivation.iterations: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 0,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_derivation.parallelism: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 0,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.key_derivation.salt: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": ""
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.nonce: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.wrapped_key: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.ciphertext_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:INVALID",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "not-a-timestamp"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "recovery-key-envelope: recovery derivation is mandatory",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,249 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/release-state.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "release-state.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.release_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.state: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.state_sequence: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.source_commit: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.source_chain_head: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.updated_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.failure: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null,
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.release_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "invalid-id",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "invalid-id",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.state: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "__INVALID_ENUM__",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.state_sequence: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 0,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.source_commit: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": " invalid!",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.source_chain_head: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:INVALID",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "release-state.updated_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "not-a-timestamp",
|
||||
"failure": null
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,833 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/sanitized-export-manifest.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "sanitized-export-manifest.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.export_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.source_chain_head: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.profile: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.omission_rules: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.rules_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.files: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.export_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "invalid-id",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "invalid-id",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.source_chain_head: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:INVALID",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.profile: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "__INVALID_CONST__",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.omission_rules[0].category: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.omission_rules[0].action: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.omission_rules[0].count: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude"
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.omission_rules[0]: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2,
|
||||
"__unexpected": true
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.omission_rules[0].category: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "__INVALID_ENUM__",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.omission_rules[0].action: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "__INVALID_ENUM__",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.omission_rules[0].count: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": -1
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.rules_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:INVALID",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.files: reject array below minItems",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.files[0].path: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.files[0].sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.files[0].size: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.files[0]: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024,
|
||||
"__unexpected": true
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.files[0].path: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "../outside-project",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.files[0].path: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.files[0].sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:INVALID",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.files[0].size: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": -1
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "sanitized-export-manifest.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,179 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/text-fragment-reference.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "text-fragment-reference.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.document_revision_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.coordinate_system: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.start: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.end: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.preimage_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.text_fragment_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.document_revision_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "invalid-id",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.coordinate_system: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "__INVALID_ENUM__",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.start: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": -1,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.end: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": -1,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.preimage_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:INVALID",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "text-fragment-reference.text_fragment_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "invalid-id"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,219 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/transcript-correction.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "transcript-correction.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.correction_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.turn_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.revision_number: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.corrected_text: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.reason: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.event_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.correction_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "invalid-id",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.turn_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "invalid-id",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.revision_number: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 0,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.corrected_text: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.reason: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "__INVALID_ENUM__",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "not-a-timestamp",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-correction.event_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "invalid-id"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,263 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/transcript-normalization.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "transcript-normalization.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.normalization_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.turn_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.revision_number: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.normalized_text: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.method: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.source_correction_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.event_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.normalization_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "invalid-id",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.turn_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "invalid-id",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.revision_number: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 0,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.normalized_text: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.method: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "__INVALID_ENUM__",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.source_correction_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "invalid-id",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "not-a-timestamp",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-normalization.event_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "invalid-id"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,385 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/transcript-turn.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "transcript-turn.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.turn_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.session_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.speaker: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.input_mode: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.retained_text: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.raw_transcript: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.started_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.ended_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.audio_retained: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.invocation_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.event_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.turn_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "invalid-id",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.session_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "invalid-id",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.speaker: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "__INVALID_ENUM__",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.input_mode: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "__INVALID_ENUM__",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.retained_text: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.started_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "not-a-timestamp",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.ended_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "not-a-timestamp",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.audio_retained: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": true,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "transcript-turn.event_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "invalid-id"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,916 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/verification-report.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "verification-report.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.verification_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.status: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.verified_through_event_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.verified_chain_head: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.checked_segments: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.checked_events: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.checked_records: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.verifier_version: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.completed_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.verification_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "invalid-id",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "invalid-id",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.status: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "__INVALID_ENUM__",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.verified_through_event_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "invalid-id",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.verified_chain_head: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:INVALID",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.checked_segments: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": -1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.checked_events: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": -1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.checked_records: reject value below minimum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": -1,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings[0].severity: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings[0].code: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings[0].message: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings[0].authoritative_evidence_affected: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings[0].path: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings[0].event_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json"
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings[0]: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null,
|
||||
"__unexpected": true
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings[0].severity: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "__INVALID_ENUM__",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings[0].code: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": " invalid!",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings[0].message: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings[0].path: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "../outside-project",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.findings[0].path: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.verifier_version: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": " invalid!",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "verification-report.completed_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,461 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/write-intent.schema.json",
|
||||
"cases": [
|
||||
{
|
||||
"description": "write-intent.schema_version: reject missing required property",
|
||||
"instance": {
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.intent_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.client_action_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.project_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.operation_type: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.phase: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.event_id: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.event_sequence: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.staged_path: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.command_sha256: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.result: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.created_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.updated_at: reject missing required property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent: reject unexpected property",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"__unexpected": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.schema_version: reject value different from const",
|
||||
"instance": {
|
||||
"schema_version": "__INVALID_CONST__",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.intent_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "invalid-id",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.client_action_id: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.client_action_id: reject string above maxLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.project_id: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "invalid-id",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.operation_type: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": " invalid!",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.phase: reject value outside enum",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "__INVALID_ENUM__",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.staged_path: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": "../outside-project",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.staged_path: reject string below minLength",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": "",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.command_sha256: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:INVALID",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.created_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "not-a-timestamp",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "write-intent.updated_at: reject pattern mismatch",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "not-a-timestamp"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/backup-manifest.schema.json",
|
||||
"description": "Valid Project backup manifest example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"sqlite_snapshot": {
|
||||
"path": "database-snapshot/state.sqlite",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"size": 4096,
|
||||
"sqlite_version": "3.46.0",
|
||||
"database_schema_version": 1,
|
||||
"completed_at": "2026-07-17T18:42:10.123Z"
|
||||
},
|
||||
"files": [
|
||||
{
|
||||
"path": "project.json",
|
||||
"sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"size": 256
|
||||
}
|
||||
],
|
||||
"protected": false,
|
||||
"recovery_key_envelope_path": null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/chain-head.schema.json",
|
||||
"description": "Valid Chain head example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"active_segment_number": 1,
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/content-reference.schema.json",
|
||||
"description": "Valid Content reference example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/conversation-session.schema.json",
|
||||
"description": "Valid Conversation session example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "Opening discussion",
|
||||
"mode": "typed",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"turn_count": 2,
|
||||
"audio_retained": false,
|
||||
"retention_mode": "minimal"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/derived-index-manifest.schema.json",
|
||||
"description": "Valid Derived index manifest example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"index_type": "contribution_graph",
|
||||
"source_chain_head": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"source_event_count": 42,
|
||||
"generator": {
|
||||
"name": "thinkloom-indexer",
|
||||
"version": "1.0.0",
|
||||
"configuration_sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
||||
},
|
||||
"content_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"generated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/disposition-revision.schema.json",
|
||||
"description": "Valid Invocation disposition revision example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"disposition_id": "disposition_01J0000000000000000000000M",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"revision_number": 1,
|
||||
"status": "partially_accepted",
|
||||
"accepted_ranges": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"rejected_ranges": [],
|
||||
"destination": {
|
||||
"revision_id": "revision_01J0000000000000000000000B",
|
||||
"path": "manuscript/revisions/revision.md",
|
||||
"operation": "insert",
|
||||
"position": 0
|
||||
},
|
||||
"stale_context_resolution": "revalidated",
|
||||
"decided_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/edit-transaction.schema.json",
|
||||
"description": "Valid Manuscript edit transaction example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"transaction_id": "transaction_01J0000000000000000000000N",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"base_revision_id": "revision_01J0000000000000000000000A",
|
||||
"result_revision_id": "revision_01J0000000000000000000000B",
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"operations": [
|
||||
{
|
||||
"operation_type": "insert",
|
||||
"source_range": null,
|
||||
"destination_position": 0,
|
||||
"inserted_text_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
||||
"result_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
],
|
||||
"preimage_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"result_sha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/encrypted-key-envelope.schema.json",
|
||||
"description": "Valid Encrypted key envelope example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J00000000000000000000005",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "device",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": null,
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/idea-revision.schema.json",
|
||||
"description": "Valid Idea revision example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/idea.schema.json",
|
||||
"description": "Valid Idea identity example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/invocation-failure.schema.json",
|
||||
"description": "Valid Invocation failure example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/invocation-request.schema.json",
|
||||
"description": "Valid Invocation request example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"initiated_by_event_id": "event_01J00000000000000000000003",
|
||||
"retention_mode": "full_private",
|
||||
"provider": {
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local"
|
||||
},
|
||||
"model_configuration_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"prompt_template": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"path": "records/prompt-templates/drafting/template.json",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
},
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": "Use the selected ideas to draft a passage."
|
||||
}
|
||||
],
|
||||
"context_references": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
],
|
||||
"manuscript_revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_revision_ids": [
|
||||
"revision_01J0000000000000000000000B"
|
||||
],
|
||||
"conversation_head": "turn_01J00000000000000000000007",
|
||||
"submitted_at": "2026-07-17T18:42:10.123Z",
|
||||
"redactions": [
|
||||
{
|
||||
"category": "personal_identifier",
|
||||
"replacement": "[redacted]"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/invocation-response.schema.json",
|
||||
"description": "Valid Invocation response example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/invocation-state.schema.json",
|
||||
"description": "Valid Invocation state example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "REQUEST_RECORDED",
|
||||
"state_sequence": 2,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"failure_id": null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/invocation-stream-state.schema.json",
|
||||
"description": "Valid Invocation stream state example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/invocation-stream-summary.schema.json",
|
||||
"description": "Valid Invocation stream summary example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/ledger-segment-manifest.schema.json",
|
||||
"description": "Valid Ledger segment manifest example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/manuscript-revision.schema.json",
|
||||
"description": "Valid Manuscript revision example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/model-capability-snapshot.schema.json",
|
||||
"description": "Valid Model capability snapshot example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/model-configuration-snapshot.schema.json",
|
||||
"description": "Valid Model configuration snapshot example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/project-key-manifest.schema.json",
|
||||
"description": "Valid Project key manifest example.",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/project-manifest.schema.json",
|
||||
"description": "Valid Project manifest example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/prompt-template-reference.schema.json",
|
||||
"description": "Valid Prompt template reference example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"path": "records/prompt-templates/drafting/template.json",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/prompt-template.schema.json",
|
||||
"description": "Valid Prompt template example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"canonical_template_body": "Use {{context}} to draft a passage.",
|
||||
"variables": {
|
||||
"context": {
|
||||
"description": "Selected idea context",
|
||||
"required": true
|
||||
}
|
||||
},
|
||||
"creation_application_version": "0.3.0",
|
||||
"retention_classification": "project_record",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/provenance-event.schema.json",
|
||||
"description": "Valid Provenance event example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"event_id": "event_01J00000000000000000000003",
|
||||
"event_sequence": 1,
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"timestamp": "2026-07-17T18:42:10.123Z",
|
||||
"event_type": "PROJECT_CREATED",
|
||||
"actor": {
|
||||
"type": "user",
|
||||
"actor_id": null
|
||||
},
|
||||
"provider": null,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
],
|
||||
"relationships": {
|
||||
"parent_event_ids": [],
|
||||
"invocation_id": null
|
||||
},
|
||||
"metadata": {
|
||||
"summary": "Created project"
|
||||
},
|
||||
"previous_event_hash": null,
|
||||
"event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/provenance-policy.schema.json",
|
||||
"description": "Valid Provenance policy example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"policy_id": "policy_01J0000000000000000000000H",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"retention_mode": "minimal",
|
||||
"encryption_mode": "none",
|
||||
"default_export_profile": "sanitized",
|
||||
"effective_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/purge-manifest.schema.json",
|
||||
"description": "Valid Emergency purge manifest example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"purge_id": "purge_01J0000000000000000000000R",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"requested_at": "2026-07-17T18:42:10.123Z",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z",
|
||||
"reason": "Remove accidentally retained credential",
|
||||
"superseded_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"new_chain_root": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"affected_record_ids": [
|
||||
"record_01J00000000000000000000005"
|
||||
],
|
||||
"affected_paths": [
|
||||
"records/invocations/request.json"
|
||||
],
|
||||
"git_history_rewritten": true,
|
||||
"prior_copies_revocable": false,
|
||||
"confirmation_phrase_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/record-envelope.schema.json",
|
||||
"description": "Valid Authoritative record envelope example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "invocation_request",
|
||||
"protection": "protected",
|
||||
"plaintext_sha256": "sha256:97154eddff15ab6607181e55945547fdbbc5bde02b1e5123eade7a69509f00c5",
|
||||
"payload": null,
|
||||
"encryption": {
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"ciphertext": "ZW5jcnlwdGVkLXJlY29yZA==",
|
||||
"ciphertext_sha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/recovery-key-envelope.schema.json",
|
||||
"description": "Valid Recovery key envelope example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"envelope_id": "record_01J0000000000000000000000S",
|
||||
"key_id": "key_01J0000000000000000000000G",
|
||||
"envelope_type": "recovery",
|
||||
"algorithm": "xchacha20-poly1305",
|
||||
"key_derivation": {
|
||||
"algorithm": "argon2id",
|
||||
"memory_kib": 65536,
|
||||
"iterations": 3,
|
||||
"parallelism": 1,
|
||||
"salt": "c2FsdC1mb3ItdGhpbmtsb29t"
|
||||
},
|
||||
"nonce": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"wrapped_key": "d3JhcHBlZC1wcm9qZWN0LWtleQ==",
|
||||
"ciphertext_sha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/release-manifest.schema.json",
|
||||
"description": "Valid Release manifest example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"version": "1.0.0",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"source_manuscript": {
|
||||
"path": "manuscript/final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
|
||||
},
|
||||
"sanitized": false,
|
||||
"files": [
|
||||
{
|
||||
"path": "manuscript/final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
},
|
||||
{
|
||||
"path": "evidence/creative-process-report.md",
|
||||
"sha256": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"size": 512
|
||||
}
|
||||
],
|
||||
"release_files_merkle_root": "sha256:b773ac929d720839a617ec0f9d6e39ad5401fa7795e21f799302658de8db9cda",
|
||||
"merkle_algorithm": "thinkloom-release-merkle-v1"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/release-state.schema.json",
|
||||
"description": "Valid Release state example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"release_id": "release_01J0000000000000000000000E",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"state": "RELEASE_STAGED",
|
||||
"state_sequence": 5,
|
||||
"source_commit": "0123456789abcdef0123456789abcdef01234567",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"failure": null
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/sanitized-export-manifest.schema.json",
|
||||
"description": "Valid Sanitized export manifest example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"export_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"source_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"profile": "sanitized",
|
||||
"omission_rules": [
|
||||
{
|
||||
"category": "private_conversation",
|
||||
"action": "exclude",
|
||||
"count": 2
|
||||
}
|
||||
],
|
||||
"rules_sha256": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"files": [
|
||||
{
|
||||
"path": "final-manuscript.md",
|
||||
"sha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"size": 1024
|
||||
}
|
||||
],
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/text-fragment-reference.schema.json",
|
||||
"description": "Valid Text fragment reference example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/transcript-correction.schema.json",
|
||||
"description": "Valid Transcript correction example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"correction_id": "correction_01J0000000000000000000000J",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"corrected_text": "Attention shapes our public life.",
|
||||
"reason": "user_correction",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/transcript-normalization.schema.json",
|
||||
"description": "Valid Transcript normalization example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"normalization_id": "normalization_01J0000000000000000000000K",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"revision_number": 1,
|
||||
"normalized_text": "Attention shapes public life.",
|
||||
"method": "application",
|
||||
"source_correction_id": "correction_01J0000000000000000000000J",
|
||||
"created_at": "2026-07-17T18:43:11.456Z",
|
||||
"event_id": "event_01J00000000000000000000004"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/transcript-turn.schema.json",
|
||||
"description": "Valid Transcript turn example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"turn_id": "turn_01J00000000000000000000007",
|
||||
"session_id": "session_01J00000000000000000000006",
|
||||
"speaker": "user",
|
||||
"input_mode": "typed",
|
||||
"retained_text": "Attention shapes public life.",
|
||||
"raw_transcript": null,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"ended_at": "2026-07-17T18:43:11.456Z",
|
||||
"audio_retained": false,
|
||||
"invocation_id": null,
|
||||
"event_id": "event_01J00000000000000000000003"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/verification-report.schema.json",
|
||||
"description": "Valid Verification report example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"verification_id": "record_01J00000000000000000000005",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"status": "VERIFIED_WITH_WARNINGS",
|
||||
"verified_through_event_id": "event_01J00000000000000000000003",
|
||||
"verified_chain_head": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"checked_segments": 1,
|
||||
"checked_events": 1,
|
||||
"checked_records": 4,
|
||||
"findings": [
|
||||
{
|
||||
"severity": "WARNING",
|
||||
"code": "INDEX_STALE",
|
||||
"message": "Contribution index is stale.",
|
||||
"authoritative_evidence_affected": false,
|
||||
"path": "provenance/indexes/contribution-graph.json",
|
||||
"event_id": null
|
||||
}
|
||||
],
|
||||
"verifier_version": "1.0.0",
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"schema": "https://thinkloom.app/schemas/provenance/1.0/write-intent.schema.json",
|
||||
"description": "Valid Cross-store write intent example.",
|
||||
"instance": {
|
||||
"schema_version": "1.0",
|
||||
"intent_id": "intent_01J00000000000000000000002",
|
||||
"client_action_id": "client-action-0001",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"operation_type": "IDEA_ACCEPTED",
|
||||
"phase": "PREPARED",
|
||||
"event_id": null,
|
||||
"event_sequence": null,
|
||||
"staged_path": ".app/temp/intents/intent.json",
|
||||
"command_sha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
|
||||
"result": null,
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/idea-revision.schema.json",
|
||||
"title": "Idea revision",
|
||||
"description": "Immutable content revision for one idea.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"revision_id": {
|
||||
"type": "string",
|
||||
"pattern": "^revision_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"idea_id": {
|
||||
"type": "string",
|
||||
"pattern": "^idea_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"revision_number": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"summary": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"detail": {
|
||||
"type": "string"
|
||||
},
|
||||
"tags": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"uniqueItems": true
|
||||
},
|
||||
"source_turn_ids": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "^turn_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"uniqueItems": true
|
||||
},
|
||||
"parent_idea_ids": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "^idea_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"uniqueItems": true
|
||||
},
|
||||
"created_by": {
|
||||
"enum": [
|
||||
"user",
|
||||
"assistant",
|
||||
"mixed"
|
||||
]
|
||||
},
|
||||
"created_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"content_sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"schema_version",
|
||||
"revision_id",
|
||||
"idea_id",
|
||||
"revision_number",
|
||||
"title",
|
||||
"summary",
|
||||
"detail",
|
||||
"tags",
|
||||
"source_turn_ids",
|
||||
"parent_idea_ids",
|
||||
"created_by",
|
||||
"created_at",
|
||||
"content_sha256"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"revision_number": 1,
|
||||
"title": "Attention as civic infrastructure",
|
||||
"summary": "Institutions influence shared attention.",
|
||||
"detail": "Treat attention as a public condition.",
|
||||
"tags": [
|
||||
"thesis"
|
||||
],
|
||||
"source_turn_ids": [
|
||||
"turn_01J00000000000000000000007"
|
||||
],
|
||||
"parent_idea_ids": [],
|
||||
"created_by": "mixed",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"content_sha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/idea.schema.json",
|
||||
"title": "Idea identity",
|
||||
"description": "Stable idea identity and current derived status.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"idea_id": {
|
||||
"type": "string",
|
||||
"pattern": "^idea_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"project_id": {
|
||||
"type": "string",
|
||||
"pattern": "^project_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"current_revision_id": {
|
||||
"type": "string",
|
||||
"pattern": "^revision_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"status": {
|
||||
"enum": [
|
||||
"suggested",
|
||||
"accepted",
|
||||
"rejected",
|
||||
"archived"
|
||||
]
|
||||
},
|
||||
"created_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"updated_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",
|
||||
"idea_id",
|
||||
"project_id",
|
||||
"current_revision_id",
|
||||
"status",
|
||||
"created_at",
|
||||
"updated_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"idea_id": "idea_01J00000000000000000000009",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"current_revision_id": "revision_01J0000000000000000000000A",
|
||||
"status": "accepted",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/invocation-failure.schema.json",
|
||||
"title": "Invocation failure",
|
||||
"description": "Immutable bounded record of an invocation failure.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"failure_id": {
|
||||
"type": "string",
|
||||
"pattern": "^failure_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"invocation_id": {
|
||||
"type": "string",
|
||||
"pattern": "^invocation_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"code": {
|
||||
"type": "string",
|
||||
"pattern": "^[A-Z][A-Z0-9_]+$"
|
||||
},
|
||||
"category": {
|
||||
"enum": [
|
||||
"provider",
|
||||
"validation",
|
||||
"cancellation",
|
||||
"output_limit",
|
||||
"application",
|
||||
"privacy"
|
||||
]
|
||||
},
|
||||
"recoverable": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"bounded_summary": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"maxLength": 2000
|
||||
},
|
||||
"partial_output_preserved": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"occurred_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",
|
||||
"failure_id",
|
||||
"invocation_id",
|
||||
"code",
|
||||
"category",
|
||||
"recoverable",
|
||||
"bounded_summary",
|
||||
"partial_output_preserved",
|
||||
"occurred_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"failure_id": "failure_01J0000000000000000000000P",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"code": "PROVIDER_TIMEOUT",
|
||||
"category": "provider",
|
||||
"recoverable": true,
|
||||
"bounded_summary": "The provider did not respond within the configured timeout.",
|
||||
"partial_output_preserved": false,
|
||||
"occurred_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,237 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/invocation-request.schema.json",
|
||||
"title": "Invocation request",
|
||||
"description": "Credential-free immutable provider request evidence; minimal mode may omit messages.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"invocation_id": {
|
||||
"type": "string",
|
||||
"pattern": "^invocation_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"project_id": {
|
||||
"type": "string",
|
||||
"pattern": "^project_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"purpose": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-z][a-z0-9_]+$"
|
||||
},
|
||||
"initiated_by_event_id": {
|
||||
"type": "string",
|
||||
"pattern": "^event_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"retention_mode": {
|
||||
"enum": [
|
||||
"minimal",
|
||||
"full_private"
|
||||
]
|
||||
},
|
||||
"provider": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"provider_id": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"model_id": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"processing_mode": {
|
||||
"enum": [
|
||||
"local",
|
||||
"cloud"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"provider_id",
|
||||
"model_id",
|
||||
"processing_mode"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"model_configuration_sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"prompt_template": {
|
||||
"$ref": "https://thinkloom.app/schemas/provenance/1.0/prompt-template-reference.schema.json"
|
||||
},
|
||||
"messages": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"role": {
|
||||
"enum": [
|
||||
"system",
|
||||
"user",
|
||||
"assistant",
|
||||
"tool"
|
||||
]
|
||||
},
|
||||
"content": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"role",
|
||||
"content"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"context_references": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "https://thinkloom.app/schemas/provenance/1.0/content-reference.schema.json"
|
||||
}
|
||||
},
|
||||
"manuscript_revision_id": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "^revision_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"idea_revision_ids": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"pattern": "^revision_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"uniqueItems": true
|
||||
},
|
||||
"conversation_head": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "^turn_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"submitted_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"redactions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"category": {
|
||||
"enum": [
|
||||
"credential",
|
||||
"personal_identifier",
|
||||
"signed_url",
|
||||
"policy_omission",
|
||||
"other"
|
||||
]
|
||||
},
|
||||
"replacement": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"category",
|
||||
"replacement"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"schema_version",
|
||||
"invocation_id",
|
||||
"project_id",
|
||||
"purpose",
|
||||
"initiated_by_event_id",
|
||||
"retention_mode",
|
||||
"provider",
|
||||
"model_configuration_sha256",
|
||||
"prompt_template",
|
||||
"messages",
|
||||
"context_references",
|
||||
"manuscript_revision_id",
|
||||
"idea_revision_ids",
|
||||
"conversation_head",
|
||||
"submitted_at",
|
||||
"redactions"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"purpose": "draft_from_selected_ideas",
|
||||
"initiated_by_event_id": "event_01J00000000000000000000003",
|
||||
"retention_mode": "full_private",
|
||||
"provider": {
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local"
|
||||
},
|
||||
"model_configuration_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"prompt_template": {
|
||||
"schema_version": "1.0",
|
||||
"template_id": "template_01J0000000000000000000000F",
|
||||
"version": 1,
|
||||
"path": "records/prompt-templates/drafting/template.json",
|
||||
"template_sha256": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
|
||||
},
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": "Use the selected ideas to draft a passage."
|
||||
}
|
||||
],
|
||||
"context_references": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"record_type": "manuscript_revision",
|
||||
"sha256": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
||||
"path": "manuscript/revisions/revision.json",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"range": {
|
||||
"schema_version": "1.0",
|
||||
"document_revision_id": "revision_01J0000000000000000000000A",
|
||||
"coordinate_system": "utf8_byte",
|
||||
"start": 0,
|
||||
"end": 12,
|
||||
"preimage_sha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
||||
"text_fragment_id": "fragment_01J0000000000000000000000C"
|
||||
}
|
||||
}
|
||||
],
|
||||
"manuscript_revision_id": "revision_01J0000000000000000000000A",
|
||||
"idea_revision_ids": [
|
||||
"revision_01J0000000000000000000000B"
|
||||
],
|
||||
"conversation_head": "turn_01J00000000000000000000007",
|
||||
"submitted_at": "2026-07-17T18:42:10.123Z",
|
||||
"redactions": [
|
||||
{
|
||||
"category": "personal_identifier",
|
||||
"replacement": "[redacted]"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/invocation-response.schema.json",
|
||||
"title": "Invocation response",
|
||||
"description": "Immutable response evidence filtered according to retention policy.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"record_id": {
|
||||
"type": "string",
|
||||
"pattern": "^record_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"invocation_id": {
|
||||
"type": "string",
|
||||
"pattern": "^invocation_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"retention_mode": {
|
||||
"enum": [
|
||||
"minimal",
|
||||
"full_private"
|
||||
]
|
||||
},
|
||||
"content_type": {
|
||||
"enum": [
|
||||
"conversation_reply",
|
||||
"idea_suggestion",
|
||||
"draft_preview",
|
||||
"editorial_preview",
|
||||
"structured_result",
|
||||
"other"
|
||||
]
|
||||
},
|
||||
"retained_text": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"finish_reason": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"usage": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"input_tokens": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"output_tokens": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"input_tokens",
|
||||
"output_tokens"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"provider_metadata": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "object"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"validation": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_valid": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"repair_attempted": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"schema_valid",
|
||||
"repair_attempted"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"content_sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"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",
|
||||
"record_id",
|
||||
"invocation_id",
|
||||
"retention_mode",
|
||||
"content_type",
|
||||
"retained_text",
|
||||
"finish_reason",
|
||||
"usage",
|
||||
"provider_metadata",
|
||||
"validation",
|
||||
"content_sha256",
|
||||
"created_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"record_id": "record_01J00000000000000000000005",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"retention_mode": "full_private",
|
||||
"content_type": "draft_preview",
|
||||
"retained_text": "Attention is personal in experience and public in consequence.",
|
||||
"finish_reason": "stop",
|
||||
"usage": {
|
||||
"input_tokens": 120,
|
||||
"output_tokens": 14
|
||||
},
|
||||
"provider_metadata": {
|
||||
"request_id": "local-0001",
|
||||
"load_duration_milliseconds": 120
|
||||
},
|
||||
"validation": {
|
||||
"schema_valid": true,
|
||||
"repair_attempted": false
|
||||
},
|
||||
"content_sha256": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
|
||||
"created_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/invocation-state.schema.json",
|
||||
"title": "Invocation state",
|
||||
"description": "Operational invocation lifecycle projection.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"invocation_id": {
|
||||
"type": "string",
|
||||
"pattern": "^invocation_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"state": {
|
||||
"enum": [
|
||||
"REQUEST_PREPARED",
|
||||
"REQUEST_RECORDED",
|
||||
"MODEL_RUNNING",
|
||||
"RESPONSE_RECEIVED",
|
||||
"RESPONSE_RECORDED",
|
||||
"STAGED_PREVIEW",
|
||||
"FAILED",
|
||||
"CANCELLED",
|
||||
"ABANDONED"
|
||||
]
|
||||
},
|
||||
"state_sequence": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"updated_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"failure_id": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "^failure_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"schema_version",
|
||||
"invocation_id",
|
||||
"state",
|
||||
"state_sequence",
|
||||
"updated_at",
|
||||
"failure_id"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "REQUEST_RECORDED",
|
||||
"state_sequence": 2,
|
||||
"updated_at": "2026-07-17T18:42:10.123Z",
|
||||
"failure_id": null
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/invocation-stream-state.schema.json",
|
||||
"title": "Invocation stream state",
|
||||
"description": "Non-authoritative operational streaming state.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"stream_id": {
|
||||
"type": "string",
|
||||
"pattern": "^stream_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"invocation_id": {
|
||||
"type": "string",
|
||||
"pattern": "^invocation_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"state": {
|
||||
"enum": [
|
||||
"CREATED",
|
||||
"CONNECTING",
|
||||
"STREAMING",
|
||||
"COMPLETED",
|
||||
"FAILED",
|
||||
"CANCELLED",
|
||||
"ABANDONED",
|
||||
"RECOVERING"
|
||||
]
|
||||
},
|
||||
"bytes_received": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 67108864
|
||||
},
|
||||
"started_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"updated_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",
|
||||
"stream_id",
|
||||
"invocation_id",
|
||||
"state",
|
||||
"bytes_received",
|
||||
"started_at",
|
||||
"updated_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"state": "STREAMING",
|
||||
"bytes_received": 512,
|
||||
"started_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/invocation-stream-summary.schema.json",
|
||||
"title": "Invocation stream summary",
|
||||
"description": "Bounded immutable summary of a completed or interrupted stream.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"stream_id": {
|
||||
"type": "string",
|
||||
"pattern": "^stream_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"invocation_id": {
|
||||
"type": "string",
|
||||
"pattern": "^invocation_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"terminal_state": {
|
||||
"enum": [
|
||||
"COMPLETED",
|
||||
"FAILED",
|
||||
"CANCELLED",
|
||||
"ABANDONED"
|
||||
]
|
||||
},
|
||||
"bytes_received": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 67108864
|
||||
},
|
||||
"chunks_received": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"duration_milliseconds": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 1800000
|
||||
},
|
||||
"partial_output_preserved": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"completed_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",
|
||||
"stream_id",
|
||||
"invocation_id",
|
||||
"terminal_state",
|
||||
"bytes_received",
|
||||
"chunks_received",
|
||||
"duration_milliseconds",
|
||||
"partial_output_preserved",
|
||||
"completed_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"stream_id": "stream_01J0000000000000000000000Q",
|
||||
"invocation_id": "invocation_01J00000000000000000000008",
|
||||
"terminal_state": "COMPLETED",
|
||||
"bytes_received": 512,
|
||||
"chunks_received": 4,
|
||||
"duration_milliseconds": 2400,
|
||||
"partial_output_preserved": false,
|
||||
"completed_at": "2026-07-17T18:43:11.456Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/ledger-segment-manifest.schema.json",
|
||||
"title": "Ledger segment manifest",
|
||||
"description": "Immutable seal for one ledger segment.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"project_id": {
|
||||
"type": "string",
|
||||
"pattern": "^project_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"segment_number": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"previous_segment_file_hash": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"first_event_hash": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"final_event_hash": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"first_event_sequence": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"final_event_sequence": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"event_count": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"byte_length": {
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
"segment_file_hash": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"sealed_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",
|
||||
"project_id",
|
||||
"segment_number",
|
||||
"previous_segment_file_hash",
|
||||
"first_event_hash",
|
||||
"final_event_hash",
|
||||
"first_event_sequence",
|
||||
"final_event_sequence",
|
||||
"event_count",
|
||||
"byte_length",
|
||||
"segment_file_hash",
|
||||
"sealed_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"segment_number": 1,
|
||||
"previous_segment_file_hash": null,
|
||||
"first_event_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
||||
"final_event_hash": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
||||
"first_event_sequence": 1,
|
||||
"final_event_sequence": 2,
|
||||
"event_count": 2,
|
||||
"byte_length": 1024,
|
||||
"segment_file_hash": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
||||
"sealed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/manuscript-revision.schema.json",
|
||||
"title": "Manuscript revision",
|
||||
"description": "Immutable canonical manuscript revision.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"revision_id": {
|
||||
"type": "string",
|
||||
"pattern": "^revision_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"project_id": {
|
||||
"type": "string",
|
||||
"pattern": "^project_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"parent_revision_id": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"pattern": "^revision_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"canonical_markdown_path": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"pattern": "^(?!/)(?![A-Za-z]:)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(?:/|$))[^\\u0000-\\u001f]+$"
|
||||
},
|
||||
"canonical_markdown_sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"word_count": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"created_by": {
|
||||
"enum": [
|
||||
"user",
|
||||
"assistant_acceptance",
|
||||
"system_restore"
|
||||
]
|
||||
},
|
||||
"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",
|
||||
"revision_id",
|
||||
"project_id",
|
||||
"parent_revision_id",
|
||||
"canonical_markdown_path",
|
||||
"canonical_markdown_sha256",
|
||||
"word_count",
|
||||
"created_by",
|
||||
"created_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"revision_id": "revision_01J0000000000000000000000A",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"parent_revision_id": null,
|
||||
"canonical_markdown_path": "manuscript/revisions/revision.md",
|
||||
"canonical_markdown_sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
||||
"word_count": 42,
|
||||
"created_by": "user",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/model-capability-snapshot.schema.json",
|
||||
"title": "Model capability snapshot",
|
||||
"description": "Immutable observed capability set for an invoked model.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"snapshot_id": {
|
||||
"type": "string",
|
||||
"pattern": "^record_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"provider_id": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"model_id": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"capabilities": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"streaming": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"structured_output": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"tools": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"vision": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"streaming",
|
||||
"structured_output",
|
||||
"tools",
|
||||
"vision"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"observed_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",
|
||||
"snapshot_id",
|
||||
"provider_id",
|
||||
"model_id",
|
||||
"capabilities",
|
||||
"observed_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"capabilities": {
|
||||
"streaming": true,
|
||||
"structured_output": false,
|
||||
"tools": false,
|
||||
"vision": false
|
||||
},
|
||||
"observed_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/model-configuration-snapshot.schema.json",
|
||||
"title": "Model configuration snapshot",
|
||||
"description": "Effective credential-free model settings used by one invocation.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"snapshot_id": {
|
||||
"type": "string",
|
||||
"pattern": "^record_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"provider_id": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"model_id": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"processing_mode": {
|
||||
"enum": [
|
||||
"local",
|
||||
"cloud"
|
||||
]
|
||||
},
|
||||
"endpoint_classification": {
|
||||
"enum": [
|
||||
"loopback",
|
||||
"private_network",
|
||||
"public_cloud",
|
||||
"custom"
|
||||
]
|
||||
},
|
||||
"temperature_milli": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 2000
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"context_limit": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"maximum_output": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "integer",
|
||||
"minimum": 1
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"structured_output_mode": {
|
||||
"enum": [
|
||||
"none",
|
||||
"json",
|
||||
"json_schema",
|
||||
"provider_native"
|
||||
]
|
||||
},
|
||||
"tool_configuration": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"uniqueItems": true
|
||||
},
|
||||
"capability_snapshot_sha256": {
|
||||
"type": "string",
|
||||
"pattern": "^sha256:[a-f0-9]{64}$"
|
||||
},
|
||||
"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",
|
||||
"snapshot_id",
|
||||
"provider_id",
|
||||
"model_id",
|
||||
"processing_mode",
|
||||
"endpoint_classification",
|
||||
"temperature_milli",
|
||||
"context_limit",
|
||||
"maximum_output",
|
||||
"structured_output_mode",
|
||||
"tool_configuration",
|
||||
"capability_snapshot_sha256",
|
||||
"created_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"snapshot_id": "record_01J00000000000000000000005",
|
||||
"provider_id": "ollama",
|
||||
"model_id": "llama3.2",
|
||||
"processing_mode": "local",
|
||||
"endpoint_classification": "loopback",
|
||||
"temperature_milli": 700,
|
||||
"context_limit": 8192,
|
||||
"maximum_output": 800,
|
||||
"structured_output_mode": "none",
|
||||
"tool_configuration": [],
|
||||
"capability_snapshot_sha256": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
|
||||
"created_at": "2026-07-17T18:42:10.123Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/project-key-manifest.schema.json",
|
||||
"title": "Project key manifest",
|
||||
"description": "Stable key hierarchy references for protected project portability.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"project_id": {
|
||||
"type": "string",
|
||||
"pattern": "^project_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"key_id": {
|
||||
"type": "string",
|
||||
"pattern": "^key_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"algorithm": {
|
||||
"const": "xchacha20-poly1305"
|
||||
},
|
||||
"device_envelope_path": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"pattern": "^(?!/)(?![A-Za-z]:)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(?:/|$))[^\\u0000-\\u001f]+$"
|
||||
},
|
||||
"recovery_envelope_path": {
|
||||
"type": "string",
|
||||
"minLength": 1,
|
||||
"pattern": "^(?!/)(?![A-Za-z]:)(?!.*\\\\)(?!.*(?:^|/)\\.\\.?(?:/|$))[^\\u0000-\\u001f]+$"
|
||||
},
|
||||
"recovery_verified_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"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",
|
||||
"project_id",
|
||||
"key_id",
|
||||
"algorithm",
|
||||
"device_envelope_path",
|
||||
"recovery_envelope_path",
|
||||
"recovery_verified_at",
|
||||
"created_at"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://thinkloom.app/schemas/provenance/1.0/project-manifest.schema.json",
|
||||
"title": "Project manifest",
|
||||
"description": "Canonical identity and lifecycle metadata for a 1.0 project.",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"const": "1.0"
|
||||
},
|
||||
"application_version": {
|
||||
"type": "string",
|
||||
"pattern": "^\\d+\\.\\d+\\.\\d+$"
|
||||
},
|
||||
"project_id": {
|
||||
"type": "string",
|
||||
"pattern": "^project_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"minLength": 1
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"created_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"updated_at": {
|
||||
"type": "string",
|
||||
"format": "date-time",
|
||||
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
||||
},
|
||||
"current_phase": {
|
||||
"enum": [
|
||||
"ideation",
|
||||
"drafting",
|
||||
"finalization"
|
||||
]
|
||||
},
|
||||
"publication_status": {
|
||||
"enum": [
|
||||
"working",
|
||||
"finalized",
|
||||
"published"
|
||||
]
|
||||
},
|
||||
"provenance_policy_id": {
|
||||
"type": "string",
|
||||
"pattern": "^policy_[0-9A-HJKMNP-TV-Z]{26}$"
|
||||
},
|
||||
"audio_retained": {
|
||||
"const": false
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"schema_version",
|
||||
"application_version",
|
||||
"project_id",
|
||||
"title",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
"current_phase",
|
||||
"publication_status",
|
||||
"provenance_policy_id",
|
||||
"audio_retained"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"examples": [
|
||||
{
|
||||
"schema_version": "1.0",
|
||||
"application_version": "0.3.0",
|
||||
"project_id": "project_01J00000000000000000000001",
|
||||
"title": "The Attention Commons",
|
||||
"created_at": "2026-07-17T18:42:10.123Z",
|
||||
"updated_at": "2026-07-17T18:43:11.456Z",
|
||||
"current_phase": "ideation",
|
||||
"publication_status": "working",
|
||||
"provenance_policy_id": "policy_01J0000000000000000000000H",
|
||||
"audio_retained": false
|
||||
}
|
||||
]
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user