Remove two accidentally committed AGPL-linked binaries; correct three understated coverage rows - #25
Merged
Merged
Conversation
…module arrangement exists to prevent Two build outputs were committed by accident: interop/go/gen and interop/go/verify. `go build ./cmd/gen` writes its binary into the working directory, so they are easy to pick up in a `git add -A`, and I did — in the §8.3 and reverse-direction commits. They are not merely untidy. Both link katie, so a repository carrying them distributes an AGPL derivative work, which is precisely what keeping upstream/ as submodules is meant to avoid: this repository records a URL and a SHA and ships none of that code. Removed from tracking, added to .gitignore with the reason attached rather than filed under tidiness, and written into docs/licensing.md so the next person to run `go build` from that directory knows why the paths are listed. Also corrects three coverage rows that were understating. §11.1's cipher suite registry, §11.1's hash function and §11.2's DeploymentMode were all marked implemented-but-unverified, on the reasoning that no vector targets them directly. That reasoning was wrong: every Configuration katie encodes begins with the suite code, so tree-head.json pins 0x0002 as bytes and the mode byte after it, across all three modes with three distinct encodings; and selecting the wrong hash would change every commitment and every tree root, so the files pinning those pin it too. A report that understates is worth less than one that does not, in both directions. That leaves §10.1's walk as the only implemented-unverified row, and it is genuinely one: katie's client asks only for the rightmost distinguished entry, so there is no walk to compare against. And DRAFT-09 is resolved. The draft's editor answered #48: the prose explaining left_inclusion for monitoring ladders was removed deliberately, and Appendix B's parameter is a leftover — so the empty-set reading this implementation uses is the intended one, not merely the one that interoperates. Fix sent as draft-protocol#49. Worth recording how it was settled: not by more measurement, since katie implements the parameter-free version either way. Only the specification's author could say what the specification meant, which is the distinction the register's filing rule was drawing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The licensing fix
interop/go/genandinterop/go/verifywere committed by accident —go build ./cmd/genwrites its binary into the working directory, so they're easy to pick up in agit add -A, and I did, in the §8.3 and reverse-direction commits.They aren't merely untidy. Both link katie, so a repository carrying them distributes an AGPL derivative work — precisely what keeping
upstream/as submodules exists to avoid: this repo records a URL and a SHA and ships none of that code. Removed from tracking, added to.gitignorewith the reason attached rather than filed under tidiness, and written intodocs/licensing.mdso the next person to rungo buildfrom that directory knows why the paths are listed.Three coverage rows were understating
§11.1's cipher suite registry, §11.1's hash function and §11.2's
DeploymentModewere all marked implemented-but-unverified, on the reasoning that no vector targets them directly. That reasoning was wrong:Configurationkatie encodes begins with the suite code, sotree-head.jsonpins0x0002as bytes — and the mode byte right after it, across all three modes with three distinct encodings.A report that understates is worth less than one that doesn't, in both directions. That leaves §10.1's walk as the only implemented-unverified row, and it's genuinely one — katie's client asks only for the rightmost distinguished entry, so there's no walk to compare against.
DRAFT-09is resolvedThe draft's editor answered #48: the prose explaining
left_inclusionfor monitoring ladders was removed deliberately — it "became finicky and a security risk" — and Appendix B's parameter is a leftover. So the empty-set reading this implementation uses is the intended one, not merely the one that interoperates. Fix sent as draft-protocol#49.Worth recording how it was settled: not by more measurement. katie implements the parameter-free version either way, so no amount of testing could have answered it — only the specification's author could say what the specification meant. That's the distinction the register's filing rule was drawing, and this is the case that shows it earning its keep.
Coverage now: 32 verified against katie, 1 implemented without an oracle, 1 out of scope, 4 not implemented.
🤖 Generated with Claude Code