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

# The lifecycle

> How Otto takes a ticket from Linear or Jira to a pull request.

Otto can work tickets the way a senior engineer does, with a human checkpoint at each stage.

```mermaid theme={null}
graph TD
    A[Ticket created or updated] --> B{Matches a rule?}
    B -->|No| Z[Ignored]
    B -->|Yes| C[Clarify]
    C --> D{Requirements clear?}
    D -->|No| E[Ask questions on the ticket]
    E --> F[Human answers]
    F --> C
    D -->|Yes| G[Plan]
    G --> H{Plan approved?}
    H -->|No| I[Revise plan]
    I --> G
    H -->|Yes| J[Implement]
    J --> K[Open pull request]
    K --> L{Review feedback?}
    L -->|Yes| M[Push changes and reply]
    M --> K
    L -->|No| N[Merged]
```

## Phases

| Phase | What Otto does | Your checkpoint |
| - | - | - |
| **Clarify** | Reads the ticket and linked context, explores the codebase, and asks clarifying questions on the ticket. | Answer the questions. |
| **Plan** | Writes an implementation plan (approach, files to change, and why) and posts it on the ticket. | Approve the plan or ask for changes. On Jira, adding the `otto-approved` label approves it. |
| **Implement** | Creates a branch, writes the code, [verifies it](/configuration/verify-yml), and opens a pull request linked to the ticket. | Review the PR. |

After the PR opens, Otto keeps working: it responds to review comments and pushes changes. See [PR feedback](/automation/pr-feedback).

## Set it up

<Steps>
  <Step title="Connect your code host">
    Connect [GitHub](/setup/github) or [Azure DevOps](/setup/azure-devops).
  </Step>

  <Step title="Connect your ticket tool">
    Connect [Linear](/automation/linear) or [Jira](/automation/jira).
  </Step>

  <Step title="Create a project">
    In **Projects**, link a ticket project to the repository where Otto should
    work. From a project, you can also generate an `OTTO.md` for the repository
    to give Otto context about your codebase.
  </Step>

  <Step title="Add rules">
    Rules choose which tickets Otto picks up. Without a rule, Otto picks up
    nothing. A ticket that matches any rule is picked up.
  </Step>
</Steps>

## Lifecycle settings

In **Settings → Lifecycle** you can turn phases on or off and choose the model each phase uses. Turning off an earlier phase also turns off the phases after it.

## What works well

* Well-defined tickets with clear acceptance criteria
* Bug fixes with clear reproduction steps
* Small to medium features and repetitive work such as CRUD endpoints

Vague requirements and large architectural changes are better split into smaller, well-specified tickets.


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