From 804dc75722d70d942b5359c31f4b373f0bbcb9d5 Mon Sep 17 00:00:00 2001 From: Steve Yegge Date: Tue, 23 Dec 2025 14:29:13 -0800 Subject: [PATCH] Update beads-data-plane.md with three-tier architecture MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Renamed from "Two-Level" to "Three-Tier" to include wisps - Added rig wisps tier (.beads-wisp/) for ephemeral patrol state - Clarified deacon uses town beads (not rig beads) - Added git tracking status for each tier Related: gt-ci84 (deacon wisp storage bug) πŸ€– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- docs/beads-data-plane.md | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/docs/beads-data-plane.md b/docs/beads-data-plane.md index 642126c2..7423f25e 100644 --- a/docs/beads-data-plane.md +++ b/docs/beads-data-plane.md @@ -112,18 +112,20 @@ How does the system know if an issue is mail or work? The `from:` label is the canonical discriminator. Regular issues don't have senders. -## Two-Level Beads Architecture +## Three-Tier Beads Architecture -Gas Town uses beads at two levels: +Gas Town uses beads at three tiers - two persistent, one ephemeral: ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ TOWN LEVEL: ~/gt/.beads/ β”‚ β”‚ ───────────────────────────────────────────────────────── β”‚ β”‚ Prefix: hq-* β”‚ +β”‚ Git tracked: Yes β”‚ β”‚ Contains: β”‚ β”‚ - All mail (cross-agent communication) β”‚ β”‚ - Mayor coordination issues β”‚ +β”‚ - Deacon patrol wisps (town-level ephemeral work) β”‚ β”‚ - Cross-rig work items β”‚ β”‚ Sync: Direct commit to main (single location) β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ @@ -131,21 +133,37 @@ Gas Town uses beads at two levels: β”‚ gt mail commands auto-route here β–Ό β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” -β”‚ RIG LEVEL: ~/gt/gastown/crew/max/.beads/ β”‚ +β”‚ RIG LEVEL: ~/gt//crew//.beads/ β”‚ β”‚ ───────────────────────────────────────────────────────── β”‚ -β”‚ Prefix: gt-* β”‚ +β”‚ Prefix: gt-* (or rig-specific) β”‚ +β”‚ Git tracked: Yes (via beads-sync branch) β”‚ β”‚ Contains: β”‚ β”‚ - Project issues (bugs, features, tasks) β”‚ β”‚ - Molecules (work patterns) β”‚ -β”‚ - Agent hook states β”‚ +β”‚ - Agent hook states (pinned molecules) β”‚ β”‚ Sync: Via beads-sync branch (multiple clones) β”‚ +β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ + β”‚ + β”‚ Ephemeral patrol state (not synced) + β–Ό +β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” +β”‚ RIG WISPS: ~/gt//.beads-wisp/ β”‚ +β”‚ ───────────────────────────────────────────────────────── β”‚ +β”‚ Git tracked: NO (gitignored) β”‚ +β”‚ Contains: β”‚ +β”‚ - Witness patrol cycles β”‚ +β”‚ - Refinery patrol cycles β”‚ +β”‚ - Any rig-level ephemeral molecule execution β”‚ +β”‚ Lifecycle: Created β†’ Executed β†’ Squashed to digest β†’ Deletedβ”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` Key points: -- **Mail always uses town beads** (`~/gt/.beads/`) - `gt mail` routes automatically +- **Mail uses town beads** (`~/gt/.beads/`) - `gt mail` routes automatically +- **Deacon uses town beads** - town-level role, no rig dependency - **Project work uses rig beads** (in your clone) - `bd` commands use local `.beads/` -- **Different sync strategies**: Town is single-writer, rig uses branch-based sync +- **Patrol wisps use rig wisp storage** - ephemeral, never synced, squashed after cycles +- **Different sync strategies**: Town is single-writer, rig uses branch-based sync, wisps don't sync ## The Query Model