> ## Documentation Index
> Fetch the complete documentation index at: https://docs-stg.outerlayer.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# The Work page

> Find work items on the Work page, filter them with a search, and read the status that says whose turn each one is.

export const StatusIcon = ({status}) => {
  const ring = (extra = {}) => <circle cx="10" cy="10" r="7.2" fill="none" stroke="currentColor" strokeWidth="1.6" {...extra} />;
  const tick = "m6.6 10.2 2.3 2.3 4.6-5";
  const glyphs = {
    not_started: ring(),
    queued: ring({
      strokeDasharray: "2.6 2.4"
    }),
    not_picked_up: <>
        {ring({
      strokeDasharray: "2.6 2.4"
    })}
        <circle cx="10" cy="10" r="1.8" fill="currentColor" />
      </>,
    with_agent: <>
        {ring()}
        <path d="M10 5.2a4.8 4.8 0 0 1 0 9.6z" fill="currentColor" />
      </>,
    ready_for_review: <>
        {ring()}
        <circle cx="10" cy="10" r="4.8" fill="currentColor" />
      </>,
    approved: <>
        {ring()}
        <path d={tick} fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" />
      </>,
    done: <>
        <mask id="status-icon-done">
          <rect width="20" height="20" fill="white" />
          <path d={tick} fill="none" stroke="black" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" />
        </mask>
        <circle cx="10" cy="10" r="7.6" fill="currentColor" mask="url(#status-icon-done)" />
      </>,
    done_unverified: <>
        <mask id="status-icon-done-unverified">
          <rect width="20" height="20" fill="white" />
          <path d={tick} fill="none" stroke="black" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" />
          <circle cx="15.4" cy="4.6" r="3.6" fill="black" />
        </mask>
        <circle cx="10" cy="10" r="7.6" fill="currentColor" mask="url(#status-icon-done-unverified)" />
        <circle cx="15.4" cy="4.6" r="2.3" className="status-icon-dot" />
      </>,
    closed: <>
        {ring()}
        <path d="m5.6 14.4 8.8-8.8" stroke="currentColor" strokeWidth="1.6" />
      </>,
    needs_attention: <>
        <circle cx="10" cy="10" r="8.6" fill="currentColor" />
        <path d="M10 5.8v5" stroke="#FFFFFF" strokeWidth="1.9" strokeLinecap="round" />
        <circle cx="10" cy="14" r="1.1" fill="#FFFFFF" />
      </>
  };
  return <svg className={`status-icon status-icon-${status}`} viewBox="0 0 20 20" aria-hidden="true" focusable="false">
      {glyphs[status]}
    </svg>;
};

The Work page lists the factory's work items. Each row shows the item's status, its labels, its pull requests and its checks. Select a row to open the item's page, where you review it. See [Review and merge](/review-the-work).

## The Work list

The Work page lists the factory's items, newest activity first, 25 items per page. A search box above the list holds the whole filter as text, such as `is:open status:stuck sort:cost`. The filter is in the page address, so you can bookmark a filtered view or send it to someone.

A row whose pull request changes a file under `.outerlayer/` carries a caption. It reads *Rules for 4 repositories* when the pull request is in a control plane that governs three others, and *Changes this repository's rules* otherwise.

Write qualifiers and plain words in the box:

| Qualifier | Values | Matches |
| - | - | - |
| `is:` | `open`, `closed` | The tab the list shows. The default is `is:open`. |
| `status:` | `building`, `stuck`, `ready`, `with-agent`, `back`, `merging`, `shipped` | The item's review status: Building, Stuck, Ready for you, With agent, Back for you, Merging, Shipped. [Find an item by its status](#find-an-item-by-its-status) says which words find each status. |
| `repo:` | A repository, such as `outerlayerai/outerlayer` | The repository of the item's issue. |
| `builder:` | `local`, or a runner's name such as `ollie` | Who holds the item's live claim: a session on a person's machine (`local`), or that runner. |
| `by:` | `me`, or a person's name with spaces written as `-`, such as `kashif-ali` | The person the live claim names: the member running the session, or the member who asked the runner to build. |
| `label:` | A label from your tracker, such as `bug`. Write a space as `-`: `label:needs-design` matches "Needs design". | An issue label, read from GitHub, Linear or Jira. Case does not matter. |
| `sort:` | `newest` (the default), `oldest`, `cost` | The row order. `cost` puts the highest cost first and items with no known cost last. It sorts Open and Closed, and the menu calls it Most expensive. |

* A comma means OR within one qualifier: `status:stuck,back`.
* Different qualifiers combine with AND.
* A comma in `label:` also means OR: `label:bug,ui` matches an item with `bug`, `ui` or both. Two `label:` qualifiers mean AND: `label:bug label:ui` matches only an item with both labels.
* Any other word matches the item's title, its number (`239` or `#239`), its tracker key or one of its labels. Every word must match.
* An unknown qualifier is treated as a plain word.
* `builder:` and `by:` match only an item someone is building now.
* `by:me` matches by member name, so two members with the same name see each other's items.

