Add provenance schema contract for v0.3.0
This commit is contained in:
@@ -11,6 +11,7 @@ Status date: 2026-07-17
|
||||
- M4 drafting workspace: TipTap structured editor, dominant three-panel layout, selective context, staged generation, all acceptance destinations, partial acceptance, manual editing, undo/redo, and autosave.
|
||||
- M5 finalization/style/history: editorial action previews, editable style traits and disallowed habits, saved versions, comparison summary, restore, release checkpoints, provenance timeline, and contribution relationships.
|
||||
- M7 export/backup/evidence: Markdown, HTML, PDF, text, backup ZIP, evidence ZIP, sanitization disclosure, hashes, manifest, atomic finalization, and strict ZIP import validation.
|
||||
- Provenance Stage 2 contract (v0.3.0): 38 JSON Schema Draft 2020-12 schemas, valid/invalid fixture suites, canonical JSON and JSONL vectors, event-chain vectors, protected-record/key-rotation vectors, retention-policy vectors, and a formal release-files Merkle construction.
|
||||
- Product surface: Sites, Next, Vinext, Cloudflare, and browser-companion code and configuration have been removed. Tauri is the sole application target.
|
||||
|
||||
## External release gates
|
||||
@@ -26,7 +27,7 @@ These items cannot be honestly certified from this workspace alone and need proj
|
||||
|
||||
## Remaining hardening
|
||||
|
||||
- Replace the current MVP provenance persistence path with the approved [Thinkloom 1.0 Stage 1 normative provenance subsystem](docs/provenance/README.md). The specification is complete; formal schemas, fixtures, native implementation, and fault-injection conformance remain future stages.
|
||||
- Replace the current MVP provenance persistence path with the approved [Thinkloom 1.0 Stage 1 normative provenance subsystem](docs/provenance/README.md). The specification and formal schemas/fixtures are complete; native implementation and fault-injection conformance remain future stages.
|
||||
|
||||
- Run microphone/VAD/transcription integration tests once the approved model assets are supplied.
|
||||
- Run signed clean-install, upgrade, downgrade-warning, and uninstall tests on each release platform.
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# Thinkloom prompt configuration
|
||||
|
||||
Thinkloom 0.2.0 exposes every instruction sent to a language model as editable JSON. The desktop app creates a prompts folder in its operating-system configuration directory and shows its exact path under Settings → Prompt configuration. Use Open prompt folder to open it.
|
||||
Thinkloom 0.3.0 exposes every instruction sent to a language model as editable JSON. The desktop app creates a prompts folder in its operating-system configuration directory and shows its exact path under Settings → Prompt configuration. Use Open prompt folder to open it.
|
||||
|
||||
Prompt files are loaded immediately before every model request. Save a valid edit, then make the next request; no restart or rebuild is required. Thinkloom never overwrites existing user prompt files during startup or an update.
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ See [PROMPTS.md](PROMPTS.md) for each file's effect, variables, editing workflow
|
||||
|
||||
The approved Thinkloom 1.0 provenance architecture is documented in the [Stage 1 normative provenance specification](docs/provenance/README.md). It defines the future single-writer subsystem, canonical records, segmented ledger, recovery protocol, retention policy, native verification, and release bindings.
|
||||
|
||||
This specification is a forward implementation contract. The current 0.2.0 provenance implementation must not be represented as already conforming to it.
|
||||
Thinkloom 0.3.0 includes the formal Stage 2 schema package and deterministic verification vectors. The current native provenance writer must not be represented as conforming until the later implementation and fault-injection stages are complete.
|
||||
|
||||
## Provider setup
|
||||
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
# Thinkloom provenance specification
|
||||
|
||||
This directory contains the approved Stage 1 normative specification for the Thinkloom 1.0 provenance subsystem.
|
||||
This directory contains the approved normative specification and formal Stage 2 contract for the Thinkloom 1.0 provenance subsystem.
|
||||
|
||||
- [Stage 1 Normative Specification](STAGE-1-NORMATIVE-SPECIFICATION.md)
|
||||
- [State Machines and Recovery Protocols](STATE-MACHINES.md)
|
||||
- [Stage 1 Completion Checklist](COMPLETION-CHECKLIST.md)
|
||||
- [Stage 2 Completion and Verification](STAGE-2-SCHEMA-PACKAGE.md)
|
||||
- [Stage 2 JSON Schema package](../../schemas/provenance/v1/README.md)
|
||||
|
||||
These documents govern future schema and implementation work. They do not describe the current 0.2.0 implementation as already compliant.
|
||||
Thinkloom 0.3.0 includes the 38-schema Draft 2020-12 package, valid and invalid fixtures, and deterministic conformance vectors. The native writer does not yet implement this contract and must not be represented as conforming until the later implementation and fault-injection stages are complete.
|
||||
|
||||
@@ -11,7 +11,7 @@ This specification defines the authority, persistence, integrity, privacy, recov
|
||||
|
||||
It supersedes the provenance-specific transaction order, single-ledger layout, mutable-record assumptions, live-database snapshot method, and release-binding sequence in the earlier MVP architecture and implementation plans. It does not supersede their product requirements, native Tauri boundary, preview-first generation model, user-control requirements, accessibility requirements, or prohibition on retained audio.
|
||||
|
||||
The current Thinkloom 0.2.0 implementation is not represented as conforming to this specification. Conformance begins only after the Stage 2 schemas, fixtures, native implementation, and required fault-injection tests are complete.
|
||||
Thinkloom 0.3.0 includes the formal Stage 2 schemas and verification vectors, but its native writer is not represented as conforming to this specification. Full conformance begins only after the native implementation and required fault-injection tests are complete.
|
||||
|
||||
## 2. Normative language
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
# Thinkloom Stage 2 Provenance Schema Package
|
||||
|
||||
Status: **Complete for Thinkloom 0.3.0**
|
||||
Schema family: **1.0**
|
||||
Dialect: **JSON Schema Draft 2020-12**
|
||||
Runtime conformance: **Not yet implemented**
|
||||
|
||||
## Scope
|
||||
|
||||
Stage 2 formalizes the approved provenance architecture without changing native application behavior. It provides deterministic contracts and verification evidence for the later native-writer implementation. Migration support remains deferred until after Thinkloom 1.0.0.
|
||||
|
||||
## Package
|
||||
|
||||
The machine-readable package is in [`schemas/provenance/v1`](../../schemas/provenance/v1/README.md). `catalog.json` identifies all 38 schemas, the schema and application versions, compatibility, fixture locations, and the generator.
|
||||
|
||||
Each schema has:
|
||||
|
||||
- one valid canonical fixture;
|
||||
- invalid cases for every top-level required field and the closed-object policy;
|
||||
- populated nested cases for enum, const, pattern, numeric, string, and array bounds; and
|
||||
- explicit conditional failures for protected records and recovery envelopes where ordinary keyword mutation is insufficient.
|
||||
|
||||
## Deterministic vectors
|
||||
|
||||
The vector suite covers:
|
||||
|
||||
- RFC 8785-compatible serialization after Thinkloom Unicode NFC preprocessing;
|
||||
- prohibited non-finite, undefined, and NFC-colliding values;
|
||||
- exact millisecond UTC timestamps and repository-relative path restrictions;
|
||||
- LF-only canonical JSONL, contiguous events, event self-digests, and cross-segment seals;
|
||||
- prompt-template, protected-record, event, and release self-digest identities;
|
||||
- minimal and full-private retention behavior;
|
||||
- device and recovery key envelopes plus key rotation;
|
||||
- non-mutating sanitized exports and omission-rule disclosure;
|
||||
- deterministic derived indexes;
|
||||
- backup and release manifests plus the release-files Merkle root; and
|
||||
- all verification statuses and finding severities.
|
||||
|
||||
## Verification
|
||||
|
||||
Regenerate deterministically:
|
||||
|
||||
```powershell
|
||||
npm run provenance:schema:generate
|
||||
```
|
||||
|
||||
Validate schemas, fixtures, and vectors:
|
||||
|
||||
```powershell
|
||||
npm run provenance:schema:test
|
||||
```
|
||||
|
||||
The schema tests are also part of `npm test`. Generated output must be committed with its generator and tests. A clean regeneration is required before changing any formal schema or vector.
|
||||
|
||||
## Next boundary
|
||||
|
||||
Thinkloom 0.3.0 must not claim native provenance conformance. The next implementation stage replaces the MVP persistence path with the approved single-writer protocol and then executes the durable-boundary fault-injection matrix.
|
||||
+1
-1
@@ -16,7 +16,7 @@ export default tseslint.config(
|
||||
rules: { ...reactHooks.configs.recommended.rules },
|
||||
},
|
||||
{
|
||||
files: ["tests/**/*.mjs"],
|
||||
files: ["tests/**/*.mjs", "scripts/**/*.mjs"],
|
||||
languageOptions: { globals: globals.node },
|
||||
},
|
||||
);
|
||||
|
||||
Generated
+107
-12
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "thinkloom",
|
||||
"version": "0.2.0",
|
||||
"version": "0.3.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "thinkloom",
|
||||
"version": "0.2.0",
|
||||
"version": "0.3.0",
|
||||
"license": "AGPL-3.0-only",
|
||||
"dependencies": {
|
||||
"@tiptap/markdown": "^3.28.0",
|
||||
@@ -23,6 +23,8 @@
|
||||
"@types/react": "19.2.14",
|
||||
"@types/react-dom": "19.2.3",
|
||||
"@vitejs/plugin-react": "6.0.2",
|
||||
"ajv": "^8.17.1",
|
||||
"ajv-formats": "^3.0.1",
|
||||
"eslint": "9.39.4",
|
||||
"eslint-plugin-react-hooks": "7.1.1",
|
||||
"globals": "14.0.0",
|
||||
@@ -415,6 +417,30 @@
|
||||
"url": "https://opencollective.com/eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/eslintrc/node_modules/ajv": {
|
||||
"version": "6.15.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
|
||||
"integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
"json-schema-traverse": "^0.4.1",
|
||||
"uri-js": "^4.2.2"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/epoberezkin"
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@eslint/js": {
|
||||
"version": "9.39.4",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz",
|
||||
@@ -1990,22 +2016,40 @@
|
||||
}
|
||||
},
|
||||
"node_modules/ajv": {
|
||||
"version": "6.15.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
|
||||
"integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
|
||||
"version": "8.17.1",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
|
||||
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
"json-schema-traverse": "^0.4.1",
|
||||
"uri-js": "^4.2.2"
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"fast-uri": "^3.0.1",
|
||||
"json-schema-traverse": "^1.0.0",
|
||||
"require-from-string": "^2.0.2"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/epoberezkin"
|
||||
}
|
||||
},
|
||||
"node_modules/ajv-formats": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
|
||||
"integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ajv": "^8.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"ajv": "^8.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"ajv": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
@@ -2372,6 +2416,30 @@
|
||||
"url": "https://opencollective.com/eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/ajv": {
|
||||
"version": "6.15.0",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
|
||||
"integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
"json-schema-traverse": "^0.4.1",
|
||||
"uri-js": "^4.2.2"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/epoberezkin"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/espree": {
|
||||
"version": "10.4.0",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz",
|
||||
@@ -2466,6 +2534,23 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fast-uri": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.3.tgz",
|
||||
"integrity": "sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/fastify"
|
||||
},
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/fastify"
|
||||
}
|
||||
],
|
||||
"license": "BSD-3-Clause"
|
||||
},
|
||||
"node_modules/file-entry-cache": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
|
||||
@@ -2703,9 +2788,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
||||
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -3162,6 +3247,16 @@
|
||||
"react": "^19.2.6"
|
||||
}
|
||||
},
|
||||
"node_modules/require-from-string": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/resolve-from": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
||||
|
||||
+11
-5
@@ -1,21 +1,25 @@
|
||||
{
|
||||
"name": "thinkloom",
|
||||
"version": "0.2.0",
|
||||
"version": "0.3.0",
|
||||
"author": "Christopher Chambers",
|
||||
"license": "AGPL-3.0-only",
|
||||
"repository": "https://github.com/Labyricorn/thinkloom-openai-hackathon.git",
|
||||
"homepage": "https://github.com/Labyricorn/thinkloom-openai-hackathon",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"engines": { "node": ">=22.13.0" },
|
||||
"engines": {
|
||||
"node": ">=22.13.0"
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "vite --port 1420 --strictPort",
|
||||
"build": "npm run typecheck && vite build",
|
||||
"preview": "vite preview",
|
||||
"typecheck": "tsc --noEmit",
|
||||
"lint": "eslint src tests vite.config.ts",
|
||||
"test": "npm run typecheck && node tests/native-app.test.mjs",
|
||||
"tauri": "tauri"
|
||||
"lint": "eslint src tests scripts vite.config.ts",
|
||||
"test": "npm run typecheck && node tests/native-app.test.mjs && npm run provenance:schema:test",
|
||||
"tauri": "tauri",
|
||||
"provenance:schema:generate": "node scripts/generate-provenance-stage2.mjs",
|
||||
"provenance:schema:test": "node tests/provenance-schema.test.mjs"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tiptap/markdown": "^3.28.0",
|
||||
@@ -32,6 +36,8 @@
|
||||
"@types/react": "19.2.14",
|
||||
"@types/react-dom": "19.2.3",
|
||||
"@vitejs/plugin-react": "6.0.2",
|
||||
"ajv": "^8.17.1",
|
||||
"ajv-formats": "^3.0.1",
|
||||
"eslint": "9.39.4",
|
||||
"eslint-plugin-react-hooks": "7.1.1",
|
||||
"globals": "14.0.0",
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user