Anonymous polls: the envelopes #159

Merged
paulhitt merged 1 commits from feat/anonymous-polls into main 2026-09-12 02:23:08 +00:00
paulhitt commented 2026-09-12 02:21:13 +00:00 (Migrated from gitlab.com)

Second slice of flamenet-messenger-android#26, on top of the arithmetic in !131. Nothing sends these yet.

Three kinds: the poll, one piece of one vote, and the sum a member publishes. A piece is addressed to a single member and to nobody else, which is what makes a vote unattributable; the sums are what everybody sees.

  • all three are marked ctl, the way the off-the-record and disappearing envelopes are. They are deliberately NOT in the CONTROL kind set, since that check returns a bare envelope before the specialised branches and these carry structure worth parsing; without the flag they passed every renderable test and would have drawn as empty bubbles, which is what the test caught
  • the poll carries the member set it is counted over, hashed, so pieces split across a different set are visible as a mismatch rather than arriving as a wrong tally
  • hand-built like callSignal, because a question with options and an integer vector do not fit assemble

Also adds call-reaction to the known kinds: it went into the call actions when flamenet-messenger-android!127 was built but never here, so an arriving call reaction was classed as needing a newer client. Cosmetic today, since only tests read that flag, but wrong. It is one line in this same file, and a parallel branch for it would collide with this one.

Verified: PollEnvelopeTest 8/8, PollTallyTest 10/10, ContentTest green, ktlint count unchanged from main.

Generated with Claude Code

Second slice of flamenet-messenger-android#26, on top of the arithmetic in !131. Nothing sends these yet. Three kinds: the poll, one piece of one vote, and the sum a member publishes. A piece is addressed to a single member and to nobody else, which is what makes a vote unattributable; the sums are what everybody sees. - all three are marked `ctl`, the way the off-the-record and disappearing envelopes are. They are deliberately NOT in the CONTROL kind set, since that check returns a bare envelope before the specialised branches and these carry structure worth parsing; without the flag they passed every renderable test and would have drawn as empty bubbles, which is what the test caught - the poll carries the member set it is counted over, hashed, so pieces split across a different set are visible as a mismatch rather than arriving as a wrong tally - hand-built like `callSignal`, because a question with options and an integer vector do not fit `assemble` Also adds `call-reaction` to the known kinds: it went into the call actions when flamenet-messenger-android!127 was built but never here, so an arriving call reaction was classed as needing a newer client. Cosmetic today, since only tests read that flag, but wrong. It is one line in this same file, and a parallel branch for it would collide with this one. Verified: PollEnvelopeTest 8/8, PollTallyTest 10/10, ContentTest green, ktlint count unchanged from main. Generated with [Claude Code](https://claude.com/claude-code)
paulhitt commented 2026-09-12 02:21:40 +00:00 (Migrated from gitlab.com)

changed the description

changed the description
paulhitt commented 2026-09-12 02:23:08 +00:00 (Migrated from gitlab.com)

mentioned in commit 7625b5d668

mentioned in commit 7625b5d6688f50ab9f502c4be4b479b4c6ab6c03
paulhitt (Migrated from gitlab.com) merged commit 7625b5d668 into main 2026-09-12 02:23:08 +00:00
paulhitt commented 2026-09-12 12:06:25 +00:00 (Migrated from gitlab.com)

mentioned in merge request !133

mentioned in merge request !133
Sign in to join this conversation.