.omo/evidence/20260705-fix-4420/QA-SUMMARY.md
packages/omo-opencode/src/hooks/team-session-events/team-member-error-handler.tspackages/omo-opencode/src/hooks/team-session-events/team-member-error-handler.test.tsred-guard-reverted-team-session-events.txt
PATH="$HOME/.bun/bin:$PATH" bun test packages/omo-opencode/src/hooks/team-session-eventsreplacement-session was clobbered to status errored.green-team-session-events.txt
40 pass, including #given fallback retry replaces a member sessionId #when stale session.error settles #then replacement stays running without a member_error announcement.typecheck-after-install.txt: bun run typecheck passed after refreshing dependencies post-merge.typecheck-omo-opencode.txt: targeted tsgo --noEmit -p packages/omo-opencode/tsconfig.json passed.no-excuse-typescript.txt: TypeScript no-excuse scan passed for both changed files.loc-check.txt: handler is 222 pure LOC; existing test file is 387 pure LOC. The test file-size smell is carried because the required fork takeover is a mechanical two-file bug fix and splitting the existing suite would be unrelated architecture churn.opencode-qa-common-self-check.txt: opencode-qa harness dependencies and isolated XDG sandbox behavior passed.opencode-qa-sse-self-test.txt: isolated OpenCode SSE /event surface opened and delivered server.connected.session-error-sse-proof.txt: isolated OpenCode server loaded the local plugin, drove prompt_async against a local provider returning a non-retryable context error, observed session.error on /event, and proved the real OpenCode DB session count stayed unchanged (21744 before and after).session-error-event.json: captured first matching session.error event with ContextOverflowError from the local failing provider.session.error interleaving: the fake OpenCode status call swaps the member to a replacement running session before the error handler resumes, then asserts state, pending-delivery reservation, and lead inbox side effects.afterEach and removed with rm(..., { recursive: true, force: true }).