Normal review is adversarial in disguise; setup gives a false ready signal (M-04 + M-05)
Surfaced by the gpt-5.6-sol final review, verified locally.
M-04: both review and adversarial-review handlers call executeReviewRun(), which always builds buildAdversarialReviewPrompt() ("break confidence in the change", default to skepticism). The only difference is the result label. /opencode:review also silently accepts positional focus text although the README says it is not steerable. This regresses the documented normal-vs-adversarial distinction.
M-05: getAuthStatus() (opencode.mjs) sets loggedIn: true whenever /config or /provider is merely readable; it never checks the provider response's connected array. A server with {"all": [], "connected": []} is reported as logged in, /opencode:setup marks the plugin ready and omits the provider-configuration next step, and the first real task fails later.
Fix:
- Add a neutral normal-review template selected by
review; keep the adversarial template for adversarial-review; reject positional focus text for normal review (or update the contract).
- Assert on the generated prompt per command, not just routing.
- Require a non-empty connected-provider set (ideally with a resolvable default model) for
loggedIn; add empty/malformed/configured-but-disconnected/connected tests.
Source: gpt-5.6-sol final review M-04 and M-05 (opencode-plugin-cc-analysis.md).
Normal review is adversarial in disguise; setup gives a false ready signal (M-04 + M-05)
Surfaced by the gpt-5.6-sol final review, verified locally.
M-04: both
reviewandadversarial-reviewhandlers callexecuteReviewRun(), which always buildsbuildAdversarialReviewPrompt()("break confidence in the change", default to skepticism). The only difference is the result label./opencode:reviewalso silently accepts positional focus text although the README says it is not steerable. This regresses the documented normal-vs-adversarial distinction.M-05:
getAuthStatus()(opencode.mjs) setsloggedIn: truewhenever/configor/provideris merely readable; it never checks the provider response'sconnectedarray. A server with{"all": [], "connected": []}is reported as logged in,/opencode:setupmarks the plugin ready and omits the provider-configuration next step, and the first real task fails later.Fix:
review; keep the adversarial template foradversarial-review; reject positional focus text for normal review (or update the contract).loggedIn; add empty/malformed/configured-but-disconnected/connected tests.Source: gpt-5.6-sol final review M-04 and M-05 (
opencode-plugin-cc-analysis.md).