Filed for later, when there's a reason to spend differently on the two kinds of planning.
Why
Architecture planning is rare and high-stakes, and may justify the top frontier tier (e.g. Fable). Milestone planning is frequent, and a cheaper model (e.g. Opus) may be good enough. Today both use one planner role.
Work
A new architect role in the role mapping (A11), alongside planner, in the agent config.
LLMPlanningAgent resolves architect for the arch gate and planner for milestone-N gates. It already knows which gate it's planning for.
Config validation, startup model discovery and require_limits cover the new role like the others. The pinned mapping at task start (A11) records both.
Spec A11 lists the new role.
Tests: each gate resolves its role, and the pinned mapping includes architect.
Not needed
No LiteLLM changes beyond describing both models, which it would do anyway.
Related
Planner benchmarking is deferred in the benchmark work. When it's built, it's what decides which model fits each role.
Filed for later, when there's a reason to spend differently on the two kinds of planning.
### Why
Architecture planning is rare and high-stakes, and may justify the top frontier tier (e.g. Fable). Milestone planning is frequent, and a cheaper model (e.g. Opus) may be good enough. Today both use one `planner` role.
### Work
- A new `architect` role in the role mapping (A11), alongside `planner`, in the agent config.
- `LLMPlanningAgent` resolves `architect` for the `arch` gate and `planner` for `milestone-N` gates. It already knows which gate it's planning for.
- Config validation, startup model discovery and `require_limits` cover the new role like the others. The pinned mapping at task start (A11) records both.
- Spec A11 lists the new role.
- Tests: each gate resolves its role, and the pinned mapping includes `architect`.
### Not needed
No LiteLLM changes beyond describing both models, which it would do anyway.
### Related
Planner benchmarking is deferred in the benchmark work. When it's built, it's what decides which model fits each role.
Superseded by the Development Plan (#84, merged): the architecture has one local driver with frontier helpers (docs/Architecture.md L9), not separate architect and planner roles. It is covered by M2.3 in docs/Development-Plan.md, which designs the new conversational loop that replaces control.py. Fixing it in control.py would be thrown away when that loop retires.
Superseded by the Development Plan (#84, merged): the architecture has one local driver with frontier helpers (docs/Architecture.md L9), not separate architect and planner roles. It is covered by **M2.3** in `docs/Development-Plan.md`, which designs the new conversational loop that replaces `control.py`. Fixing it in `control.py` would be thrown away when that loop retires.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Filed for later, when there's a reason to spend differently on the two kinds of planning.
Why
Architecture planning is rare and high-stakes, and may justify the top frontier tier (e.g. Fable). Milestone planning is frequent, and a cheaper model (e.g. Opus) may be good enough. Today both use one
plannerrole.Work
architectrole in the role mapping (A11), alongsideplanner, in the agent config.LLMPlanningAgentresolvesarchitectfor thearchgate andplannerformilestone-Ngates. It already knows which gate it's planning for.require_limitscover the new role like the others. The pinned mapping at task start (A11) records both.architect.Not needed
No LiteLLM changes beyond describing both models, which it would do anyway.
Related
Planner benchmarking is deferred in the benchmark work. When it's built, it's what decides which model fits each role.
Superseded by the Development Plan (#84, merged): the architecture has one local driver with frontier helpers (docs/Architecture.md L9), not separate architect and planner roles. It is covered by M2.3 in
docs/Development-Plan.md, which designs the new conversational loop that replacescontrol.py. Fixing it incontrol.pywould be thrown away when that loop retires.