docs(design): membership & identity convergence — nessie rides agent-mesh; routing corrected - #111
Open
hartsock wants to merge 1 commit into
Open
docs(design): membership & identity convergence — nessie rides agent-mesh; routing corrected#111hartsock wants to merge 1 commit into
hartsock wants to merge 1 commit into
Conversation
…mesh, routing corrected
Resolves the "coordinate swarm-join with agent-mesh before building a router"
decision, grounded against the REAL present-day types of both systems (read
directly, not assumed) and the live newt-web/newt-agent membership story
(web-authz epic #1354 / #1365, agent-bridle 0.7.13).
New docs/design/membership-and-identity.md pins the three-layer stack and the
seam mapping:
- L1 operator = agent-bridle HumanPrincipal (OIDC issuer/subject/groups)
- L1<->L2 edge = agent-bridle PrincipalBinding (signed, mesh AgentKey,
Fingerprint, issued_generation = causal not wall-clock)
- L2 peer = agent-mesh AgentKey/Fingerprint/CertChain/MeshSigner; membership
is the implicit "auto-team under one user_fp" (no roster/CRDT/DHT);
swarm-join = mesh-join (ensure_trustable handshake)
- L3 content-location = nessie ContentRouter, the ONE net-new primitive
nessie's opaque identity newtypes map straight onto mesh types: SignerId <-
Fingerprint bytes, SignatureVerifier/AttestationSigner <- AgentKey/MeshSigner
(retiring DevSelfSigner/TestKeyring from non-test paths), k-of-n = k distinct
Fingerprints under one user_fp, attestation GC by issued_generation +
CertChain::verify_at(gen) (answers the design's open "attestation GC" question).
**Routing corrected.** The fleet's fabric is iroh-QUIC + mDNS + cert-chain
membership — NOT NATS, NOT libp2p (async-nats is only a comparison dev-dep in
agent-mesh). So the primary ContentRouter is a mesh-native Bus router (signed
provider records on a Topic), NATS becomes an alternative for NATS-running
environments, and Kademlia/DHT stays a later nessie-specific open-swarm variant
(the mesh itself declined a DHT). The p2p-cas-swarm.md routing section, the
implementation-status tracker, the closing prose, and the attestation-GC open
question are all updated to match; the ContentRouter seam is unchanged.
Convergence bonus flagged: nessie's AC attestation-CRDT is structurally the
same primitive as the unbuilt agent-mesh-store RFC (per-writer signed
BLAKE3-chained logs + head-vector gossip) — an opportunity to share one
signed-log-over-a-bus-topic substrate rather than build two.
Co-authored-by: Shawn Hartsock <[email protected]>
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.
Summary
Resolves the "coordinate swarm-join with agent-mesh before building a router" decision — grounded against the real, present-day types of agent-mesh and agent-bridle (read directly), plus the live newt-web/newt-agent membership story (web-authz epic newt-agent#1354 / #1365, agent-bridle 0.7.13).
New
docs/design/membership-and-identity.mdpins a three-layer stack in which nessie invents no identity and no membership:HumanPrincipal { issuer, subject, email, groups }PrincipalBinding(signed, meshAgentKey,Fingerprint,issued_generation)AgentKey/Fingerprint/CertChain/MeshSigner; auto-team under oneuser_fpContentRouter— the one net-new primitivenessie's opaque identity newtypes map straight onto mesh types:
SignerId ← Fingerprintbytes;SignatureVerifier/AttestationSigner ← AgentKey/MeshSigner(retiringDevSelfSigner/TestKeyringfrom non-test paths);k-of-n=kdistinctFingerprints under oneuser_fp; attestation GC byissued_generation+CertChain::verify_at(gen)— which answers the design's open "attestation garbage collection" question. Swarm-join = mesh-join (ensure_trustablehandshake); no roster.The correction
The fleet's fabric is iroh-QUIC + mDNS + cert-chain membership — NOT NATS, NOT libp2p (async-nats is only a comparison dev-dep in agent-mesh). So the earlier "settled: hybrid NATS + Kademlia, both first-class" is revised:
Busrouter (signed provider records onTopic(user_fp, "nessie/providers/v1")).The
ContentRouterseam is unchanged; only the ranking of implementations moves toward the fabric that exists.p2p-cas-swarm.md's routing section, tracker rows, closing prose, and the attestation-GC open question are all updated to match.Convergence bonus flagged: nessie's AC attestation-CRDT is structurally the same primitive as the unbuilt
agent-mesh-storeRFC (per-writer signed BLAKE3-chained logs + head-vector gossip) — an opportunity to share one signed-log-over-a-bus-topic substrate rather than build two.Test plan
Docs-only (no code).
just checkpasses trivially (no Rust changed); the design tracker + prose are internally consistent and cross-linked.Note for review
This revises a previously-"settled" routing decision based on grounding — surfaced explicitly for your call. No routers are built here; this is the coordination the "agent-mesh first" choice asked for. Implementation waits on a running mesh + the shared-log conversation with agent-mesh.
risk:low — documentation only.