A search on Closed covers every closed item, and Closed shows its exact total. On Closed, `status:` matches only `shipped`, and `builder:` and `by:` match nothing. `sort:cost` sorts Closed too, with items whose cost is unknown last.

You do not have to type qualifiers. The list's header has menus for Status, Repository, Label, Builder, Asked by and Sort. The Label menu lists the labels on the factory's items. Choosing an option adds it to the box, and choosing it again removes it. Each option shows how many items it would match. The Repository menu appears only when the factory's items come from more than one repository.

Each row shows up to three of the item's labels, and *+N* for the rest. Select a label on a row to add it to the box as `label:<name>`.

The Open and Closed tabs count the items that match the filter in each state.

The **Filters** menu beside the box replaces the box's text with one of five saved filters:

| Filter | Query |
| - | - |
| Everything open | `is:open` |
| Waiting on me | `is:open status:ready,back` |
| Stuck | `is:open status:stuck` |
| Asked by me | `is:open by:me` |
| Most expensive | `is:open sort:cost` |

When the box holds anything beyond `is:`, a line under it reads *N results · Clear current filters*. Clearing leaves only the `is:` qualifier. A filter that matches nothing shows *No work matches these filters* with a **Clear filters** button.

## Statuses

**One status** says whose turn it is, on the item's page and on the Work page:

* <StatusIcon status="not_started" />**Not started**: nothing has been linked to the item or asked of it yet.
* <StatusIcon status="queued" />**Queued**: a build, or your review notes, wait for a runner to take them.
* <StatusIcon status="not_picked_up" />**Not picked up**: a build, or your review notes, wait, and no runner can take them. No runner that checked in recently takes the item's repository, or every one that does is unavailable. The line under the title says which.
* <StatusIcon status="with_agent" />**With agent**: an agent is working on it.
* <StatusIcon status="ready_for_review" />**Ready for review**: the agent is done and a pull request is open. It is your turn even while checks run or fail. You can send the work back now. Approve waits for the checks and every proof.
* <StatusIcon status="approved" />**Approved**: a person approved it. It is ready to merge, or merging. It stays Approved for up to ten minutes after its pull request merges, while the issue the pull request closes catches up. The line under the title then reads *Merged, waiting for the issue to close*.
* <StatusIcon status="done" />**Done**: its pull request merged with no blocking verdict. The line under the title reads *Shipped*.
* <StatusIcon status="done_unverified" />**Done, unverified**: a pull request merged while its verdict still blocked, so some checks were never proven. The mark is the Done disc with an orange dot, and the line under the title reads *Shipped · N checks unproven* when checks were left unproven, or *Shipped* when a person's "no" was merged over. It stays in the Closed list.
* <StatusIcon status="closed" />**Closed, not shipped**: its issue closed with nothing merged. If a pull request is still open, the line reads *Closed \<date> · pull request still open*.
* <StatusIcon status="needs_attention" />**Needs attention**: the last run stopped, or work started and no pull request is open. A stopped run shows, on Activity, why it stopped and how to take it over. A pull request that merged more than ten minutes ago with its issue still open also lands here, reading *Merged, but its issue is still open*: close the issue, or link the pull request with "Closes #N" next time.

On the Work page, the status is an icon before the item's title; hover it for the word. The line under the title says why. It names who is working on it or who asked for changes. It can also say that the agent answered your review, how many criteria are missing their proof, or why a run stopped.

At the right edge, a pull request icon shows open if any of the item's pull requests is open, else merged, else closed. A number beside it counts them all. A checks icon follows it, except on a finished row (Done, Done unverified or Closed, not shipped), where nothing is left to fix.

### Find an item by its status

The `status:` words do not match the status names one to one. They also look at the checks and the review. Each item has one word, the first of these that applies:

1. `shipped`: on Closed, its pull requests merged and their checks passed.
2. `stuck`: its last build or amend run failed or timed out, and nobody has asked again.
3. `building`: no pull request is open, a check that counts has not passed, or a declared proof is missing.
4. `with-agent`: an agent holds the item, or a review waits on an agent's answer.
5. `merging`: a person approved the latest push.
6. `back`: a person reviewed it, and it is your turn again.
7. `ready`: nobody has reviewed it yet.

A closed item that matches none of these, such as one closed with nothing merged, matches no `status:` word.

The **Stuck** saved filter, `status:stuck`, finds the items that read **Needs attention** after a failed run. To rerun one, see [Rerun a Stuck item](/review-the-work#rerun-a-stuck-item).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.