Six checks were disabled one at a time to see which suites noticed. Four
died immediately. Two survived every suite, including interop and the
live relay run, so the gap was the repository's and not just CI's:
X3DH.initiate refuses a bundle whose signed prekey is not signed by
the identity key. It is the first check session establishment makes
and the one a relay substituting a signed prekey has to beat. Every
test handed it a well-formed bundle, so deleting the refusal broke
nothing.
verifyConsistency refuses a proof that does not connect two heads.
Every assertion about it was the same happy-path line, that a valid
proof verifies, so returning true unconditionally kept them all green.
The second is what §19.5 already warns about, on §19's own feature: a
happy-path test certifies the reverse as correct.
Eight tests. The consistency ones needed an RFC 6962 proof generator
written here, because this engine only verifies and the relay is what
produces proofs, which is plausibly why nobody wrote the refusal. It
asserts the honest proof verifies FIRST: without that line the four
refusals would pass against a verifier that always said no.
scripts/mutate.py ships the harness, so this is repeatable rather than
something done once. All six mutations now die, and the tree is restored
whether a run passes or throws.
Six checks were disabled one at a time to see which suites noticed. Four
died immediately. Two survived every suite, including `interop` and the
live `relay` run, so the gap was the repository's and not just CI's:
- `X3DH.initiate` refuses a bundle whose signed prekey is not signed by
the identity key. It is the first check session establishment makes
and the one a relay substituting a signed prekey has to beat. Every
test handed it a well-formed bundle, so deleting the refusal broke
nothing.
- `verifyConsistency` refuses a proof that does not connect two heads.
Every assertion about it was the same happy-path line, that a valid
proof verifies, so returning true unconditionally kept them all green.
The second is what §19.5 already warns about, on §19's own feature: a
happy-path test certifies the reverse as correct.
Eight tests. The consistency ones needed an RFC 6962 proof generator
written here, because this engine only verifies and the relay is what
produces proofs, which is plausibly why nobody wrote the refusal. It
asserts the honest proof verifies FIRST: without that line the four
refusals would pass against a verifier that always said no.
`scripts/mutate.py` ships the harness, so this is repeatable rather than
something done once. All six mutations now die, and the tree is restored
whether a run passes or throws.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Six checks were disabled one at a time to see which suites noticed. Four
died immediately. Two survived every suite, including
interopand thelive
relayrun, so the gap was the repository's and not just CI's:X3DH.initiaterefuses a bundle whose signed prekey is not signed bythe identity key. It is the first check session establishment makes
and the one a relay substituting a signed prekey has to beat. Every
test handed it a well-formed bundle, so deleting the refusal broke
nothing.
verifyConsistencyrefuses a proof that does not connect two heads.Every assertion about it was the same happy-path line, that a valid
proof verifies, so returning true unconditionally kept them all green.
The second is what §19.5 already warns about, on §19's own feature: a
happy-path test certifies the reverse as correct.
Eight tests. The consistency ones needed an RFC 6962 proof generator
written here, because this engine only verifies and the relay is what
produces proofs, which is plausibly why nobody wrote the refusal. It
asserts the honest proof verifies FIRST: without that line the four
refusals would pass against a verifier that always said no.
scripts/mutate.pyships the harness, so this is repeatable rather thansomething done once. All six mutations now die, and the tree is restored
whether a run passes or throws.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
assigned to @paulhitt
restored source branch
test/the-refusals-have-testsmentioned in commit
32f01d11d4