chore(voyage): pin all sub-agents to Opus permanently (operator request)

Flip model: sonnet → model: opus across 20 agent files, 4 prose references
in commands (trekplan, trekresearch), trekendsession command frontmatter,
and CLAUDE.md tables. Aligns CLAUDE.md premium-profile row to actual
premium.yaml content (all-opus, which has been the case since v4.1.0 but
the doc was drift). Companion to VOYAGE_PROFILE=premium env-var (set in
~/.zshenv same day) — env-var governs orchestrator phase model; this
commit governs sub-agent models which are frontmatter-pinned and not
reachable by the profile resolver.

npm test: 516 pass, 0 fail, 2 skipped (unchanged from baseline).

Operator rationale: complete Opus coverage across all Voyage activity,
including the 20 sub-agents that the profile system does not control
(architecture-mapper, task-finder, plan-critic, scope-guardian,
brief-reviewer, code-correctness-reviewer, brief-conformance-reviewer,
review-coordinator, session-decomposer, plus the 6 researcher agents,
plus the 5 codebase-analysis agents).

Cost implication: sub-agent runs ~5x more expensive vs sonnet. Accepted.
This commit is contained in:
Kjell Tore Guttormsen 2026-05-13 20:20:08 +02:00
commit 4b5a3a24dd
25 changed files with 50 additions and 50 deletions

View file

