Skip to content

Build master @ bc50cd5bunreleased — 31 commits past v1.282.0Last reviewed Last changed Grade fresh (aging >60d, stale >120d)Source / History

See Everything Waiting on You ​

The things that wait on the operator are spread out: open todo issues in every project's repo, and open briefs. bob asks reads them all and prints one list. It changes nothing. The issues stay the store, and the list is rebuilt from them on every run.

Terminal only.

1. List the asks ​

bash
bob asks
bob asks: 4 open asks in 2 projects (19 read)
sitting: phone — 2 min, 1 ask
p3-medium    9d   bodmail   todo   decide  2m   #412 TODO: approve the DNS change  https://github.com/paulirv/bodmail/issues/412  — Unblocks 1 item in the running bodmail plan.
sitting: farm-01 — 10 min, 1 ask
p2-high      12d  bigbrain  todo   do      10m  #3479 TODO: rotate the deploy token  https://github.com/paulirv/bigbrain/issues/3479
not yet estimated: 2 asks with no minutes or place stated
p2-high      20d  bodmail   brief  #398 Brief: mobile area  https://github.com/paulirv/bodmail/issues/398
-            3d   bigbrain  todo   #3502 TODO: pick a name  https://github.com/paulirv/bigbrain/issues/3502

The asks are grouped into sittings. A sitting is everything you can clear in one place: a machine, or your phone. Its heading gives the place and the total minutes. Inside a sitting the decisions come first, then the commands, then the checks.

The asks that hold up work come first. An ask that blocks an item of a flight plan BoB is running now is at the top. Next come the asks that block a plan ready to start, then the ones that block approved work with no plan yet. Each of those lines ends with what it unblocks. The asks that block nothing follow, by priority and then oldest first. The sitting that holds the first ask on the list is printed first.

Each line is one ask: its priority, its age in days, its project, whether it is a todo or a brief, what it asks for and how many minutes it takes, its number and title, and its link. An ask with no priority label shows -.

The last group, not yet estimated, holds the asks that do not state their minutes or their place: briefs, and to-dos filed before the ask fields were required. They are in the same order as the rest of the list.

The list is capped by the attention budget: 5 asks per project and 15 for the whole portfolio, unless a manifest says otherwise. When more are open, the first line says how many are waiting behind the budget. To see those too:

bash
bob asks --all

2. Know what is on the list ​

An ask is one of two things:

  • an open todo issue that does not carry the completed label
  • an open brief issue in state brief:new or brief:acting

These are never listed: a todo that carries completed, a closed issue, and a brief in brief:done or brief:parked.

The projects read are the registered, active ones in projects.json that are checked out on this machine and have a GitHub origin. A project marked "active": false is not read.

3. Clear an ask ​

Open the link and do what the ask says. Then mark it done:

bash
bob asks done acme/beta#7

A to-do gets the completed label and a brief moves to brief:done. The next bob asks no longer lists it.

To put an ask off until a later day:

bash
bob asks snooze acme/beta#7 --until 2026-10-20

It disappears from bob asks until that date, then comes back. A page can give the same two answers through the brief-tick Worker.

4. Check the list is complete ​

A project that could not be read is never left out silently. It gets its own line, with the reason:

gap: flows (paulirv/flows) not read — forge rate-limited: API rate limit exceeded

The asks from every other project are still listed, and the exit code is still 0. Run bob asks again later to get the missing project. If no project could be read at all, the command says so and exits 3. It never prints an empty list in that case.

5. Feed the list to a script ​

bash
bob asks --json

This prints one bob-asks/1 document with the same rows, a count per project and the same gaps. The keys are in the bob asks reference.

6. Clear out the asks that no longer matter ​

An old to-do can outlive its reason: the issues it was blocking get closed some other way, and the to-do stays open. To see which ones that has happened to:

bash
bob asks recheck
bob asks recheck: 2 to-dos untouched for longer than 30 days — 1 moot, 1 still needed
moot    45d  bodmail   #371 TODO: approve the old DNS change  https://github.com/paulirv/bodmail/issues/371 — every issue it names is closed: #352
needed  45d  bigbrain  #3479 TODO: rotate the deploy token  https://github.com/paulirv/bigbrain/issues/3479 — open: #3471
report only — pass --apply to close the moot to-dos and record the re-check on the rest

This changes nothing. It lists each to-do nobody has touched for more than 30 days. moot means every issue the to-do names is closed. needed means one is still open, or the to-do names no issue.

To act on it:

bash
bob asks recheck --apply

Each moot to-do is closed, with a comment naming the closed issues. Each to-do still needed gets a comment with the date, and is left alone for another 30 days. If a closed to-do was still needed after all, reopen it.

To keep a to-do from ever being closed this way, put <!-- not-stale: 2026-10-03 why --> in its body.