diff --git a/checksums.txt b/checksums.txt index 4920735..a28137e 100644 --- a/checksums.txt +++ b/checksums.txt @@ -24,7 +24,7 @@ b451b0c05cb77f7ad66906f351b560400447de136c1ad2ce27c63fc3bcaf0d9a schemas/v1.0.0 ccb7f20562d2e34dff73a17794aabcf98f25f659e83a790e42cf9a31e97460b3 schemas/v1.0.0/commons/summarize/receipts/summarize.receipt.schema.json be565b5a72dc03a1517a9c2ea0a0842c86def2e58e8471f81e3cac6262bffb68 schemas/v1.0.0/commons/summarize/requests/summarize.request.schema.json 4760c15bc2985b35be8a333859e0b2e97617735be0d0222722b162de47caf940 schemas/v1.1.0/commons/analyze/analyze.receipt.schema.json -7f3c2254410e5a552905810a5a4e564af97b82bd7122d92af7d5ca9c43438caa schemas/v1.1.0/commons/analyze/analyze.request.schema.json +e8c4c23353c0df05a3b4b361b7780ef536b5609126880a91943f866184c3b58e schemas/v1.1.0/commons/analyze/analyze.request.schema.json 6aeb33050633f712dfcaabc8e57ba058275e44653407bb766f0417cb5bfd8c2b schemas/v1.1.0/commons/classify/classify.receipt.schema.json 476253e821ff4e7dfa441e5604c6efc29d12729bcb50e8a02db86fbd121240ab schemas/v1.1.0/commons/classify/classify.request.schema.json 13a2f4d9083e1e5ed6bd6b98e05736e7791bfd62b109b4090ab4abff75572ad5 schemas/v1.1.0/commons/clean/clean.receipt.schema.json diff --git a/examples/v1.1.0/commons/analyze/ts/invalid/analyze.receipt.invalid.1.ts b/examples/v1.1.0/commons/analyze/ts/invalid/analyze.receipt.invalid.1.ts index 42b5591..2bc0c20 100644 --- a/examples/v1.1.0/commons/analyze/ts/invalid/analyze.receipt.invalid.1.ts +++ b/examples/v1.1.0/commons/analyze/ts/invalid/analyze.receipt.invalid.1.ts @@ -1,11 +1,12 @@ -// INVALID analyze.receipt #1 — bad timestamp, malformed hash, short signature +// INVALID analyze.receipt #1 — malformed request_hash pattern export const analyzeReceiptInvalid1: any = { "verb": "analyze", "version": "1.1.0", "status": "ok", - "timestamp": "not-a-date", - "request_hash": "sha256:xyz", - "signature": "short", - "error": "ok receipts should not rely on error only" + "timestamp": "2026-03-18T12:05:00Z", + "agent": "analyzeagent.eth", + "request_hash": "sha256:1234", + "summary": "Extracted the dominant control failures and rollout blockers.", + "signature": "MEUCIGdY9f8wq2dL4rN6sT7uV1xY3zA5bC7dE9fG1hJ2kL3mAiEAzQ7wX9yB2cD4eF6gH8iJ0kL2mN4pQ6rS8tU0vW2xY4" }; diff --git a/examples/v1.1.0/commons/analyze/ts/invalid/analyze.receipt.invalid.2.ts b/examples/v1.1.0/commons/analyze/ts/invalid/analyze.receipt.invalid.2.ts index 086d060..8635c49 100644 --- a/examples/v1.1.0/commons/analyze/ts/invalid/analyze.receipt.invalid.2.ts +++ b/examples/v1.1.0/commons/analyze/ts/invalid/analyze.receipt.invalid.2.ts @@ -1,10 +1,11 @@ -// INVALID analyze.receipt #2 — error status without required error field +// INVALID analyze.receipt #2 — error status requires an error message export const analyzeReceiptInvalid2: any = { "verb": "analyze", "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T12:05:00Z", + "agent": "analyzeagent.eth", "request_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444", "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" }; diff --git a/examples/v1.1.0/commons/analyze/ts/invalid/analyze.request.invalid.1.ts b/examples/v1.1.0/commons/analyze/ts/invalid/analyze.request.invalid.1.ts index 57250a5..580d0e6 100644 --- a/examples/v1.1.0/commons/analyze/ts/invalid/analyze.request.invalid.1.ts +++ b/examples/v1.1.0/commons/analyze/ts/invalid/analyze.request.invalid.1.ts @@ -1,10 +1,8 @@ -// INVALID analyze.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID analyze.request #1 — unsupported mode enum value export const analyzeRequestInvalid1: any = { - "verb": "summarize", + "verb": "analyze", "version": "1.1.0", - "input": { - "text": "This should be a string." - }, + "input": "Review the incident notes and group the findings by control domain.", "mode": "bullet-points" }; diff --git a/examples/v1.1.0/commons/analyze/ts/invalid/analyze.request.invalid.2.ts b/examples/v1.1.0/commons/analyze/ts/invalid/analyze.request.invalid.2.ts index d47f111..78e1150 100644 --- a/examples/v1.1.0/commons/analyze/ts/invalid/analyze.request.invalid.2.ts +++ b/examples/v1.1.0/commons/analyze/ts/invalid/analyze.request.invalid.2.ts @@ -1,7 +1,7 @@ -// INVALID analyze.request #2 — missing required input and wrong version type +// INVALID analyze.request #2 — missing required input export const analyzeRequestInvalid2: any = { "verb": "analyze", - "version": 110, + "version": "1.1.0", "mode": "extract" }; diff --git a/examples/v1.1.0/commons/analyze/ts/valid/analyze.request.valid.1.ts b/examples/v1.1.0/commons/analyze/ts/valid/analyze.request.valid.1.ts index 3f571c6..8f7fb49 100644 --- a/examples/v1.1.0/commons/analyze/ts/valid/analyze.request.valid.1.ts +++ b/examples/v1.1.0/commons/analyze/ts/valid/analyze.request.valid.1.ts @@ -1,6 +1,6 @@ // VALID analyze.request #1 — aligned with schemas/v1.1.0/commons/analyze/analyze.request.schema.json -export type AnalyzeMode = "classify" | "extract" | "score" | "synthesize"; +export type AnalyzeMode = "categorize" | "extract" | "score" | "synthesize"; export interface AnalyzeRequest { verb: "analyze"; diff --git a/examples/v1.1.0/commons/classify/json/invalid/902-missing-signature.receipt.invalid.json b/examples/v1.1.0/commons/classify/json/invalid/902-missing-signature.receipt.invalid.json new file mode 100644 index 0000000..e2a5ea0 --- /dev/null +++ b/examples/v1.1.0/commons/classify/json/invalid/902-missing-signature.receipt.invalid.json @@ -0,0 +1,9 @@ +{ + "verb": "classify", + "version": "1.1.0", + "status": "ok", + "timestamp": "2026-03-18T12:14:09Z", + "agent": "classifyagent.eth", + "request_hash": "sha256:76c06ca1a9ca0d0aa1c7e25f548ffaf2168e95d8f289d9622b391ac5f3d5f8ec", + "summary": "routing_issue" +} diff --git a/examples/v1.1.0/commons/classify/ts/invalid/classify.receipt.invalid.1.ts b/examples/v1.1.0/commons/classify/ts/invalid/classify.receipt.invalid.1.ts index 4af2910..4a96d0d 100644 --- a/examples/v1.1.0/commons/classify/ts/invalid/classify.receipt.invalid.1.ts +++ b/examples/v1.1.0/commons/classify/ts/invalid/classify.receipt.invalid.1.ts @@ -1,11 +1,14 @@ -// INVALID classify.receipt #1 — bad timestamp, malformed hash, short signature +// INVALID classify.receipt #1 — ok status requires a string summary export const classifyReceiptInvalid1: any = { "verb": "classify", "version": "1.1.0", "status": "ok", - "timestamp": "not-a-date", - "request_hash": "sha256:xyz", - "signature": "short", - "error": "ok receipts should not rely on error only" + "timestamp": "2026-03-18T12:10:00Z", + "agent": "classifyagent.eth", + "request_hash": "sha256:3d5224e3ebc7f6ab9e9a6a2114a5f7d01c6847c8df0e3fd53c0e5d117f6ab9dd", + "summary": [ + "billing_issue" + ], + "signature": "MEYCIQDf3h7kL9mN2pQ4rS6tU8vW0xY2zA4bC6dE8fG0hJ1kLwIhAO5pQ7rS9tU1vW3xY5zB7cD9eF1gH3iJ5kL7mN9pQ1" }; diff --git a/examples/v1.1.0/commons/classify/ts/invalid/classify.request.invalid.1.ts b/examples/v1.1.0/commons/classify/ts/invalid/classify.request.invalid.1.ts index daa4238..d291c9c 100644 --- a/examples/v1.1.0/commons/classify/ts/invalid/classify.request.invalid.1.ts +++ b/examples/v1.1.0/commons/classify/ts/invalid/classify.request.invalid.1.ts @@ -1,10 +1,8 @@ -// INVALID classify.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID classify.request #1 — unsupported mode enum value export const classifyRequestInvalid1: any = { - "verb": "summarize", + "verb": "classify", "version": "1.1.0", - "input": { - "text": "This should be a string." - }, + "input": "Route this ticket as billing, bug, or account access.", "mode": "ordinal" }; diff --git a/examples/v1.1.0/commons/clean/ts/invalid/clean.receipt.invalid.1.ts b/examples/v1.1.0/commons/clean/ts/invalid/clean.receipt.invalid.1.ts index 3e7944c..23f4831 100644 --- a/examples/v1.1.0/commons/clean/ts/invalid/clean.receipt.invalid.1.ts +++ b/examples/v1.1.0/commons/clean/ts/invalid/clean.receipt.invalid.1.ts @@ -1,11 +1,12 @@ -// INVALID clean.receipt #1 — bad timestamp, malformed hash, short signature +// INVALID clean.receipt #1 — timestamp must satisfy date-time format export const cleanReceiptInvalid1: any = { "verb": "clean", "version": "1.1.0", "status": "ok", - "timestamp": "not-a-date", - "request_hash": "sha256:xyz", - "signature": "short", - "error": "ok receipts should not rely on error only" + "timestamp": "2026/03/18 12:20:00 UTC", + "agent": "cleanagent.eth", + "request_hash": "sha256:37f8c2f8ef1d3819a3d8f4a662637df84256d4d2d95f0f00fd770af409f4233f", + "summary": "Removed script tags, normalized whitespace, and preserved visible text.", + "signature": "MEUCIB2dD4fF6hH8jJ0lL2nP4rT6vX8zA1cC3eE5gH7iJ9kLAiEAqS6uV8wY0zB2dD4fF6hH8jJ0lL2nP4rT6vX8zA1cC3" }; diff --git a/examples/v1.1.0/commons/clean/ts/invalid/clean.receipt.invalid.2.ts b/examples/v1.1.0/commons/clean/ts/invalid/clean.receipt.invalid.2.ts index 2530fa8..d4bb549 100644 --- a/examples/v1.1.0/commons/clean/ts/invalid/clean.receipt.invalid.2.ts +++ b/examples/v1.1.0/commons/clean/ts/invalid/clean.receipt.invalid.2.ts @@ -1,10 +1,11 @@ -// INVALID clean.receipt #2 — error status without required error field +// INVALID clean.receipt #2 — ok status requires a summary export const cleanReceiptInvalid2: any = { "verb": "clean", "version": "1.1.0", - "status": "error", + "status": "ok", "timestamp": "2026-03-18T12:05:00Z", + "agent": "cleanagent.eth", "request_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444", "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" }; diff --git a/examples/v1.1.0/commons/clean/ts/invalid/clean.request.invalid.1.ts b/examples/v1.1.0/commons/clean/ts/invalid/clean.request.invalid.1.ts index 9ca6e4e..7bc770a 100644 --- a/examples/v1.1.0/commons/clean/ts/invalid/clean.request.invalid.1.ts +++ b/examples/v1.1.0/commons/clean/ts/invalid/clean.request.invalid.1.ts @@ -1,10 +1,8 @@ -// INVALID clean.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID clean.request #1 — unsupported mode enum value export const cleanRequestInvalid1: any = { - "verb": "summarize", + "verb": "clean", "version": "1.1.0", - "input": { - "text": "This should be a string." - }, + "input": "

