When you are blocked on Commission
You will be able to get a task Commission has queued behind fifty others, without asking anyone to re-plan the quarter and without breaking a lock.
Audience: an engineer or a lead working alongside Commission on the same
project. Assumes: a project with a task graph, as built in
planning.md.
The problem this page exists for
Hand Commission a quarter and it works the graph in dependency order, in parallel, without stopping. That is the point of it. It also creates a failure mode that no single-player task tracker has:
Commission is doing X. I need X before I can start Y. So I am blocked on Commission — and Commission will not get to X for another fifty tasks.
Your queue and its queue are the same queue, and only one of you has a week that can be wasted. Reordering an agent’s work costs nothing; stalling an engineer costs the most expensive thing in the building. The default behaviour has that exchange rate backwards, so Commission gives you three ways to correct it.
Take them in order. The cheapest one that works is the right one.
1. Take it yourself
If you can do the work now, do it. Commission is not precious about which tasks are “its” — humans and agents claim from the same frontier, and a task you hold is one Commission will never offer to an agent.
commission claim myapp-3That is the whole intervention. The frontier recomputes, commission next stops
returning it, and no configuration changed. Prefer this whenever it is true.
2. Say you are blocked
You usually cannot do the work — that is why you are waiting on it. Say so:
commission need myapp-4 -m "the mobile client cannot start until this endpoint exists"myapp-4 goes to the front of the queue. The next commission next picks it and
says why:
next (unclaimed — pass --claim to take it): myapp-4
↑ ahead of the queue: priya is blocked on it — "the mobile client cannot start until this endpoint exists"Three things about that line are deliberate:
- It carries your reason. Commission reordering its own work with no explanation is indistinguishable from Commission being wrong. Anyone who asks “why is it doing that?” gets the answer without asking you.
- It carries your name. A queue-jump that is attributed is self-policing in a way an anonymous priority bump is not.
- It is not a priority change.
priorityis a permanent claim about the work. Being blocked is a state you leave, and it is about you, not the task.
You do not have to configure anything for this to work. A declared block short-circuits the project’s selection policy rather than joining it as another key, so it applies on projects that never configured one — which is most of them, and exactly the projects where “I need this” would otherwise go unheard.
If several people are blocked on the same task, each says so separately, with their own reason. A task stalling three people outranks one stalling one.
When it stops blocking you:
commission need myapp-4 --resolved -m "unblocked — the endpoint is in"Closing the task resolves everybody’s block automatically. You only need this when you got unblocked some other way.
3. When an agent is already holding it
The honest case. If Commission claimed the task ten minutes ago, nothing can
give it to you instantly — an agent mid-edit is not a process you can safely
interrupt. Declaring the block still helps, and commission need tells you
exactly what you are waiting for:
sam is blocked on myapp-2 — it goes to the front of the queue
claude:api is working it right now; their lease was cut to 2026-07-29T16:20:11Z so it frees up thenClaims are leases. Declaring a block truncates the holder’s lease to a short window instead of revoking it, so the holder finishes its current step and releases cleanly. Your wait is bounded by that window rather than by the rest of the queue — minutes, not the fifty tasks you started with.
The default lease is two hours for this reason: it is the worst case for anybody
who needs a held task, so it is sized for the person waiting rather than for the
session working. Teams whose sessions genuinely run longer raise it with
agentDefaults.lease, and any session doing real work extends its own with
commission heartbeat.
Seeing where it landed
The board shows the same thing the scheduler used, so you can check the block took effect rather than assuming it did:
commission board --project myappWhat not to do
commission release myapp-2 # refused: myapp-2 is held by claude:api, not youA release is only yours to make. Dropping somebody else’s live lease leaves two
sessions holding one task with neither of them told, which is the exact failure
the lease exists to prevent. --force exists for a genuinely wedged session and
records that it was forced — it is the wrong tool for “I want this sooner”,
which is what commission need is for.
An expired lease is nobody’s, so tidying one up needs no force at all.
The whole sequence
# can you just do it?
commission claim myapp-3
# no — say what you are blocked on, and why
commission need myapp-4 -m "the mobile client cannot start until this endpoint exists"
# see where it landed, and who else is waiting
commission board --project myapp
# once you are unblocked
commission need myapp-4 --resolved -m "unblocked — the endpoint is in"
This page is docs/guides/blocked.md in the Commission
repository, rendered in place — the site keeps no copy of it. The repository is private, so there is no edit link to follow.