feat: federation vectors and a threat model#17
Merged
Conversation
Two of the open menu items from the conformance work. Federation vectors (vectors/federation.json + a conformance test): the SPEC §8 handshake and addressing had no vectors. Adds the two base64url join-handshake tokens (invite request, repo locator) as a decode oracle plus a canonical minified-encode round-trip, and avp://<host>/<repoId> URI parse/format (plain host and host:port). The runner decodes, re- encodes, validates each decoded token against its schema $def, and parses/ formats the URIs; indexed in vectors/index.json. SPEC §8.1 now states the recommended minified encoding while requiring decoders to accept any valid JSON object with the required members; §11 lists the federation encodings. THREATMODEL.md: the protocol had a SECURITY.md (reporting) but no stated adversary model. Documents the assets, actors and trust boundaries, nine adversaries (passive/active network, honest-but-curious and malicious server, insider, removed member, compromised IdP, stolen token, stolen key) with what is defended and what is residual, the cryptographic assumptions (including the GCM IV-uniqueness bound), the non-goals (endpoint security, metadata privacy from the server, availability, backward secrecy on removal, server-to-server, account legality), and the residual/open items. Linked from SPEC §12, SECURITY.md, README, and llms.txt. All prose follows the no-em-dash house rule. Conformance runner: 37/37.
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.
Two open-menu items from the conformance work. Both prose follows the no-em-dash house rule; conformance runner 37/37 locally.
Federation vectors
SPEC §8 (join handshake +
avp://addressing) had no vectors. Addsvectors/federation.json+examples/conformance/test/federation.test.ts:$defvalidation of the decoded object.avp://<host>/<repoId>URIs: parse/format, plain host andhost:port.vectors/index.json; SPEC §8.1 now pins the recommended minified encoding (decoders MUST accept any valid JSON with the required members); §11 lists the federation encodings.Threat model
THREATMODEL.md(the repo had SECURITY.md for reporting but no stated adversary model):Verified locally
vectors/index.jsoncoherence check passes withfederation.jsonadded.Menu remainder
Reference IdP + persistent server; vector generator script; negative "MUST-reject" vector bank; gRPC example; browser/WASM demo;
llms-full.txt; spec quardrails (size caps, idempotency,Retry-After).