Matrix mouth: read receipts on ack, presence from the brake #13
Loading…
Reference in a new issue
No description provided.
Delete branch "heimdall/mouth-receipts-presence"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Spec gamecult-chat:cut_spec:cut-mouth-receipts-presence.r1 (Bifrost only; no wire change).
Tests: 94 pass (node --test tests/persona-matrix-mouth*.test.mjs, CultLib built from cultlib-pr1 in a scratch dir). Hand mutants (not committed) killed: drop readUpTo, await readUpTo, lowest-seq receipt, pending posts receipt, failed receipt breaks ack, repeated braked PUT, lastPresence set before PUT succeeds, lastPresence starting offline, no set_presence, online never recorded, wrong user in presence path, invites ignore brake.
Merge order: cut-album-share-mouth.r1 edits the same file; whichever merges second rebases. Not deployed; not merged.
🤖 Generated with Claude Code
Fix batch per Heimdall's review, head
8938dbd: (1) fresh brake read at the invite join after the long-poll; (2) no m.read receipt while braked, read fresh when each receipt posts, one log line, nothing queued; (3) receipt path encoding pinned (fake keeps the raw path); (4) receipt timeout pinned (fake honours abort); (5) receipt failure log guarded against a throwing logger; (6) brake read and offline presence PUT precede the full-backlog return; (7) test carve-out narrowed to offline presence PUTs. 100/100 tests pass; each fix has a test and a killed hand mutant. Note: a released Mind at the pending cap makes no /sync, so it asserts no online presence. Report: cut_report attempt 2.🤖 Generated with Claude Code
Second fix batch, head
94606d0: answerInvites reads the brake fresh before every join (two-invite test, brake lands during the first join); presence PUT path encoding pinned on the raw path. 101/101 tests pass; both fixes have a killed hand mutant. Not touched, filed separately: failed m.direct write after a join, receipts out of order under concurrent acks. Report: cut_report attempt 3.🤖 Generated with Claude Code