Context
0193 fixed five tiers and their models and folded the package steward away, but left the roster itself to a later change. An audit of the eleven agents and forty-one skills against the ADRs (STA-148) found agents citing folded roles, a contract reviewer telling builders to commit the generated client (0158 says CI publishes it), OpenCode projections of reviewers and guardians that 0121 D10 forbids, and seventeen vendoredencore-* skills that teach the hand-written Encore
code 0091 and 0124 reject. The owner accepted the roster and skills plan with eight recommended answers on 2026-10-20.
Decision
- Roster. The agents are:
- lead (the main session, not a file);
- guardians (block):
architecture-guardian,security-tenancy-reviewer,release-operations; - executors:
package-builder,compiler-engineer,service-builder,data-engineer,frontend-builder,desktop-pwa-builder,mobile-builder,infra-engineer,test-engineer,spec-writer,secret-manager; - reviewers:
code-reviewer,api-contract-reviewer,accessibility-reviewer,performance-reviewer,design-brand-reviewer; - stewards:
code-standards-steward(with the package steward folded in),dependency-steward,docs-adr-steward,docs-changesets-steward,i18n-steward; - on call:
incident-commander.
- Changes to 0121 D9.
spec-executoris not ported:package-builderand the specialist builders implement spec tasks.spec-authorreturns asspec-writer, so the lead stays a coordinator.delivery-orchestrator,docs-governanceandspec-plannerstay folded into the lead.sql-reviewerandprivacy-officerare deferred to the first tenant-owned table that holds personal data. - test-engineer is an executor. It writes tests; a red suite fails the Quality Gate, which is the block. No agent both writes a change and holds the blocking verdict on it.
- Projection per assistant. An assistant runs only the tiers it has a row for in
.agents/models.yaml; OpenCode has rows for steward and executor only, on Kimi K3 (0121 D10). An agent narrows further withassistants: [claude].secret-manager,compiler-engineer,data-engineer,infra-engineerandspec-writerare Claude-only, because each touches change risk R3 or a generated contract. - Encore skills are fenced. Fourteen
encore-*skills move to.agents/reference/encore/, which is not projected, so no session loads them by description.compiler-engineerreads them as the reference for whatstackra genemits; guardians may read them to judge generated output.encore-getting-started,encore-migrateandencore-frontendare removed, withsanity-best-practices(0114 drops Sanity) andtypescript-patterns(its alias rule contradicts 0233). - Rejected technology in skills is checked. A skill that names a rejected technology fails the lint unless an allow-list entry names the reason.
- House skill names keep a category prefix (
backend-,frontend-,mobile-,devops-,security-,db-,ai-,domain-,testing-,docs-) and addcode-for code conventions. - Where gen lives.
stackra genis in the developer category (packages/developer/cliandpackages/developer/gen), as 0127 places it;compiler-engineerowns those packages.
Consequences
- Each new or rewritten agent cites the ADRs it enforces; a stale citation is a docs-adr-steward finding.
- OpenCode loses its copies of the reviewer, guardian and lead agents;
pnpm delegateroutes only steward and executor work there, whichrouting.yamlalready does. - The Encore reference is refreshed by hand from upstream when the emitters change.
Enforcement
tools/scripts/agents-sync.mjsprojects an agent only to assistants with a row for its tier and listed in itsassistants, andpnpm agents:checkfails on a stale projection (tests intools/scripts/__tests__/agents-sync.test.mjs).agents-sync.mjs --lintand--checkfail a skill in.agents/skills/that names rejected technology unlessSKILL_TECH_ALLOWEDrecords the reason (decision 6), and a route that sends work to OpenCode for an agent not projected there.
Supersedes and sources
Supersedes: none. Amends 0193 decision 3 and 0121 decision 9. Sources:
stackra-notes/agent-roster-v2.md and the owner’s acceptance (memory, ops file, “Agent roster v2 ACCEPTED”,
2026-10-20).