Skip to main content

Issues — intake, sizing & queuing

The Issues screen at /issues is where your backlog becomes work for the loop. Ouroboros mirrors every open issue from your enabled repositories, sizes each one as it arrives, and suggests the workflow and model to run it with — before you ever ask. You read the estimates here, and you choose which issues go into the queue.

Issue intake: every open issue, sized before you ask, with its suggested workflow and model.
The Issues screen for Acme Robotics headed 9 open issues, 7 already sized, with Re-estimate all and Queue 0 selected buttons, a filter bar of repository, label chips, state, sort and search, and the backlog table showing each issue's effort chip and confidence, suggested workflow and routed model, beside an empty Issue detail panel.The Issues screen for Acme Robotics headed 9 open issues, 7 already sized, with Re-estimate all and Queue 0 selected buttons, a filter bar of repository, label chips, state, sort and search, and the backlog table showing each issue's effort chip and confidence, suggested workflow and routed model, beside an empty Issue detail panel.

Where the backlog comes from​

Ouroboros reads issues from GitHub, from every repository enabled for your workspace. The heading counts what is in scope — for example 9 open issues. 7 already sized. — and the Backlog · as Ouroboros sees it card shows when it last synced: synced 40s ago, syncing… or never synced. Choose that tag to sync now; owners, admins and members can, a viewer cannot.

Ouroboros keeps every ticket in one tracker-neutral shape, so the screens work the same whatever the source. Today GitHub is the only tracker you can connect: Jira, Linear and GitLab show as coming soon. Connecting a tracker and enabling repositories is an administrator's job — see Ticket sources & repositories.

When the sync cannot run, a banner above the table says why, starting Sync paused —:

BannerWhat to do
Sync paused — no GitHub token is connected.An owner or admin sets the workspace's backlog token — see Setting the backlog token
Sync paused — GitHub rejected the token.The backlog token has expired or lost access; an owner or admin replaces it
Sync paused — a repository could not be found.An enabled repository no longer exists or the token cannot see it; an owner or admin checks the enabled repositories
Sync paused — GitHub's rate limit is reached.Nothing — the banner says when it resumes
Sync paused — GitHub is not answering.Wait, then choose Check again
Sync paused — no repository is enabled.An owner or admin enables repositories in step 2 of sign-in

The issues already mirrored stay on screen while sync is paused, and you can still queue them.

Filtering the backlog​

The filter bar above the table narrows what you see:

  • Repository — All repos, or one repository. This follows the focus repository in the header's workspace chip, and choosing one here changes the chip too — see Finding your way.
  • Label chips — choose a label to show only issues that carry it. Choose several to show issues that carry all of them; a chosen chip shows ✓.
  • State — Open (the default), Closed or All.
  • Sort — Sort: estimated effort (the default), Sort: confidence, Sort: updated or Sort: number.
  • Search — type part of a title, a #number or a label.

Clear all returns to the default view. Every filter is part of the address — for example /issues?labels=bug&sort=confidence — so you can bookmark or share a view. The table shows 25 issues a page and refreshes itself every 15 seconds.

Reading a size and estimate​

Each row shows the issue, its labels and four columns:

  • Effort — a size from XS to XL, and beside it the confidence: how sure the estimator is of that size, as a percentage.
  • Suggested workflow — the workflow the estimate picked for this kind of work, such as standard-fix, feature-loop, docs-loop or deps-refresh.
  • Routed model — the model class the issue would run on.
  • Status — where the issue stands:
StatusMeaning
unsizedMirrored, but not picked up by the estimator yet
estimating…Being sized right now; the row fills in when it is done
sizedSized with enough confidence to queue
needs humanThe estimator was not confident enough, or produced no estimate
queuedAlready in the queue

Select a row — click it, or press Enter on it — to open its sizing story in the Issue detail panel.

An issue's sizing story: the estimate, its confidence and regression risk, and how it was produced.
The Issue detail panel for #484 Motor PID integral windup on wheel stall, marked sized, with its description, the AI work breakdown listing two files, about 150k tokens, a 10–16 minute cycle time, effort M at 88% confidence, medium regression risk with its reason, the standard-fix workflow and cursor/composer-2 model, the Queue for loop, Re-estimate and Open on GitHub buttons, and the estimation trace.The Issue detail panel for #484 Motor PID integral windup on wheel stall, marked sized, with its description, the AI work breakdown listing two files, about 150k tokens, a 10–16 minute cycle time, effort M at 88% confidence, medium regression risk with its reason, the standard-fix workflow and cursor/composer-2 model, the Queue for loop, Re-estimate and Open on GitHub buttons, and the estimation trace.

