---
name: string-census-pattern-encodes-an-assumption
description: "A grep census encodes assumptions (line boundaries, what follows the token) and returns a confident zero about the population it cannot express — two measured faces from the w1t3 teach lanes."
metadata: 
  node_type: memory
  type: project
  originSessionId: 555cf6af-e4a6-45bc-b066-c36aea3edf77
  modified: 2026-08-05T01:53:20.419Z
---

A census built on a grep pattern answers a question about what the PATTERN can express, not about the population. Two faces, both measured 2026-08-04 (todlando, w1t3 teach lanes, #112):

1. **Line face**: `spt daemon \` + newline + `refresh` — a Rust line continuation split the emitted command across lines, so the token appeared in NO single line and a line-based census was structurally blind to it. Only surfaced because the NEGATIVE assertions were repinned too — left quoting the old string they would have passed vacuously forever. Population check for emitted-string sweeps: `rg -U` (multiline).
2. **Follows-the-token face**: both censuses matched `spt daemon <subcommand-keyword>`; three RENDERED sites naming the bare form (`spt daemon` with no verb) were invisible to every count reported, so "the rendered surface is clean" was a confident zero about a population the pattern could not express.

**Why:** the pattern IS a claim about the population's shape; any occurrence shaped otherwise is subtracted from the count silently, and the census result reads as exhaustive.

**How to apply:** before trusting a census total, name what the pattern assumes (line-bounded? token followed by X? spacing?) and run one looser sibling probe (`rg -U`, bare-token count) — the DELTA between counts is the population the census missed. Kin: [[truncated-grep-read-as-the-population]], [[zero-match-filter-reads-as-absent]], [[verdict-from-probe-competence]].

3. **SUBSTRING face — the sharpest statement of the class (todlando, 2026-08-22, TURNKEY #212 W4 Lane 2):**
   *"I built the sweep pattern from the STRING I WAS REPLACING rather than from the PROPERTY I CARED ABOUT."*
   He censused cells pinning a retired taught command by grepping the full string
   `spt endpoint monic add stranger` → found two. A THIRD cell asserted only
   `monic add stranger` (no `spt endpoint` prefix) and was structurally invisible — and **a cell
   asserting a SUBSTRING of the command is exactly the cell that still pins the retired shape.**
   It surfaced as a red in the full libs sweep, not in the census.
   Re-censused on the PROPERTY (grep `monic`, filtered to assertions) the real population was FOUR,
   one of them a NEGATIVE assertion (`!w.contains("monic add")`) that was correct and had to stay.

**A census inherits its pattern's blind spot into every decision built on it.** He had reported
"fifteen hits split four ways" as a POPULATION; it was fifteen hits of ONE PATTERN, and by the time
he caught it that figure had already propagated into a scope ruling of mine and into a #212 scope
note. Nothing in the ruling changed, but the propagation is the cost.

**Rule adopted both ways, 2026-08-22: report THE PATTERN WITH THE COUNT.** "15 hits" is not a
census; "15 hits of `<pattern>`, tests excluded, at `<sha>`" is. And report NEGATIVE assertions in
the population — an unreported negative reads as an oversight later.

Same family, three instruments in one day: a `[[bin]]` stanza grep blind to autodiscovered
`src/bin/*.rs` ([[unapplied-mutation-green-reads-as-a-passing-guard]] neighbours it), a nextest
exact-name filter matching the EMPTY SET, and this substring miss. **The instrument's pattern was
narrower than the population it claimed to cover, and its silence read as coverage.**
