open-standards/jouledesk/conformance/v1
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science a8f3e4e26c jouledesk: rename Joule Tag → Joule Desk (naming call), part of the Joule Table umbrella
David's naming: the teammate/collaboration binding is 'Joule Desk' (you still @joule
it; the standard is Joule Desk) — 'tag' was borrowed from a third-party product name,
which broke the self-referential/no-comparison rule. Full rename across the standard:
dir jouletag→jouledesk, crate + jouledesk-bind binary, profile jouletag/1→jouledesk/1,
stewards did:jcp:jouletag-{channel,realtime}→jouledesk-*, and every SPEC/README/code/
example reference. Conformance vector regenerated (steward change → 586→588 bytes;
decoded fields unchanged: summarize/allow/100000/900000). @joule handle untouched.
17 tests green, clippy-clean. Joule Desk + Joule Hook are the two bindings under the
Joule Table umbrella (jt.transaction.science) — umbrella spec lands next.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-05 07:30:53 -04:00
..
README.md jouledesk: rename Joule Tag → Joule Desk (naming call), part of the Joule Table umbrella 2026-07-05 07:30:53 -04:00
receipt.json jouledesk: rename Joule Tag → Joule Desk (naming call), part of the Joule Table umbrella 2026-07-05 07:30:53 -04:00
summarize-allow.hex jouledesk: rename Joule Tag → Joule Desk (naming call), part of the Joule Table umbrella 2026-07-05 07:30:53 -04:00

Joule Desk conformance vectors — v1

Published vectors for jouledesk/1. The reference teammate is deterministic (fixed dev keys, now = 0), so these bytes are reproducible — anyone can check an implementation against them without trusting it.

Files

  • summarize-allow.hex — the raw sealed JCR-1 (COSE_Sign1) decision receipt for a granted summarize tag: 586 bytes, byte-identical on every run of the reference teammate.
  • receipt.json — what that envelope MUST decode + verify to under the channel steward key did:jcp:jouledesk-channel (SPEC §5): verdict: allow, cost_uj: 100000, budget_remaining_uj: 900000, verified: true.

Reproducing

cd ../../jouledesk-rs
cargo run -p jouledesk --example vector   # stdout = the hex; stderr = the decode

The regenerated hex MUST equal summarize-allow.hex, and the decode MUST match receipt.json.

What a conformant teammate must satisfy

  1. Authorise each tagged action against the capability set outside the model (§4); refuse an unheld skill or an over-budget tag at routing (§5).
  2. Seal every dispatched decision as an independently-verifiable JCR-1 receipt (§5), debiting the joule budget on allow.
  3. Meter energy per completed unit and never overstate provenance (§6; §7 honesty).