12vectors / bench docs for 0.4-alpha
bench docs GitHub ↗
ConceptsTeam mode

Team mode

BOARD_SYNC makes origin/main the truth and every board a converging replica: moves commit and push themselves, and a beat pulls what the other boards published.

BOARD_SYNC=1 makes origin/main the truth and every board a converging replica. It implies BOARD_COMMIT_MOVES — a move that never commits has nothing to publish — and off (the default) nothing below runs: no fetch, no push, no thread, no behaviour change at all.

State syncs; reactions don't

The board does not only render state, it reacts to it: a card entering review opens a PR. With N replicas watching one truth, a reaction must fire on exactly one of them, so only the board whose user made the move acts on it. A move a pull applied renders and narrates — attributed to its author — and triggers nothing. watch.py answers the question, since that is where the attribution already lives, and every future automation hung off a stage transition inherits it: am I the actor?

The file-carried gates stay in place behind that rule, so the rare double is harmless rather than loud: the **PR:** line before gh pr create (and a create that races anyway adopts the open PR), an existing branch and worktree before a work launch. Both layers, deliberately — the actor-only rule prevents the duplication, idempotency survives it.

Two consequences you can see:

Two disciplines make this safe, and team mode assumes both:

One board fetches twice a minute at the default interval; N boards make N times that. Against GitHub this is nothing, but on a rate-limited or metered remote raise BOARD_SYNC_INTERVAL.