open-standards/jouledesk/conformance/v1/receipt.json
Transaction Science b92fad0a18 jouledesk: refresh the published receipt to jcp/2, and hold it byte for byte
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]>
2026-09-30 14:16:01 -04:00

19 lines
1.1 KiB
JSON

{
"profile": "jouledesk/1",
"description": "A sealed decision receipt (SPEC §5) for a granted 'summarize' tag against the teammate's capability set. The raw JCR-1 COSE_Sign1 envelope is in summarize-allow.hex (667 bytes, byte-deterministic under the reference teammate's fixed dev keys and now=0; payload profile jcp/2). Decoding + verifying it under the channel steward key MUST yield the fields below.",
"envelope_file": "summarize-allow.hex",
"steward": "did:jcp:jouledesk-channel",
"decoded": {
"action": "summarize",
"verdict": "allow",
"cost_uj": 100000,
"budget_remaining_uj": 900000,
"steward": "did:jcp:jouledesk-channel",
"verified": true
},
"notes": [
"`verified: true` means the COSE_Sign1 signature checked out under the channel steward's public key — the ledger entry is non-repudiable, not merely present.",
"`budget_remaining_uj` = 900000 = the skill's 1,000,000 µJ grant budget minus the 100,000 µJ this dispatch debited (SPEC §6/§7).",
"Reproduce: `cargo run -p jouledesk --example vector` — stdout is the hex, stderr the decode. The hex MUST equal summarize-allow.hex."
]
}