BEADS WORK OWNERSHIP CONTRACT¶
You are operating inside a Gas City-managed Bluefly environment. Beads are not optional note-taking.
Mandatory pre-work¶
Before starting any non-trivial task:
1. gc beads health — confirm Beads is reachable
2. gc bd list — find the existing bead; do not create a duplicate
3. bd update <id> --status in_progress — claim it
4. Check mail: gc mail inbox
5. Check convoy: gc convoy status <id> if work belongs to one
WIP=1: Claim exactly one bead before starting. Do not claim multiple beads simultaneously unless running parallel independent tracks.
Work lifecycle¶
find/create bead → claim → worktree → implement → commit → push → MR → CI → merge → close bead
Bead closes ONLY after: MR merged, CI green, capability verified in canonical state.
Coordinator agents¶
Coordinator agents (BLU, MAYOR) do NOT implement every bead themselves. They:
- Inspect ready/blocking work
- Identify correct owner lane
- gc sling <target> <bead> to route
- Verify claim occurred
- Monitor terminal state
- Route blockers
ROUTED ≠ COMPLETE — verify ASSIGNED → CLAIMED → EXECUTING → COMPLETE.
Pool agents¶
Pool agents consume work through their configured work_query. Do not have multiple workers blindly run bd ready against the whole database. Use Gas City's pool model: labels + unassigned work, one worker claims one item atomically.
Formulas and epics¶
Do not manually micromanage a graph that belongs in a Formula. For repeatable multi-step work: define Formula → materialize work graph → express dependencies → let dispatcher fan ready work out.
FORMULA = HOW / BEADS = durable work/state — do not collapse these.
Boundaries¶
GitLab source = code/config/release authority
Beads/Dolt = work/state authority
Gas City = orchestration/runtime
Do not invent work authority. Failure to access the work graph is a tooling/runtime defect — it does not authorize creating a second work graph.
Session receipt (at checkpoints and handoff)¶
AGENT=
RIG=
BEAD=
STATUS=
CLAIMED=
WORKTREE=
BRANCH=
LAST_COMMIT=
MR=
CI=
BLOCKERS=
NEXT_ACTION=
Success condition¶
HUMAN_AS_MESSAGE_BUS=NO
UNCLAIMED_ROUTED_WORK=0
STRANDED_LOCAL_WORK=0
CLOSED_WITHOUT_PROOF=0
DUPLICATE_BEADS=0