Hello  world

", "mode": "compress" }; diff --git a/examples/v1.1.0/commons/clean/ts/invalid/clean.request.invalid.2.ts b/examples/v1.1.0/commons/clean/ts/invalid/clean.request.invalid.2.ts index 6655a3b..bd5beb1 100644 --- a/examples/v1.1.0/commons/clean/ts/invalid/clean.request.invalid.2.ts +++ b/examples/v1.1.0/commons/clean/ts/invalid/clean.request.invalid.2.ts @@ -1,7 +1,8 @@ -// INVALID clean.request #2 — missing required input and wrong version type +// INVALID clean.request #2 — version must stay on the canonical 1.1.0 literal export const cleanRequestInvalid2: any = { "verb": "clean", "version": 110, + "input": "Normalize spacing and strip unsafe markup.", "mode": "normalize" }; diff --git a/examples/v1.1.0/commons/convert/ts/invalid/convert.receipt.invalid.1.ts b/examples/v1.1.0/commons/convert/ts/invalid/convert.receipt.invalid.1.ts index 322d2a5..f52726a 100644 --- a/examples/v1.1.0/commons/convert/ts/invalid/convert.receipt.invalid.1.ts +++ b/examples/v1.1.0/commons/convert/ts/invalid/convert.receipt.invalid.1.ts @@ -1,11 +1,12 @@ -// INVALID convert.receipt #1 — bad timestamp, malformed hash, short signature +// INVALID convert.receipt #1 — signature is shorter than the enforced minimum export const convertReceiptInvalid1: any = { "verb": "convert", "version": "1.1.0", "status": "ok", - "timestamp": "not-a-date", - "request_hash": "sha256:xyz", - "signature": "short", - "error": "ok receipts should not rely on error only" + "timestamp": "2026-03-18T12:30:00Z", + "agent": "convertagent.eth", + "request_hash": "sha256:fbab825a8f87dfdc5ff7e8770baad69c3ab381654677a1f2df45f1ad0dfbd2af", + "summary": "Converted the HTML fragment into markdown headings and body copy.", + "signature": "shortsig" }; diff --git a/examples/v1.1.0/commons/convert/ts/invalid/convert.receipt.invalid.2.ts b/examples/v1.1.0/commons/convert/ts/invalid/convert.receipt.invalid.2.ts index 0f84dfd..3c7829d 100644 --- a/examples/v1.1.0/commons/convert/ts/invalid/convert.receipt.invalid.2.ts +++ b/examples/v1.1.0/commons/convert/ts/invalid/convert.receipt.invalid.2.ts @@ -1,10 +1,11 @@ -// INVALID convert.receipt #2 — error status without required error field +// INVALID convert.receipt #2 — error status requires an error message export const convertReceiptInvalid2: any = { "verb": "convert", "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T12:05:00Z", + "agent": "convertagent.eth", "request_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444", "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" }; diff --git a/examples/v1.1.0/commons/convert/ts/invalid/convert.request.invalid.1.ts b/examples/v1.1.0/commons/convert/ts/invalid/convert.request.invalid.1.ts index b45fa82..ed2f3e4 100644 --- a/examples/v1.1.0/commons/convert/ts/invalid/convert.request.invalid.1.ts +++ b/examples/v1.1.0/commons/convert/ts/invalid/convert.request.invalid.1.ts @@ -1,10 +1,8 @@ -// INVALID convert.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID convert.request #1 — unsupported mode enum value export const convertRequestInvalid1: any = { - "verb": "summarize", + "verb": "convert", "version": "1.1.0", - "input": { - "text": "This should be a string." - }, + "input": "