@ -18,7 +18,7 @@ Voyage — a contract-driven Claude Code pipeline: brief, research, plan, execut
| `/trekexecute` | Execute — disciplined plan/session-spec executor with failure recovery | opus |
| `/trekreview` | Review — independent post-hoc review of delivered code against the brief. Produces `review.md` with severity-tagged findings (Handover 6) | opus |
| `/trekcontinue` | Continue — resumes the next session of a multi-session voyage project. Reads `.session-state.local.json` (Handover 7) and immediately begins executing | opus |
| `/trekendsession` | End-session — mark the current session complete and write session-state pointing at the next session. Helper for informal multi-session flows | sonnet |
| `/trekendsession` | End-session — mark the current session complete and write session-state pointing at the next session. Helper for informal multi-session flows | opus |
### /trekbrief modes
@ -109,26 +109,26 @@ The triage gate is deterministic — path-pattern classifier produces `{file →
| planning-orchestrator | opus | Inline reference documentation for the planning pipeline workflow (brief-driven) |
| research-orchestrator | opus | Inline reference documentation for the research pipeline workflow |
| review-orchestrator | opus | Inline reference documentation for the review pipeline workflow |
| architecture-mapper | sonnet | Codebase structure, tech stack, patterns |
| dependency-tracer | sonnet | Import chains, data flow, side effects |
| task-finder | sonnet | Task-relevant files, functions, reuse candidates |
| risk-assessor | sonnet | Risks, edge cases, failure modes |
| test-strategist | sonnet | Test patterns, coverage gaps, strategy |
| git-historian | sonnet | Recent changes, ownership, hot files |
| research-scout | sonnet | External docs for unfamiliar tech (conditional, planning only) |
| convention-scanner | sonnet | Coding conventions: naming, style, error handling, test patterns |
| brief-reviewer | sonnet | Task brief quality (5 dimensions: completeness, consistency, testability, scope clarity, research plan validity) |
| brief-conformance-reviewer | sonnet | Brief conformance review (SC + Non-Goal traceability) |
| code-correctness-reviewer | sonnet | Code correctness review (7 dimensions) |
| review-coordinator | sonnet | Judge Agent — dedup + reasonableness filter + verdict |
| plan-critic | sonnet | Adversarial plan review (9 dimensions) |
| scope-guardian | sonnet | Scope alignment (creep + gaps) |
| session-decomposer | sonnet | Splits plans into headless sessions with dependency graph |
| docs-researcher | sonnet | Official documentation, RFCs, vendor docs (Tavily, MS Learn) |
| community-researcher | sonnet | Community experience: issues, blogs, discussions |
| security-researcher | sonnet | CVEs, audit history, supply chain risks |
| contrarian-researcher | sonnet | Counter-evidence, overlooked alternatives |
| gemini-bridge | sonnet | Gemini Deep Research second opinion (conditional) |
| architecture-mapper | opus | Codebase structure, tech stack, patterns |
| dependency-tracer | opus | Import chains, data flow, side effects |
| task-finder | opus | Task-relevant files, functions, reuse candidates |
| risk-assessor | opus | Risks, edge cases, failure modes |
| test-strategist | opus | Test patterns, coverage gaps, strategy |
| git-historian | opus | Recent changes, ownership, hot files |
| research-scout | opus | External docs for unfamiliar tech (conditional, planning only) |
| convention-scanner | opus | Coding conventions: naming, style, error handling, test patterns |
| brief-reviewer | opus | Task brief quality (5 dimensions: completeness, consistency, testability, scope clarity, research plan validity) |
| brief-conformance-reviewer | opus | Brief conformance review (SC + Non-Goal traceability) |
| code-correctness-reviewer | opus | Code correctness review (7 dimensions) |
| review-coordinator | opus | Judge Agent — dedup + reasonableness filter + verdict |
| plan-critic | opus | Adversarial plan review (9 dimensions) |
| scope-guardian | opus | Scope alignment (creep + gaps) |
| session-decomposer | opus | Splits plans into headless sessions with dependency graph |
| docs-researcher | opus | Official documentation, RFCs, vendor docs (Tavily, MS Learn) |
| community-researcher | opus | Community experience: issues, blogs, discussions |
| security-researcher | opus | CVEs, audit history, supply chain risks |
| contrarian-researcher | opus | Counter-evidence, overlooked alternatives |
| gemini-bridge | opus | Gemini Deep Research second opinion (conditional) |
## Quality infrastructure (v3.4.0)
@ -189,9 +189,9 @@ Three built-in model profiles plus operator-defined `<custom>.yaml`. Each profil
| Profile | Brief | Research | Plan | Execute | Review | Continue | Use case |
|---------|-------|----------|------|---------|--------|----------|----------|
| `economy` | sonnet | sonnet | sonnet | sonnet | sonnet | sonnet | Lowest cost; high-confidence small-scope tasks |
| `balanced` (default) | sonnet | sonnet | opus | sonnet | opus | sonnet | Default — opus where reasoning depth pays off |
| `premium` | opus | sonnet | opus | sonnet | opus | sonnet | Critical-path planning + review when budget allows |
| `economy` | sonnet | sonnet | sonnet | sonnet | sonnet | sonnet | Lowest cost; high-confidence small-scope tasks (operator-opt-in via `--profile economy`) |
| `balanced` | sonnet | sonnet | opus | sonnet | opus | sonnet | Mixed — opus where reasoning depth pays off (operator-opt-in via `--profile balanced`) |
| `premium` (default) | opus | opus | opus | opus | opus | opus | Maximum quality — Opus on every phase. Default since 2026-05-13 operator request; also the hardcoded resolver default at `lib/profiles/resolver.mjs:145` |
### Lookup order

View file

@ -21,7 +21,7 @@ description: |
Direct architecture analysis request triggers the agent.
</commentary>
</example>
model: sonnet
model: opus
color: cyan
tools: ["Read", "Glob", "Grep", "Bash"]
---

View file

@ -5,7 +5,7 @@ description: |
against the task brief — every Success Criterion must trace to delivered
code, every Non-Goal must remain unbuilt. Emits findings with rule_keys
from the canonical RULE_CATALOGUE. Never praises.
model: sonnet
model: opus
color: magenta
tools: ["Read", "Glob", "Grep"]
---

View file

@ -23,7 +23,7 @@ description: |
Brief review request triggers the agent.
</commentary>
</example>
model: sonnet
model: opus
color: magenta
tools: ["Read", "Glob", "Grep"]
---

View file

@ -6,7 +6,7 @@ description: |
cross-file regressions, test coverage gaps, placeholder code, security
surface, hidden dependencies. Cites file:line for every finding. Never
praises.
model: sonnet
model: opus
color: red
tools: ["Read", "Glob", "Grep"]
---

View file

@ -24,7 +24,7 @@ description: |
finds the practical signal that helps teams make adoption decisions.
</commentary>
</example>
model: sonnet
model: opus
color: green
tools: ["WebSearch", "WebFetch", "mcp__tavily__tavily_search", "mcp__tavily__tavily_research"]
---

View file

@ -24,7 +24,7 @@ description: |
but to ensure the final recommendation is genuinely considered.
</commentary>
</example>
model: sonnet
model: opus
color: red
tools: ["WebSearch", "WebFetch", "mcp__tavily__tavily_search", "mcp__tavily__tavily_research"]
---

View file

@ -23,7 +23,7 @@ description: |
Direct convention discovery request triggers the agent.
</commentary>
</example>
model: sonnet
model: opus
color: yellow
tools: ["Read", "Glob", "Grep", "Bash"]
---

View file

@ -21,7 +21,7 @@ description: |
Impact analysis request triggers the agent.
</commentary>
</example>
model: sonnet
model: opus
color: blue
tools: ["Read", "Glob", "Grep", "Bash"]
---

View file

@ -23,7 +23,7 @@ description: |
microsoft_docs_fetch) that docs-researcher uses for higher-quality results.
</commentary>
</example>
model: sonnet
model: opus
color: blue
tools: ["WebSearch", "WebFetch", "Read", "mcp__tavily__tavily_search", "mcp__tavily__tavily_research", "mcp__microsoft-learn__microsoft_docs_search", "mcp__microsoft-learn__microsoft_docs_fetch"]
---

View file

@ -24,7 +24,7 @@ description: |
Direct request for Gemini research on a complex architectural question triggers the agent.
</commentary>
</example>
model: sonnet
model: opus
color: magenta
tools: ["mcp__gemini-mcp__gemini_deep_research", "mcp__gemini-mcp__gemini_get_research_status", "mcp__gemini-mcp__gemini_get_research_result", "mcp__gemini-mcp__gemini_research_followup"]
---

View file

@ -21,7 +21,7 @@ description: |
Git history analysis request triggers the agent.
</commentary>
</example>
model: sonnet
model: opus
color: yellow
tools: ["Bash", "Read", "Glob", "Grep"]
---

View file

@ -21,7 +21,7 @@ description: |
Plan review request triggers the agent.
</commentary>
</example>
model: sonnet
model: opus
color: red
tools: ["Read", "Glob", "Grep"]
---

View file

@ -137,7 +137,7 @@ medium: default, large: default) rather than dropping agents.
| `research-scout` | Conditional | Conditional | Conditional | External docs (only when unfamiliar tech detected AND not covered by briefs) |
| `convention-scanner` | No | Yes | Yes | Coding conventions, naming, style, test patterns |
**Convention Scanner** — use the `convention-scanner` plugin agent (model: "sonnet")
**Convention Scanner** — use the `convention-scanner` plugin agent (model: "opus")
for medium+ codebases only. Pass the task description as context.
**research-scout** — launch conditionally if the task involves technologies, APIs,

View file

@ -21,7 +21,7 @@ description: |
Research request for external technology triggers the agent.
</commentary>
</example>
model: sonnet
model: opus
color: blue
tools: ["WebSearch", "WebFetch", "Read"]
---

View file

@ -6,7 +6,7 @@ description: |
applies BOUNDED operations: deduplication, severity ranking, HubSpot
Judge filters, Cloudflare reasonableness filter, verdict computation.
Synthesis-level inference across files is forbidden in v1.0.
model: sonnet
model: opus
color: yellow
tools: ["Read", "Glob", "Grep"]
---

View file

@ -21,7 +21,7 @@ description: |
Risk analysis request triggers the agent.
</commentary>
</example>
model: sonnet
model: opus
color: yellow
tools: ["Read", "Glob", "Grep", "Bash"]
---

View file

@ -21,7 +21,7 @@ description: |
Scope verification request triggers the agent.
</commentary>
</example>
model: sonnet
model: opus
color: magenta
tools: ["Read", "Glob", "Grep"]
---

View file

@ -23,7 +23,7 @@ description: |
using CVE databases, OWASP categories, and verified audit reports.
</commentary>
</example>
model: sonnet
model: opus
color: red
tools: ["WebSearch", "WebFetch", "mcp__tavily__tavily_search", "mcp__tavily__tavily_research"]
---

View file

@ -22,7 +22,7 @@ description: |
Plan decomposition request for parallel headless execution.
</commentary>
</example>
model: sonnet
model: opus
color: green
tools: ["Read", "Glob", "Grep", "Write"]
---

View file

@ -22,7 +22,7 @@ description: |
Direct code discovery request triggers the agent.
</commentary>
</example>
model: sonnet
model: opus
color: green
tools: ["Read", "Glob", "Grep", "Bash"]
---

View file

@ -21,7 +21,7 @@ description: |
Test planning request triggers the agent.
</commentary>
</example>
model: sonnet
model: opus
color: green
tools: ["Read", "Glob", "Grep", "Bash"]
---

View file

@ -2,7 +2,7 @@
name: trekendsession
description: Mark the current session as complete and write session-state pointing at the next session. Helper for informal multi-session flows.
argument-hint: "<next-brief-path> <next-label> | --help"
model: sonnet
model: opus
---
# Voyage End-Session Local v1.0

View file

@ -501,7 +501,7 @@ ownership, hot files, and active branches that may affect planning."
### Launch for medium+ codebases (50+ files):
**Convention Scanner** — use the `convention-scanner` plugin agent (model: "sonnet")
**Convention Scanner** — use the `convention-scanner` plugin agent (model: "opus")
for medium+ codebases only.
Provide concrete examples from the codebase, not generic advice."
@ -538,7 +538,7 @@ Common reasons for deep-dives:
- A test pattern was identified but the test infrastructure needs more detail
- A risk was flagged but the actual impact needs verification
For each significant gap, spawn a targeted deep-dive agent (model: "sonnet",
For each significant gap, spawn a targeted deep-dive agent (model: "opus",
subagent_type: "Explore") with a narrow, specific brief.
Launch up to 3 deep-dive agents in parallel. If no gaps exist, skip this phase

View file

@ -291,7 +291,7 @@ other agents — the value of Gemini is independence.
### Launch rules
- Launch ALL selected agents **in parallel** in a single message
- Use model: "sonnet" for all sub-agents (the orchestrator runs on Opus)
- Use model: "opus" for all sub-agents (the orchestrator runs on Opus)
- Scale maxTurns by codebase size for local agents (same as trekplan):
small = halved, medium/large = default
- convention-scanner: medium+ codebases only (50+ files)
@ -301,7 +301,7 @@ other agents — the value of Gemini is independence.
Review all agent results. Identify knowledge gaps — areas where findings are
thin, contradictory, or missing.
For each significant gap, launch a targeted follow-up agent (model: "sonnet")
For each significant gap, launch a targeted follow-up agent (model: "opus")
with a narrow, specific brief. Maximum 2 follow-ups.
If no gaps exist, skip: "Initial research sufficient — no follow-ups needed."