Pre-flight Checks
Problem Description
The OpenCode SDD model picker does not expose model assignment rows for the 4R review agents:
review-risk
review-readability
review-reliability
review-resilience
These agents exist in the OpenCode overlay assets and participate in delegated review workflows, but users cannot assign models to them from the TUI. This limits the ability to tune reviewer cost, latency, and reasoning strength per review lens.
This issue is intentionally scoped to the 4R review agents only.
Judgment Day model configuration is already covered by existing issues and should not be duplicated here:
Investigation summary:
review-risk, review-readability, review-reliability, and review-resilience are excluded from both base/default and named profile picker rows.
- 4R review agents are also excluded from configurable assignment read/write flows.
- Judgment Day agents are not part of this issue scope because their TUI/profile configurability is already tracked elsewhere.
- No exact existing issue was found for adding 4R review agents to the OpenCode SDD model picker.
Proposed Solution
Add explicit support for configuring 4R review agent models through the OpenCode SDD model picker, with clear semantics for whether these assignments are global or profile-scoped.
Suggested implementation path:
- Decide scope explicitly:
- Base/default picker only, if 4R agents should remain global review infrastructure.
- Base/default plus named profile pickers, if product wants profile-specific reviewer tuning.
- Add 4R review agents to the configurable agent source of truth, likely near
opencode.ConfigurableAgentPhases() or via a dedicated helper such as ReviewPhases() / ReviewAgentNames().
- Update TUI row generation in
internal/tui/screens/model_picker.go to show a clear Review agents section with rows for the four 4R agents.
- Update assignment reading and writing so configured 4R models are preserved according to the chosen scope and are not filtered out unexpectedly.
- Add regression tests for:
- picker rows include 4R review agents in the selected scope;
- model assignment read/write preserves configured 4R values;
- existing SDD phase and Judgment Day behavior remains backward compatible.
- Document the intended behavior: whether 4R model assignments are globally configured or profile-scoped.
Affected Area
Other
Alternatives Considered
Keep the current behavior and document that 4R review agents intentionally inherit the default OpenCode runtime model. This preserves a smaller configuration surface, but it prevents users from assigning cheaper or stronger models per review lens.
Additional Context
Evidence from delegated investigation:
internal/tui/screens/model_picker.go
- Base/default picker rows include SDD phases plus Judgment Day agents.
- Named profile picker rows currently include SDD phases only.
- 4R review agents are not included in either row set.
internal/opencode/models.go
ConfigurableAgentPhases() currently returns SDD phases plus Judgment Day phases, but not 4R review agents.
internal/components/sdd/read_assignments.go
- The readable assignment set is built from configurable agent phases, so 4R assignments are filtered out.
internal/components/sdd/inject.go
- Injection writes model assignments through the existing configurable assignment flow.
- Overlay/profile evidence:
- 4R review agents exist as OpenCode delegated review agents.
- 4R review agents are treated as global/non-configurable infrastructure today.
Developer handoff suggestion:
A minimal first slice would be to support 4R model assignment only in the base/default OpenCode SDD picker, keeping them global. That avoids deciding profile-specific semantics immediately while still solving the user-facing configurability gap. If profile-specific review tuning is desired later, it can be introduced as a separate follow-up with clearer migration behavior.
When implementing, avoid changing Judgment Day behavior in this issue. Use #907 and #725 for that scope.
Pre-flight Checks
Problem Description
The OpenCode SDD model picker does not expose model assignment rows for the 4R review agents:
review-riskreview-readabilityreview-reliabilityreview-resilienceThese agents exist in the OpenCode overlay assets and participate in delegated review workflows, but users cannot assign models to them from the TUI. This limits the ability to tune reviewer cost, latency, and reasoning strength per review lens.
This issue is intentionally scoped to the 4R review agents only.
Judgment Day model configuration is already covered by existing issues and should not be duplicated here:
Investigation summary:
review-risk,review-readability,review-reliability, andreview-resilienceare excluded from both base/default and named profile picker rows.Proposed Solution
Add explicit support for configuring 4R review agent models through the OpenCode SDD model picker, with clear semantics for whether these assignments are global or profile-scoped.
Suggested implementation path:
opencode.ConfigurableAgentPhases()or via a dedicated helper such asReviewPhases()/ReviewAgentNames().internal/tui/screens/model_picker.goto show a clearReview agentssection with rows for the four 4R agents.Affected Area
Other
Alternatives Considered
Keep the current behavior and document that 4R review agents intentionally inherit the default OpenCode runtime model. This preserves a smaller configuration surface, but it prevents users from assigning cheaper or stronger models per review lens.
Additional Context
Evidence from delegated investigation:
internal/tui/screens/model_picker.gointernal/opencode/models.goConfigurableAgentPhases()currently returns SDD phases plus Judgment Day phases, but not 4R review agents.internal/components/sdd/read_assignments.gointernal/components/sdd/inject.goDeveloper handoff suggestion:
A minimal first slice would be to support 4R model assignment only in the base/default OpenCode SDD picker, keeping them global. That avoids deciding profile-specific semantics immediately while still solving the user-facing configurability gap. If profile-specific review tuning is desired later, it can be introduced as a separate follow-up with clearer migration behavior.
When implementing, avoid changing Judgment Day behavior in this issue. Use #907 and #725 for that scope.