feat(discord): eyes reaction as a read receipt on every admitted message (#1509)

QUEUE row 15, MVP iteration 1 after the Sage pilot. rest.react is best
effort (2xx true, anything else false, never throws); the connector reacts
at admission before the engine runs and records the outcome in the turn
record as receipt. Drops and refusals get no reaction. Suite 28/28, 90
node tests.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
2026-09-13 14:20:30 -05:00
co-authored by Claude Fable 5.1
parent 788515dc69
commit 93d6b62457
10 changed files with 115 additions and 6 deletions
+12
View File
@@ -2367,3 +2367,15 @@ after the limit was restored. Ceiling and restarts require a stop and
restart because the binding is read at start. Gate H (reply reads as Sage)
is Jason's ruling: passed 2026-09-13, the replies read as Sage. Row 14 closed;
the connector stays up while the MVP is iterated. Pushed on authorization.
## 2026-09-13 — Discord read receipt (#1509, QUEUE row 15)
Before: an admitted message showed nothing until the reply or the typing
indicator. After: the bot reacts with eyes on the inbound message at
admission, before the engine runs; `rest.react` is best effort (2xx true,
anything else false, never throws), the outcome is in the turn record as
`receipt`, and drops and refusals get no reaction. Tests: REST path and
encoding, 403 and socket failure, one reaction per admitted message, none
for an unlisted author or a ceiling refusal, a refused reaction leaves the
turn ok. Removing the call fails both connector tests. Suite: 28/28, 90
node tests.