Skip to content

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.

Terminal window
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:

Terminal window
bob asks --all

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.

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

Terminal window
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:

Terminal window
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.

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.

Terminal window
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

Section titled “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:

Terminal window
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:

Terminal window
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.