open-standards/map/spec/receipt.md
Transaction Science ba1212361f Add aac, map, sandbox standards; catalog the standards family
Commit the previously-untracked standard directories and catalog them in the
root README alongside proof:

- aac/    — communication cargo class: portable boards + a ten-level
            offline-first cascade (Apache-2.0 code / CC-BY-4.0 spec).
- map/    — geospatial cargo class: range-requestable signed tilesets +
            an F0–F4 fidelity cascade (Apache-2.0 code / CC-BY-4.0 spec).
- sandbox/— isolated, metered, attested execution across the heterogeneous
            compute fabric (Apache-2.0 code / CC-BY-4.0 spec).
- jouleclaw-otel-authz, jouleclaw-trust — new jouleclaw reference crates.

Root README now lists aac, map, sandbox, and proof in the catalog, the tree,
and the contribution guide.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-07 17:04:36 -04:00

52 lines
2.1 KiB
Markdown

# 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<u64>, 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).