summarize-allow.hex was pinned to the superseded jcp/1 receipt profile — a 588-byte envelope its own README and receipt.json called 586 — while the reference teammate seals jcp/2, which binds a payload_hash (667 bytes). The teammate is deterministic (three runs byte-identical) and the new envelope decodes to every field receipt.json records. pack.rs now requires the teammate to seal the published bytes exactly, and the published bytes themselves to verify under the channel steward and decode to receipt.json. Falsified: the old receipt back in the pack fails the byte check; a changed cost_uj in receipt.json fails the decode checks. Co-Authored-By: Claude Opus 5.5 <[email protected]>
1.4 KiB
1.4 KiB
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 grantedsummarizetag: 667 bytes, byte-identical on every run of the reference teammate. Its payload is the current JCP receipt profile,jcp/2, which binds apayload_hash.receipt.json— what that envelope MUST decode + verify to under the channel steward keydid: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
- Authorise each tagged action against the capability set outside the model (§4); refuse an unheld skill or an over-budget tag at routing (§5).
- Seal every dispatched decision as an independently-verifiable JCR-1 receipt (§5), debiting the joule budget on allow.
- Meter energy per completed unit and never overstate provenance (§6; §7 honesty).