# W2 JIT — #167 banner removal (+#155 discharged) and #154 whitelist wording

## STATUS 2026-08-19: BUILT, COMMITTED, REPORTED. Awaiting doyle's gate. NOT pushed.

Lane `fix/w2-sender-banner-removal`, base **`0c86b2d`** (doyle's dispatch base; no file conflict
this time — the #178 REQ blocks live elsewhere in the toml). Tip **`825c214`**:
- `0a51388` fix(access): remove the sender-rules-now-live banner  [#167, discharges #155]
- `825c214` docs(cli): the access chain is not a whitelist        [#154]

VERIFIED at the tip, from log bodies with real exits: `traceable-reqs check` [OK] 0 · clippy
workspace all-targets 0 with zero warnings · spt-store --lib **485/0** · `spt --bin spt unlisted`
**17/0** · `xtask check` 0 after `xtask gen`.

⚠ A task notification lied **exit 0** a THIRD time today — on the `xtask check` that had exited **1**
with a drift refusal. Always `grep -E "^test result|_EXIT="` the log.

### What landed
- REMOVED: `LATENT_SCANNED`, `latent_sender_rule_notice`, `announce_latent_sender_rules`, its call
  in the load path, and the notice half of its unit. Single-source verified first: ONE composer of
  `ACCESS_SENDER_RULES_NOW_LIVE`, no second copy in the repo.
- KEPT: `sender_endpoint_rule_ids` (second consumer `unlisted.rs::evidence_from_rules`), re-tagged
  `[impl->REQ-UNLISTED-EVIDENCE]`; its unit narrowed to population semantics and re-tagged too.
- `REQ-MSG-SENDER-STAMP` text amended in the same commit (the scan is no longer required; the STAMP
  is untouched and keeps all evidence).
- #154: rewrote `allow` (endpoint + node tiers), `revoke`, both `endpoint to restrict` arg docs, and
  the module blurb. `docs-site/src/cli/reference.md` REGENERATED (`xtask gen`) — it is generated
  from those doc comments, so never hand-edit it.

### The finding worth carrying
**#154's parenthetical was SPELLING-DEPENDENT, not merely wrong.** Measured: the POSITIONAL
`access allow` calls `restrict_if_unset` (prints `endpoint is now restricted`); the FLAG spelling
goes through `tuple_mutation` and touches NO mode. One help string covered both. `decide()` is
first-match rules → endpoint/node/captured-subnet modes → **ImplicitOpen**, so absence is not
refusal and "whitelist" was wrong for the whole family.

### Five judgement calls declared to doyle
1. REQ text amended in the same commit as the removal (else it reads as evidence loss).
2. Unit narrowed-and-retagged rather than deleted — offered to move it to a fresh unit if he prefers.
3. #154 split by spelling (above).
4. Swept wider than the one doc comment, per his addendum (revoke, arg docs, module blurb).
5. PARKED, unowned: #155's sub-question — does the `sender_proven` wire-field floor (v0.49.0) bind
   the CLI, the broker, or both? NOT absorbed here.

### Next
Await doyle's gate; build fixups on NEW commits (never amend); push only on his word. #178 is
CLOSED PASS @`668dd6a` and PUSHED — do not re-open it.
