Round 3 verified the withdrawal itself is clean -- the eight reverted files are byte-identical to
origin/main, no orphans, and the mutation gives the stated three reds -- but found docs still
asserting the withdrawn change shipped. That is the stale-comment failure in its usual form: after a
retraction, the retracted WORDING has to be swept, not just the code.
- `hooks.ts` said "#830 removed that gate", flatly false at this head, in the hook's own doc comment
right above the export -- the first thing a maintainer reads. It also carried round 2's framing
("both halves of the outcome") as the hook's purpose, when what ships carries only the failure
half. Rewritten to the present tense of the shipped tree.
- The `rule:` field still said the surviving surface "differs per screen", naming MediaBrowseScreen
and SearchScreen as wired. They wire nothing. This one matters beyond an ordinary sentence:
`rule:` is the canonical summary, it is what the catalog row shows, and it is what gets mirrored
per-key into MemPalace -- so it is the version a future session retrieves WITHOUT opening the
file. Now: exactly one wired screen, the Toast pair named as a CANDIDATE.
- The "two limits" bullet described a failure being diverted to those same screens and announced
politely. Nothing can divert there -- they receive no reporting callback. Restated as the limit
the second surface will have when it is wired.
- `onFailed` in a hooks.ts comment was a dangling identifier; the real prop is `onAddFailed`.
Also added the caveat the reviewer asked for rather than leaving it to be discovered: this is a
shared hook with exactly ONE consumer. It earns that shape (directly unit-tested, and those tests
are the only thing pinning the diverted branch; prescribed by §3c; #877 queued as a second
consumer) -- but #877 may land a shared reporting SURFACE instead of a per-site prop, in which case
the second consumer never arrives. Accepted risk, now written down.
Docs only. No code change, 1276 tests still green, tsc/eslint/validator/catalog clean.
refs #830, #877
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XE2tF2aUasK2hWPmBRsrMY