Skip to content

Commit a2db39d

Browse files
authored
Merge pull request #17 from commandlayer/codex/harden-trust-and-coherence-of-commandlayer
Harden v1.1.0 trust posture and docs; realistic receipts and TOC move
2 parents b6c31e7 + b7b8751 commit a2db39d

36 files changed

+191
-206
lines changed

GOVERNANCE.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Governance — Protocol Commons
22

33
**Scope:** Protocol-Commons (primary), Agent-Cards (identity bindings)
4-
**Status:** v1.0.0 — Historical Pinned Release; v1.1.0 — Current Canonical In-Repo Line
4+
**Status:** v1.0.0 — Historical Pinned Release; v1.1.0 — Current Canonical Working Line
55

66
> This governance is **NORMATIVE, ENFORCEABLE, AND PERMANENT**.
77
> 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**.
9999
The current lock states are interpreted strictly:
100100

101101
- **v1.0.0 historical pinned release** means the legacy release line with published CID, immutable checksums, and locked provenance
102-
- **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
102+
- **v1.1.0 current canonical working line** means the current repository contract and primary documentation target; CID publication remains pending in repository provenance metadata
103103

104104
---
105105

@@ -154,7 +154,7 @@ Silent or undocumented changes are **STRICTLY FORBIDDEN.**
154154

155155
Every semantic release MUST publish new CIDs + checksums.
156156

157-
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.
157+
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.
158158

159159
---
160160

@@ -184,6 +184,6 @@ ONLY if:
184184

185185
False claims REQUIRE public enforcement action.
186186

187-
_Last updated: v1.0.0 retained as the historical pinned release; v1.1.0 documented as the current canonical in-repo line_
188-
Signed: **`commandlayer.eth`**
187+
_Last updated: v1.0.0 retained as the historical pinned release; v1.1.0 documented as the current canonical working line_
188+
Steward declaration (plain-text repository statement, not a cryptographic signature): **`commandlayer.eth`**
189189
*Founding Steward — CommandLayer Semantic Standards*

