You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
net: derive gossip topic from team root; drop --topic flag
The gossip topic name was a separate string the user picked
and coordinated with invitees, alongside the team root pubkey
they already had to share for auth. Two identifiers per team
that were effectively one — and a footgun: invitee types
`--topic our-team` instead of `our-team-graph`, joins a
different gossip mesh, sees no live HEAD updates, no error.
Collapse them. The team root is already 32 uniform bytes (an
ed25519 pubkey, perfect as a `TopicId` directly — no hashing
needed). One identifier per team handles both:
- cap chain verification (auth)
- gossip mesh rendezvous (live HEAD updates)
Breaking changes:
* triblespace-net: `PeerConfig.gossip_topic: Option<String>` →
`PeerConfig.gossip: bool`. `gossip = true` derives the topic
from `team_root.to_bytes()`. `gossip = false` is serve/pull-
only (no subscription). Migration: `Some(_)` → `true`,
`None` → `false`.
* trible: `pile net sync --topic NAME` flag removed. Sync
always joins the team's gossip mesh, identified by
`TRIBLE_TEAM_ROOT` (or single-user fallback to the node's
own pubkey when unset).
Doc/example updates: triblespace-net/README, trible/README,
book/src/distributed-sync, book/src/capability-auth.
Tests green: `triblespace-net` unit (3) + integration (2),
`trible` bin (1). Network-touching e2e tests not exercised in
this commit — their PeerConfig sites don't reference the old
field name.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: trible/CHANGELOG.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file.
4
4
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
7
+
## Unreleased
8
+
9
+
### Removed (breaking)
10
+
-**`pile net sync --topic` flag.** The gossip mesh is now
11
+
identified by `TRIBLE_TEAM_ROOT` directly — every team has
12
+
exactly one gossip mesh, derived from its identity. Users no
13
+
longer pick + coordinate a separate topic string with
14
+
invitees. Migration: drop the `--topic` flag from any sync
15
+
invocation; the mesh topic is now always the team root
16
+
pubkey. Falls back to single-user team-of-one (the node's
Copy file name to clipboardExpand all lines: trible/README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -103,7 +103,7 @@ their own team root).
103
103
104
104
-`pile net identity [--key PATH]` — print this node's iroh identity (auto-generates a key if missing).
105
105
-`pile net status [--key PATH]` — print the auth configuration this node would present on `OP_AUTH`: node id, team root, self_cap, and where each value comes from (env var vs fallback). For debugging stuck-auth scenarios.
106
-
-`pile net sync <PILE> [--peers ID,...] [--topic NAME] [--key PATH]` — long-running bidirectional sync. Without `--topic`, serves only (accepts direct pulls but doesn't gossip). With `--topic`, joins the gossip mesh and auto-merges incoming tracking branches into same-named local ones every tick. Reads `TRIBLE_TEAM_ROOT` and `TRIBLE_TEAM_CAP` env varsfor multi-user team operation.
106
+
-`pile net sync <PILE> [--peers ID,...] [--key PATH]` — long-running bidirectional sync on the team's gossip mesh. The mesh is identified by the team root pubkey directly (no separate topic argument): every team has exactly one mesh, derived from its identity. Auto-merges incoming tracking branches into same-named local ones every tick. Reads `TRIBLE_TEAM_ROOT` and `TRIBLE_TEAM_CAP` env vars; falls back to the node's own pubkey for single-user / team-of-one workflows.
107
107
-`pile net pull <PILE> <REMOTE> --branch NAME [--key PATH]` — one-shot pull of a named branch from a specific peer (REMOTE is the peer's iroh node id, 64-char hex). Pull-only mode — no gossip subscription, direct QUIC + DHT fetch, materializes a tracking branch and merges into local. Same env-var fallback as `sync`.
0 commit comments