# Claims review — 0.2.43

- base: v0.2.42
- head: 392aadf
- surface: sha256:6cd0fa9075a09f70c75f3e5682d3454977f4a5c7025dbbe25540136aa6a89f40
- verdict: pass
- reviewer: maintainer. The release exists because a printed number was never
  asked to agree with the tree, so every figure below was taken from the tree.

One surface changed: `docs/RECEIPT-SPEC.md`, twice. The "Design source" line at
the top was rewritten because the directory it pointed at left the package. A
Turkish parenthetical was deleted from limitation 5 — it restated in Turkish the
English words immediately beside it, "not solvable in-file", so nothing was
claimed or withdrawn. It is described rather than quoted here: the guard this
release fixes counts every packed document, and this file is one of them.

## Findings

### 1. docs/RECEIPT-SPEC.md:12 — "normative" is asserted where nothing compares the two documents

- Claim: "This document is the normative one either way."
- Mechanism: four checks read this file and measure it against the shipped
  code — `spec_wire_contract.mjs`, `spec_jcs_class.mjs`,
  `spec_exitcode_drift.mjs`, `implementation_status.mjs`. None of them, and
  nothing else in the tree, reads the design document.
- Why it falls short: those checks establish that *this* document is held to the
  code. They do not establish precedence, because precedence is only tested
  where two documents disagree and nothing compares them. The design document
  carries no marking on its own page saying it has been superseded, and it is
  still in the repository, still dated, still readable — and now more likely to
  be found on its own, since the sentence naming it links straight to it.
- Disposition: accepted, shipping. Dropping it from the package is the whole
  remedy for the reader who arrived through `npm i`, which is the reader this
  release is about. The repository reader is not covered. Marking the design
  document would mean editing a dated record to keep a claim true, which is the
  trade this project refuses elsewhere. Recorded rather than fixed.

### 2. The pinned remainder measures the package, and will be read as measuring the project

- Claim: "34 Turkish line(s) across 14 packed doc file(s)" — the guard's line,
  the pin in `docs/claims/locale-residue.json`, and the changelog paragraph.
- Mechanism: `docsRemainder` runs the letter pass and the word pass over the
  output of `npm pack --dry-run`, so the figure is exactly the packed set.
- Why it falls short: the guard's own line says "packed", but the figure is
  what gets copied out of it, and a figure copied out of a scope survives
  without the scope. That is not a hypothetical — it is the defect this release
  fixes. `324 / 22` was read as the size of the problem when it was the size of
  what one probe could see, and it reached a handover note as `308 / 19`, a
  number that reproduces under no definition at all. Measured, so the next
  reader has both: the repository's tracked `.md`, `.txt` and `.json` carry
  **1185 Turkish lines across 46 files**. The package carries 34 across 14.
- Disposition: accepted. `measuredBy` in the pin file now states the scope
  beside the number rather than in a comment somewhere else, and the changelog
  paragraph says "packed". The stronger remedy — a second pin over the whole
  repository — is deliberately not taken: Turkish in a Turkish team's repository
  is not a defect, and a guard that reports it every run is a guard that gets
  switched off. The line that matters is the package boundary, and that is the
  one now pinned.

## Not a finding, recorded so the next reader does not re-derive it

The guard printed `N Turkish word occurrence(s)` for three releases while
counting **lines** — one hit per line, however many Turkish words that line
carried. The wording is corrected to `line(s)` here. It means the old figures
were further from an occurrence count than the 324-against-1034 gap alone
suggests, and that no comparison anyone made against them was measuring what
its own label said.

`test/pack_path_refs.mjs` is new and its first version was wrong in a way worth
writing down: it reported fifty-odd references to `src/` and `test/` paths as
broken, because it asked "is this path shipped?" instead of "is this path in a
directory the reader has reason to think is shipped?". `src/` and `test/` have
never been in the package; nobody is misled by a document that names them. The
check now derives the roots it polices from what npm actually packs, so it
covers `docs/` — which is half here — and leaves the wholly-absent roots alone.
