# Map sub-spec — The receipt Normative refinement of [SPEC §6](../SPEC.md). Reference: `map-receipt`. Every resolve/decode of a tile emits a signed energy receipt. Receipts seal as **JCR-1** envelopes — the family's shared signed-receipt format (canonical det-CBOR + COSE_Sign1/EdDSA, `alg = -8`) — so a Map receipt verifies with the same tooling as a Joule Code, Sandbox, or JouleClaw receipt. The JCR-1 wire profile is `"map/1"`. ## 1. Shape ``` Receipt = { cell: CellKey, // rendered as its content id on the wire content_id: ContentId, // the tile that closed the request tier: Tier, // F0..F4 — the closing tier energy: { measured_uj: Option, estimated_uj: u64, provenance }, sequence: u64, nonce: [u8; 8], } ``` ## 2. The provenance coupling (REQUIRED) | Provenance | `measured_uj` | Meaning | |--------------|---------------|---------| | `HwShunt` | **required** | Read from a hardware energy interface (RAPL/SMC/shunt). | | `ModelBased` | optional | Computed from a calibrated per-operation model. | | `Estimator` | **forbidden** | A coarse constant; honestly flagged as not measured. | `Receipt::seal` validates this coupling *before* signing, so a dishonest receipt (`HwShunt` with no measured figure; `Estimator` carrying one) cannot be sealed (conformance **C-neg**). The spec never claims an accuracy the platform cannot deliver. ## 3. Reference estimator (non-normative) Microjoules per resolved tile, ordered by tier — `map_receipt::UJ_BY_TIER`: | Tier | µJ (order of magnitude) | |------|--------------------------| | F0 Cache | 1 (picojoules) | | F1 Base | 1 000 (microjoules) | | F2 Field | 200 000 (sub-millijoules) | | F3 Feature | 5 000 000 (millijoules) | | F4 Photoreal | 2 000 000 000 (joules) | A session's total cost is the sum of its tile receipts. The standard is that the figure is **reported and honestly tagged** — not the constant. Conformance suite **C5** pins receipt sealing, verification, and the signed core in [`../conformance/v1/receipt_vectors.json`](../conformance/v1/receipt_vectors.json).