ONBOARDING.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,14 @@ npm install
7979
npm run validate
8080
```
8181

82-
Use the subcommands only when you need a narrower loop:
82+
Use a subcommand only when you need a narrower loop after the aggregate pass:
8383

8484
```
8585
npm run validate:schemas
86-
npm run validate:examples
8786
```
87+
88+
`npm run validate` already includes `npm run validate:examples`. Run `validate:examples` separately only when you intentionally want an examples-only loop.
89+
8890
5. Update `RESOLUTION.md`, provenance
8991
6. Submit PR with version class (MAJOR/MINOR/PATCH)
9092

@@ -96,7 +98,7 @@ If you are preparing a contribution, follow `CONTRIBUTING.md`.
9698
- Schema + example alignment
9799
- No edits to existing version folders
98100
- Fully traceable governance + checksums
99-
- Deterministic $id + HTTP resolution
101+
- Deterministic canonical `$id` values, with live HTTP resolution added when publication is completed
100102

101103
## 5A. Fixture Rules
102104

@@ -107,6 +109,7 @@ When you touch `examples/`, keep the validation surface credible:
107109
- filenames should explain the scenario (`missing-input`, `invalid-version`, `extra-property`, etc.)
108110
- request examples must stay verb-aligned; do not copy an invalid fixture from one verb directory into another
109111
- valid receipts should use realistic `sha256:` digests and CID-shaped values
112+
- 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
110113

111114
Default assumption: **new version** for any semantic change.
112115

README.md

Lines changed: 48 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -10,56 +10,23 @@
1010

1111
---
1212

13-
## Why Now
14-
15-
Autonomous agents are finally leaving the lab — but without shared meaning, they fragment into isolated API silos.
16-
17-
CommandLayer separates the stack into clear responsibilities:
18-
19-
- **Protocol-Commons** defines the shared semantic layer
20-
- **Identity and discovery layers** can resolve who an agent is and where it can be reached
21-
- **Execution and payment layers** can transport, meter, or settle work around those semantics
22-
23-
Protocol-Commons is the foundation for portable machine intent: a stable set of verbs plus strict JSON Schemas for requests and receipts.
24-
25-
---
26-
2713
> **Integrity Notice — Protocol-Commons v1.1.0**
2814
>
29-
> `schemas/v1.1.0/commons` is the current canonical in-repo Commons line:
30-
> `schemas/v1.1.0/commons` — CID publication status: `PENDING`
15+
> `schemas/v1.1.0/commons` is the current canonical **working line in this repository**.
16+
> Its publication metadata still says `schemas_cid: PENDING`, so this line is **not yet the externally pinned canonical release**.
3117
>
32-
> `v1.0.0` is retained as the historical pinned release line:
18+
> `v1.0.0` remains the last **externally pinned canonical release**:
3319
> `schemas/v1.0.0/` — CID: `bafybeigvf6nkzws7dblos74dqqjkguwkrwn4a2c27ieygoxmgofyzdkz6m`
3420
>
35-
> Verify integrity locally:
21+
> Verify in-repo integrity locally:
3622
> ```bash
3723
> npm run checksums:verify
3824
> ```
3925
>
40-
> Any mismatch indicates modified artifacts.
41-
> New versions MUST use a new version directory and, once published, a new CID.
42-
43-
---
44-
45-
Without a shared verb layer, ecosystems degrade into:
46-
47-
- Ad-hoc verbs and incompatible dialects
48-
- Ambiguous receipts with inconsistent evidence
49-
- No cross-runtime interoperability
50-
- Closed vendor silos with fragile glue logic
51-
52-
**Protocol-Commons** fixes this with a canonical action language:
53-
54-
- Verbs + JSON Schemas + strict validation
55-
- Stable request envelopes
56-
- Signed receipts with hash-based verification evidence
57-
58-
If agents cannot agree on what actions mean, interoperability breaks.
59-
60-
---
26+
> Any mismatch indicates modified artifacts. New versions MUST use a new version directory and, once published, a new CID.
6127
6228
## Table of Contents
29+
- [Why Now](#why-now)
6330
- [Real verbs. Real receipts.](#real-verbs-real-receipts)
6431
- [Quickstart](#quickstart)
6532
- [Commons v1.1.0](#commons-v110)
@@ -75,12 +42,44 @@ If agents cannot agree on what actions mean, interoperability breaks.
7542
- [Manifest](#manifest)
7643
- [Immutability & Checksums](#immutability--checksums)
7744
- [Validation](#validation)
45+
- [Fixture discipline](#fixture-discipline)
7846
- [License](#license)
7947
- [Next Layers](#next-layers)
8048
- [References](#references)
8149
8250
---
8351
52+
## Why Now
53+
54+
Autonomous agents are finally leaving the lab — but without shared meaning, they fragment into isolated API silos.
55+
56+
CommandLayer separates the stack into clear responsibilities:
57+
58+
- **Protocol-Commons** defines the shared semantic layer
59+
- **Identity and discovery layers** can resolve who an agent is and where it can be reached
60+
- **Execution and payment layers** can transport, meter, or settle work around those semantics
61+
62+
Protocol-Commons is the foundation for portable machine intent: a stable set of verbs plus strict JSON Schemas for requests and receipts.
63+
64+
---
65+
66+
Without a shared verb layer, ecosystems degrade into:
67+
68+
- Ad-hoc verbs and incompatible dialects
69+
- Ambiguous receipts with inconsistent evidence
70+
- No cross-runtime interoperability
71+
- Closed vendor silos with fragile glue logic
72+
73+
**Protocol-Commons** fixes this with a canonical action language:
74+
75+
- Verbs + JSON Schemas + strict validation
76+
- Stable request envelopes
77+
- Signed receipts with hash-based verification evidence
78+
79+
If agents cannot agree on what actions mean, interoperability breaks.
80+
81+
---
82+
8483
## Real verbs. Real receipts.
8584
8685
```jsonc
@@ -98,25 +97,22 @@ If agents cannot agree on what actions mean, interoperability breaks.
9897
"version": "1.1.0",
9998
"status": "ok",
10099
"timestamp": "2026-03-18T12:00:00Z",
101-
"agent": "summarizeagent.eth",
102100
"request_hash": "sha256:4b87d90208e62430a5d8f577938fd26d02d646f092d137cee66216c0daac8243",
103101
"result_hash": "sha256:8b5d2d4dfb4a8bb7d4d1ed436e78c5f4bcf6ca9714ec93a8db8e5ec6ed8b1b8d",
104102
"result_cid": "bafybeif6h8j0l2n4p6r8t0v2x4z6b8d0f2h4j6l8n0p2r4t6v8x0z2bd",
105103
"summary": "Commons v1.1.0 makes requests smaller and receipts easier to verify while preserving stable verb semantics.",
106-
"signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
104+
"signature": "MEUCID4fG6hJ8kL0mN2pQ4rS6tU8vW0xY2zA4bC6dE8fG0hAiEAzB1dD3fF5hH7jJ9lL1nP3rT5vX7zA9cC1eE3gH5iJ7"
107105
}
108106
```
109107
110-
Every v1.1.0 Commons receipt uses the same evidence-oriented spine:
108+
Every v1.1.0 Commons receipt shares the same required core evidence fields:
111109
112110
- `status`
113111
- `timestamp`
114112
- `request_hash`
115-
- `summary` *(required on success)*
116113
- `signature`
117-
- `error` *(required on error)*
118114
119-
`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.
115+
`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.
120116
121117
---
122118
@@ -137,7 +133,7 @@ npm run validate
137133
138134
`npm run validate` is the primary command: it compiles every schema and then checks that all shipped examples pass or fail exactly as intended.
139135
140-
**Validate a specific example against the published schema using AJV**
136+
**Validate a specific example against the shipped schema using AJV**
141137
142138
```bash
143139
node --input-type=module <<'EOF_NODE'
@@ -186,7 +182,7 @@ console.log(validate.errors ?? []);
186182
187183
Commons v1.1.0 is the current canonical schema family in this repository.
188184
189-
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.
185+
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.
190186
191187
- Each request schema is standalone
192188
- Each receipt schema is standalone
@@ -217,7 +213,6 @@ The receipt contract is proof-oriented rather than transport-oriented:
217213
"version": "1.1.0",
218214
"status": "ok | error",
219215
"timestamp": "<RFC 3339 date-time>",
220-
"agent": "<optional stable signer identity>",
221216
"request_hash": "sha256:<64 lowercase hex chars>",
222217
"result_hash": "sha256:<64 lowercase hex chars>",
223218
"result_cid": "<optional content identifier>",
@@ -353,11 +348,11 @@ Commons gives upper layers a stable meaning layer to build around.
353348
354349
## Status
355350
356-
**v1.1.0 — current canonical schema family**
351+
**v1.1.0 — current canonical working line**
357352
358353
- `v1.1.0` is the current flat Commons layout in this repo
359354
- `v1.0.0` remains the historical pinned release line
360-
- Do not describe `v1.1.0` provenance as fully canonical until pinning is complete
355+
- Do not describe `v1.1.0` as externally pinned or historically locked until CID publication is complete
361356
362357
---
363358
@@ -401,6 +396,8 @@ Commons gives upper layers a stable meaning layer to build around.
401396
- per-verb request and receipt schema paths
402397
- CID publication status (`PENDING` in `manifest.json` until published)
403398
399+
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.
400+
404401
---
405402
406403
## Immutability & Checksums
@@ -443,6 +440,7 @@ For `examples/v1.1.0/commons/`, contributors should treat fixtures as protocol e
443440
- filenames should describe the exact failure being tested
444441
- request fixtures must stay aligned with the verb directory they live in; deliberate wrong-verb cases must be explicitly named
445442
- valid receipts should use realistic digest and CID-shaped values instead of toy placeholders
443+
- 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
446444
447445
448446
## License

