automaintainer/ docs
Dashboard →

Objectives & acceptance

An objective is a persistent, multi‑run goal — a campaign AM keeps working across scheduled runs until it's met. Where a focus is "what to do this run", an objective is "the goal we're driving toward".

Set an objective

In Repo settings → Objective, set:

  • Objective — the campaign goal, e.g. "raise test coverage to 70%".
  • Acceptance command (optional) — a shell command that exits 0 when the objective is met, e.g. ./scripts/coverage-at-least.sh 70.

How it completes

After each run, AM runs the acceptance command. When it passes, the objective is marked met and the scheduler stops working it — the campaign is done. With no acceptance command, you mark it met manually (Mark met / Reopen). If you use a progress ledger, the objective also auto‑completes when every sub‑task is done.

objective active → run → acceptance passes (or all ledger tasks done)? → met (scheduler stops)
                          └─ no → keep working it next cycle

Progress ledger (optional)

By default each run re‑attacks the whole objective from scratch. A ledger turns one broad objective into an ordered checklist of small, independently verifiable sub‑tasks that AM works through cumulatively — so progress builds run over run instead of starting over.

In Repo settings → Objective, with an objective set, click Decompose. AM makes one planning pass and breaks the objective into a handful of ordered sub‑tasks, each with its own (optional) verify command. From then on:

  • Each scheduled run picks the next open sub‑task as its focus (not the whole objective), and the gates check that sub‑task.
  • After the run the sub‑task is marked done or blocked, and the ledger persists — the next run builds on the last.
  • A progress bar (done / total) shows how far the campaign has come.
  • When every sub‑task is resolved, the objective flips to met.

Priority chain: When a ledger exists with pending tasks, it overrides the repo's focus for each run. See Focus → Priority chain for details.

The ledger is opt‑in: leave it un‑decomposed and the objective behaves exactly as before (whole‑objective runs + acceptance command). It only applies when an objective is set.

Status values

Status Meaning
(empty) No objective; runs use the repo focus
active AM is driving toward it (whole‑objective, or task‑by‑task with a ledger)
met Achieved (acceptance passed or all ledger tasks done) — scheduler skips this repo

Objective vs explore mode

  • Objective = a human‑set destination AM keeps working toward.
  • Explore mode = AM proposes its own bounded work when there's no standing objective.

A standing objective takes priority: while one is active, explore mode stands down.