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

# 0017 — Agent roster and models

> Superseded by 0193 · 2026-10-20

> [!NOTE]
>
> Superseded by [0193](/adr/0193-agents-and-model-policy): five tiers replace economy, standard and
> frontier; the roster changes.

> [!NOTE]
>
> Rule 6 is amended by [0119](/adr/0119-merge-policy-and-release-authority): Claude may merge
> through `pnpm pr:merge`; releases and production promotion stay human.

## Context

An agent definition that names a model goes stale the day the model changes. An earlier setup delegated implementation to a
cheaper model through a second runner. It produced weak results on review, cost more in retries than it saved, and was retired.
The roster should be small, named by role, and each role should say whether it can block.

## Decision

1. **An agent declares a tier, never a model.** The tiers are `economy`, `standard` and `frontier`, ordered cheapest first, which is also the order a failing output escalates in.
2. **`.agents/models.json` maps tier to model per assistant**: Claude `haiku`, `sonnet`, `opus`. Changing a model is one edit there.
3. **Default assignment.** Opus for the guardians and the orchestrator (decisions with a long tail), Sonnet for executors and reviewers, Haiku for mechanical stewards. No role is assigned to a model without evidence of where it fits; a trial precedes any change.
4. **Claude only.** Delegating implementation to other models through another runner is rejected ([0011](/adr/0011-rejected-and-deferred-technologies)).
5. **Role names are the `sdlc` plugin's** (`architecture-guardian`, `code-reviewer`, `test-engineer` and so on). New agents use `<domain>-<role>` kebab names. Roles that block are listed in `/agents/roster`.
6. **A human decides; agents prepare.** Agents do not merge, release or deploy.

## Consequences

* A roster change is a table edit, not a hunt through definitions.
* The weak-results episode is the evidence behind rule 4; it is not repeated here in full.

## Enforcement

Planned: `agents:lint` checking that every agent declares a valid tier and every tier resolves in `.agents/models.json`. The `lefthook.yml` comment that cites a roster decision is repointed to this page.

## Supersedes and sources

Supersedes: none. Sources: figentra `docs/adr/0034-agent-roster-and-models` (with its weak-results evidence); academorix `.agents/models.json`; figentra `0023-delegation-to-opencode`, academorix `adr/0001`, platform `docs/adr/0013` (retired delegation, recorded as the rejected alternative).


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