Release

Protocol upgraded successfully.

", "mode": "pdf" }; diff --git a/examples/v1.1.0/commons/convert/ts/invalid/convert.request.invalid.2.ts b/examples/v1.1.0/commons/convert/ts/invalid/convert.request.invalid.2.ts index 22cb974..40c4194 100644 --- a/examples/v1.1.0/commons/convert/ts/invalid/convert.request.invalid.2.ts +++ b/examples/v1.1.0/commons/convert/ts/invalid/convert.request.invalid.2.ts @@ -1,7 +1,7 @@ -// INVALID convert.request #2 — missing required input and wrong version type +// INVALID convert.request #2 — missing required input export const convertRequestInvalid2: any = { "verb": "convert", - "version": 110, + "version": "1.1.0", "mode": "markdown" }; diff --git a/examples/v1.1.0/commons/describe/ts/invalid/describe.receipt.invalid.1.ts b/examples/v1.1.0/commons/describe/ts/invalid/describe.receipt.invalid.1.ts index 6c4eec1..4979109 100644 --- a/examples/v1.1.0/commons/describe/ts/invalid/describe.receipt.invalid.1.ts +++ b/examples/v1.1.0/commons/describe/ts/invalid/describe.receipt.invalid.1.ts @@ -1,11 +1,12 @@ -// INVALID describe.receipt #1 — bad timestamp, malformed hash, short signature +// INVALID describe.receipt #1 — status must be ok or error export const describeReceiptInvalid1: any = { "verb": "describe", "version": "1.1.0", - "status": "ok", - "timestamp": "not-a-date", - "request_hash": "sha256:xyz", - "signature": "short", - "error": "ok receipts should not rely on error only" + "status": "pending", + "timestamp": "2026-03-18T12:40:00Z", + "agent": "describeagent.eth", + "request_hash": "sha256:7cd365e5f6dce2d9cf2c324ec129e6b802f231b48c99f2dc42c9f2d4e4b0f1ae", + "summary": "A compact UI card showing receipt outcome, signer identity, and verification hashes.", + "signature": "MEQCID2eF4gH6iJ8kL0mN2pQ4rS6tU8vW0xY2zA4bC6dE8fGAiAxY3zA5bC7dE9fG1hJ3kL5mN7pQ9rS1tU3vW5xY7zA9" }; diff --git a/examples/v1.1.0/commons/describe/ts/invalid/describe.receipt.invalid.2.ts b/examples/v1.1.0/commons/describe/ts/invalid/describe.receipt.invalid.2.ts index 6905eaa..bac18c6 100644 --- a/examples/v1.1.0/commons/describe/ts/invalid/describe.receipt.invalid.2.ts +++ b/examples/v1.1.0/commons/describe/ts/invalid/describe.receipt.invalid.2.ts @@ -1,10 +1,15 @@ -// INVALID describe.receipt #2 — error status without required error field +// INVALID describe.receipt #2 — additionalProperties are not allowed export const describeReceiptInvalid2: any = { "verb": "describe", "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T12:05:00Z", + "agent": "describeagent.eth", "request_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" + "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", + "error": "The referenced image asset was unavailable at description time.", + "notes": [ + "debug" + ] }; diff --git a/examples/v1.1.0/commons/describe/ts/invalid/describe.request.invalid.1.ts b/examples/v1.1.0/commons/describe/ts/invalid/describe.request.invalid.1.ts index 98fb19a..4e0058c 100644 --- a/examples/v1.1.0/commons/describe/ts/invalid/describe.request.invalid.1.ts +++ b/examples/v1.1.0/commons/describe/ts/invalid/describe.request.invalid.1.ts @@ -1,10 +1,8 @@ -// INVALID describe.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID describe.request #1 — unsupported mode enum value export const describeRequestInvalid1: any = { - "verb": "summarize", + "verb": "describe", "version": "1.1.0", - "input": { - "text": "This should be a string." - }, + "input": "A compact dashboard card showing signer status and request hashes.", "mode": "poetic" }; diff --git a/examples/v1.1.0/commons/describe/ts/invalid/describe.request.invalid.2.ts b/examples/v1.1.0/commons/describe/ts/invalid/describe.request.invalid.2.ts index 97a90f7..8249561 100644 --- a/examples/v1.1.0/commons/describe/ts/invalid/describe.request.invalid.2.ts +++ b/examples/v1.1.0/commons/describe/ts/invalid/describe.request.invalid.2.ts @@ -1,7 +1,8 @@ -// INVALID describe.request #2 — missing required input and wrong version type +// INVALID describe.request #2 — version must be a string literal export const describeRequestInvalid2: any = { "verb": "describe", "version": 110, + "input": "Describe the layout in plain UI terms.", "mode": "plain" }; diff --git a/examples/v1.1.0/commons/explain/ts/invalid/explain.receipt.invalid.1.ts b/examples/v1.1.0/commons/explain/ts/invalid/explain.receipt.invalid.1.ts index 29f80df..f21b1f3 100644 --- a/examples/v1.1.0/commons/explain/ts/invalid/explain.receipt.invalid.1.ts +++ b/examples/v1.1.0/commons/explain/ts/invalid/explain.receipt.invalid.1.ts @@ -1,11 +1,12 @@ -// INVALID explain.receipt #1 — bad timestamp, malformed hash, short signature +// INVALID explain.receipt #1 — ok status requires summary to be a string export const explainReceiptInvalid1: any = { "verb": "explain", "version": "1.1.0", "status": "ok", - "timestamp": "not-a-date", - "request_hash": "sha256:xyz", - "signature": "short", - "error": "ok receipts should not rely on error only" + "timestamp": "2026-03-18T12:50:00Z", + "agent": "explainagent.eth", + "request_hash": "sha256:ee53297ba8a485df4588504338133861776dba7c27f86d9f3f3e4968a397dfc0", + "summary": false, + "signature": "MEUCIG8iJ0kL2mN4pQ6rS8tU0vW2xY4zB6dD8fF0hJ2lN4pAiEAqR7tU9vW1xY3zA5bC7dE9fG1hJ3kL5mN7pQ9rS1tU3" }; diff --git a/examples/v1.1.0/commons/explain/ts/invalid/explain.receipt.invalid.2.ts b/examples/v1.1.0/commons/explain/ts/invalid/explain.receipt.invalid.2.ts index 14e6bb8..5810824 100644 --- a/examples/v1.1.0/commons/explain/ts/invalid/explain.receipt.invalid.2.ts +++ b/examples/v1.1.0/commons/explain/ts/invalid/explain.receipt.invalid.2.ts @@ -1,10 +1,12 @@ -// INVALID explain.receipt #2 — error status without required error field +// INVALID explain.receipt #2 — malformed request_hash pattern export const explainReceiptInvalid2: any = { "verb": "explain", "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T12:05:00Z", - "request_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" + "agent": "explainagent.eth", + "request_hash": "sha256:XYZ", + "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", + "error": "The subject text referenced an unsupported external proof format." }; diff --git a/examples/v1.1.0/commons/explain/ts/invalid/explain.request.invalid.1.ts b/examples/v1.1.0/commons/explain/ts/invalid/explain.request.invalid.1.ts index 554eb9d..b019555 100644 --- a/examples/v1.1.0/commons/explain/ts/invalid/explain.request.invalid.1.ts +++ b/examples/v1.1.0/commons/explain/ts/invalid/explain.request.invalid.1.ts @@ -1,10 +1,8 @@ -// INVALID explain.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID explain.request #1 — unsupported mode enum value export const explainRequestInvalid1: any = { - "verb": "summarize", + "verb": "explain", "version": "1.1.0", - "input": { - "text": "This should be a string." - }, + "input": "Explain why replay protection matters in this signing flow.", "mode": "legalese" }; diff --git a/examples/v1.1.0/commons/explain/ts/invalid/explain.request.invalid.2.ts b/examples/v1.1.0/commons/explain/ts/invalid/explain.request.invalid.2.ts index 1d46c64..46aa33b 100644 --- a/examples/v1.1.0/commons/explain/ts/invalid/explain.request.invalid.2.ts +++ b/examples/v1.1.0/commons/explain/ts/invalid/explain.request.invalid.2.ts @@ -1,7 +1,7 @@ -// INVALID explain.request #2 — missing required input and wrong version type +// INVALID explain.request #2 — missing required input export const explainRequestInvalid2: any = { "verb": "explain", - "version": 110, + "version": "1.1.0", "mode": "step-by-step" }; diff --git a/examples/v1.1.0/commons/fetch/ts/invalid/fetch.receipt.invalid.1.ts b/examples/v1.1.0/commons/fetch/ts/invalid/fetch.receipt.invalid.1.ts index 1854756..d4ed3cc 100644 --- a/examples/v1.1.0/commons/fetch/ts/invalid/fetch.receipt.invalid.1.ts +++ b/examples/v1.1.0/commons/fetch/ts/invalid/fetch.receipt.invalid.1.ts @@ -1,11 +1,13 @@ -// INVALID fetch.receipt #1 — bad timestamp, malformed hash, short signature +// INVALID fetch.receipt #1 — malformed result_hash pattern export const fetchReceiptInvalid1: any = { "verb": "fetch", "version": "1.1.0", "status": "ok", - "timestamp": "not-a-date", - "request_hash": "sha256:xyz", - "signature": "short", - "error": "ok receipts should not rely on error only" + "timestamp": "2026-03-18T13:00:00Z", + "agent": "fetchagent.eth", + "request_hash": "sha256:549ae105b20f8ba134fe5f4f3f5f849cfb154ea0ff742f32c611f2fab24f9f66", + "result_hash": "sha256:1234", + "summary": "Fetched a JSON health document with signer and availability metadata.", + "signature": "MEUCID9jK1lM3nO5pQ7rS9tU1vW3xY5zB7cD9eF1gH3iJ5kLAiEAoQ2rS4tU6vW8xY0zB2dD4fF6hH8jJ0lL2nP4rT6vX8" }; diff --git a/examples/v1.1.0/commons/fetch/ts/invalid/fetch.receipt.invalid.2.ts b/examples/v1.1.0/commons/fetch/ts/invalid/fetch.receipt.invalid.2.ts index df857b4..3c16b36 100644 --- a/examples/v1.1.0/commons/fetch/ts/invalid/fetch.receipt.invalid.2.ts +++ b/examples/v1.1.0/commons/fetch/ts/invalid/fetch.receipt.invalid.2.ts @@ -1,10 +1,11 @@ -// INVALID fetch.receipt #2 — error status without required error field +// INVALID fetch.receipt #2 — error status requires an error message export const fetchReceiptInvalid2: any = { "verb": "fetch", "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T12:05:00Z", + "agent": "fetchagent.eth", "request_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444", "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" }; diff --git a/examples/v1.1.0/commons/fetch/ts/invalid/fetch.request.invalid.1.ts b/examples/v1.1.0/commons/fetch/ts/invalid/fetch.request.invalid.1.ts index a8633aa..73ad432 100644 --- a/examples/v1.1.0/commons/fetch/ts/invalid/fetch.request.invalid.1.ts +++ b/examples/v1.1.0/commons/fetch/ts/invalid/fetch.request.invalid.1.ts @@ -1,10 +1,8 @@ -// INVALID fetch.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID fetch.request #1 — unsupported mode enum value export const fetchRequestInvalid1: any = { - "verb": "summarize", + "verb": "fetch", "version": "1.1.0", - "input": { - "text": "This should be a string." - }, + "input": "https://status.commandlayer.org/health.json", "mode": "markdown" }; diff --git a/examples/v1.1.0/commons/fetch/ts/invalid/fetch.request.invalid.2.ts b/examples/v1.1.0/commons/fetch/ts/invalid/fetch.request.invalid.2.ts index 0bfc2f9..f33305f 100644 --- a/examples/v1.1.0/commons/fetch/ts/invalid/fetch.request.invalid.2.ts +++ b/examples/v1.1.0/commons/fetch/ts/invalid/fetch.request.invalid.2.ts @@ -1,7 +1,8 @@ -// INVALID fetch.request #2 — missing required input and wrong version type +// INVALID fetch.request #2 — version must be a string literal export const fetchRequestInvalid2: any = { "verb": "fetch", "version": 110, + "input": "https://status.commandlayer.org/health.json", "mode": "json" }; diff --git a/examples/v1.1.0/commons/format/ts/invalid/format.receipt.invalid.1.ts b/examples/v1.1.0/commons/format/ts/invalid/format.receipt.invalid.1.ts index 19846f5..122cb25 100644 --- a/examples/v1.1.0/commons/format/ts/invalid/format.receipt.invalid.1.ts +++ b/examples/v1.1.0/commons/format/ts/invalid/format.receipt.invalid.1.ts @@ -1,11 +1,13 @@ -// INVALID format.receipt #1 — bad timestamp, malformed hash, short signature +// INVALID format.receipt #1 — additionalProperties are not allowed export const formatReceiptInvalid1: any = { "verb": "format", "version": "1.1.0", "status": "ok", - "timestamp": "not-a-date", - "request_hash": "sha256:xyz", - "signature": "short", - "error": "ok receipts should not rely on error only" + "timestamp": "2026-03-18T13:10:00Z", + "agent": "formatagent.eth", + "request_hash": "sha256:9d1a96f18f53ac6105cf88c607bd0f8bfc33b11c0bb66f6f35a47ce0f80f358b", + "summary": "Reformatted the checklist into stable markdown bullets.", + "signature": "MEYCIQD5gH7iJ9kL1mN3pQ5rS7tU9vW1xY3zA5bC7dE9fG1hJAIhAN4jK6lM8nO0pQ2rS4tU6vW8xY0zB2dD4fF6hH8jJ0", + "applied_style": "markdown" }; diff --git a/examples/v1.1.0/commons/format/ts/invalid/format.receipt.invalid.2.ts b/examples/v1.1.0/commons/format/ts/invalid/format.receipt.invalid.2.ts index d98e674..2200a59 100644 --- a/examples/v1.1.0/commons/format/ts/invalid/format.receipt.invalid.2.ts +++ b/examples/v1.1.0/commons/format/ts/invalid/format.receipt.invalid.2.ts @@ -1,10 +1,11 @@ -// INVALID format.receipt #2 — error status without required error field +// INVALID format.receipt #2 — ok status requires a summary export const formatReceiptInvalid2: any = { "verb": "format", "version": "1.1.0", - "status": "error", + "status": "ok", "timestamp": "2026-03-18T12:05:00Z", + "agent": "formatagent.eth", "request_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444", "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" }; diff --git a/examples/v1.1.0/commons/format/ts/invalid/format.request.invalid.1.ts b/examples/v1.1.0/commons/format/ts/invalid/format.request.invalid.1.ts index 12f01b0..3dc1e23 100644 --- a/examples/v1.1.0/commons/format/ts/invalid/format.request.invalid.1.ts +++ b/examples/v1.1.0/commons/format/ts/invalid/format.request.invalid.1.ts @@ -1,10 +1,8 @@ -// INVALID format.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID format.request #1 — unsupported mode enum value export const formatRequestInvalid1: any = { - "verb": "summarize", + "verb": "format", "version": "1.1.0", - "input": { - "text": "This should be a string." - }, + "input": "- launch checklist\n- signer verified\n- receipts archived", "mode": "yaml" }; diff --git a/examples/v1.1.0/commons/format/ts/invalid/format.request.invalid.2.ts b/examples/v1.1.0/commons/format/ts/invalid/format.request.invalid.2.ts index ffb60ed..86659c8 100644 --- a/examples/v1.1.0/commons/format/ts/invalid/format.request.invalid.2.ts +++ b/examples/v1.1.0/commons/format/ts/invalid/format.request.invalid.2.ts @@ -1,7 +1,7 @@ -// INVALID format.request #2 — missing required input and wrong version type +// INVALID format.request #2 — missing required input export const formatRequestInvalid2: any = { "verb": "format", - "version": 110, + "version": "1.1.0", "mode": "markdown" }; diff --git a/examples/v1.1.0/commons/parse/ts/invalid/parse.receipt.invalid.1.ts b/examples/v1.1.0/commons/parse/ts/invalid/parse.receipt.invalid.1.ts index f905de4..2350e1e 100644 --- a/examples/v1.1.0/commons/parse/ts/invalid/parse.receipt.invalid.1.ts +++ b/examples/v1.1.0/commons/parse/ts/invalid/parse.receipt.invalid.1.ts @@ -1,11 +1,12 @@ -// INVALID parse.receipt #1 — bad timestamp, malformed hash, short signature +// INVALID parse.receipt #1 — timestamp must satisfy date-time format export const parseReceiptInvalid1: any = { "verb": "parse", "version": "1.1.0", "status": "ok", - "timestamp": "not-a-date", - "request_hash": "sha256:xyz", - "signature": "short", - "error": "ok receipts should not rely on error only" + "timestamp": "yesterday", + "agent": "parseagent.eth", + "request_hash": "sha256:e44a9e5776657e5b5f1b1a36b351cf1035d56acda66a1f55f3f5f22af2478d2f", + "summary": "Extracted network, status, and height from the JSON payload.", + "signature": "MEUCIB8jJ0lL2nP4rT6vX8zA1cC3eE5gH7iJ9kL1mN3pQ5rAiEAqT4vW6xY8zA0bC2dE4fG6hJ8kL0mN2pQ4rS6tU8vW0" }; diff --git a/examples/v1.1.0/commons/parse/ts/invalid/parse.receipt.invalid.2.ts b/examples/v1.1.0/commons/parse/ts/invalid/parse.receipt.invalid.2.ts index fbe3d66..3a06e86 100644 --- a/examples/v1.1.0/commons/parse/ts/invalid/parse.receipt.invalid.2.ts +++ b/examples/v1.1.0/commons/parse/ts/invalid/parse.receipt.invalid.2.ts @@ -1,10 +1,11 @@ -// INVALID parse.receipt #2 — error status without required error field +// INVALID parse.receipt #2 — error status requires an error message export const parseReceiptInvalid2: any = { "verb": "parse", "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T12:05:00Z", + "agent": "parseagent.eth", "request_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444", "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" }; diff --git a/examples/v1.1.0/commons/parse/ts/invalid/parse.request.invalid.1.ts b/examples/v1.1.0/commons/parse/ts/invalid/parse.request.invalid.1.ts index 4f628fc..c35fff5 100644 --- a/examples/v1.1.0/commons/parse/ts/invalid/parse.request.invalid.1.ts +++ b/examples/v1.1.0/commons/parse/ts/invalid/parse.request.invalid.1.ts @@ -1,10 +1,8 @@ -// INVALID parse.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID parse.request #1 — unsupported mode enum value export const parseRequestInvalid1: any = { - "verb": "summarize", + "verb": "parse", "version": "1.1.0", - "input": { - "text": "This should be a string." - }, + "input": "{\"network\":\"mainnet\",\"height\":20881234}", "mode": "xml" }; diff --git a/examples/v1.1.0/commons/parse/ts/invalid/parse.request.invalid.2.ts b/examples/v1.1.0/commons/parse/ts/invalid/parse.request.invalid.2.ts index 2a1d21f..796fd91 100644 --- a/examples/v1.1.0/commons/parse/ts/invalid/parse.request.invalid.2.ts +++ b/examples/v1.1.0/commons/parse/ts/invalid/parse.request.invalid.2.ts @@ -1,7 +1,8 @@ -// INVALID parse.request #2 — missing required input and wrong version type +// INVALID parse.request #2 — version must be a string literal export const parseRequestInvalid2: any = { "verb": "parse", "version": 110, + "input": "{\"network\":\"mainnet\",\"height\":20881234}", "mode": "json" }; diff --git a/examples/v1.1.0/commons/summarize/ts/invalid/summarize.receipt.invalid.1.ts b/examples/v1.1.0/commons/summarize/ts/invalid/summarize.receipt.invalid.1.ts index f24995a..1bbc892 100644 --- a/examples/v1.1.0/commons/summarize/ts/invalid/summarize.receipt.invalid.1.ts +++ b/examples/v1.1.0/commons/summarize/ts/invalid/summarize.receipt.invalid.1.ts @@ -1,11 +1,12 @@ -// INVALID summarize.receipt #1 — bad timestamp, malformed hash, short signature +// INVALID summarize.receipt #1 — malformed request_hash pattern export const summarizeReceiptInvalid1: any = { "verb": "summarize", "version": "1.1.0", "status": "ok", - "timestamp": "not-a-date", - "request_hash": "sha256:xyz", - "signature": "short", - "error": "ok receipts should not rely on error only" + "timestamp": "2026-03-18T13:30:00Z", + "agent": "summarizeagent.eth", + "request_hash": "sha256:1111", + "summary": "Commons v1.1.0 keeps requests compact and receipts straightforward to verify.", + "signature": "MEUCID4fG6hJ8kL0mN2pQ4rS6tU8vW0xY2zA4bC6dE8fG0hAiEAzB1dD3fF5hH7jJ9lL1nP3rT5vX7zA9cC1eE3gH5iJ7" }; diff --git a/examples/v1.1.0/commons/summarize/ts/invalid/summarize.receipt.invalid.2.ts b/examples/v1.1.0/commons/summarize/ts/invalid/summarize.receipt.invalid.2.ts index fc5b2d1..694f029 100644 --- a/examples/v1.1.0/commons/summarize/ts/invalid/summarize.receipt.invalid.2.ts +++ b/examples/v1.1.0/commons/summarize/ts/invalid/summarize.receipt.invalid.2.ts @@ -1,10 +1,14 @@ -// INVALID summarize.receipt #2 — error status without required error field +// INVALID summarize.receipt #2 — ok status requires summary to be a string export const summarizeReceiptInvalid2: any = { "verb": "summarize", "version": "1.1.0", - "status": "error", + "status": "ok", "timestamp": "2026-03-18T12:05:00Z", + "agent": "summarizeagent.eth", "request_hash": "sha256:4444444444444444444444444444444444444444444444444444444444444444", + "summary": { + "text": "bad" + }, "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" }; diff --git a/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.1.ts b/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.1.ts index b80efbc..ac0cec5 100644 --- a/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.1.ts +++ b/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.1.ts @@ -1,10 +1,8 @@ -// INVALID summarize.request #1 — wrong verb + wrong input type + unsupported mode +// INVALID summarize.request #1 — unsupported mode enum value export const summarizeRequestInvalid1: any = { - "verb": "analyze", + "verb": "summarize", "version": "1.1.0", - "input": { - "text": "This should be a string." - }, + "input": "Summarize the launch readiness memo in one paragraph.", "mode": "tweet" }; diff --git a/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.2.ts b/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.2.ts index 4dd784b..ef9ce96 100644 --- a/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.2.ts +++ b/examples/v1.1.0/commons/summarize/ts/invalid/summarize.request.invalid.2.ts @@ -1,7 +1,7 @@ -// INVALID summarize.request #2 — missing required input and wrong version type +// INVALID summarize.request #2 — missing required input export const summarizeRequestInvalid2: any = { "verb": "summarize", - "version": 110, + "version": "1.1.0", "mode": "brief" }; diff --git a/schemas/v1.1.0/commons/analyze/analyze.request.schema.json b/schemas/v1.1.0/commons/analyze/analyze.request.schema.json index 9939efb..c3a6a8a 100644 --- a/schemas/v1.1.0/commons/analyze/analyze.request.schema.json +++ b/schemas/v1.1.0/commons/analyze/analyze.request.schema.json @@ -19,10 +19,10 @@ "minLength": 1 }, "mode": { - "description": "Optional analysis-native mode selector. Use `summarize` as its own verb when the primary action is summary generation.", + "description": "Optional analysis-native mode selector. Use `classify` when the primary action is assigning labels or categories, and use `summarize` when the primary action is summary generation.", "type": "string", "enum": [ - "classify", + "categorize", "extract", "score", "synthesize" diff --git a/scripts/generate-checksums.sh b/scripts/generate-checksums.sh index 7f42905..4985ebf 100644 --- a/scripts/generate-checksums.sh +++ b/scripts/generate-checksums.sh @@ -1,11 +1,12 @@ #!/usr/bin/env bash set -euo pipefail -ROOT="${1:-schemas/v1.0.0}" +ROOT="${1:-schemas}" OUT="${2:-checksums.txt}" if [ ! -d "$ROOT" ]; then echo "ERROR: missing schema root: $ROOT" >&2 + echo "Usage: bash scripts/generate-checksums.sh [schema-root] [output-file]" >&2 exit 1 fi