Collapsed's library-course-generation.yaml defines 8 specialized agents, each with a TypeScript handler. Specialization lives in TS code — adding a new capability requires a new TS file + handler + tests.
The historical locked milestone architecture named several evaluation contexts. Under the collapsed pattern this implied one Evaluator with many modes or several specialized Evaluators, keeping specialization in TypeScript. ADR 0013/0023 later retired that in-loop shape.
The grilling-session question — 'what would Claude Code do?' — surfaced a fourth option that escapes the pattern entirely.
Adopt the prompts-as-agents pattern: exactly ONE TypeScript agent primitive (invokeSubAgent) + N markdown prompt files.
Claude Code has no 'Evaluator agent.' It has the Task tool, which spawns sub-agents with their own context windows. Skills like /code-review, /security-review, /verify, /diagnose are markdown files in ~/.claude/skills/ — invoked, they become the sub-agent's role prompt.
Same pattern Anthropic's 'Building effective agents' post advocates (orchestrator + workers), and Google Antigravity 2.0 documents (persistent isolated environments). V2 adopts this convergent pattern explicitly.
| Layer | Collapsed | V2 with prompts-as-agents |
|---|---|---|
| TypeScript agent files | 8 (5 LLM + 3 KB agents) | 1 (invokeSubAgent) |
| Markdown prompts | Embedded in TS handlers | ~30 markdown files |
| Adding a capability | New TS file + handler + manifest + test | Write one markdown file |
| Teacher visibility | None | All prompts readable + per-workspace overrideable |