Agent Labels - axolotl-logic/project-buddy GitHub Wiki

These are the labels the issue pipeline uses. ops.mjs creates these labels on each repo it runs on (ensureLabels). It puts them on issues and their PRs. The status labels are in the LABELS table (apps/issue-pipeline/src/labels.ts) and the stop labels in the STOPS table (src/stops.ts); test/labels.test.mjs pins their exact text, so a change to either updates that test too. When either table changes, update this page.

Status labels

Label Meaning What you do
(no agent: label) The issue is queued. Each lane takes the oldest waiting issue, one at a time. Nothing. Close the issue to keep the pipeline off it.
agent:working A lane has claimed the issue, or is racing other lanes for it (see the claim comments and Claims). Its stage and lease are in the state comment on the issue. Nothing. Don't push to its branch while it works.
agent:needs-info Triage posted questions it needs answered before work can start. Answer on the issue. A reply from an allowed user (allowedUsers) puts it back in the queue. If the PR's branch already holds work, the answered issue goes to review with every limit reset; otherwise it goes back through triage. Running the issue by number does not skip the wait.
agent:split Triage split the issue into 2 to 5 sub-issues. The pipeline closes the parent once every sub-issue merges. Nothing. Each sub-issue is worked on separately.
agent:merged The pipeline merged the PR (or found it merged) and finished its cleanup. Nothing.

Stop labels

A stop means the issue failed a control: a limit or check it didn't pass. The issue and its PR get agent:stopped-<control>. Each stop also posts a coordinator comment on both, naming the control, what it checks, the reason, details, and how to resume. Sweeps leave a stopped issue alone. So do runs named or pinned to the issue, unless launched with takeStopped: true, and stage jobs (#251). Removing the label resumes the issue.

To resume any stop, do what the comment says, then remove the label. You may push to the branch first. The next sweep finds the issue's open PR by its branch name (agent/issue-<n>). If the branch holds work, it continues from that branch at review with every limit reset, the token budget included; if nobody pushed since the last review and no blocking finding is open, the review stands and it goes straight to rebase and verify. The plan and spec carry over. Commits on the wiki's agent/issue-<n> that the wiki lacks count as branch work too, so such an issue continues at review even with no open PR or only the draft (#213). With no such wiki commits and no open PR, or only the draft PR's empty start commit, it goes back to triage and the implementer builds on the branch as it is (Autumn, 2026-10-15). To run it right away, see Run one issue now.

Security stops

The security review is the last review round. It runs after acceptance and just before merge, and it reads the full final diff. It judges what a change does, never the kind of file it touches. Its findings go through the usual fix rounds. These labels mean a finding was still open after those rounds.

Label The change would What you do
agent:stopped-user-harm harm the app's users, for example by exposing, leaking or destroying their data, breaking a safety feature, or misleading them Read the finding. Fix the branch, or change the issue if it asks for the harm.
agent:stopped-rights violate users' rights, for example privacy, consent, access to or deletion of their own data, accessibility, or fair treatment Same.
agent:stopped-financial-harm cause financial harm to users or the operator, for example wrong charges, bypassed spending limits, or unbounded paid API use Same.
agent:stopped-abuse-risk add a risk of abuse, for example an endpoint without auth or rate limits, privilege escalation, injection, or exposed secrets Same.

If you judge a finding wrong, merge the PR by hand. The next merge step treats a hand-merged PR as merged and cleans up.

Limits

Label Control What you do
agent:stopped-budget The next session would take the issue past issueTokenBudget (1M tokens), or a conflict fix or a re-check after a rebase the merge stage asked for past rebaseTokenBudget (500k tokens, #201). Each sub-issue has its own budgets. Remove the label to continue, or narrow or split the issue first. The next sweep continues from the branch with both budgets full again.
agent:stopped-review-rounds Blocking review findings were still open after maxFixRounds (2) fix rounds. Fix or answer the findings listed in the comment.
agent:stopped-fix-loop A fixed review finding came back, so the fixes are undoing each other. Decide which way the code should go, and say so on the issue or push it.
agent:stopped-check-fixes Checks still failed after maxCiFixes (2) check-fix attempts. Fix the failing check.
agent:stopped-sync-limit The base branch kept moving, and the branch was rebased maxSyncs times without merging. Remove the label; merge order usually clears this.
agent:stopped-conflict The conflict resolver's attempts (maxConflictFixes) ran out, or its resolution was rejected. A resolver refused for budget stops with agent:stopped-budget instead (#201). Rebase the branch by hand, or remove the label to retry.
agent:stopped-triage-limit Triage ran maxTriages (3) times without a decision the pipeline can act on. Make the issue clearer.
agent:stopped-too-large The implementer ran out of room in its session and its one continuation. Split the issue.

Judgments by an agent

Label Control What you do
agent:stopped-triage-rejected Triage judged the issue unsuitable for the pipeline, for example a design debate or a production incident. Rewrite the issue as a code change, or handle it yourself.
agent:stopped-not-doable The implementer found it can't do the issue as written. Fix what the comment names in the issue.
agent:stopped-acceptance The acceptance verifier found the change doesn't fully do what the issue asks. Push the missing part, or narrow the issue.
agent:stopped-checks-unrelated The check fixer judged the failing checks unrelated to this change, and left them alone. Fix the check on the base branch.

Integrity and GitHub

Label Control What you do
agent:stopped-branch-changed The PR branch changed outside the pipeline, so it stopped rather than overwrite the change. Remove the label. The next attempt reviews what is on the branch.
agent:stopped-no-ci requireCi is set and the PR has no required CI checks. Add required checks, or turn off requireCi.
agent:stopped-push-rejected GitHub rejected a push of the PR branch, for example a workflow file pushed without the token's workflow scope. Fix the cause the comment names, such as gh auth refresh -h github.com -s workflow.
agent:stopped-merge-refused GitHub refused the merge, for example because of branch protection. Fix the cause, or merge by hand.
agent:stopped-error A pipeline step or agent session failed. Read the error and the run's logs under runs/<owner>__<repo>/issue-<n>/.

How stops get their label

The workflow sends ops.mjs a free-text reason, and for security stops a category too. ops.mjs uses the category when given, and otherwise takes the first STOPS row (stopFor) whose pattern matches the reason. agent:stopped-error catches everything else. A new stop reason in workflow.js needs a matching row in STOPS, on this page, and on GitHub (ensureLabels creates missing labels on the next stop).

⚠️ **GitHub.com Fallback** ⚠️