SPEC.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Repository metadata still records v1.1.0 CID publication as pending. Implementer
3333
1. **Schema semantics** — what the v1.1.0 files require
3434
2. **Release provenance status** — whether a version has completed CID publication and canonical pinning
3535

36-
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.
36+
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.
3737

3838
---
3939

@@ -147,7 +147,6 @@ A conforming success receipt shape is:
147147
"version": "1.1.0",
148148
"status": "ok",
149149
"timestamp": "<RFC 3339 date-time>",
150-
"agent": "<stable signer identity>",
151150
"request_hash": "sha256:<64 lowercase hex chars>",
152151
"result_hash": "sha256:<64 lowercase hex chars>",
153152
"result_cid": "<optional content identifier>",
@@ -156,6 +155,8 @@ A conforming success receipt shape is:
156155
}
157156
```
158157

158+
`agent` MAY be added to either success or error receipts when the signer identity is being surfaced at the application layer.
159+
159160
A conforming error receipt shape is:
160161

161162
```json
@@ -206,7 +207,9 @@ schemas/v1.0.0/commons/<verb>/receipts/<verb>.receipt.schema.json
206207

207208
## 7. Schema `$id` Rules
208209

209-
Every v1.1.0 schema MUST use a resolvable HTTPS `$id` under this pattern.
210+
Every v1.1.0 schema MUST use the canonical HTTPS `$id` namespace under this pattern.
211+
212+
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.
210213

