---
name: source-side-qualifier-is-not-an-output-side-qualifier
description: "A comment explaining a logged constant helps the code reader, never the log reader — check which audience the ruling meant, and find the asymmetry inside the same emit"
metadata: 
  node_type: memory
  type: feedback
  originSessionId: 849c3ad4-0c50-4342-b12a-70305d90d7ba
  modified: 2026-08-05T02:56:04.928Z
---

A ruling that a breadcrumb must print a value "plus a qualifier" is ambiguous about AUDIENCE, and
the two readings produce different artifacts. A qualifier **at the site** is a source comment: it
serves whoever opens the file. A qualifier **in the output** is a token on the emitted line: it
serves whoever joins the logs, who is the person the breadcrumb exists for. Landing the first and
calling the ruling met leaves the intended reader with the exact misreading the finding named.

Measured 2026-08-04 on `37afa57` (build/reaim-attach-intent, spt-core). Finding 1 asked that the
`shell_channel` site print the true wire value `gen=0` plus a qualifier that 0 is a hardcoded
floor, not a chosen generation. The fix put ~14 lines of correct reasoning in the source and
emitted a bare `gen=0`. A consumer joining the three `ATTACH_INTENT_CHOSEN` sites on `session`
reads a real generation at `gap_resume` and `serve_dispatch` and `gen=0` here, with nothing on the
line saying 0 was never chosen.

**The test is WITHIN-SITE AMBIGUITY — doyle's ruling, 2026-08-04, and it overturned my own first
framing.** An output-side marker is owed only where a field can carry MORE THAN ONE MEANING AT ITS
OWN SITE. `from_seq` at its site can be a real resume floor OR a hardcoded 0 — two meanings, so
`cold=true` is EARNED. `gen` at `shell_channel` is constant 0 — one meaning, nothing to
disambiguate — so `site=shell_channel` IS the marker and no token is owed. F1 closed on that.

**What I got wrong, kept here because I would have re-applied it:** I argued a dichotomy — either
the `site=` token suffices, in which case `cold=true` is redundant by its own argument, or `gen`
deserves what `from_seq` got. There is a third branch, and the dichotomy DISSOLVES rather than
resolves. My error was treating "two hardcoded zeroes on one line" as the relevant symmetry. It is
not: the relevant property is how many meanings a field can take at its own site, which belongs to
the SITE, not to the line. Two fields can be identically hardcoded and still owe different markers.
Taking the branch I offered would have written a FALSE RATIONALE into the commit body — worse than
a missing marker, because the record would preserve it.

**How to apply:** still refuse to argue from taste — find an ASYMMETRY THE AUTHOR'S OWN CODE
COMMITS TO and hand it over; that is what forced this principle into words and it survives intact.
But present the asymmetry as a QUESTION, never as an exhaustive dichotomy: enumerating the horns
invites the gater to pick one, and if you have missed a branch the pick is wrong. Report what is
inconsistent; let the ruling supply the axis that explains it.

**Why:** an author defending a design will out-argue a reader defending a preference, and rightly.
An inconsistency the author's OWN code commits to is not a preference, and it survives the
argument. Related: [[precise-claim-is-falsifiable-vague-is-useless]],
[[report-measurement-never-issue-direction]], [[surfaced-payload-names-its-cadence]],
[[audit-the-boring-claims]].
