You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OpenCode 2.2.1+ ships a native opencode.goal plugin and /goal (PR anomalyco/opencode#59437). Its goal data is stored in plugin-privatectx.storage and exposed through the opencode.goal RPC (get/changed).
Our V2 Loop guard in src/source/opencode2/native-companion.js only checks ByBrawe Goal's.opencode/goals/<session-hash>.json shard. After decoupling Loop installation from @bybrawe/opencode-goal (PR #194), many users will have native OpenCode Goal but not the ByBrawe plugin. The existing guard cannot detect an active or paused built-in Goal, so competing continuation loops in a shared session are a risk. This is a code-confirmed detection gap, not yet an end-to-end reproduced collision.
Acceptance
On OpenCode 2.2.4 with only Loop external plugin installed, inspect native Goal state through the host-supported public RPC/API, not another plugin's private storage. If an active native Goal owns a session, Loop cannot admit prompt-producing work in that session. Treat paused unfinished Goal conservatively until explicit ownership rules are agreed.
Make admission fail closed when Goal ownership is uncertain without permanently blocking old hosts that have no native Goal RPC.
Recheck ownership directly before each prompt admission and across session switch, restart and compaction boundaries. Host must never receive duplicate autonomous turns from Loop and native Goal.
Test native-only, Loop-only, Goal-active, Goal-paused, Goal-complete and separately installed ByBrawe Goal scenarios, Windows TUI/Desktop/CLI as supported.
Keep Loop standalone: no npm dependency on ByBrawe Goal; do not override native /goal or alter native Goal state.
Shipped mitigation, but not full acceptance:Loop 0.6.10 includes PR #196: a public read-only opencode.goal RPC query before Loop prompt admission, active/paused reservation, fail-closed unknown states, older host fallback, and no dependency on third-party ByBrawe Goal. scripts/native-coexistence-test.mjs verifies absent/active/paused/complete/invalid and unavailable RPC behavior with a mocked OpenCode 2.2.4 context, and the 0.6.10 published npm/real-host release gate passed.
Still open: the issue specifically asks for an actual OpenCode 2.2.4 host native-only/Loop-only/Goal-active/Goal-paused session admission test across restart/compaction, and no duplicate autonomous turn under real scheduling. Mocked RPC contract and release notes do not prove atomic admission across independent plugins, or Desktop parity. Follow up with a deterministic real 2.2.4 host replay and keep recommending separate sessions.
Activity
fix(v2): skip native Goal RPC on pre-2.2.1 hosts (#195)
test(v2): legacy host RPC errors cannot stall standalone Loop (#195)
fix(release): retain old-OpenCode native-Goal compatibility regressio…
fix(release): retain old-OpenCode native-Goal compatibility regressio…
build(v2): sync verified Bun native Goal host-compat bundles (#195)
build(v2): sync verified Bun native Goal host-compat bundles (#195)
build(v2): sync verified Bun native Goal host-compat bundles (#195)
build(v2): sync verified Bun native Goal host-compat bundles (#195)
fix(v2): decode public OpenCode plugin.list wrapped data response (#195)
fix(v2): decode public OpenCode plugin.list wrapped data response (#195)
fix(v2): decode public OpenCode plugin.list wrapped data response (#195)
fix(v2): decode public OpenCode plugin.list wrapped data response (#195)
fix(v2): decode public OpenCode plugin.list wrapped data response (#195)
fix(v2): decode public OpenCode plugin.list wrapped data response (#195)
fix(v2): decode public OpenCode plugin.list wrapped data response (#195)
fix(v2): decode public OpenCode plugin.list wrapped data response (#195)
fix(v2): reserve active native Goal sessions and ignore orphaned Goal…
release(loop): 0.6.10 standalone OpenCode 2, native Goal guard and TU…
ByBrawe commentedon Oct 31, 2026
Shipped mitigation, but not full acceptance: Loop 0.6.10 includes PR #196: a public read-only
opencode.goalRPC query before Loop prompt admission, active/paused reservation, fail-closed unknown states, older host fallback, and no dependency on third-party ByBrawe Goal.scripts/native-coexistence-test.mjsverifies absent/active/paused/complete/invalid and unavailable RPC behavior with a mocked OpenCode 2.2.4 context, and the 0.6.10 published npm/real-host release gate passed.Still open: the issue specifically asks for an actual OpenCode 2.2.4 host native-only/Loop-only/Goal-active/Goal-paused session admission test across restart/compaction, and no duplicate autonomous turn under real scheduling. Mocked RPC contract and release notes do not prove atomic admission across independent plugins, or Desktop parity. Follow up with a deterministic real 2.2.4 host replay and keep recommending separate sessions.