---
name: relay-pass-list-names-gates-run-not-gates-owed
description: "A hand-off's list of PASSING gates is a claim about what was RUN, never about what the head OWED — read it for the gate it does not name."
metadata: 
  node_type: memory
  type: feedback
  originSessionId: eb946e16-2b07-4296-ba6c-22929280947c
  modified: 2026-08-19T10:43:04.083Z
---

A hand-off that reports green gates is answering "what did I run?", not "what does this head owe?" — so the finding is in the ABSENCE, and absence in a pass list reads exactly like coverage.

Measured 2026-08-19, KEYSTONE #182 golden head `bd942f6`. doyle's hand-off reported clippy exit 0, `traceable-reqs` 779/779, `xtask binedge-check` RED 0 — three green gates, and it read as a fully gated head. It did not name `xtask check`, the docs-drift gate, and that head carried FOUR doc-touching commits (a docs(er) skeleton amendment and two docs(flakes) records, plus INFRA-REGISTER.md). I ran it: `xtask check: OK`, exit 0. Green — but the point is that nothing in the hand-off would have told me if it were red, and the milestone's doc surface was the head's largest change class. doyle accepted it and is naming the gate in future hand-offs.

**Why:** a pass list is generated by enumerating what the sender executed. The reader converts it into "this head is gated" — a different, larger claim the sender never made. `binedge-check` and `check` are both `xtask` subcommands, which is what makes the substitution invisible: the tool name matches, so the eye scores the gate as present.

**How to apply:** derive the gate population from the HEAD's change classes (docs touched ⇒ docs-drift gate; schema touched ⇒ its gate), then diff that against the gates the hand-off names. Run the difference yourself before firing. Do not diff the pass list against your memory of "the usual gates" — that reproduces the sender's population, not the head's.

Corollary that bit in the same hour: run the gate UNPIPED. My first `cargo run -p xtask -- check` was piped to `tail`, so the `$?` I captured was the pipe's exit, not the gate's; the verdict rested only on the printed text. Re-ran unpiped for a real exit code. Related: [[a-predicate-without-its-tool-is-not-evidence]], [[verdict-from-exit-not-from-silence]], [[relay-is-not-the-gaters-word]], [[audit-the-boring-claims]].
