# Claims review — 0.2.38

- base: ef7b1dd
- head: 62e33e0
- surface: sha256:242f31fdcd8f29cc703230e9be7fdae412cfea48b5e23bd75ab513094cf1788a
- verdict: pass
- reviewer: maintainer, on a review by an outside model (Codex) that read the tree independently

## Findings

### 1. README.md:676 — "Ed25519-signed receipt per access"

- Claim: "tamper-evident hash-chained audit ledger · Ed25519-signed receipt per access
  with an offline verifier"
- Mechanism: `Audit.log` writes a receipt only when a receipt sink is configured
  (`src/audit.ts`); with no sink, nothing is written. `conarium-init` configures one,
  so the default layout has receipts and a hand-written config need not.
- Why it falls short: the line states the receipt as a shipped property with no
  condition attached, sixty lines below a paragraph in the same file that states the
  condition correctly. A reader who skims the feature list and never reaches the top
  gets the stronger claim.
- Disposition: reworded in `62e33e0` — "per access once a receipt sink is configured".

### 2. docs/security/THREAT-MODEL.md:41 — "Every tool call ... is supposed to write a signed receipt"

- Claim: "Every tool call — allowed or denied — is supposed to write a signed receipt."
- Mechanism: same as above. The sentence sits in the trust-boundary section, directly
  above the bypass list for that boundary.
- Why it falls short: this is the document where an unstated precondition costs the
  most. A reader opens a threat model to learn what the system does *not* guarantee,
  and the absence of a receipt sink was not among the bypasses listed.
- Disposition: reworded in `62e33e0`, and the implied bypass added to the list — a
  gateway with no sink mediates access, leaves no evidence, and starts anyway.

### 3. standards/draft-dogru-scitt-disclosure-evidence-05.md — new surface, first review

- Claim: the whole document, added since the last review and now a claim surface by
  derivation (`currentDraft()` in `test/claim_surfaces.mjs`).
- Mechanism: its Implementation Status section was written from measurement against
  the published 0.2.37 package, and the six behaviours it describes were re-measured
  from that package before submission.
- Why it falls short: nothing in the suite compares that section against the code, so
  it can go stale again between releases. The draft says so in its own text rather
  than leaving a reader to discover it.
- Disposition: accepted — posted as `-05` on 2026-08-20; the published archive copy is
  byte-identical to the file on `main`.

### 4. README.md:28-30 — verification quickstart address

- Claim: the first instruction in the README, telling a reader to verify a live receipt
  chain before trusting anything else on the page.
- Mechanism: the three files were served from `demo.conarium.dev`, which resolves to a
  single machine that also runs unrelated services.
- Why it falls short: not a false claim, a fragile one. The one command a newcomer runs
  first was the least resilient thing published.
- Disposition: moved to `conarium.dev/proof/*` (CDN) in `62e33e0`; bytes verified
  identical (`sha256:32a1ea69…`) and the quickstart re-run from the new address on a
  clean machine, exit 0.
