v2.0.50
[2.0.50] - 2026-05-14
Clarify flow-auto handoff evidence
Flow 2.0.50 makes /flow-auto subagent coordination more explicit without overclaiming what runtime summaries can prove. Flow-auto prompts now require phase-boundary handoff reporting for planning, execution, and review with the exact modes task_subagent, inline_role, and not_supported, so agents expose whether work used an actual OpenCode Task/subagent, stayed inline, or could not use Task.
The release also fixes the reviewed runtime-summary ambiguity: derived task-progress rows are now labeled only as runtime_projection instead of hardcoding not_supported. This keeps status/history/rendered session summaries useful while avoiding a false claim that Task/subagent invocation was unavailable when the row is only a projection.
The release deliberately does not add slash commands, runtime tools, prompt modes, state paths, package exports, installer behavior, dependencies, persisted schema migrations, or live OpenCode UI automation. It preserves the existing @opencode-ai/plugin and zod compatibility boundary.
Constraint: Distinguish actual coordinator handoff decisions from derived runtime progress projections
Constraint: Keep the flow-auto handoff vocabulary narrow and exact: task_subagent, inline_role, and not_supported
Constraint: Keep @opencode-ai/plugin at 1.14.48 and zod at 4.1.8; this release changes no dependency compatibility boundary
Rejected: Treat runtime task-progress rows as proof of actual child sessions | those rows are derived presentation state, not OpenCode Task telemetry
Rejected: Continue rendering projected rows as not_supported | that falsely implies Task was unavailable, denied, or not permission-allowed
Rejected: Persist new handoff telemetry in this patch | neutral projection labeling fixes the reviewed correctness issue without widening persisted schema
Confidence: high
Scope-risk: moderate
Reversibility: clean
Directive: Keep actual handoff decisions in prompt/coordinator output separate from runtime-derived presentation rows unless real Task telemetry is intentionally persisted later
Tested: bun test tests/runtime-summary.test.ts tests/runtime-operator-history.test.ts tests/render-fixtures.test.ts tests/runtime/render-snapshot.test.ts tests/config/prompt-contracts.test.ts tests/mode-contracts.test.ts tests/prompt-mode-behavior-eval.test.ts tests/docs-semantic-parity.test.ts tests/docs-stale-reference-policy.test.ts tests/docs-tool-parity.test.ts && bun run typecheck (95 pass, 0 fail, 1 snapshot, 1960 expect() calls; tsc --noEmit passed); bun run check (release gate passed: dependency contract OK with project/plugin/root zod=4.1.8, architecture seams OK, fresh surfaces OK, release hygiene OK, pack invariants OK for version 2.0.50, bundle sanity OK, full suite 675 pass/0 fail, lint passed, bench smoke and bench gate passed); bun run smoke:release (passed for package 2.0.50, wrote release-smoke evidence under prompt-exports/release-smoke/, real OpenCode CLI not invoked); RepoPrompt review found one semantic blocker before release, and the implemented fix removed hardcoded runtime-projection not_supported evidence
Not-tested: Live OpenCode UI runtime interaction; live GitHub-hosted release workflow run for tag v2.0.50 before push