Prove an inbound edit is applied (relay#46) #88

Merged
paulhitt merged 1 commits from test/inbound-edit-is-applied into main 2026-09-04 22:36:28 +00:00
paulhitt commented 2026-09-04 22:36:23 +00:00 (Migrated from gitlab.com)

The published spec says the Android client "cannot yet apply one, because
its transcript does not record a mid for each line"
, and that the same
gap blocks replies and reactions.

The transcript DOES record a mid, and MessageReactionTest already folds
a reaction onto a message by id — so the stated reason is false and the
consequence for §6.9 is false with it.

But relay#46's rule is the point of this commit: do not flip a claim
because the code looks present; flip it because a run proved it, and say
which run.
applyEdit was implemented and wired with nothing exercising
it — InboundControlTest covers the codec and says in its own header that
the app-side application needs a Vault and is out of scope there. This is
that run, written so the correction has something behind it.

Five tests, and the two that matter most are refusals: an edit from
somebody who did not write the message, and an edit of our own message
claiming another author. Without the author check a contact could rewrite
another person's words in a transcript, which reads to the reader as the
sender having said something they never said. Both proved by removing that
check and watching exactly those two go red.

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

The published spec says the Android client *"cannot yet apply one, because its transcript does not record a `mid` for each line"*, and that the same gap blocks replies and reactions. The transcript DOES record a mid, and `MessageReactionTest` already folds a reaction onto a message by id — so the stated reason is false and the consequence for §6.9 is false with it. But relay#46's rule is the point of this commit: **do not flip a claim because the code looks present; flip it because a run proved it, and say which run.** `applyEdit` was implemented and wired with nothing exercising it — `InboundControlTest` covers the codec and says in its own header that the app-side application needs a Vault and is out of scope there. This is that run, written so the correction has something behind it. Five tests, and the two that matter most are refusals: an edit from somebody who did not write the message, and an edit of our own message claiming another author. Without the author check a contact could rewrite another person's words in a transcript, which reads to the reader as the sender having said something they never said. Both proved by removing that check and watching exactly those two go red. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
paulhitt commented 2026-09-04 22:36:23 +00:00 (Migrated from gitlab.com)

assigned to @paulhitt

assigned to @paulhitt
paulhitt commented 2026-09-04 22:36:24 +00:00 (Migrated from gitlab.com)

restored source branch test/inbound-edit-is-applied

restored source branch `test/inbound-edit-is-applied`
paulhitt commented 2026-09-04 22:36:28 +00:00 (Migrated from gitlab.com)

mentioned in commit 8c9fd8f09c

mentioned in commit 8c9fd8f09cdc6b511234f990731fcca06fb7709c
paulhitt (Migrated from gitlab.com) merged commit 8c9fd8f09c into main 2026-09-04 22:36:28 +00:00
paulhitt commented 2026-09-09 19:01:21 +00:00 (Migrated from gitlab.com)

changed the description

changed the description
Sign in to join this conversation.