§8.9b was written and never committed. Two corrections come with it, pointing in opposite directions — which is the point.
§22.4 read as though nothing had changed
It had. There is no gid -> user_id row left to read, and a stolen or subpoenaed
database does not reveal your groups.
But §22 is not about that. It is about what a running relay can observe, and
every word of it still holds: envelopes are addressed to devices, so membership is
reconstructible by correlation whether or not a table exists to read.
"Not stored" and "not observable" sound alike, and only the first is true. A
reader who takes §8.9b as closing §22 has been misled, and so has one who takes
§22 as meaning §8.9b bought nothing.
Both sections stay; the paragraph now says why.
§15 was wrong about Android, in the safe direction
was
now
§13 PQ ratchet
no
built (98342dd, 16 tests), not yet cross-engine
§14 sealed sender
no
wired, run not recorded
Neither becomes . This table records runs, and no Android cross-engine
run has happened. Understating is the opposite of the failure §10 warns about,
but it is corrected the same way — by establishing what was run, not by flipping
a symbol because the code looks present.
The membership-trust claim now carries its evidence
Rather than asserting it, §8.9b records that on both apps the group list prefers
the sealed roster and the receive gate resolves from the blob — each covered by a
test watched to fail with the change reverted (iOS e90ba1b, Android 0006d82).
Follow-on
Resources/Views/spec.leaf in the relay is generated from this file via a sibling
checkout, so the public page needs the generator re-run and a deploy. Separate MR.
Closes #1
Closes #2
§8.9b was written and never committed. Two corrections come with it, pointing in
**opposite directions** — which is the point.
### §22.4 read as though nothing had changed
It had. There is no `gid -> user_id` row left to read, and a stolen or subpoenaed
database does not reveal your groups.
But §22 is not about that. It is about what a **running** relay can *observe*, and
every word of it still holds: envelopes are addressed to devices, so membership is
reconstructible by correlation whether or not a table exists to read.
> "Not stored" and "not observable" sound alike, and only the first is true. A
> reader who takes §8.9b as closing §22 has been misled, and so has one who takes
> §22 as meaning §8.9b bought nothing.
Both sections stay; the paragraph now says why.
### §15 was wrong about Android, in the safe direction
| | was | now |
|---|---|---|
| §13 PQ ratchet | no | built (`98342dd`, 16 tests), not yet cross-engine |
| §14 sealed sender | no | wired, run not recorded |
**Neither becomes .** This table records *runs*, and no Android cross-engine
run has happened. Understating is the opposite of the failure §10 warns about,
but it is corrected the same way — by establishing what was run, not by flipping
a symbol because the code looks present.
### The membership-trust claim now carries its evidence
Rather than asserting it, §8.9b records that on both apps the group list prefers
the sealed roster and the receive gate resolves from the blob — each covered by a
test **watched to fail with the change reverted** (iOS `e90ba1b`, Android
`0006d82`).
### Follow-on
`Resources/Views/spec.leaf` in the relay is generated from this file via a sibling
checkout, so the public page needs the generator re-run and a deploy. Separate MR.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #1
Closes #2
§8.9b was written and never committed. Two corrections come with it, pointing in
opposite directions — which is the point.
§22.4 read as though nothing had changed
It had. There is no
gid -> user_idrow left to read, and a stolen or subpoenaeddatabase does not reveal your groups.
But §22 is not about that. It is about what a running relay can observe, and
every word of it still holds: envelopes are addressed to devices, so membership is
reconstructible by correlation whether or not a table exists to read.
Both sections stay; the paragraph now says why.
§15 was wrong about Android, in the safe direction
98342dd, 16 tests), not yet cross-engineNeither becomes . This table records runs, and no Android cross-engine
run has happened. Understating is the opposite of the failure §10 warns about,
but it is corrected the same way — by establishing what was run, not by flipping
a symbol because the code looks present.
The membership-trust claim now carries its evidence
Rather than asserting it, §8.9b records that on both apps the group list prefers
the sealed roster and the receive gate resolves from the blob — each covered by a
test watched to fail with the change reverted (iOS
e90ba1b, Android0006d82).Follow-on
Resources/Views/spec.leafin the relay is generated from this file via a siblingcheckout, so the public page needs the generator re-run and a deploy. Separate MR.
mentioned in merge request flamenet-relay!5
mentioned in commit
8ace350a56changed the description