### Asset provenance — `wai.asset.provenance`, LIVE at /provenance (2026-06-13)

- **Lever 4 — the "verifies whatever it carries" half.** For content that
  cannot be reduced to instructions (a photo, a recording), WAI does not
  reconstruct — it carries the opaque bytes content-addressed and attaches
  a signed, energy-accounted **lineage**. `AssetReceipt` (`provenance.rs`,
  `provenance` feature): a JWP group whose objects are processing
  **steps** (op + input/output content hash + work + measured joules),
  Merkle-bound, Ed25519-signed, with chain-linkage verification (each
  step's input = the previous output, final output = the asset hash) and
  `parent_receipt_hash` chaining. `from_json` so a verifying sink can
  re-parse it.
- **`wai_prov` tool**: synthesizes a real image, builds a 3-step lineage
  (origin → PNG master → published JPEG) with the **real measured CPU
  energy** of each encode (IOReport via macmon, no sudo), wraps the JPEG
  as a content-addressed `wai.image.jpeg` envelope, and emits the signed
  receipt (origin 0 + PNG 0.43 J + JPEG 0.14 J = 0.57 J measured).
- **Browser sink — `AssetProvenance` (`wai-web`)** + `/provenance` demo,
  LIVE: recomputes the asset's content hash in-tab and compares to the
  receipt (tamper-evidence — a "corrupt one byte" button flips it red),
  verifies the Ed25519 signature + Merkle chain, shows the energy-
  accounted lineage, and hands the carried JPEG to a native `<img>` (the
  browser decodes it; WAI does not). wasm pkg uniquely named `wai_prov`.
- **Spec PROMOTED to `extensions/provenance.md`** (site mirror). It is a
  receipt profile *about* a carried asset (like `jwp-receipts`), not a §5
  payload codec — the asset keeps its own capability (`wai.image.jpeg`).
  Completes the thesis: carries whatever it can reconstruct, verifies
  whatever it carries.

