Documentation · Delivery

Auto-deliver mode

Auto-deliver is the hands-off loop: the platform picks the next eligible ticket, generates its details, implements and validates it, lands it, and moves on — until the milestone is complete. You review once per milestone, not once per ticket.

Starting, pausing, resuming

The controls live in the Board header. Start auto-deliver shows a confirmation explaining what you're opting into, then begins with the next eligible ticket (or adopts one already running). A live status pill shows the current ticket and milestone progress.

  • Pause lets the in-flight ticket finish completely — through validation and landing — but starts nothing new. Resume continues from wherever the queue stands.
  • Ticket order is milestone order, then ticket number, honoring dependencies — one ticket in flight at a time.

Milestone branches — one PR per milestone

While auto-deliver is on, tickets don't open individual pull requests. Instead, every ticket in a milestone lands as a commit on a shared milestone branch. Each ticket still passes the full unit-test gate before it may land, and each ticket's implementation is grounded in the branch's current state — so ticket #7 builds on what tickets #1–6 already delivered.

When the milestone's last ticket lands:

  1. An integrated test pass runs against the whole branch: the full unit suite plus the end-to-end stage (the entire application stack brought up with docker compose, exercised by real E2E tests). Failures are repaired on the same branch automatically.
  2. The milestone pull request opens, listing every delivered ticket with the test evidence.
  3. Auto-deliver pauses — the PR is yours. Review it, run the app, request changes or merge. The platform never merges a milestone PR itself.
  4. Once merged, go to the Milestones page and click Approve — see the next section for what that actually does.

Approving a milestone: a gated review, not a stamp

The Approve button stays greyed out until every ticket in the milestone is Done. Once it's clickable, clicking it doesn't approve immediately — it runs a chain of checks:

  1. If the milestone's pull request is still open, you get a popup asking you to merge it first, with a link straight to the PR. Nothing else happens until it's merged.
  2. Once merged, the platform waits for the merged code to finish re-indexing before continuing.
  3. It then dispatches a real, automated technical-debt review — a live AI session (using the same Connected-IDE/Claude-subscription mechanism as your regular ticket work) that reviews the merged pull request against the milestone's own scope, the project's architecture/understanding documents, and general code health: test coverage, security, dead code, and overly complex functions. The Approve button shows Reviewing… while this runs.
  4. Clean pass: a success popup confirms it, the milestone is approved, and the next milestone's tickets unlock.
  5. Issues found: a popup explains that approval is being held, lists what was found, and tells you it filed new tickets on this same milestone — auto-deliver works through those automatically. Once they're done, click Approve again; the review runs once more and only approves once it comes back clean.

When it stops by itself

The loop is designed to never run unattended past a problem. It auto-pauses, with the reason shown on the board, when:

  • a ticket fails terminally (generation error, repairs exhausted, budget block),
  • a milestone completes and is waiting on your Approve click (see above),
  • the milestone PR is closed without merging, or its E2E pass can't be fixed,
  • every remaining ticket is blocked by an unfinished dependency.
Costs stay visible throughout: each ticket's AI cost accrues on the ticket itself (open a ticket's detail view for its own Session Activity — duration, turns, tool calls, and token usage per work round), and the project's Analytics page shows spend per day, per agent, per model, and per ticket while the loop runs.