211214
### Request
212215

@@ -228,7 +231,7 @@ Legacy v1.0.0 `$id` layouts remain valid only for the legacy directory tree.
228231

229232
Implementations claiming v1.1.0 schema compatibility MUST:
230233

231-
1. Validate requests and receipts against the exact published schema files
234+
1. Validate requests and receipts against the exact schema files shipped for the version being claimed
232235
2. Use JSON Schema draft 2020-12 support
233236
3. Compile schemas in strict Ajv mode or equivalent
234237
4. Reject undeclared properties
@@ -283,7 +286,7 @@ Auditors and resolvers SHOULD:
283286
1. Fetch the versioned schemas
284287
2. Verify integrity locally
285288
3. Treat mismatched artifacts as untrusted
286-
4. Treat v1.1.0 as the current canonical in-repo line, distinct from the historical pinned release, until CID publication is complete
289+
4. Treat v1.1.0 as the current canonical working line, distinct from the historical pinned release, until CID publication is complete
287290

288291
Integrity check command:
289292

@@ -304,7 +307,7 @@ An implementation supporting Commons v1.1.0 MUST:
304307
5. Preserve receipt trust semantics as hashes plus signatures, without inventing unsupported guarantees
305308
6. Avoid representing v1.1.0 as the historical pinned release until CID publication is complete
306309

307-
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.
310+
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.
308311

309312
---
310313

examples/v1.1.0/commons/analyze/json/valid/901-error.receipt.valid.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"version": "1.1.0",
44
"status": "error",
55
"timestamp": "2026-03-18T12:08:14Z",
6-
"agent": "analyzeagent.eth",
76
"request_hash": "sha256:42fa6d1f884a8ef2ff4a6f43cf9d3d44ec9818d636eb54652a7ef7cb2b4f6a7c",
87
"signature": "MEQCIFf0nN8vR2sT4uV6wX8yZ1aB3cD5eF7gH9iJ1kL2mN4pAiAqS6uV8wY0zB2dD4fF6hH8jJ0lL2nP4rT6vX8zA1cC3e",
98
"error": "The input exceeded the analyzer context window before a stable extraction could be produced."