The panel shows the issue's description and an AI Work Breakdown:

  • Estimated files touched — the files the change is expected to touch. An estimate that names no files says so.
  • Est. tokens and Est. cycle time — how much model work the loop is expected to spend on the issue, and how long the loop is expected to take.
  • Effort — the size and its confidence again (conf 88%).
  • Regression risk — low, medium or high, with a sentence on why.
  • The suggested workflow and the routed model.

The Estimation trace at the bottom says which estimator sized the issue and when (for example sized by heuristic-v0 · 2m ago), and which signals it used. Each re-estimate is kept as a new version beside the last, shown as v2, v3 and so on.

Where confidence comes from​

The estimator sizes an issue from what the issue says: its title, its description and its labels. Signals that agree raise the confidence; a missing description or no useful labels lower it. An issue sized below the workspace's confidence floor — 70% unless your administrator changed OURO_ESTIMATION_CONFIDENCE_FLOOR — is marked needs human rather than sized. The estimate is still shown, so you can see what the estimator thought.

Re-estimating​

  • Re-estimate in the detail panel sizes that one issue again. Use it after you improve the issue on GitHub — a clearer description or better labels.
  • Re-estimate all at the top of the screen sizes every issue the workspace mirrors, open or closed, whatever the filters show. It asks first — Re-estimate the whole backlog? — and leaves alone any issue already being estimated. Only owners and admins can use it.

Queueing issues for the loop​

Queueing puts an issue in line for a loop. It moves to Up next in queue on the dashboard, and a loop picks it up when one is free. Owners, admins and members can queue; a viewer can read the backlog but not fill the queue.

One issue. Open it in the detail panel and choose Queue for loop. It runs under its suggested workflow.

Several issues. Tick their rows — or press Space on a row — and the selection bar appears along the bottom.

Three issues ticked: the selection bar totals their estimate and queues them under a workflow.
The backlog with #484, #489 and #487 ticked and, along the bottom, the selection bar reading 3 issues selected, est. 3h 40m combined autonomous work, with an Assign workflow menu button and a Queue → suggested button.The backlog with #484, #489 and #487 ticked and, along the bottom, the selection bar reading 3 issues selected, est. 3h 40m combined autonomous work, with an Assign workflow menu button and a Queue → suggested button.
  1. The bar counts the selection and adds up its estimates: 3 issues selected · est. 3h 40m combined autonomous work.
  2. To pick the workflow, choose Assign workflow ▾. Use suggested (the default) runs each issue under the workflow its own estimate suggested. Choose a named workflow to run every selected issue under that one.
  3. Choose Queue → …. The button names the workflow: Queue → suggested when the issues' suggestions differ.

When it works you see Queued 3 issues · est. 3h 40m combined autonomous work. with a link, See them on the dashboard →, and the selection clears. Queue N selected at the top of the screen does the same for the current selection, each issue under its suggested workflow.

When an issue cannot be queued​

The loop only takes sized issues. A selection is queued whole or not at all: if one issue in it is refused, Nothing was queued opens and lists why, issue by issue.

Reason shownWhyWhat to do
has not been sized yetThe estimator has not reached itChoose Re-estimate, or wait
is still being sizedIts estimate is runningWait for the row to fill in
needs a human before it can be queuedIts confidence is under the floor, or it has no estimateImprove the issue on GitHub, then Re-estimate
has lost its estimate — re-estimate it firstIts estimate is missingChoose Re-estimate
is already in the queueSomeone queued it alreadyNothing to do
is two issues in this selectionTwo repositories share that issue number, and the queue holds each number onceDeselect one of them
is not in this workspaceIt was removed from the workspaceDeselect it

Choose Deselect N issues to drop the refused issues from the selection and queue the rest. In the detail panel, Queue for loop is greyed out for an issue that cannot be queued; hover over it to read why.

What can go wrong​

  • The table is empty with "Connect GitHub to watch your backlog". The workspace has no GitHub token yet. An owner or admin chooses Open settings to add one.
  • "Enable an org and repos to begin". A token is connected but no repository is enabled; an owner or admin chooses Choose repos.
  • "No issues match this filter". Your filters exclude everything; choose Clear filters.
  • An issue you just opened on GitHub is missing. The next sync brings it in; choose the sync tag to sync now.
  • "This workspace has asked for too many estimates in the last minute." Re-estimates are rate-limited; wait the seconds it names.
  • "The backlog stopped refreshing." The screen lost contact with the service; it keeps showing the last rows it had and recovers on its own.