From 77425edfdf1303e856e2432d786ee8543b715298 Mon Sep 17 00:00:00 2001 From: Josh Mabry Date: Fri, 12 Jun 2026 23:54:05 -0700 Subject: [PATCH] fix(docs): correct the beads-rust reference + the stale "SQLite data model" claim MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two accuracy fixes (no behaviour change): - The board IS a projection over beads (store.py only shells `br` — no separate store; beads owns the .beads/*.db + JSONL), but __init__.py's module docstring still called it "a SQLite data model" — a leftover from before the beads migration (D8) that directly contradicted store.py. Fixed to say projection-over-beads. - The dependency is **beads-rust** (`br`, crate `beads_rust`), NOT the stale write-broken homebrew `bd`. The README linked the wrong repo (steveyegge/beads); point it at Dicklesworthstone/beads_rust + `cargo install beads_rust`, warn off `bd`, and make the store's not-on-PATH error say the same. The code was already correct (BR defaults to `br`, BR_BIN override); this only fixes docs + one error message. Co-Authored-By: Claude Fable 5 --- README.md | 7 +++++-- __init__.py | 8 +++++--- store.py | 5 ++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 9d056a1..b64914b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Project Board — coding orchestration plugin A **protoAgent plugin** that turns an idea into merged PRs: a lean 6-state board -backed by [beads](https://github.com/steveyegge/beads) (`br`), an **ACP spawn loop** +backed by [beads-rust](https://github.com/Dicklesworthstone/beads_rust) (`br`), an **ACP spawn loop** that dispatches a coding agent per feature into an isolated git worktree, an adversarial **planning layer**, and a Kanban/list **console view**. @@ -57,7 +57,10 @@ spawn primitive — it does not reimplement it. ## Requirements - **protoAgent ≥ 0.27.0** (console views + the ACP delegate teardown). -- The **`br`** (beads) CLI on `PATH` — the board's DAG/status store. +- **beads-rust** — the **`br`** CLI on `PATH`, the board's DAG/status store. Install + with `cargo install beads_rust`. NOT the stale homebrew `bd` (a different, write- + broken package); the `bd-`/`br-` prefix in issue ids is just the workspace + namespace. Override the binary with `BR_BIN` if needed. - `git` + the **`gh`** CLI (authenticated) for branch push + PR creation. - The **`delegates`** plugin enabled, with an **`acp`** coder delegate declared (e.g. `proto`). A reviewer `a2a` delegate is optional (review dispatch is off by diff --git a/__init__.py b/__init__.py index bed79fc..666470f 100644 --- a/__init__.py +++ b/__init__.py @@ -1,8 +1,10 @@ """project_board — lean 6-state coding board + ACP spawn loop. -Composition over construction: the board is a SQLite data model + an HTTP API + -the orchestration loop, and the loop dispatches through the already-built -``delegates`` plugin (ADR 0024/0025) — it does NOT reimplement the spawn primitive. +Composition over construction: the board is a **projection over beads** (`br`) — no +separate store of its own (store.py shells the `br` CLI; beads owns the `.beads/*.db` ++ JSONL) — plus an HTTP API and the orchestration loop, which dispatches through the +already-built ``delegates`` plugin (ADR 0024/0025) — it does NOT reimplement the +spawn primitive. Reach used (no core edits): ``register_router`` (the board API), ``register_surface`` (the background puller), ``register_tool`` (board ops the agent can drive headlessly). diff --git a/store.py b/store.py index 3b7c66c..a4a05a5 100644 --- a/store.py +++ b/store.py @@ -67,7 +67,10 @@ class BeadsBoard: def __init__(self, db: str | None = None, actor: str = "agent", repo: str = ".", base_branch: str = "main"): if not shutil.which(BR): - raise BoardError(f"beads CLI {BR!r} not on PATH — install beads or set BR_BIN") + raise BoardError( + f"beads CLI {BR!r} not on PATH — install beads-rust (`cargo install beads_rust`), " + "not the homebrew `bd`, or set BR_BIN" + ) self.db = db or None self.actor = actor self.repo = repo