From b7b87518461343afdb5ca82900b6b2c704a272e5 Mon Sep 17 00:00:00 2001 From: Greg Soucy Date: Thu, 19 Mar 2026 23:46:09 -0400 Subject: [PATCH] Harden v1.1.0 trust and docs coherence --- GOVERNANCE.md | 10 +- ONBOARDING.md | 9 +- README.md | 98 +++++++++---------- SPEC.md | 15 +-- .../json/valid/901-error.receipt.valid.json | 1 - .../ts/valid/analyze.receipt.valid.1.ts | 12 +-- .../ts/valid/analyze.receipt.valid.2.ts | 11 +-- .../json/valid/901-error.receipt.valid.json | 1 - .../ts/valid/classify.receipt.valid.1.ts | 12 +-- .../json/valid/901-error.receipt.valid.json | 1 - .../clean/ts/valid/clean.receipt.valid.1.ts | 14 +-- .../clean/ts/valid/clean.receipt.valid.2.ts | 11 +-- .../json/valid/901-error.receipt.valid.json | 1 - .../ts/valid/convert.receipt.valid.1.ts | 14 +-- .../ts/valid/convert.receipt.valid.2.ts | 11 +-- .../json/valid/901-error.receipt.valid.json | 1 - .../ts/valid/describe.receipt.valid.1.ts | 14 +-- .../ts/valid/describe.receipt.valid.2.ts | 11 +-- .../json/valid/901-error.receipt.valid.json | 1 - .../ts/valid/explain.receipt.valid.1.ts | 14 +-- .../ts/valid/explain.receipt.valid.2.ts | 11 +-- .../json/valid/901-error.receipt.valid.json | 1 - .../fetch/ts/valid/fetch.receipt.valid.1.ts | 12 +-- .../fetch/ts/valid/fetch.receipt.valid.2.ts | 11 +-- .../json/valid/901-error.receipt.valid.json | 1 - .../format/ts/valid/format.receipt.valid.1.ts | 14 +-- .../format/ts/valid/format.receipt.valid.2.ts | 11 +-- .../json/valid/901-error.receipt.valid.json | 1 - .../parse/ts/valid/parse.receipt.valid.1.ts | 12 +-- .../parse/ts/valid/parse.receipt.valid.2.ts | 11 +-- .../json/valid/901-error.receipt.valid.json | 1 - .../ts/summarize.receipt.examples.ts | 16 +-- .../ts/valid/summarize.receipt.valid.1.ts | 12 +-- .../ts/valid/summarize.receipt.valid.2.ts | 11 +-- manifest.json | 8 +- package.json | 2 +- 36 files changed, 191 insertions(+), 206 deletions(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index f11cc26..5bf3215 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -1,7 +1,7 @@ # Governance — Protocol Commons **Scope:** Protocol-Commons (primary), Agent-Cards (identity bindings) -**Status:** v1.0.0 — Historical Pinned Release; v1.1.0 — Current Canonical In-Repo Line +**Status:** v1.0.0 — Historical Pinned Release; v1.1.0 — Current Canonical Working Line > This governance is **NORMATIVE, ENFORCEABLE, AND PERMANENT**. > Control is custodial today and **designed to decentralize** as adoption grows. @@ -99,7 +99,7 @@ Attempts to mutate semantics in place MUST be treated as **UNTRUSTED**. The current lock states are interpreted strictly: - **v1.0.0 historical pinned release** means the legacy release line with published CID, immutable checksums, and locked provenance -- **v1.1.0 current canonical in-repo line** means the current repository contract and primary documentation target; CID publication remains pending in repository provenance metadata +- **v1.1.0 current canonical working line** means the current repository contract and primary documentation target; CID publication remains pending in repository provenance metadata --- @@ -154,7 +154,7 @@ Silent or undocumented changes are **STRICTLY FORBIDDEN.** Every semantic release MUST publish new CIDs + checksums. -Until CID publication is complete, contributors MUST describe that version accurately as the current canonical in-repo line and MUST NOT misstate it as the historical pinned release. +Until CID publication is complete, contributors MUST describe that version accurately as the current canonical working line and MUST NOT misstate it as the historical pinned release. --- @@ -184,6 +184,6 @@ ONLY if: False claims REQUIRE public enforcement action. -_Last updated: v1.0.0 retained as the historical pinned release; v1.1.0 documented as the current canonical in-repo line_ -Signed: **`commandlayer.eth`** +_Last updated: v1.0.0 retained as the historical pinned release; v1.1.0 documented as the current canonical working line_ +Steward declaration (plain-text repository statement, not a cryptographic signature): **`commandlayer.eth`** *Founding Steward — CommandLayer Semantic Standards* diff --git a/ONBOARDING.md b/ONBOARDING.md index 6743258..43ab6af 100644 --- a/ONBOARDING.md +++ b/ONBOARDING.md @@ -79,12 +79,14 @@ npm install npm run validate ``` -Use the subcommands only when you need a narrower loop: +Use a subcommand only when you need a narrower loop after the aggregate pass: ``` npm run validate:schemas -npm run validate:examples ``` + +`npm run validate` already includes `npm run validate:examples`. Run `validate:examples` separately only when you intentionally want an examples-only loop. + 5. Update `RESOLUTION.md`, provenance 6. Submit PR with version class (MAJOR/MINOR/PATCH) @@ -96,7 +98,7 @@ If you are preparing a contribution, follow `CONTRIBUTING.md`. - Schema + example alignment - No edits to existing version folders - Fully traceable governance + checksums -- Deterministic $id + HTTP resolution +- Deterministic canonical `$id` values, with live HTTP resolution added when publication is completed ## 5A. Fixture Rules @@ -107,6 +109,7 @@ When you touch `examples/`, keep the validation surface credible: - filenames should explain the scenario (`missing-input`, `invalid-version`, `extra-property`, etc.) - request examples must stay verb-aligned; do not copy an invalid fixture from one verb directory into another - valid receipts should use realistic `sha256:` digests and CID-shaped values +- unless the repo ships the exact corresponding payload artifacts, treat example digests/signatures/CIDs as format-realistic illustrative evidence rather than independently verifiable production proofs Default assumption: **new version** for any semantic change. diff --git a/README.md b/README.md index c6872a3..72f25b2 100644 --- a/README.md +++ b/README.md @@ -10,56 +10,23 @@ --- -## Why Now - -Autonomous agents are finally leaving the lab — but without shared meaning, they fragment into isolated API silos. - -CommandLayer separates the stack into clear responsibilities: - -- **Protocol-Commons** defines the shared semantic layer -- **Identity and discovery layers** can resolve who an agent is and where it can be reached -- **Execution and payment layers** can transport, meter, or settle work around those semantics - -Protocol-Commons is the foundation for portable machine intent: a stable set of verbs plus strict JSON Schemas for requests and receipts. - ---- - > **Integrity Notice — Protocol-Commons v1.1.0** > -> `schemas/v1.1.0/commons` is the current canonical in-repo Commons line: -> `schemas/v1.1.0/commons` — CID publication status: `PENDING` +> `schemas/v1.1.0/commons` is the current canonical **working line in this repository**. +> Its publication metadata still says `schemas_cid: PENDING`, so this line is **not yet the externally pinned canonical release**. > -> `v1.0.0` is retained as the historical pinned release line: +> `v1.0.0` remains the last **externally pinned canonical release**: > `schemas/v1.0.0/` — CID: `bafybeigvf6nkzws7dblos74dqqjkguwkrwn4a2c27ieygoxmgofyzdkz6m` > -> Verify integrity locally: +> Verify in-repo integrity locally: > ```bash > npm run checksums:verify > ``` > -> Any mismatch indicates modified artifacts. -> New versions MUST use a new version directory and, once published, a new CID. - ---- - -Without a shared verb layer, ecosystems degrade into: - -- Ad-hoc verbs and incompatible dialects -- Ambiguous receipts with inconsistent evidence -- No cross-runtime interoperability -- Closed vendor silos with fragile glue logic - -**Protocol-Commons** fixes this with a canonical action language: - -- Verbs + JSON Schemas + strict validation -- Stable request envelopes -- Signed receipts with hash-based verification evidence - -If agents cannot agree on what actions mean, interoperability breaks. - ---- +> Any mismatch indicates modified artifacts. New versions MUST use a new version directory and, once published, a new CID. ## Table of Contents +- [Why Now](#why-now) - [Real verbs. Real receipts.](#real-verbs-real-receipts) - [Quickstart](#quickstart) - [Commons v1.1.0](#commons-v110) @@ -75,12 +42,44 @@ If agents cannot agree on what actions mean, interoperability breaks. - [Manifest](#manifest) - [Immutability & Checksums](#immutability--checksums) - [Validation](#validation) +- [Fixture discipline](#fixture-discipline) - [License](#license) - [Next Layers](#next-layers) - [References](#references) --- +## Why Now + +Autonomous agents are finally leaving the lab — but without shared meaning, they fragment into isolated API silos. + +CommandLayer separates the stack into clear responsibilities: + +- **Protocol-Commons** defines the shared semantic layer +- **Identity and discovery layers** can resolve who an agent is and where it can be reached +- **Execution and payment layers** can transport, meter, or settle work around those semantics + +Protocol-Commons is the foundation for portable machine intent: a stable set of verbs plus strict JSON Schemas for requests and receipts. + +--- + +Without a shared verb layer, ecosystems degrade into: + +- Ad-hoc verbs and incompatible dialects +- Ambiguous receipts with inconsistent evidence +- No cross-runtime interoperability +- Closed vendor silos with fragile glue logic + +**Protocol-Commons** fixes this with a canonical action language: + +- Verbs + JSON Schemas + strict validation +- Stable request envelopes +- Signed receipts with hash-based verification evidence + +If agents cannot agree on what actions mean, interoperability breaks. + +--- + ## Real verbs. Real receipts. ```jsonc @@ -98,25 +97,22 @@ If agents cannot agree on what actions mean, interoperability breaks. "version": "1.1.0", "status": "ok", "timestamp": "2026-03-18T12:00:00Z", - "agent": "summarizeagent.eth", "request_hash": "sha256:4b87d90208e62430a5d8f577938fd26d02d646f092d137cee66216c0daac8243", "result_hash": "sha256:8b5d2d4dfb4a8bb7d4d1ed436e78c5f4bcf6ca9714ec93a8db8e5ec6ed8b1b8d", "result_cid": "bafybeif6h8j0l2n4p6r8t0v2x4z6b8d0f2h4j6l8n0p2r4t6v8x0z2bd", "summary": "Commons v1.1.0 makes requests smaller and receipts easier to verify while preserving stable verb semantics.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "MEUCID4fG6hJ8kL0mN2pQ4rS6tU8vW0xY2zA4bC6dE8fG0hAiEAzB1dD3fF5hH7jJ9lL1nP3rT5vX7zA9cC1eE3gH5iJ7" } ``` -Every v1.1.0 Commons receipt uses the same evidence-oriented spine: +Every v1.1.0 Commons receipt shares the same required core evidence fields: - `status` - `timestamp` - `request_hash` -- `summary` *(required on success)* - `signature` -- `error` *(required on error)* -`result_hash` and `result_cid` are optional evidence fields. `agent` is optional and may be included when the actor/provider identity needs to be surfaced. +`summary` is required on success receipts. `error` is required on error receipts. `result_hash`, `result_cid`, and `agent` are optional evidence fields that may appear when the implementation can surface them honestly. --- @@ -137,7 +133,7 @@ npm run validate `npm run validate` is the primary command: it compiles every schema and then checks that all shipped examples pass or fail exactly as intended. -**Validate a specific example against the published schema using AJV** +**Validate a specific example against the shipped schema using AJV** ```bash node --input-type=module <<'EOF_NODE' @@ -186,7 +182,7 @@ console.log(validate.errors ?? []); Commons v1.1.0 is the current canonical schema family in this repository. -It is the primary documentation and validation target for Commons. The repository still records CID publication as pending, while `v1.0.0` is retained as the historical pinned release line. +It is the primary documentation and validation target for Commons. The repository still records CID publication as pending, so `v1.1.0` should be treated as the active working line rather than the last externally pinned release. `v1.0.0` is retained as the historical pinned release line. - Each request schema is standalone - Each receipt schema is standalone @@ -217,7 +213,6 @@ The receipt contract is proof-oriented rather than transport-oriented: "version": "1.1.0", "status": "ok | error", "timestamp": "", - "agent": "", "request_hash": "sha256:<64 lowercase hex chars>", "result_hash": "sha256:<64 lowercase hex chars>", "result_cid": "", @@ -353,11 +348,11 @@ Commons gives upper layers a stable meaning layer to build around. ## Status -**v1.1.0 — current canonical schema family** +**v1.1.0 — current canonical working line** - `v1.1.0` is the current flat Commons layout in this repo - `v1.0.0` remains the historical pinned release line -- Do not describe `v1.1.0` provenance as fully canonical until pinning is complete +- Do not describe `v1.1.0` as externally pinned or historically locked until CID publication is complete --- @@ -401,6 +396,8 @@ Commons gives upper layers a stable meaning layer to build around. - per-verb request and receipt schema paths - CID publication status (`PENDING` in `manifest.json` until published) +Treat `schemas_cid: PENDING` as an explicit signal that the v1.1.0 line is still awaiting external publication/provenance, even though it is the repo's current schema target. + --- ## Immutability & Checksums @@ -443,6 +440,7 @@ For `examples/v1.1.0/commons/`, contributors should treat fixtures as protocol e - filenames should describe the exact failure being tested - request fixtures must stay aligned with the verb directory they live in; deliberate wrong-verb cases must be explicitly named - valid receipts should use realistic digest and CID-shaped values instead of toy placeholders +- unless the repo ships the exact corresponding payload artifacts, treat example digests/signatures/CIDs as format-realistic illustrative evidence rather than independently verifiable production proofs ## License diff --git a/SPEC.md b/SPEC.md index e3b1832..8bcce8d 100644 --- a/SPEC.md +++ b/SPEC.md @@ -33,7 +33,7 @@ Repository metadata still records v1.1.0 CID publication as pending. Implementer 1. **Schema semantics** — what the v1.1.0 files require 2. **Release provenance status** — whether a version has completed CID publication and canonical pinning -This specification documents the v1.1.0 contract as the current canonical line while preserving v1.0.0 as the historical pinned release until v1.1.0 pinning is complete. +This specification documents the v1.1.0 contract as the current canonical working line while preserving v1.0.0 as the historical pinned release until v1.1.0 pinning is complete. --- @@ -147,7 +147,6 @@ A conforming success receipt shape is: "version": "1.1.0", "status": "ok", "timestamp": "", - "agent": "", "request_hash": "sha256:<64 lowercase hex chars>", "result_hash": "sha256:<64 lowercase hex chars>", "result_cid": "", @@ -156,6 +155,8 @@ A conforming success receipt shape is: } ``` +`agent` MAY be added to either success or error receipts when the signer identity is being surfaced at the application layer. + A conforming error receipt shape is: ```json @@ -206,7 +207,9 @@ schemas/v1.0.0/commons//receipts/.receipt.schema.json ## 7. Schema `$id` Rules -Every v1.1.0 schema MUST use a resolvable HTTPS `$id` under this pattern. +Every v1.1.0 schema MUST use the canonical HTTPS `$id` namespace under this pattern. + +Those `$id` values are stable schema identifiers inside the repository and validation tooling. They SHOULD resolve over live HTTPS once publication/hosting is completed, but live HTTPS resolution is not yet guaranteed by current v1.1.0 repository provenance metadata. ### Request @@ -228,7 +231,7 @@ Legacy v1.0.0 `$id` layouts remain valid only for the legacy directory tree. Implementations claiming v1.1.0 schema compatibility MUST: -1. Validate requests and receipts against the exact published schema files +1. Validate requests and receipts against the exact schema files shipped for the version being claimed 2. Use JSON Schema draft 2020-12 support 3. Compile schemas in strict Ajv mode or equivalent 4. Reject undeclared properties @@ -283,7 +286,7 @@ Auditors and resolvers SHOULD: 1. Fetch the versioned schemas 2. Verify integrity locally 3. Treat mismatched artifacts as untrusted -4. Treat v1.1.0 as the current canonical in-repo line, distinct from the historical pinned release, until CID publication is complete +4. Treat v1.1.0 as the current canonical working line, distinct from the historical pinned release, until CID publication is complete Integrity check command: @@ -304,7 +307,7 @@ An implementation supporting Commons v1.1.0 MUST: 5. Preserve receipt trust semantics as hashes plus signatures, without inventing unsupported guarantees 6. Avoid representing v1.1.0 as the historical pinned release until CID publication is complete -A system supporting any canonical verb MAY claim **Commons-Compatible** for that version, but provenance claims MUST accurately reflect whether the relevant version is the current canonical in-repo line or the historical pinned release. +A system supporting any canonical verb MAY claim **Commons-Compatible** for that version, but provenance claims MUST accurately reflect whether the relevant version is the current canonical working line or the historical pinned release. --- diff --git a/examples/v1.1.0/commons/analyze/json/valid/901-error.receipt.valid.json b/examples/v1.1.0/commons/analyze/json/valid/901-error.receipt.valid.json index ede9343..43716be 100644 --- a/examples/v1.1.0/commons/analyze/json/valid/901-error.receipt.valid.json +++ b/examples/v1.1.0/commons/analyze/json/valid/901-error.receipt.valid.json @@ -3,7 +3,6 @@ "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T12:08:14Z", - "agent": "analyzeagent.eth", "request_hash": "sha256:42fa6d1f884a8ef2ff4a6f43cf9d3d44ec9818d636eb54652a7ef7cb2b4f6a7c", "signature": "MEQCIFf0nN8vR2sT4uV6wX8yZ1aB3cD5eF7gH9iJ1kL2mN4pAiAqS6uV8wY0zB2dD4fF6hH8jJ0lL2nP4rT6vX8zA1cC3e", "error": "The input exceeded the analyzer context window before a stable extraction could be produced." diff --git a/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.1.ts b/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.1.ts index 5a61dbb..5e70ae4 100644 --- a/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.1.ts @@ -1,4 +1,4 @@ -// VALID analyze.receipt #1 — success receipt with signer identity and hashes +// VALID analyze.receipt #1 — success receipt with realistic digest/CID-shaped evidence export interface AnalyzeReceipt { verb: "analyze"; @@ -20,9 +20,9 @@ export const analyzeReceiptValid1: AnalyzeReceipt = { "status": "ok", "timestamp": "2026-03-18T12:00:00Z", "agent": "analyzeagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeianalyzereceiptokexample0001", - "summary": "Core risks center on signer key rotation gaps, unresolved indexer scaling assumptions, and an unstated rollback plan.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "request_hash": "sha256:8d8b0c9f7cc2c94b5f5d2e8f9bb7d38a74646d8f1f6f0de44d4a1f8be0c5b9d1", + "result_hash": "sha256:ab6d7cf38df79241b5f67fbe2718d1d58d7b0f3e131d0f1d8d4f7b7b6c4a2e19", + "result_cid": "bafybeigdyrzt5sfp7udm7hu76g2n6z4r6x2zjz6xj5l5w2z4g5i6k7l4mu", + "summary": "Core risks center on manual signer rotation, unproven indexer headroom, and the lack of a documented rollback path.", + "signature": "MEUCIGdY9f8wq2dL4rN6sT7uV1xY3zA5bC7dE9fG1hJ2kL3mAiEAzQ7wX9yB2cD4eF6gH8iJ0kL2mN4pQ6rS8tU0vW2xY4" }; diff --git a/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.2.ts b/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.2.ts index 29b6425..87ca78c 100644 --- a/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.2.ts @@ -1,4 +1,4 @@ -// VALID analyze.receipt #2 — error receipt variant required by the schema +// VALID analyze.receipt #2 — error receipt variant showing that `agent` is optional import type { AnalyzeReceipt } from "./analyze.receipt.valid.1"; @@ -6,9 +6,8 @@ export const analyzeReceiptValid2: AnalyzeReceipt = { "verb": "analyze", "version": "1.1.0", "status": "error", - "timestamp": "2026-03-18T12:05:00Z", - "agent": "analyzeagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", - "error": "analyze execution failed because the input could not be processed in the requested mode." + "timestamp": "2026-03-18T12:08:14Z", + "request_hash": "sha256:42fa6d1f884a8ef2ff4a6f43cf9d3d44ec9818d636eb54652a7ef7cb2b4f6a7c", + "signature": "MEQCIFf0nN8vR2sT4uV6wX8yZ1aB3cD5eF7gH9iJ1kL2mN4pAiAqS6uV8wY0zB2dD4fF6hH8jJ0lL2nP4rT6vX8zA1cC3e", + "error": "The input exceeded the analyzer context window before a stable extraction could be produced." }; diff --git a/examples/v1.1.0/commons/classify/json/valid/901-error.receipt.valid.json b/examples/v1.1.0/commons/classify/json/valid/901-error.receipt.valid.json index a886533..3ffa691 100644 --- a/examples/v1.1.0/commons/classify/json/valid/901-error.receipt.valid.json +++ b/examples/v1.1.0/commons/classify/json/valid/901-error.receipt.valid.json @@ -3,7 +3,6 @@ "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T12:10:21Z", - "agent": "classifyagent.eth", "request_hash": "sha256:94c6c8e7224c96a1ad9438c5ce9f8a775ad9de5ec28d19e5f02b6f58f2ce87db", "signature": "MEQCIC4dF6gH8iJ0kL2mN4pQ6rS8tU0vW2xY4zB6dD8fF0nAiB3cE5gH7iJ9kL1mN3pQ5rS7tU9vW1xY3zA5bC7dE9fG1", "error": "The label taxonomy was unavailable, so no deterministic class assignment could be made." diff --git a/examples/v1.1.0/commons/classify/ts/valid/classify.receipt.valid.1.ts b/examples/v1.1.0/commons/classify/ts/valid/classify.receipt.valid.1.ts index a5194ee..b328f50 100644 --- a/examples/v1.1.0/commons/classify/ts/valid/classify.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/classify/ts/valid/classify.receipt.valid.1.ts @@ -1,4 +1,4 @@ -// VALID classify.receipt #1 — success receipt with signer identity and hashes +// VALID classify.receipt #1 — success receipt with realistic digest/CID-shaped evidence export interface ClassifyReceipt { verb: "classify"; @@ -18,11 +18,11 @@ export const classifyReceiptValid1: ClassifyReceipt = { "verb": "classify", "version": "1.1.0", "status": "ok", - "timestamp": "2026-03-18T12:00:00Z", + "timestamp": "2026-03-18T12:10:00Z", "agent": "classifyagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiclassifyreceiptokexample0001", + "request_hash": "sha256:3d5224e3ebc7f6ab9e9a6a2114a5f7d01c6847c8df0e3fd53c0e5d117f6ab9dd", + "result_hash": "sha256:8cb8de3bdca7cb09517e3a5a6aa3d34f429fba381a325f1ca2f94fdb7d59e831", + "result_cid": "bafybeibn6t7v5x3zk4m2w1q9p8r7s6u5t4v3w2x1y9z8a7b6c5d4e3f2ga", "summary": "billing_issue", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "MEYCIQDf3h7kL9mN2pQ4rS6tU8vW0xY2zA4bC6dE8fG0hJ1kLwIhAO5pQ7rS9tU1vW3xY5zB7cD9eF1gH3iJ5kL7mN9pQ1" }; diff --git a/examples/v1.1.0/commons/clean/json/valid/901-error.receipt.valid.json b/examples/v1.1.0/commons/clean/json/valid/901-error.receipt.valid.json index 94e53ad..a51b659 100644 --- a/examples/v1.1.0/commons/clean/json/valid/901-error.receipt.valid.json +++ b/examples/v1.1.0/commons/clean/json/valid/901-error.receipt.valid.json @@ -3,7 +3,6 @@ "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T12:20:17Z", - "agent": "cleanagent.eth", "request_hash": "sha256:517a0fa7d6d7eaa77c6f627e0a090c4b113fb9f2f6e6bd878f7b4eef87f24451", "signature": "MEYCIQCH9iJ1kL3mN5pQ7rS9tU1vW3xY5zB7cD9eF1gH3iJ5kLIhAOmN8pQ0rS2tU4vW6xY8zA0bC2dE4fG6hJ8kL0mN2", "error": "The cleaner refused to sanitize binary control characters embedded in the payload." diff --git a/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.1.ts b/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.1.ts index 276eb85..c3c8e2f 100644 --- a/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.1.ts @@ -1,4 +1,4 @@ -// VALID clean.receipt #1 — success receipt with signer identity and hashes +// VALID clean.receipt #1 — success receipt with realistic digest/CID-shaped evidence export interface CleanReceipt { verb: "clean"; @@ -18,11 +18,11 @@ export const cleanReceiptValid1: CleanReceipt = { "verb": "clean", "version": "1.1.0", "status": "ok", - "timestamp": "2026-03-18T12:00:00Z", + "timestamp": "2026-03-18T12:20:00Z", "agent": "cleanagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeicleanreceiptokexample0001", - "summary": "Normalized whitespace and casing artifacts to yield a canonical single-line string.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "request_hash": "sha256:37f8c2f8ef1d3819a3d8f4a662637df84256d4d2d95f0f00fd770af409f4233f", + "result_hash": "sha256:e6a6c7329341d6c870c7a46f7509dcf4f1df03de238f5f3c6b0aa43d0b2def7d", + "result_cid": "bafybeif3jzu2wq4m6n8p0r2t4v6x8z0b2d4f6h8j0l2n4p6r8t0v2x4z6a", + "summary": "Removed script tags, normalized non-breaking spaces, and collapsed repeated whitespace.", + "signature": "MEUCIB2dD4fF6hH8jJ0lL2nP4rT6vX8zA1cC3eE5gH7iJ9kLAiEAqS6uV8wY0zB2dD4fF6hH8jJ0lL2nP4rT6vX8zA1cC3" }; diff --git a/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.2.ts b/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.2.ts index c4400a0..b141e45 100644 --- a/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/clean/ts/valid/clean.receipt.valid.2.ts @@ -1,4 +1,4 @@ -// VALID clean.receipt #2 — error receipt variant required by the schema +// VALID clean.receipt #2 — error receipt variant showing that `agent` is optional import type { CleanReceipt } from "./clean.receipt.valid.1"; @@ -6,9 +6,8 @@ export const cleanReceiptValid2: CleanReceipt = { "verb": "clean", "version": "1.1.0", "status": "error", - "timestamp": "2026-03-18T12:05:00Z", - "agent": "cleanagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", - "error": "clean execution failed because the input could not be processed in the requested mode." + "timestamp": "2026-03-18T12:20:17Z", + "request_hash": "sha256:517a0fa7d6d7eaa77c6f627e0a090c4b113fb9f2f6e6bd878f7b4eef87f24451", + "signature": "MEYCIQCH9iJ1kL3mN5pQ7rS9tU1vW3xY5zB7cD9eF1gH3iJ5kLIhAOmN8pQ0rS2tU4vW6xY8zA0bC2dE4fG6hJ8kL0mN2", + "error": "The cleaner refused to sanitize binary control characters embedded in the payload." }; diff --git a/examples/v1.1.0/commons/convert/json/valid/901-error.receipt.valid.json b/examples/v1.1.0/commons/convert/json/valid/901-error.receipt.valid.json index 2037275..b7f270e 100644 --- a/examples/v1.1.0/commons/convert/json/valid/901-error.receipt.valid.json +++ b/examples/v1.1.0/commons/convert/json/valid/901-error.receipt.valid.json @@ -3,7 +3,6 @@ "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T12:30:19Z", - "agent": "convertagent.eth", "request_hash": "sha256:4e06710b5e74f66c4d36601f6e002ef77f420fbf193e8c6f8e50c0c3b5ab1bbf", "signature": "MEYCIQC8dF0hJ2lN4pR6tV8xZ0bC2dE4fG6hJ8kL0mN2pQ4rSIhAM5nO7pQ9rS1tU3vW5xY7zA9bC1dE3fG5hJ7kL9mN1", "error": "The converter could not infer a supported source format from the provided binary blob." diff --git a/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.1.ts b/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.1.ts index 882c30f..c7025e5 100644 --- a/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.1.ts @@ -1,4 +1,4 @@ -// VALID convert.receipt #1 — success receipt with signer identity and hashes +// VALID convert.receipt #1 — success receipt with realistic digest/CID-shaped evidence export interface ConvertReceipt { verb: "convert"; @@ -18,11 +18,11 @@ export const convertReceiptValid1: ConvertReceipt = { "verb": "convert", "version": "1.1.0", "status": "ok", - "timestamp": "2026-03-18T12:00:00Z", + "timestamp": "2026-03-18T12:30:00Z", "agent": "convertagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiconvertreceiptokexample0001", - "summary": "Converted plain release notes into markdown sections suitable for documentation.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "request_hash": "sha256:fbab825a8f87dfdc5ff7e8770baad69c3ab381654677a1f2df45f1ad0dfbd2af", + "result_hash": "sha256:0f6a8f2beefad7c74f890ea6bc59dd34a30de5c280f5ec9a57cbfbf1ff5cd4f0", + "result_cid": "bafybeih4s6u8w0y2a4c6e8g0i2k4m6o8q0s2u4w6y8a0c2e4g6i8k0m2oq", + "summary": "Converted the HTML release note fragment into markdown headings and paragraph text.", + "signature": "MEQCIF7gH9iJ1kL3mN5pQ7rS9tU1vW3xY5zB7cD9eF1gH3iJAiB6jK8lM0nP2rT4vX6zB8dF0hJ2lN4pR6tV8xZ0bC2d" }; diff --git a/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.2.ts b/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.2.ts index 9907d2f..8effff8 100644 --- a/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/convert/ts/valid/convert.receipt.valid.2.ts @@ -1,4 +1,4 @@ -// VALID convert.receipt #2 — error receipt variant required by the schema +// VALID convert.receipt #2 — error receipt variant showing that `agent` is optional import type { ConvertReceipt } from "./convert.receipt.valid.1"; @@ -6,9 +6,8 @@ export const convertReceiptValid2: ConvertReceipt = { "verb": "convert", "version": "1.1.0", "status": "error", - "timestamp": "2026-03-18T12:05:00Z", - "agent": "convertagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", - "error": "convert execution failed because the input could not be processed in the requested mode." + "timestamp": "2026-03-18T12:30:19Z", + "request_hash": "sha256:4e06710b5e74f66c4d36601f6e002ef77f420fbf193e8c6f8e50c0c3b5ab1bbf", + "signature": "MEYCIQC8dF0hJ2lN4pR6tV8xZ0bC2dE4fG6hJ8kL0mN2pQ4rSIhAM5nO7pQ9rS1tU3vW5xY7zA9bC1dE3fG5hJ7kL9mN1", + "error": "The converter could not infer a supported source format from the provided binary blob." }; diff --git a/examples/v1.1.0/commons/describe/json/valid/901-error.receipt.valid.json b/examples/v1.1.0/commons/describe/json/valid/901-error.receipt.valid.json index bcebc02..04db9f5 100644 --- a/examples/v1.1.0/commons/describe/json/valid/901-error.receipt.valid.json +++ b/examples/v1.1.0/commons/describe/json/valid/901-error.receipt.valid.json @@ -3,7 +3,6 @@ "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T12:40:16Z", - "agent": "describeagent.eth", "request_hash": "sha256:4545ee72a3da3d2cd61bd90d0b79d44f932172bf7012c5f86f3ea30ffdf34026", "signature": "MEYCIQD4fF6hH8jJ0lL2nP4rT6vX8zA1cC3eE5gH7iJ9kL1mNAIhAN6pQ8rS0tU2vW4xY6zB8dD0fF2hH4jJ6lL8nP0rT2", "error": "The input referenced an image asset that was not retrievable at description time." diff --git a/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.1.ts b/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.1.ts index e15f4b6..87c40c2 100644 --- a/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.1.ts @@ -1,4 +1,4 @@ -// VALID describe.receipt #1 — success receipt with signer identity and hashes +// VALID describe.receipt #1 — success receipt with realistic digest/CID-shaped evidence export interface DescribeReceipt { verb: "describe"; @@ -18,11 +18,11 @@ export const describeReceiptValid1: DescribeReceipt = { "verb": "describe", "version": "1.1.0", "status": "ok", - "timestamp": "2026-03-18T12:00:00Z", + "timestamp": "2026-03-18T12:40:00Z", "agent": "describeagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeidescribereceiptokexample0001", - "summary": "A compact interface card displaying whether a receipt succeeded and which agent signed it.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "request_hash": "sha256:7cd365e5f6dce2d9cf2c324ec129e6b802f231b48c99f2dc42c9f2d4e4b0f1ae", + "result_hash": "sha256:57c72a7b2c048763ced04c1ed53fbd742e98f0d4f7a530cb1fbf0b7dedf43e57", + "result_cid": "bafybeie4g6i8k0m2o4q6s8u0w2y4a6c8e0g2i4k6m8o0q2s4u6w8y0a2ce", + "summary": "A compact UI card that exposes receipt outcome, signer identity, and the hashes needed for verification.", + "signature": "MEQCID2eF4gH6iJ8kL0mN2pQ4rS6tU8vW0xY2zA4bC6dE8fGAiAxY3zA5bC7dE9fG1hJ3kL5mN7pQ9rS1tU3vW5xY7zA9" }; diff --git a/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.2.ts b/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.2.ts index 8f4dacf..2d7c244 100644 --- a/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/describe/ts/valid/describe.receipt.valid.2.ts @@ -1,4 +1,4 @@ -// VALID describe.receipt #2 — error receipt variant required by the schema +// VALID describe.receipt #2 — error receipt variant showing that `agent` is optional import type { DescribeReceipt } from "./describe.receipt.valid.1"; @@ -6,9 +6,8 @@ export const describeReceiptValid2: DescribeReceipt = { "verb": "describe", "version": "1.1.0", "status": "error", - "timestamp": "2026-03-18T12:05:00Z", - "agent": "describeagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", - "error": "describe execution failed because the input could not be processed in the requested mode." + "timestamp": "2026-03-18T12:40:16Z", + "request_hash": "sha256:4545ee72a3da3d2cd61bd90d0b79d44f932172bf7012c5f86f3ea30ffdf34026", + "signature": "MEYCIQD4fF6hH8jJ0lL2nP4rT6vX8zA1cC3eE5gH7iJ9kL1mNAIhAN6pQ8rS0tU2vW4xY6zB8dD0fF2hH4jJ6lL8nP0rT2", + "error": "The input referenced an image asset that was not retrievable at description time." }; diff --git a/examples/v1.1.0/commons/explain/json/valid/901-error.receipt.valid.json b/examples/v1.1.0/commons/explain/json/valid/901-error.receipt.valid.json index b62a0bc..97cdcc3 100644 --- a/examples/v1.1.0/commons/explain/json/valid/901-error.receipt.valid.json +++ b/examples/v1.1.0/commons/explain/json/valid/901-error.receipt.valid.json @@ -3,7 +3,6 @@ "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T12:50:23Z", - "agent": "explainagent.eth", "request_hash": "sha256:3c8db89b5a2c8ee3f3d44d030087d9f993b652ec688b36b6cb4ef2932f8e2303", "signature": "MEQCIC0lL2nP4rT6vX8zA1cC3eE5gH7iJ9kL1mN3pQ5rS7tUAiBQ6vW8xY0zB2dD4fF6hH8jJ0lL2nP4rT6vX8zA1cC3e", "error": "The subject text referenced an unsupported external proof format, so no grounded explanation was produced." diff --git a/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.1.ts b/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.1.ts index 299a1e8..d84fabf 100644 --- a/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.1.ts @@ -1,4 +1,4 @@ -// VALID explain.receipt #1 — success receipt with signer identity and hashes +// VALID explain.receipt #1 — success receipt with realistic digest/CID-shaped evidence export interface ExplainReceipt { verb: "explain"; @@ -18,11 +18,11 @@ export const explainReceiptValid1: ExplainReceipt = { "verb": "explain", "version": "1.1.0", "status": "ok", - "timestamp": "2026-03-18T12:00:00Z", + "timestamp": "2026-03-18T12:50:00Z", "agent": "explainagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiexplainreceiptokexample0001", - "summary": "Hash the original request, compare it to request_hash, then verify the detached signature under the agent identity before trusting the summary.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "request_hash": "sha256:ee53297ba8a485df4588504338133861776dba7c27f86d9f3f3e4968a397dfc0", + "result_hash": "sha256:56786ba2fd99b58d429cb24dc5f6a110d622ec279fd3c6c510d9e35e7fd6c7a4", + "result_cid": "bafybeif0h2j4l6n8p0r2t4v6x8z0b2d4f6h8j0l2n4p6r8t0v2x4z6b8da", + "summary": "Compute the request hash, compare it byte-for-byte, then verify the detached signature under the agent identity before trusting any summary.", + "signature": "MEUCIG8iJ0kL2mN4pQ6rS8tU0vW2xY4zB6dD8fF0hJ2lN4pAiEAqR7tU9vW1xY3zA5bC7dE9fG1hJ3kL5mN7pQ9rS1tU3" }; diff --git a/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.2.ts b/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.2.ts index 8639875..9556107 100644 --- a/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/explain/ts/valid/explain.receipt.valid.2.ts @@ -1,4 +1,4 @@ -// VALID explain.receipt #2 — error receipt variant required by the schema +// VALID explain.receipt #2 — error receipt variant showing that `agent` is optional import type { ExplainReceipt } from "./explain.receipt.valid.1"; @@ -6,9 +6,8 @@ export const explainReceiptValid2: ExplainReceipt = { "verb": "explain", "version": "1.1.0", "status": "error", - "timestamp": "2026-03-18T12:05:00Z", - "agent": "explainagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", - "error": "explain execution failed because the input could not be processed in the requested mode." + "timestamp": "2026-03-18T12:50:23Z", + "request_hash": "sha256:3c8db89b5a2c8ee3f3d44d030087d9f993b652ec688b36b6cb4ef2932f8e2303", + "signature": "MEQCIC0lL2nP4rT6vX8zA1cC3eE5gH7iJ9kL1mN3pQ5rS7tUAiBQ6vW8xY0zB2dD4fF6hH8jJ0lL2nP4rT6vX8zA1cC3e", + "error": "The subject text referenced an unsupported external proof format, so no grounded explanation was produced." }; diff --git a/examples/v1.1.0/commons/fetch/json/valid/901-error.receipt.valid.json b/examples/v1.1.0/commons/fetch/json/valid/901-error.receipt.valid.json index 0ef84ef..7add6a8 100644 --- a/examples/v1.1.0/commons/fetch/json/valid/901-error.receipt.valid.json +++ b/examples/v1.1.0/commons/fetch/json/valid/901-error.receipt.valid.json @@ -3,7 +3,6 @@ "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T13:00:41Z", - "agent": "fetchagent.eth", "request_hash": "sha256:4d8104b70df7b3efc585715f9a0beeaaf6559bd63fbbf2a345993ef8fcb734ec", "signature": "MEQCIC5mN7pQ9rS1tU3vW5xY7zA9bC1dE3fG5hJ7kL9mN1pQAiA4rT6vX8zA1cC3eE5gH7iJ9kL1mN3pQ5rS7tU9vW1xY3", "error": "The remote endpoint returned HTTP 503 before the requested resource could be attested." diff --git a/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.1.ts b/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.1.ts index 4df65ff..c008952 100644 --- a/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.1.ts @@ -1,4 +1,4 @@ -// VALID fetch.receipt #1 — success receipt with signer identity and hashes +// VALID fetch.receipt #1 — success receipt with realistic digest/CID-shaped evidence export interface FetchReceipt { verb: "fetch"; @@ -18,11 +18,11 @@ export const fetchReceiptValid1: FetchReceipt = { "verb": "fetch", "version": "1.1.0", "status": "ok", - "timestamp": "2026-03-18T12:00:00Z", + "timestamp": "2026-03-18T13:00:00Z", "agent": "fetchagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeifetchreceiptokexample0001", + "request_hash": "sha256:549ae105b20f8ba134fe5f4f3f5f849cfb154ea0ff742f32c611f2fab24f9f66", + "result_hash": "sha256:8cdb52e345b9a13361a5b8d3f9f95d1db0f7efd974f0aeb6d40f65a1c4d5de6d", + "result_cid": "bafybeih7k9m1o3q5s7u9w1y3a5c7e9g1i3k5m7o9q1s3u5w7y9a1c3e5gq", "summary": "Fetched a JSON status document describing service health, schema tag, and signer availability.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "MEUCID9jK1lM3nO5pQ7rS9tU1vW3xY5zB7cD9eF1gH3iJ5kLAiEAoQ2rS4tU6vW8xY0zB2dD4fF6hH8jJ0lL2nP4rT6vX8" }; diff --git a/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.2.ts b/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.2.ts index cca550c..94417c3 100644 --- a/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/fetch/ts/valid/fetch.receipt.valid.2.ts @@ -1,4 +1,4 @@ -// VALID fetch.receipt #2 — error receipt variant required by the schema +// VALID fetch.receipt #2 — error receipt variant showing that `agent` is optional import type { FetchReceipt } from "./fetch.receipt.valid.1"; @@ -6,9 +6,8 @@ export const fetchReceiptValid2: FetchReceipt = { "verb": "fetch", "version": "1.1.0", "status": "error", - "timestamp": "2026-03-18T12:05:00Z", - "agent": "fetchagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", - "error": "fetch execution failed because the input could not be processed in the requested mode." + "timestamp": "2026-03-18T13:00:41Z", + "request_hash": "sha256:4d8104b70df7b3efc585715f9a0beeaaf6559bd63fbbf2a345993ef8fcb734ec", + "signature": "MEQCIC5mN7pQ9rS1tU3vW5xY7zA9bC1dE3fG5hJ7kL9mN1pQAiA4rT6vX8zA1cC3eE5gH7iJ9kL1mN3pQ5rS7tU9vW1xY3", + "error": "The remote endpoint returned HTTP 503 before the requested resource could be attested." }; diff --git a/examples/v1.1.0/commons/format/json/valid/901-error.receipt.valid.json b/examples/v1.1.0/commons/format/json/valid/901-error.receipt.valid.json index 028383d..55421cf 100644 --- a/examples/v1.1.0/commons/format/json/valid/901-error.receipt.valid.json +++ b/examples/v1.1.0/commons/format/json/valid/901-error.receipt.valid.json @@ -3,7 +3,6 @@ "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T13:10:33Z", - "agent": "formatagent.eth", "request_hash": "sha256:226d4c0cd4c9ecf106b85bca1b80a0cbbf7b2d84ac90f31472e3a8f14db76e20", "signature": "MEQCIA7kL9mN1pQ3rS5tU7vW9xY1zA3bC5dE7fG9hJ1kL3mNAiAa0cC2eE4gH6iJ8kL0mN2pQ4rS6tU8vW0xY2zA4bC6", "error": "The formatter rejected the requested representation because the payload was not plain text." diff --git a/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.1.ts b/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.1.ts index c354bdd..d2cade9 100644 --- a/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.1.ts @@ -1,4 +1,4 @@ -// VALID format.receipt #1 — success receipt with signer identity and hashes +// VALID format.receipt #1 — success receipt with realistic digest/CID-shaped evidence export interface FormatReceipt { verb: "format"; @@ -18,11 +18,11 @@ export const formatReceiptValid1: FormatReceipt = { "verb": "format", "version": "1.1.0", "status": "ok", - "timestamp": "2026-03-18T12:00:00Z", + "timestamp": "2026-03-18T13:10:00Z", "agent": "formatagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiformatreceiptokexample0001", - "summary": "Formatted the checklist into readable markdown with stable bullet structure.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "request_hash": "sha256:9d1a96f18f53ac6105cf88c607bd0f8bfc33b11c0bb66f6f35a47ce0f80f358b", + "result_hash": "sha256:5c9d53f6fc14ae2d0e30af82ef1a5c0910f76b246b2c0125055bf50d756b55ff", + "result_cid": "bafybeia2c4e6g8i0k2m4o6q8s0u2w4y6a8c0e2g4i6k8m0o2q4s6u8w0yb", + "summary": "Reformatted the launch checklist into stable markdown bullets without changing the underlying meaning.", + "signature": "MEYCIQD5gH7iJ9kL1mN3pQ5rS7tU9vW1xY3zA5bC7dE9fG1hJAIhAN4jK6lM8nO0pQ2rS4tU6vW8xY0zB2dD4fF6hH8jJ0" }; diff --git a/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.2.ts b/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.2.ts index 087115b..198077c 100644 --- a/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/format/ts/valid/format.receipt.valid.2.ts @@ -1,4 +1,4 @@ -// VALID format.receipt #2 — error receipt variant required by the schema +// VALID format.receipt #2 — error receipt variant showing that `agent` is optional import type { FormatReceipt } from "./format.receipt.valid.1"; @@ -6,9 +6,8 @@ export const formatReceiptValid2: FormatReceipt = { "verb": "format", "version": "1.1.0", "status": "error", - "timestamp": "2026-03-18T12:05:00Z", - "agent": "formatagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", - "error": "format execution failed because the input could not be processed in the requested mode." + "timestamp": "2026-03-18T13:10:33Z", + "request_hash": "sha256:226d4c0cd4c9ecf106b85bca1b80a0cbbf7b2d84ac90f31472e3a8f14db76e20", + "signature": "MEQCIA7kL9mN1pQ3rS5tU7vW9xY1zA3bC5dE7fG9hJ1kL3mNAiAa0cC2eE4gH6iJ8kL0mN2pQ4rS6tU8vW0xY2zA4bC6", + "error": "The formatter rejected the requested representation because the payload was not plain text." }; diff --git a/examples/v1.1.0/commons/parse/json/valid/901-error.receipt.valid.json b/examples/v1.1.0/commons/parse/json/valid/901-error.receipt.valid.json index f6247b8..37ff0a2 100644 --- a/examples/v1.1.0/commons/parse/json/valid/901-error.receipt.valid.json +++ b/examples/v1.1.0/commons/parse/json/valid/901-error.receipt.valid.json @@ -3,7 +3,6 @@ "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T13:20:28Z", - "agent": "parseagent.eth", "request_hash": "sha256:f07d77c95438cefe9184437de2272ec36d7fd0b7e57e3d3f630e7ec68b3b2f89", "signature": "MEQCID1mN3pQ5rS7tU9vW1xY3zA5bC7dE9fG1hJ3kL5mN7pQAiAP0rT2vW4xY6zB8dD0fF2hH4jJ6lL8nP0rT2vW4xY6z", "error": "The parser detected mixed delimiters and could not build a stable key-value map." diff --git a/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.1.ts b/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.1.ts index f9318e0..e054287 100644 --- a/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.1.ts @@ -1,4 +1,4 @@ -// VALID parse.receipt #1 — success receipt with signer identity and hashes +// VALID parse.receipt #1 — success receipt with realistic digest/CID-shaped evidence export interface ParseReceipt { verb: "parse"; @@ -18,11 +18,11 @@ export const parseReceiptValid1: ParseReceipt = { "verb": "parse", "version": "1.1.0", "status": "ok", - "timestamp": "2026-03-18T12:00:00Z", + "timestamp": "2026-03-18T13:20:00Z", "agent": "parseagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeiparsereceiptokexample0001", + "request_hash": "sha256:e44a9e5776657e5b5f1b1a36b351cf1035d56acda66a1f55f3f5f22af2478d2f", + "result_hash": "sha256:da6d12b514db65fed3ae338f14537fadab502f951f8a6b5bff1f8d5e41d30fd7", + "result_cid": "bafybeid4f6h8j0l2n4p6r8t0v2x4z6b8d0f2h4j6l8n0p2r4t6v8x0z2bf", "summary": "Extracted top-level fields network, status, and height from the JSON payload.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "MEUCIB8jJ0lL2nP4rT6vX8zA1cC3eE5gH7iJ9kL1mN3pQ5rAiEAqT4vW6xY8zA0bC2dE4fG6hJ8kL0mN2pQ4rS6tU8vW0" }; diff --git a/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.2.ts b/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.2.ts index 13cf5ff..0fd0bf6 100644 --- a/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/parse/ts/valid/parse.receipt.valid.2.ts @@ -1,4 +1,4 @@ -// VALID parse.receipt #2 — error receipt variant required by the schema +// VALID parse.receipt #2 — error receipt variant showing that `agent` is optional import type { ParseReceipt } from "./parse.receipt.valid.1"; @@ -6,9 +6,8 @@ export const parseReceiptValid2: ParseReceipt = { "verb": "parse", "version": "1.1.0", "status": "error", - "timestamp": "2026-03-18T12:05:00Z", - "agent": "parseagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", - "error": "parse execution failed because the input could not be processed in the requested mode." + "timestamp": "2026-03-18T13:20:28Z", + "request_hash": "sha256:f07d77c95438cefe9184437de2272ec36d7fd0b7e57e3d3f630e7ec68b3b2f89", + "signature": "MEQCID1mN3pQ5rS7tU9vW1xY3zA5bC7dE9fG1hJ3kL5mN7pQAiAP0rT2vW4xY6zB8dD0fF2hH4jJ6lL8nP0rT2vW4xY6z", + "error": "The parser detected mixed delimiters and could not build a stable key-value map." }; diff --git a/examples/v1.1.0/commons/summarize/json/valid/901-error.receipt.valid.json b/examples/v1.1.0/commons/summarize/json/valid/901-error.receipt.valid.json index 5ac025d..5bea74b 100644 --- a/examples/v1.1.0/commons/summarize/json/valid/901-error.receipt.valid.json +++ b/examples/v1.1.0/commons/summarize/json/valid/901-error.receipt.valid.json @@ -3,7 +3,6 @@ "version": "1.1.0", "status": "error", "timestamp": "2026-03-18T13:30:24Z", - "agent": "summarizeagent.eth", "request_hash": "sha256:e0e58e7252820c1cbeb4a585d07b854e44f4c4a236503d17b47779c4cbaf5f90", "signature": "MEQCIA6hJ8kL0mN2pQ4rS6tU8vW0xY2zA4bC6dE8fG0hJ2lNAiBdF7hJ9kL1mN3pQ5rS7tU9vW1xY3zA5bC7dE9fG1hJ3", "error": "The input was too fragmentary to produce a faithful summary without inventing missing context." diff --git a/examples/v1.1.0/commons/summarize/ts/summarize.receipt.examples.ts b/examples/v1.1.0/commons/summarize/ts/summarize.receipt.examples.ts index be1c903..8ec7ef0 100644 --- a/examples/v1.1.0/commons/summarize/ts/summarize.receipt.examples.ts +++ b/examples/v1.1.0/commons/summarize/ts/summarize.receipt.examples.ts @@ -18,21 +18,21 @@ export const validSummarizeReceiptExample: SummarizeReceipt = { "verb": "summarize", "version": "1.1.0", "status": "ok", - "timestamp": "2026-03-18T12:00:00Z", + "timestamp": "2026-03-18T13:30:00Z", "agent": "summarizeagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeisummarizereceiptokexample0001", + "request_hash": "sha256:4b87d90208e62430a5d8f577938fd26d02d646f092d137cee66216c0daac8243", + "result_hash": "sha256:8b5d2d4dfb4a8bb7d4d1ed436e78c5f4bcf6ca9714ec93a8db8e5ec6ed8b1b8d", + "result_cid": "bafybeif6h8j0l2n4p6r8t0v2x4z6b8d0f2h4j6l8n0p2r4t6v8x0z2bd", "summary": "Commons v1.1.0 makes requests smaller and receipts easier to verify while preserving stable verb semantics.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "MEUCID4fG6hJ8kL0mN2pQ4rS6tU8vW0xY2zA4bC6dE8fG0hAiEAzB1dD3fF5hH7jJ9lL1nP3rT5vX7zA9cC1eE3gH5iJ7" }; export const invalidSummarizeReceiptExample: any = { "verb": "summarize", "version": "1.1.0", "status": "ok", - "timestamp": "not-a-date", - "request_hash": "sha256:xyz", - "signature": "short", + "timestamp": "2026-03-18T13:30:00Z", + "request_hash": "sha256:4b87d90208e62430a5d8f577938fd26d02d646f092d137cee66216c0daac8243", + "signature": "MEUCID4fG6hJ8kL0mN2pQ4rS6tU8vW0xY2zA4bC6dE8fG0hAiEAzB1dD3fF5hH7jJ9lL1nP3rT5vX7zA9cC1eE3gH5iJ7", "error": "ok receipts should not rely on error only" }; diff --git a/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.1.ts b/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.1.ts index 4530c59..8212886 100644 --- a/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.1.ts +++ b/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.1.ts @@ -1,4 +1,4 @@ -// VALID summarize.receipt #1 — success receipt with signer identity and hashes +// VALID summarize.receipt #1 — success receipt with realistic digest/CID-shaped evidence export interface SummarizeReceipt { verb: "summarize"; @@ -18,11 +18,11 @@ export const summarizeReceiptValid1: SummarizeReceipt = { "verb": "summarize", "version": "1.1.0", "status": "ok", - "timestamp": "2026-03-18T12:00:00Z", + "timestamp": "2026-03-18T13:30:00Z", "agent": "summarizeagent.eth", - "request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111", - "result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222", - "result_cid": "bafybeisummarizereceiptokexample0001", + "request_hash": "sha256:4b87d90208e62430a5d8f577938fd26d02d646f092d137cee66216c0daac8243", + "result_hash": "sha256:8b5d2d4dfb4a8bb7d4d1ed436e78c5f4bcf6ca9714ec93a8db8e5ec6ed8b1b8d", + "result_cid": "bafybeif6h8j0l2n4p6r8t0v2x4z6b8d0f2h4j6l8n0p2r4t6v8x0z2bd", "summary": "Commons v1.1.0 makes requests smaller and receipts easier to verify while preserving stable verb semantics.", - "signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "signature": "MEUCID4fG6hJ8kL0mN2pQ4rS6tU8vW0xY2zA4bC6dE8fG0hAiEAzB1dD3fF5hH7jJ9lL1nP3rT5vX7zA9cC1eE3gH5iJ7" }; diff --git a/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.2.ts b/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.2.ts index cec9228..7e75c22 100644 --- a/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.2.ts +++ b/examples/v1.1.0/commons/summarize/ts/valid/summarize.receipt.valid.2.ts @@ -1,4 +1,4 @@ -// VALID summarize.receipt #2 — error receipt variant required by the schema +// VALID summarize.receipt #2 — error receipt variant showing that `agent` is optional import type { SummarizeReceipt } from "./summarize.receipt.valid.1"; @@ -6,9 +6,8 @@ export const summarizeReceiptValid2: SummarizeReceipt = { "verb": "summarize", "version": "1.1.0", "status": "error", - "timestamp": "2026-03-18T12:05:00Z", - "agent": "summarizeagent.eth", - "request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333", - "signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", - "error": "summarize execution failed because the input could not be processed in the requested mode." + "timestamp": "2026-03-18T13:30:24Z", + "request_hash": "sha256:e0e58e7252820c1cbeb4a585d07b854e44f4c4a236503d17b47779c4cbaf5f90", + "signature": "MEQCIA6hJ8kL0mN2pQ4rS6tU8vW0xY2zA4bC6dE8fG0hJ2lNAiBdF7hJ9kL1mN3pQ5rS7tU9vW1xY3zA5bC7dE9fG1hJ3", + "error": "The input was too fragmentary to produce a faithful summary without inventing missing context." }; diff --git a/manifest.json b/manifest.json index 0d3f387..8106103 100644 --- a/manifest.json +++ b/manifest.json @@ -2,7 +2,7 @@ "name": "@commandlayer/commons", "version": "1.1.0", "package_version": "1.1.0", - "description": "Canonical Commons verb + schema package metadata for the active v1.1.0 schema family.", + "description": "Commons verb + schema package metadata for the active v1.1.0 working line; external CID publication is still pending.", "owner": "commandlayer.eth", "contact": "dev@commandlayer.org", "license": "MIT", @@ -77,7 +77,7 @@ ], "latest_commons_root": "schemas/v1.1.0/commons", "pin_target": "schemas/v1.1.0/commons", - "status": "current-canonical-line", + "status": "current-working-line", "historical_releases": [ { "version": "1.0.0", @@ -151,12 +151,12 @@ ], "active_release": { "version": "1.1.0", - "status": "current-canonical-line", + "status": "current-working-line", "schemas_root": "schemas/v1.1.0", "commons_root": "schemas/v1.1.0/commons", "examples_root": "examples/v1.1.0", "schemas_cid": "PENDING", - "pin_status": "pending" + "pin_status": "pending-publication" }, "pinned_canonical_release": { "version": "1.0.0", diff --git a/package.json b/package.json index ac43189..4969294 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@commandlayer/commons", "version": "1.1.0", - "description": "Canonical Commons verbs and strict JSON Schemas for autonomous agents — active v1.1.0 schema family, historical pinned v1.0.0 release, and cross-runtime interoperability.", + "description": "Canonical Commons verbs and strict JSON Schemas for autonomous agents \u2014 active v1.1.0 working line, historical pinned v1.0.0 release, and cross-runtime interoperability.", "private": false, "type": "module", "license": "MIT",