.omo/evidence/20260705-fix-4163/qa-summary.md
bun test packages/omo-opencode/src/hooks/todo-continuation-enforcer/parent-wake-race.test.tshasActiveChildTasks(parent)=false, hasPendingParentWake(parent)=true, incomplete todos, and no continuation injection across idle-entry, post-countdown, and pre-dispatch windows.bun test packages/omo-opencode/src/hooks/todo-continuation-enforcerbun test packages/omo-opencode/src/shared/prompt-async-route-audit.test.tsbun run typecheckbash .agents/skills/opencode-qa/scripts/lib/common.sh --self-checkbash .agents/skills/opencode-qa/scripts/sse-hook-probe.sh --self-testred-parent-wake-race.log shows both new regression cases failed with one prompt injected.green-parent-wake-race.log shows the first two cases passing.red-pre-dispatch-parent-wake-race.log shows the third case failed with one prompt injected.green-pre-dispatch-parent-wake-race.log and green-parent-wake-race-final.log show all three race cases passing.todo-continuation-suite-final.log shows 124 passing tests in the current tree.prompt-async-route-audit-final.log shows 10 passing tests.typecheck-final.log exits 0.no-excuse-final.log reports no violations in the three changed TypeScript files.opencode was not on PATH: opencode-qa-common-self-check.log..omo/evidence/20260705-fix-4163/bin/opencode delegates to bunx --bun opencode.opencode-qa-common-self-check-rerun.log.server.connected: opencode-qa-sse-self-test.log./global/health, /doc, and auth rejection checks: opencode-qa-server-smoke.log.The new deterministic test exercises the exact race seam: the enforcer sees no active child tasks while a parent wake is still owed. It covers both gate sites: the idle-time decision and the post-countdown injection recheck. The OpenCode QA scripts prove the real OpenCode server event surface is available in an isolated sandbox, while the prompt route audit proves the fix did not add or bypass any promptAsync route.
A live parent-with-todos plus background-child-completion repro was not practical in this turn. It would require a model-driven OpenCode session that reliably creates incomplete todos, launches a background child, completes it, and delays parent wake delivery in the small teardown window. The deterministic test is the faithful channel for that race because it controls the two predicates that define the window without introducing model nondeterminism or real-time flake.