Code for Breakfast

beady-eye v0.27.0

Waiting on the supplier: in beady-eye 0.27, a bead can wait on someone else’s issue or release

In beady-eye 0.27.0, bdi gates settles two new kinds of wait. A gh:issue gate closes once its issue closes, and a gh:release gate closes once its repository publishes a release after the gate was made. Both close on the same look that settles pull-request gates, so the bead behind them is ready without anyone going back to check.

brew upgrade codeforbreakfast/tap/bdi
# or
cargo install beady-eye
Contactless waits on the card reader maker’s issue #31, and the tea timer waits on the kettle’s next firmware. One look from bdi gates finds the issue closed and v2.1.0 published, and closes both gates. The next look at the tree shows them ticked off.
Read the demo as text
▾ spoon  ✓ 4s ago                                                                                   1/9  2 agents
  ├── ○ spoon-1    The caff takes card payments                                                               1/5
  │   ├── ◐ .1         Wire the card reader to the till                                         ◍ wK:p2 · working
  │   ├── ○ .2         Take contactless over £100                                                             0/2
  │   │   └┄┄ ○ spoon-ah0  Gate: gh:issue 31
  │   └── ✓ .3         Price the menu in pence
  └── ○ spoon-2    The tea timer forgets the second sugar                                                     0/4
      ├── ◐ .1         Count sugars per cup, not per order                                      ◍ wK:p3 · working
      └── ○ .2         Switch the timer to the new kettle firmware                                            0/2
          └┄┄ ○ spoon-zb5  Gate: gh:release
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  no pane · select a bead to see what is on it
a all   ? keys   / find   q quit

spoon $ bdi
spoon $ bdi gates
bdi gates: settling the gh:pr, gh:issue and gh:release gates of 1 project, for every owner's repositories, every 60s
brewmaster/kettle published v2.1.0: spoon closed gate spoon-zb5
tapwell/reader#31 closed: spoon closed gate spoon-ah0
^C
spoon $

▾ spoon  ✓ 8s ago                                                                                   3/9  2 agents
  ├── ○ spoon-1    The caff takes card payments                                                               2/5
  │   ├── ◐ .1         Wire the card reader to the till                                         ◍ wK:p2 · working
  │   ├── ○ .2         Take contactless over £100                                                             1/2
  │   │   └┄┄ ✓ spoon-ah0  Gate: gh:issue 31
  │   └── ✓ .3         Price the menu in pence
  └── ○ spoon-2    The tea timer forgets the second sugar                                                     1/4
      ├── ◐ .1         Count sugars per cup, not per order                                      ◍ wK:p3 · working
      └── ○ .2         Switch the timer to the new kettle firmware                                            1/2
          └┄┄ ✓ spoon-zb5  Gate: gh:release
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  no pane · nobody is working this bead
a all   ? keys   / find   q quit

Putting an order in with the supplier

Record the wait as a gate, and name the repository in its repo metadata, as for a pull-request gate. An issue gate takes the issue’s number. A release gate takes nothing, because any release after it was made will do:

bd gate create --type=gh:issue --blocks spoon-1.2 --await-id=31
bd gate create --type=gh:release --blocks spoon-2.2

The bdi gates you already run picks them up. The configuration reference says what each one asks GitHub. Nothing needs changing to upgrade.

A table for one

Press F, or name a bead on the command line, and the board now draws only that work. The line that stood in for the project’s other trees, counting their agents and anomalies, is gone. Going to or searching for a bead outside the focus finds nothing. F again puts the whole forest back. A focused board builds only what it draws, so it spends less CPU and holds less memory.

Reading the board from another branch

A host that holds none of a project’s checkouts can still draw its trees. A [[projects]] entry can name its tracker’s database in place of a path, and a new [dolt] table names the Dolt server it sits on. The board, the watcher and both pseudopods all read it. The configuration reference has the tables.

Orders go to the right kitchen

bdi bd now writes only to the project’s own tracker. It no longer passes on the BEADS_ and BD_ variables its caller exported, bar the credential and the actor, so an exported database cannot redirect the answer it carries.

The supplier rang. Your order’s in. Order up.

Cooked in the same kitchen

Code For Breakfast built this. It cooks for clients too.

Code For Breakfast Ltd is a UK software consultancy, based in Reading and working remote-first. The kitchen that made this ships well-tested software for clients, fast, and builds and operates real multi-agent AI systems.