Promotes the wave-12..21 surfaces from "shipped in the reference
implementation" to "documented as part of the open standard." A
third party building a JouleClaw-compatible runtime now has a
normative spec to implement against.
New normative sections:
§8 Agent identity — the W3C did:key derivation over multicodec
Ed25519, with the contract that handle MUST equal
did:key_handle(public_key). Flows into Receipt.steward,
PolicyReceipt.steward, WorkspaceManifest.owner, and the
COSE_Sign1 kid header.
§9 The policy engine — deny-by-default at filesystem / network /
process granularity. Explicit Deny short-circuits before any
Allow. Per-evaluation AuditEvent (monotonic sequence). Live
install_policy with monotonic version. LD-JSON wire protocol
for the out-of-process transport (jclaw-policyd).
§10 The policy receipt — sibling of the cascade receipt with
schema "policy/1", same COSE_Sign1 + alg -8 EdDSA envelope.
Same steward identity. Conforming implementations MUST
byte-match the three reference vectors. Same JSONL "unified
log" file format as the cascade receipt; readers dispatch on
the schema tag.
§11 The agent workspace — content-addressed (BLAKE3) entries,
path-normalisation rules, lexically-sorted entries,
Ed25519-signed manifests with the owner identity binding
checked end-to-end on verify.
§12 SKILL.md interoperability — agentskills.io frontmatter
requirements, the metadata.jouleclaw vendor extension for the
deterministic procedure, mandatory authored body.
Plus §7 (versioning) is updated to name "policy/1" alongside "1"
and to spell out the prefixed-namespace rule for new jc_receipt
schemas. The old §§8-10 (does-not-say / adjacent / references)
renumber to §§13-15.
Also extends conformance/v1/README.md with a "Policy-receipt
conformance" subsection pointing at the wave-18 vector suite +
Rust/Python/Go reference verifiers.
Scanner stays clean on every changed surface.