examples/v1.1.0/commons/analyze/ts/valid/analyze.receipt.valid.1.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// VALID analyze.receipt #1 — success receipt with signer identity and hashes
1+
// VALID analyze.receipt #1 — success receipt with realistic digest/CID-shaped evidence
22

33
export interface AnalyzeReceipt {
44
verb: "analyze";
@@ -20,9 +20,9 @@ export const analyzeReceiptValid1: AnalyzeReceipt = {
2020
"status": "ok",
2121
"timestamp": "2026-03-18T12:00:00Z",
2222
"agent": "analyzeagent.eth",
23-
"request_hash": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
24-
"result_hash": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
25-
"result_cid": "bafybeianalyzereceiptokexample0001",
26-
"summary": "Core risks center on signer key rotation gaps, unresolved indexer scaling assumptions, and an unstated rollback plan.",
27-
"signature": "sigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
23+
"request_hash": "sha256:8d8b0c9f7cc2c94b5f5d2e8f9bb7d38a74646d8f1f6f0de44d4a1f8be0c5b9d1",
24+
"result_hash": "sha256:ab6d7cf38df79241b5f67fbe2718d1d58d7b0f3e131d0f1d8d4f7b7b6c4a2e19",
25+
"result_cid": "bafybeigdyrzt5sfp7udm7hu76g2n6z4r6x2zjz6xj5l5w2z4g5i6k7l4mu",
26+
"summary": "Core risks center on manual signer rotation, unproven indexer headroom, and the lack of a documented rollback path.",
27+
"signature": "MEUCIGdY9f8wq2dL4rN6sT7uV1xY3zA5bC7dE9fG1hJ2kL3mAiEAzQ7wX9yB2cD4eF6gH8iJ0kL2mN4pQ6rS8tU0vW2xY4"
2828
};
Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
// VALID analyze.receipt #2 — error receipt variant required by the schema
1+
// VALID analyze.receipt #2 — error receipt variant showing that `agent` is optional
22

33
import type { AnalyzeReceipt } from "./analyze.receipt.valid.1";
44

55
export const analyzeReceiptValid2: AnalyzeReceipt = {
66
"verb": "analyze",
77
"version": "1.1.0",
88
"status": "error",
9-
"timestamp": "2026-03-18T12:05:00Z",
10-
"agent": "analyzeagent.eth",
11-
"request_hash": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
12-
"signature": "sigBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
13-
"error": "analyze execution failed because the input could not be processed in the requested mode."
9+
"timestamp": "2026-03-18T12:08:14Z",
10+
"request_hash": "sha256:42fa6d1f884a8ef2ff4a6f43cf9d3d44ec9818d636eb54652a7ef7cb2b4f6a7c",
11+
"signature": "MEQCIFf0nN8vR2sT4uV6wX8yZ1aB3cD5eF7gH9iJ1kL2mN4pAiAqS6uV8wY0zB2dD4fF6hH8jJ0lL2nP4rT6vX8zA1cC3e",
12+
"error": "The input exceeded the analyzer context window before a stable extraction could be produced."
1413
};

examples/v1.1.0/commons/classify/json/valid/901-error.receipt.valid.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"version": "1.1.0",
44
"status": "error",
55
"timestamp": "2026-03-18T12:10:21Z",
6-
"agent": "classifyagent.eth",
76
"request_hash": "sha256:94c6c8e7224c96a1ad9438c5ce9f8a775ad9de5ec28d19e5f02b6f58f2ce87db",
87
"signature": "MEQCIC4dF6gH8iJ0kL2mN4pQ6rS8tU0vW2xY4zB6dD8fF0nAiB3cE5gH7iJ9kL1mN3pQ5rS7tU9vW1xY3zA5bC7dE9fG1",
98
"error": "The label taxonomy was unavailable, so no deterministic class assignment could be made."

0 commit comments

Comments
 (0)