$ npm run test
# cwd: /home/bellman/Workspace/oh-my-claudecode
# status: success
# exit_code: 0
# duration_ms: 22145

[stdout]

> oh-my-claude-sisyphus@4.7.9 test
> vitest


[1m[46m RUN [49m[22m [36mv4.0.18 [39m[90m/home/bellman/Workspace/oh-my-claudecode[39m

 [32m✓[39m src/hooks/persistent-mode/__tests__/error-handling.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 178[2mms[22m[39m
 [32m✓[39m src/__tests__/session-start-cache-cleanup.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 240[2mms[22m[39m
 [32m✓[39m src/__tests__/context-safety.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 113[2mms[22m[39m
 [32m✓[39m src/__tests__/cli-win32-warning.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 270[2mms[22m[39m
 [32m✓[39m src/__tests__/resolve-transcript-path.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 135[2mms[22m[39m
 [32m✓[39m src/hooks/recovery/__tests__/storage.test.ts [2m([22m[2m1 test[22m[2m)[22m[33m 412[2mms[22m[39m
     [33m[2m✓[22m[39m prepends generic synthetic thinking instead of reusing prior assistant thinking [33m 411[2mms[22m[39m
 [32m✓[39m src/tools/lsp/__tests__/client-win32-spawn.test.ts [2m([22m[2m3 tests[22m[2m)[22m[33m 390[2mms[22m[39m
     [33m[2m✓[22m[39m should pass shell: true on win32 [33m 384[2mms[22m[39m
 [32m✓[39m src/__tests__/run-cjs-graceful-fallback.test.ts [2m([22m[2m9 tests[22m[2m)[22m[33m 418[2mms[22m[39m
 [32m✓[39m src/lib/__tests__/worktree-paths.test.ts [2m([22m[2m55 tests[22m[2m)[22m[33m 305[2mms[22m[39m
 [32m✓[39m src/__tests__/pre-tool-enforcer.test.ts [2m([22m[2m12 tests[22m[2m)[22m[33m 536[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/windows-platform.test.ts [2m([22m[2m27 tests[22m[2m)[22m[33m 536[2mms[22m[39m
       [33m[2m✓[22m[39m should use emoji icons on macOS/Linux (current platform) [33m 519[2mms[22m[39m
 [32m✓[39m src/__tests__/pre-compact-cwd.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 108[2mms[22m[39m
 [32m✓[39m src/__tests__/auto-slash-aliases.test.ts [2m([22m[2m3 tests[22m[2m)[22m[33m 661[2mms[22m[39m
     [33m[2m✓[22m[39m discovers alias commands from skill frontmatter [33m 651[2mms[22m[39m
 [32m✓[39m src/__tests__/notepad.test.ts [2m([22m[2m40 tests[22m[2m)[22m[32m 182[2mms[22m[39m
 [32m✓[39m src/mcp/__tests__/job-state-db-deprecation.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 181[2mms[22m[39m
 [32m✓[39m src/__tests__/context-guard-stop.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 44[2mms[22m[39m
 [32m✓[39m src/__tests__/job-management-sqlite.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 174[2mms[22m[39m
 [32m✓[39m src/openclaw/__tests__/index.test.ts [2m([22m[2m24 tests[22m[2m)[22m[32m 13[2mms[22m[39m
 [32m✓[39m src/__tests__/hooks/plugin-patterns.test.ts [2m([22m[2m28 tests[22m[2m)[22m[33m 453[2mms[22m[39m
 [32m✓[39m src/hooks/skill-state/__tests__/skill-state.test.ts [2m([22m[2m37 tests[22m[2m)[22m[32m 288[2mms[22m[39m
 [32m✓[39m src/__tests__/file-lock.test.ts [2m([22m[2m16 tests[22m[2m)[22m[33m 374[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/reply-config.test.ts [2m([22m[2m8 tests[22m[2m)[22m[33m 711[2mms[22m[39m
     [33m[2m✓[22m[39m enables reply config when reply-capable platform exists only at event level [33m 601[2mms[22m[39m
 [32m✓[39m src/mcp/__tests__/team-server-artifact-convergence.test.ts [2m([22m[2m3 tests[22m[2m)[22m[33m 741[2mms[22m[39m
     [33m[2m✓[22m[39m handleStatus converges to terminal artifact before pid liveness [33m 731[2mms[22m[39m
 [32m✓[39m src/tools/__tests__/state-tools.test.ts [2m([22m[2m28 tests[22m[2m)[22m[32m 87[2mms[22m[39m
 [32m✓[39m src/team/__tests__/tmux-session.test.ts [2m([22m[2m30 tests[22m[2m)[22m[32m 79[2mms[22m[39m
 [32m✓[39m src/__tests__/hud-marketplace-resolution.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 74[2mms[22m[39m
 [32m✓[39m src/__tests__/smoke-slack-and-state.test.ts [2m([22m[2m23 tests[22m[2m)[22m[32m 124[2mms[22m[39m
 [32m✓[39m src/team/__tests__/git-worktree.test.ts [2m([22m[2m8 tests[22m[2m)[22m[33m 518[2mms[22m[39m
 [32m✓[39m src/installer/__tests__/hook-templates.test.ts [2m([22m[2m5 tests[22m[2m)[22m[33m 623[2mms[22m[39m
     [33m[2m✓[22m[39m keeps installer template and plugin script aligned for supported compatibility keywords [33m 375[2mms[22m[39m
 [32m✓[39m src/team/__tests__/runtime-done-recovery.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 225[2mms[22m[39m
 [32m✓[39m src/__tests__/job-state-db.test.ts [2m([22m[2m74 tests[22m[2m)[22m[33m 655[2mms[22m[39m
 [32m✓[39m src/team/__tests__/task-file-ops.test.ts [2m([22m[2m41 tests[22m[2m)[22m[32m 76[2mms[22m[39m
 [32m✓[39m src/team/__tests__/merge-coordinator.test.ts [2m([22m[2m6 tests[22m[2m)[22m[33m 650[2mms[22m[39m
 [32m✓[39m src/team/__tests__/edge-cases.test.ts [2m([22m[2m67 tests[22m[2m)[22m[32m 100[2mms[22m[39m
 [32m✓[39m src/hooks/project-memory/__tests__/storage.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 69[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/usage-api-lock.test.ts [2m([22m[2m3 tests[22m[2m)[22m[33m 1245[2mms[22m[39m
     [33m[2m✓[22m[39m returns stale cache without throwing when lock acquisition fails [33m 1198[2mms[22m[39m
 [32m✓[39m src/hooks/factcheck/__tests__/sentinel-gate.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 269[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/usage-api-stale.test.ts [2m([22m[2m5 tests[22m[2m)[22m[33m 1243[2mms[22m[39m
     [33m[2m✓[22m[39m sets stale=true when serving cached data on 429 [33m 1166[2mms[22m[39m
 [32m✓[39m src/__tests__/session-start-script-context.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 41[2mms[22m[39m
 [32m✓[39m src/hooks/__tests__/compaction-concurrency.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 87[2mms[22m[39m
 [32m✓[39m src/__tests__/learner/auto-learner.test.ts [2m([22m[2m40 tests[22m[2m)[22m[32m 58[2mms[22m[39m
 [32m✓[39m src/__tests__/rate-limit-wait/daemon-bootstrap.test.ts [2m([22m[2m2 tests[22m[2m)[22m[33m 1358[2mms[22m[39m
     [33m[2m✓[22m[39m uses resolved daemon module path and sanitized child env when starting [33m 1352[2mms[22m[39m
 [32m✓[39m src/team/__tests__/tmux-session.create-team.test.ts [2m([22m[2m3 tests[22m[2m)[22m[33m 909[2mms[22m[39m
     [33m[2m✓[22m[39m creates a detached session when running outside tmux [33m 304[2mms[22m[39m
     [33m[2m✓[22m[39m anchors context to TMUX_PANE to avoid focus races [33m 302[2mms[22m[39m
     [33m[2m✓[22m[39m creates a dedicated tmux window when requested [33m 302[2mms[22m[39m
 [32m✓[39m src/__tests__/slack-socket.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 51[2mms[22m[39m
 [32m✓[39m src/__tests__/tools/trace-tools.test.ts [2m([22m[2m22 tests[22m[2m)[22m[32m 75[2mms[22m[39m
 [32m✓[39m src/hooks/session-end/__tests__/mode-state-cleanup.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 257[2mms[22m[39m
 [32m✓[39m src/hooks/session-end/__tests__/session-end-bridge-cleanup.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 224[2mms[22m[39m
 [32m✓[39m src/__tests__/skills.test.ts [2m([22m[2m22 tests[22m[2m)[22m[32m 44[2mms[22m[39m
 [32m✓[39m src/hooks/project-memory/__tests__/detector.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 53[2mms[22m[39m
 [32m✓[39m src/hooks/ultrawork/session-isolation.test.ts [2m([22m[2m28 tests[22m[2m)[22m[32m 45[2mms[22m[39m
 [32m✓[39m src/hooks/session-end/__tests__/duplicate-notifications.test.ts [2m([22m[2m2 tests[22m[2m)[22m[33m 326[2mms[22m[39m
     [33m[2m✓[22m[39m does not re-dispatch session-end through notify() when config only comes from legacy stopHookCallbacks [33m 312[2mms[22m[39m
 [32m✓[39m src/__tests__/shared-memory.test.ts [2m([22m[2m35 tests[22m[2m)[22m[32m 44[2mms[22m[39m
 [32m✓[39m src/team/__tests__/worker-health.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 79[2mms[22m[39m
 [32m✓[39m src/hooks/session-end/__tests__/subdirectory-cwd.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 294[2mms[22m[39m
 [32m✓[39m src/hooks/project-memory/__tests__/learner.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 70[2mms[22m[39m
 [32m✓[39m src/__tests__/package-dir-resolution-regression.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 18[2mms[22m[39m
 [32m✓[39m src/team/__tests__/bridge-integration.test.ts [2m([22m[2m17 tests[22m[2m)[22m[32m 28[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/slack-socket.test.ts [2m([22m[2m17 tests[22m[2m)[22m[32m 46[2mms[22m[39m
 [32m✓[39m src/hooks/autopilot/__tests__/cancel.test.ts [2m([22m[2m41 tests[22m[2m)[22m[32m 55[2mms[22m[39m
 [32m✓[39m src/team/__tests__/runtime-watchdog-retry.test.ts [2m([22m[2m6 tests[22m[2m)[22m[33m 1249[2mms[22m[39m
     [33m[2m✓[22m[39m requeues task when dead pane still has retries remaining [33m 344[2mms[22m[39m
 [32m✓[39m src/hooks/autopilot/__tests__/validation.test.ts [2m([22m[2m47 tests[22m[2m)[22m[32m 70[2mms[22m[39m
 [32m✓[39m src/__tests__/delegation-enforcement-levels.test.ts [2m([22m[2m63 tests[22m[2m)[22m[33m 910[2mms[22m[39m
       [33m[2m✓[22m[39m calls enforcement before HUD tracking [33m 887[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/notify-registry-integration.test.ts [2m([22m[2m15 tests[22m[2m)[22m[32m 110[2mms[22m[39m
 [32m✓[39m src/hooks/__tests__/background-process-guard.test.ts [2m([22m[2m17 tests[22m[2m)[22m[32m 66[2mms[22m[39m
 [32m✓[39m src/hooks/__tests__/bridge-openclaw.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 65[2mms[22m[39m
 [32m✓[39m src/__tests__/consensus-execution-handoff.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 36[2mms[22m[39m
 [32m✓[39m src/cli/__tests__/team.test.ts [2m([22m[2m19 tests[22m[2m)[22m[33m 1786[2mms[22m[39m
     [33m[2m✓[22m[39m startTeamJob starts runtime-cli and persists running job [33m 1177[2mms[22m[39m
     [33m[2m✓[22m[39m waitForTeamJob times out with running status [33m 501[2mms[22m[39m
 [32m✓[39m src/hooks/keyword-detector/__tests__/index.test.ts [2m([22m[2m228 tests[22m[2m)[22m[32m 45[2mms[22m[39m
 [32m✓[39m src/__tests__/team-server-validation.test.ts [2m([22m[2m21 tests[22m[2m)[22m[32m 28[2mms[22m[39m
 [32m✓[39m src/hooks/mode-registry/__tests__/session-isolation.test.ts [2m([22m[2m32 tests[22m[2m)[22m[32m 41[2mms[22m[39m
 [32m✓[39m src/team/__tests__/summary-report.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 51[2mms[22m[39m
 [32m✓[39m src/__tests__/ralph-prd-mandatory.test.ts [2m([22m[2m29 tests[22m[2m)[22m[32m 27[2mms[22m[39m
 [32m✓[39m src/team/__tests__/inbox-outbox.test.ts [2m([22m[2m22 tests[22m[2m)[22m[32m 41[2mms[22m[39m
 [32m✓[39m src/hooks/__tests__/codebase-map.test.ts [2m([22m[2m34 tests[22m[2m)[22m[32m 44[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/mission-board-state.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 21[2mms[22m[39m
 [32m✓[39m src/hooks/autopilot/__tests__/transitions.test.ts [2m([22m[2m28 tests[22m[2m)[22m[32m 57[2mms[22m[39m
 [32m✓[39m src/hooks/__tests__/stop-hook-openclaw-cooldown.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 58[2mms[22m[39m
 [32m✓[39m src/__tests__/rate-limit-wait/daemon.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 29[2mms[22m[39m
 [32m✓[39m src/hooks/subagent-tracker/__tests__/index.test.ts [2m([22m[2m25 tests[22m[2m)[22m[32m 38[2mms[22m[39m
 [32m✓[39m src/__tests__/task-continuation.test.ts [2m([22m[2m93 tests[22m[2m)[22m[32m 44[2mms[22m[39m
 [32m✓[39m src/hooks/__tests__/bridge.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 33[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/dispatcher.test.ts [2m([22m[2m79 tests[22m[2m)[22m[32m 28[2mms[22m[39m
 [32m✓[39m src/hooks/project-memory/__tests__/integration.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 151[2mms[22m[39m
 [32m✓[39m src/hooks/session-end/__tests__/openclaw-session-end.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 208[2mms[22m[39m
 [32m✓[39m src/__tests__/rate-limit-wait/integration.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 35[2mms[22m[39m
 [32m✓[39m src/team/__tests__/auto-cleanup.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 52[2mms[22m[39m
 [32m✓[39m src/__tests__/shared-memory-concurrency.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 265[2mms[22m[39m
 [32m✓[39m src/tools/__tests__/memory-tools.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 80[2mms[22m[39m
 [32m✓[39m src/cli/commands/__tests__/team.test.ts [2m([22m[2m17 tests[22m[2m)[22m[32m 40[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/template-engine.test.ts [2m([22m[2m55 tests[22m[2m)[22m[32m 33[2mms[22m[39m
 [32m✓[39m src/tools/lsp/__tests__/client-timeout-env.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 49[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/formatter.test.ts [2m([22m[2m48 tests[22m[2m)[22m[32m 30[2mms[22m[39m
 [32m✓[39m src/team/__tests__/api-interop.dispatch.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 32[2mms[22m[39m
 [32m✓[39m src/__tests__/ralph-progress.test.ts [2m([22m[2m30 tests[22m[2m)[22m[32m 26[2mms[22m[39m
 [32m✓[39m src/team/__tests__/activity-log.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 13[2mms[22m[39m
 [32m✓[39m src/tools/python-repl/__tests__/tcp-fallback.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 22[2mms[22m[39m
 [32m✓[39m src/__tests__/cleanup-validation.test.ts [2m([22m[2m6 tests[22m[2m)[22m[33m 2544[2mms[22m[39m
     [33m[2m✓[22m[39m omc-plan skill resolves correctly [33m 446[2mms[22m[39m
     [33m[2m✓[22m[39m agent registry has 18 agents [33m 1761[2mms[22m[39m
 [32m✓[39m src/hooks/__tests__/bridge-pkill.test.ts [2m([22m[2m21 tests[22m[2m)[22m[32m 17[2mms[22m[39m
 [32m✓[39m src/__tests__/post-tool-verifier.test.mjs [2m([22m[2m44 tests[22m[2m)[22m[32m 74[2mms[22m[39m
 [32m✓[39m src/team/__tests__/runtime-assign.test.ts [2m([22m[2m1 test[22m[2m)[22m[33m 2438[2mms[22m[39m
     [33m[2m✓[22m[39m rolls task assignment back when tmux trigger cannot be delivered [33m 2437[2mms[22m[39m
 [32m✓[39m src/hooks/permission-handler/__tests__/index.test.ts [2m([22m[2m119 tests[22m[2m)[22m[32m 23[2mms[22m[39m
 [32m✓[39m src/team/__tests__/team-registration.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 17[2mms[22m[39m
 [32m✓[39m src/hooks/subagent-tracker/__tests__/flush-race.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 18[2mms[22m[39m
 [32m✓[39m src/cli/__tests__/cli-boot.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 2654[2mms[22m[39m
     [33m[2m✓[22m[39m omc --madmax does not throw duplicate command error [33m 2326[2mms[22m[39m
 [32m✓[39m src/team/__tests__/api-interop.compatibility.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 20[2mms[22m[39m
 [32m✓[39m src/__tests__/installer.test.ts [2m([22m[2m42 tests[22m[2m)[22m[32m 23[2mms[22m[39m
 [32m✓[39m src/hooks/__tests__/bridge-security.test.ts [2m([22m[2m78 tests[22m[2m)[22m[32m 30[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/custom-rate-provider.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 28[2mms[22m[39m
 [32m✓[39m src/__tests__/mnemosyne/finder.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 15[2mms[22m[39m
 [32m✓[39m src/hooks/persistent-mode/idle-cooldown.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 30[2mms[22m[39m
 [32m✓[39m src/hooks/persistent-mode/__tests__/cancel-race.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 44[2mms[22m[39m
[90mstdout[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2mwrites file when file callback is enabled
[22m[39m[stop-callback] Session summary written to /tmp/test-test-session-123.md

[90mstdout[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2mwrites JSON format when configured
[22m[39m[stop-callback] Session summary written to /tmp/test.json

[90mstdout[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2msends Telegram notification when enabled
[22m[39m[stop-callback] Telegram notification sent

[90mstdout[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2mprefixes Telegram messages with normalized tags from tagList
[22m[39m[stop-callback] Telegram notification sent

[90mstdout[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2msends Discord notification when enabled
[22m[39m[stop-callback] Discord notification sent

[90mstdout[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2mprefixes Discord messages with normalized tags from tagList
[22m[39m[stop-callback] Discord notification sent

[90mstdout[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2mexecutes multiple callbacks in parallel
[22m[39m[stop-callback] Session summary written to /tmp/test.md

[90mstdout[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2mexecutes multiple callbacks in parallel
[22m[39m[stop-callback] Telegram notification sent
[stop-callback] Discord notification sent

 [32m✓[39m src/hooks/session-end/__tests__/callbacks.test.ts [2m([22m[2m26 tests[22m[2m)[22m[32m 18[2mms[22m[39m
 [32m✓[39m src/hooks/persistent-mode/__tests__/ralph-max-iteration.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 24[2mms[22m[39m
 [32m✓[39m src/hooks/autopilot/__tests__/summary.test.ts [2m([22m[2m28 tests[22m[2m)[22m[32m 30[2mms[22m[39m
 [32m✓[39m src/hooks/persistent-mode/__tests__/skill-state-stop.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 145[2mms[22m[39m
 [32m✓[39m src/hooks/subagent-tracker/__tests__/session-replay.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 18[2mms[22m[39m
 [32m✓[39m src/team/__tests__/team-status.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 25[2mms[22m[39m
 [32m✓[39m src/team/__tests__/api-interop.cwd-resolution.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 22[2mms[22m[39m
 [32m✓[39m src/cli/__tests__/launch.test.ts [2m([22m[2m89 tests[22m[2m)[22m[32m 26[2mms[22m[39m
 [32m✓[39m src/__tests__/ralph-prd.test.ts [2m([22m[2m29 tests[22m[2m)[22m[32m 21[2mms[22m[39m
 [32m✓[39m src/__tests__/doctor-conflicts.test.ts [2m([22m[2m20 tests[22m[2m)[22m[32m 29[2mms[22m[39m
 [32m✓[39m src/__tests__/model-routing.test.ts [2m([22m[2m95 tests[22m[2m)[22m[32m 25[2mms[22m[39m
 [32m✓[39m src/__tests__/hooks/learner/bridge.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 19[2mms[22m[39m
 [32m✓[39m src/hooks/persistent-mode/__tests__/rate-limit-stop.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 209[2mms[22m[39m
 [32m✓[39m src/hooks/subagent-tracker/__tests__/flow-tracer.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 13[2mms[22m[39m
 [32m✓[39m src/hooks/task-size-detector/__tests__/index.test.ts [2m([22m[2m87 tests[22m[2m)[22m[32m 15[2mms[22m[39m
 [32m✓[39m src/team/__tests__/audit-log.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 27[2mms[22m[39m
 [32m✓[39m src/__tests__/agent-registry.test.ts [2m([22m[2m6 tests[22m[2m)[22m[33m 409[2mms[22m[39m
     [33m[2m✓[22m[39m all registry agents are exported from index.ts [33m 395[2mms[22m[39m
 [32m✓[39m src/hooks/autopilot/__tests__/pipeline.test.ts [2m([22m[2m48 tests[22m[2m)[22m[32m 32[2mms[22m[39m
 [32m✓[39m src/team/__tests__/unified-team.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 11[2mms[22m[39m
 [32m✓[39m src/team/__tests__/task-router.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 18[2mms[22m[39m
 [32m✓[39m src/__tests__/pipeline-orchestrator.test.ts [2m([22m[2m29 tests[22m[2m)[22m[32m 24[2mms[22m[39m
 [32m✓[39m src/team/__tests__/outbox-reader.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 20[2mms[22m[39m
 [32m✓[39m src/tools/__tests__/cancel-integration.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 29[2mms[22m[39m
 [32m✓[39m src/__tests__/delegation-enforcer.test.ts [2m([22m[2m37 tests[22m[2m)[22m[32m 47[2mms[22m[39m
 [32m✓[39m src/__tests__/consolidation-contracts.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 22[2mms[22m[39m
 [32m✓[39m src/team/__tests__/runtime-v2.dispatch.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 2457[2mms[22m[39m
     [33m[2m✓[22m[39m writes durable inbox dispatch evidence when startup worker notification succeeds [33m 677[2mms[22m[39m
     [33m[2m✓[22m[39m does not auto-kill a worker pane when startup notification fails [33m 1762[2mms[22m[39m
 [32m✓[39m src/hooks/__tests__/askuserquestion-lifecycle.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 24[2mms[22m[39m
 [32m✓[39m src/team/__tests__/heartbeat.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 11[2mms[22m[39m
 [32m✓[39m src/hooks/persistent-mode/__tests__/team-ralplan-stop.test.ts [2m([22m[2m29 tests[22m[2m)[22m[33m 473[2mms[22m[39m
 [32m✓[39m src/lib/__tests__/mode-state-io.test.ts [2m([22m[2m19 tests[22m[2m)[22m[32m 19[2mms[22m[39m
 [32m✓[39m src/features/state-manager/__tests__/cache.test.ts [2m([22m[2m21 tests[22m[2m)[22m[32m 20[2mms[22m[39m
 [32m✓[39m src/__tests__/live-data.test.ts [2m([22m[2m38 tests[22m[2m)[22m[32m 25[2mms[22m[39m
 [32m✓[39m src/lib/__tests__/payload-limits.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 14[2mms[22m[39m
 [32m✓[39m src/mcp/__tests__/team-cleanup.test.ts [2m([22m[2m26 tests[22m[2m)[22m[32m 19[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/session-registry.test.ts [2m([22m[2m21 tests[22m[2m)[22m[33m 2912[2mms[22m[39m
       [33m[2m✓[22m[39m retries across lock-timeout windows and eventually appends [33m 2330[2mms[22m[39m
 [32m✓[39m src/team/__tests__/capture-file-snapshot.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 24[2mms[22m[39m
 [32m✓[39m src/__tests__/hud-windows.test.ts [2m([22m[2m19 tests[22m[2m)[22m[32m 17[2mms[22m[39m
 [32m✓[39m src/__tests__/rate-limit-wait/tmux-detector.test.ts [2m([22m[2m20 tests[22m[2m)[22m[32m 14[2mms[22m[39m
 [32m✓[39m src/openclaw/__tests__/dispatcher.test.ts [2m([22m[2m41 tests[22m[2m)[22m[32m 18[2mms[22m[39m
 [32m✓[39m src/features/delegation-routing/__tests__/resolver.test.ts [2m([22m[2m52 tests[22m[2m)[22m[32m 21[2mms[22m[39m
 [32m✓[39m src/__tests__/learner/matcher.test.ts [2m([22m[2m50 tests[22m[2m)[22m[32m 15[2mms[22m[39m
 [32m✓[39m src/hooks/persistent-mode/stop-hook-blocking.test.ts [2m([22m[2m26 tests[22m[2m)[22m[33m 791[2mms[22m[39m
 [32m✓[39m src/tools/lsp/__tests__/client-eviction.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 14[2mms[22m[39m
 [32m✓[39m src/team/__tests__/model-contract.test.ts [2m([22m[2m30 tests[22m[2m)[22m[32m 13[2mms[22m[39m
 [32m✓[39m src/team/__tests__/idle-nudge.test.ts [2m([22m[2m20 tests[22m[2m)[22m[32m 20[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/config.test.ts [2m([22m[2m84 tests[22m[2m)[22m[32m 21[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/tmux.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 10[2mms[22m[39m
 [32m✓[39m src/__tests__/omc-tools-contract.test.ts [2m([22m[2m172 tests[22m[2m)[22m[32m 30[2mms[22m[39m
 [32m✓[39m src/__tests__/purge-stale-cache.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/hooks/think-mode/__tests__/index.test.ts [2m([22m[2m107 tests[22m[2m)[22m[32m 19[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/usage-api.test.ts [2m([22m[2m22 tests[22m[2m)[22m[32m 18[2mms[22m[39m
 [32m✓[39m src/__tests__/non-claude-provider-detection.test.ts [2m([22m[2m45 tests[22m[2m)[22m[32m 11[2mms[22m[39m
 [32m✓[39m src/team/__tests__/usage-tracker.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 10[2mms[22m[39m
 [32m✓[39m src/__tests__/prompt-injection.test.ts [2m([22m[2m29 tests[22m[2m)[22m[32m 14[2mms[22m[39m
 [32m✓[39m src/__tests__/load-agent-prompt.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 11[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/reply-listener.test.ts [2m([22m[2m49 tests[22m[2m)[22m[32m 14[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/custom-integration.test.ts [2m([22m[2m32 tests[22m[2m)[22m[32m 12[2mms[22m[39m
 [32m✓[39m src/__tests__/lsp-servers.test.ts [2m([22m[2m83 tests[22m[2m)[22m[32m 13[2mms[22m[39m
 [32m✓[39m src/__tests__/hooks.test.ts [2m([22m[2m145 tests[22m[2m)[22m[33m 333[2mms[22m[39m
 [32m✓[39m src/__tests__/providers/bitbucket.test.ts [2m([22m[2m22 tests[22m[2m)[22m[32m 10[2mms[22m[39m
 [32m✓[39m src/__tests__/providers/gitea.test.ts [2m([22m[2m20 tests[22m[2m)[22m[32m 11[2mms[22m[39m
 [32m✓[39m src/team/__tests__/worker-restart.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 15[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/profiles.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/__tests__/tier0-contracts.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 12[2mms[22m[39m
 [32m✓[39m src/__tests__/permission-enforcement.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 8[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/hook-config.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/__tests__/hud-agents.test.ts [2m([22m[2m73 tests[22m[2m)[22m[32m 16[2mms[22m[39m
 [32m✓[39m src/verification/tier-selector.test.ts [2m([22m[2m45 tests[22m[2m)[22m[32m 11[2mms[22m[39m
 [32m✓[39m src/__tests__/providers/azure-devops.test.ts [2m([22m[2m21 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/hooks/persistent-mode/session-isolation.test.ts [2m([22m[2m28 tests[22m[2m)[22m[33m 1200[2mms[22m[39m
 [32m✓[39m src/__tests__/auto-update.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/installer/__tests__/claude-md-merge.test.ts [2m([22m[2m25 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/__tests__/rate-limit-wait/rate-limit-monitor.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 12[2mms[22m[39m
 [32m✓[39m src/hooks/autopilot/__tests__/transition.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 13[2mms[22m[39m
 [32m✓[39m src/__tests__/installer-hooks-merge.test.ts [2m([22m[2m25 tests[22m[2m)[22m[32m 12[2mms[22m[39m
 [32m✓[39m src/__tests__/providers/github.test.ts [2m([22m[2m19 tests[22m[2m)[22m[32m 12[2mms[22m[39m
 [32m✓[39m src/__tests__/providers/gitlab.test.ts [2m([22m[2m20 tests[22m[2m)[22m[32m 10[2mms[22m[39m
 [32m✓[39m src/hooks/session-end/__tests__/session-duration.test.ts [2m([22m[2m17 tests[22m[2m)[22m[32m 14[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/config-merge.test.ts [2m([22m[2m19 tests[22m[2m)[22m[32m 10[2mms[22m[39m
 [32m✓[39m src/hooks/empty-message-sanitizer/__tests__/index.test.ts [2m([22m[2m60 tests[22m[2m)[22m[32m 11[2mms[22m[39m
 [32m✓[39m src/tools/python-repl/__tests__/bridge-manager-cleanup.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/git.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 8[2mms[22m[39m
 [32m✓[39m src/hooks/autopilot/__tests__/state.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 12[2mms[22m[39m
 [32m✓[39m src/team/__tests__/message-router.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 10[2mms[22m[39m
 [32m✓[39m src/__tests__/mnemosyne/loader.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 10[2mms[22m[39m
 [32m✓[39m src/__tests__/hooks/learner/parser.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/team/__tests__/permissions.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/tools/__tests__/schema-conversion.test.ts [2m([22m[2m25 tests[22m[2m)[22m[32m 13[2mms[22m[39m
 [32m✓[39m src/mcp/__tests__/prompt-injection.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 10[2mms[22m[39m
 [32m✓[39m src/__tests__/providers/detection.test.ts [2m([22m[2m31 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/__tests__/directory-context-injector.test.ts [2m([22m[2m17 tests[22m[2m)[22m[32m 18[2mms[22m[39m
 [32m✓[39m src/team/__tests__/fs-utils.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 8[2mms[22m[39m
 [32m✓[39m src/__tests__/project-memory-merge.test.ts [2m([22m[2m20 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/team/__tests__/runtime-prompt-mode.test.ts [2m([22m[2m19 tests[22m[2m)[22m[33m 3313[2mms[22m[39m
     [33m[2m✓[22m[39m non-prompt worker waits for pane readiness before sending inbox instruction [33m 611[2mms[22m[39m
     [33m[2m✓[22m[39m claude worker does not pass model flag (not supported) [33m 599[2mms[22m[39m
     [33m[2m✓[22m[39m claude worker propagates ANTHROPIC_MODEL into the pane startup env [33m 602[2mms[22m[39m
     [33m[2m✓[22m[39m claude worker propagates custom provider env needed for inherited model selection [33m 599[2mms[22m[39m
     [33m[2m✓[22m[39m claude worker propagates tiered Bedrock/env model selection variables [33m 604[2mms[22m[39m
 [32m✓[39m src/hooks/persistent-mode/__tests__/tool-error.test.ts [2m([22m[2m26 tests[22m[2m)[22m[32m 11[2mms[22m[39m
 [32m✓[39m src/__tests__/bedrock-model-routing.test.ts [2m([22m[2m19 tests[22m[2m)[22m[33m 4084[2mms[22m[39m
       [33m[2m✓[22m[39m detects CLAUDE_CODE_USE_BEDROCK=1 [33m 369[2mms[22m[39m
       [33m[2m✓[22m[39m full chain: Task call injects invalid model for Bedrock [33m 2244[2mms[22m[39m
       [33m[2m✓[22m[39m returns permissionDecision:deny when Task has model and forceInherit is enabled [33m 780[2mms[22m[39m
       [33m[2m✓[22m[39m injects override message when forceInherit is enabled [33m 659[2mms[22m[39m
 [32m✓[39m src/hooks/beads-context/__tests__/index.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/__tests__/routing-force-inherit.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 13[2mms[22m[39m
 [32m✓[39m src/config/__tests__/loader.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 8[2mms[22m[39m
 [32m✓[39m src/__tests__/mnemosyne/detector.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 11[2mms[22m[39m
 [32m✓[39m src/hooks/__tests__/bridge-team-worker-guard.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 13[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/state.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/__tests__/installer-hud-skip.test.ts [2m([22m[2m22 tests[22m[2m)[22m[32m 8[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/verbosity.test.ts [2m([22m[2m30 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/hooks/setup/__tests__/windows-patch.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/hooks/todo-continuation/__tests__/isUserAbort.test.ts [2m([22m[2m27 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/tools/lsp/__tests__/client-handle-data.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 10[2mms[22m[39m
 [32m✓[39m src/openclaw/__tests__/config.test.ts [2m([22m[2m19 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/utils/__tests__/string-width.test.ts [2m([22m[2m41 tests[22m[2m)[22m[32m 10[2mms[22m[39m
 [32m✓[39m src/hooks/plugin-patterns/__tests__/index.test.ts [2m([22m[2m23 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/hooks/setup/__tests__/prune.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 13[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/skills.test.ts [2m([22m[2m24 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/hooks/factcheck/__tests__/factcheck.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/__tests__/hud-api-key-source.test.ts [2m([22m[2m14 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/installer/__tests__/safe-installer.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/team/__tests__/capabilities.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/sanitize.test.ts [2m([22m[2m27 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/__tests__/resolve-node.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/skills/__tests__/mingw-escape.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/hooks/__tests__/bridge-routing.test.ts [2m([22m[2m73 tests[22m[2m)[22m[33m 2709[2mms[22m[39m
       [33m[2m✓[22m[39m should route "ralph" and return a valid HookOutput [33m 783[2mms[22m[39m
       [33m[2m✓[22m[39m should route "setup-init" and return a valid HookOutput [33m 1054[2mms[22m[39m
 [32m✓[39m src/config/__tests__/models.test.ts [2m([22m[2m27 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/hooks/team-pipeline/__tests__/transitions.test.ts [2m([22m[2m19 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/platform-gating.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/team/__tests__/runtime.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/__tests__/tools/skills-tools.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 11[2mms[22m[39m
 [32m✓[39m src/utils/__tests__/frontmatter.test.ts [2m([22m[2m27 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/team/__tests__/runtime-cli.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/utils/__tests__/paths.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/__tests__/ssrf-guard.test.ts [2m([22m[2m21 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/team/__tests__/prompt-sanitization.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/__tests__/bash-history.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/hooks/factcheck/__tests__/sentinel.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/call-counts.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/notifications/__tests__/redact.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/cli/__tests__/tmux-utils.test.ts [2m([22m[2m17 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/hooks/persistent-mode/__tests__/idle-cooldown.test.ts [2m([22m[2m24 tests[22m[2m)[22m[32m 10[2mms[22m[39m
 [32m✓[39m src/hooks/todo-continuation/__tests__/isRateLimitStop.test.ts [2m([22m[2m23 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/team/__tests__/tmux-session.spawn.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/hooks/todo-continuation/__tests__/isAuthenticationError.test.ts [2m([22m[2m22 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/__tests__/tier0-docs-consistency.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/__tests__/installer-version-guard.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/context-warning.test.ts [2m([22m[2m16 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/model.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/hooks/autopilot/__tests__/prompts.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/team/__tests__/worker-bootstrap.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/cli/commands/__tests__/teleport.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 7[2mms[22m[39m
 [32m✓[39m src/__tests__/plugin-setup-deps.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/__tests__/mnemosyne/parser.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/__tests__/protected-mode-regressions.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 3[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/cwd.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/__tests__/agent-boundary-guidance.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/__tests__/hud-build-guidance.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 3[2mms[22m[39m
 [32m✓[39m src/__tests__/types.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/__tests__/standalone-server.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 8[2mms[22m[39m
 [32m✓[39m src/__tests__/daemon-module-path.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/team/__tests__/phase-controller.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/team/__tests__/mcp-team-bridge.usage.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/hooks/project-memory/__tests__/formatter.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/team/__tests__/tmux-session.kill-team-session.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/limits-error.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/stale-indicator.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/rate-limits-error.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 3[2mms[22m[39m
 [32m✓[39m src/hooks/session-end/__tests__/python-repl-cleanup.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 8[2mms[22m[39m
 [32m✓[39m src/__tests__/version-helper.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/team/__tests__/mcp-team-bridge.spawn-args.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/team/__tests__/tmux-comm.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/team/__tests__/team-name.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/cli/__tests__/teleport-help.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/cli/__tests__/team-runtime-boundary.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 3[2mms[22m[39m
 [32m✓[39m src/cli/__tests__/team-help.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 3[2mms[22m[39m
 [32m✓[39m src/team/__tests__/state-paths.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 3[2mms[22m[39m
 [32m✓[39m src/__tests__/auto-upgrade-prompt.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/defaults.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/team/__tests__/bridge-entry.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/thinking.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 3[2mms[22m[39m
 [32m✓[39m src/__tests__/mnemosyne/validator.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/__tests__/mcp-default-config.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 2[2mms[22m[39m
 [32m✓[39m src/__tests__/mnemosyne/config.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 3[2mms[22m[39m
 [32m✓[39m src/cli/__tests__/team-command-branding.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 2[2mms[22m[39m
 [32m✓[39m src/team/__tests__/cli-detection.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/interop/__tests__/mcp-bridge.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/mcp/__tests__/team-server-deprecation.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/__tests__/config-force-inherit-env.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/__tests__/cli-interop-flags.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/prompt-time.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/__tests__/compact-denylist.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
 [32m✓[39m src/team/__tests__/bridge-entry.guardrails.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/hooks/thinking-block-validator/__tests__/index.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/team/__tests__/runtime-v2.feature-flag.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 3[2mms[22m[39m
 [32m✓[39m src/__tests__/omc-tools-server.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 8[2mms[22m[39m
 [32m✓[39m src/__tests__/disable-tools.test.ts [2m([22m[2m31 tests[22m[2m)[22m[32m 9[2mms[22m[39m
 [32m✓[39m src/team/__tests__/api-interop.command-dialect.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 3[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/mission-board.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/version-display.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/__tests__/omc-tools-server-interop.test.ts [2m([22m[2m3 tests[22m[2m)[22m[33m 4930[2mms[22m[39m
     [33m[2m✓[22m[39m does not register interop tools by default [33m 4894[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/render-rate-limits-priority.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 5[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/max-width.test.ts [2m([22m[2m24 tests[22m[2m)[22m[32m 6[2mms[22m[39m
 [32m✓[39m src/__tests__/hud/render.test.ts [2m([22m[2m32 tests[22m[2m)[22m[32m 11[2mms[22m[39m
 [32m✓[39m src/cli/__tests__/ask.test.ts [2m([22m[2m19 tests[22m[2m)[22m[33m 4821[2mms[22m[39m
     [33m[2m✓[22m[39m accepts canonical advisor env and forwards prompt/task to advisor [33m 708[2mms[22m[39m
     [33m[2m✓[22m[39m accepts OMX advisor env alias in Phase-1 and emits deprecation warning [33m 711[2mms[22m[39m
     [33m[2m✓[22m[39m allows codex ask inside a Claude Code session [33m 719[2mms[22m[39m
     [33m[2m✓[22m[39m allows gemini ask inside a Claude Code session [33m 714[2mms[22m[39m
     [33m[2m✓[22m[39m loads --agent-prompt role from resolved prompts dir and prepends role content [33m 689[2mms[22m[39m
 [2m[90m↓[39m[22m src/__tests__/delegation-enforcer-integration.test.ts [2m([22m[2m7 tests[22m[2m | [22m[33m7 skipped[39m[2m)[22m
 [32m✓[39m src/__tests__/smoke-pipeline-edge.test.ts [2m([22m[2m48 tests[22m[2m)[22m[32m 46[2mms[22m[39m
 [32m✓[39m src/team/__tests__/index.compat-exports.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 2[2mms[22m[39m
 [32m✓[39m src/__tests__/cli-config-stop-callback.test.ts [2m([22m[2m3 tests[22m[2m)[22m[33m 7219[2mms[22m[39m
     [33m[2m✓[22m[39m updates telegram tagList options and preserves existing config fields [33m 2716[2mms[22m[39m
     [33m[2m✓[22m[39m applies and clears discord tags and ignores tag options for file callback [33m 2001[2mms[22m[39m
     [33m[2m✓[22m[39m configures slack stop-callback with webhook and tags [33m 2499[2mms[22m[39m
 [32m✓[39m src/__tests__/cli-notify-profile.test.ts [2m([22m[2m10 tests[22m[2m)[22m[33m 7361[2mms[22m[39m
     [33m[2m✓[22m[39m creates a discord profile and stores it in notificationProfiles [33m 699[2mms[22m[39m
     [33m[2m✓[22m[39m creates a telegram profile [33m 705[2mms[22m[39m
     [33m[2m✓[22m[39m creates a discord-bot profile with --channel-id [33m 707[2mms[22m[39m
     [33m[2m✓[22m[39m adds multiple platforms to the same profile [33m 1367[2mms[22m[39m
     [33m[2m✓[22m[39m does not affect legacy stopHookCallbacks when using --profile [33m 660[2mms[22m[39m
     [33m[2m✓[22m[39m shows profile config with --show [33m 675[2mms[22m[39m
     [33m[2m✓[22m[39m lists all profiles [33m 628[2mms[22m[39m
     [33m[2m✓[22m[39m shows a specific profile [33m 675[2mms[22m[39m
     [33m[2m✓[22m[39m deletes a profile [33m 621[2mms[22m[39m
     [33m[2m✓[22m[39m shows helpful message when no profiles exist [33m 620[2mms[22m[39m
 [32m✓[39m src/__tests__/job-management.test.ts [2m([22m[2m21 tests[22m[2m)[22m[33m 19271[2mms[22m[39m
         [33m[2m✓[22m[39m clamps negative to 1000ms minimum [33m 1253[2mms[22m[39m
         [33m[2m✓[22m[39m clamps zero to 1000ms minimum [33m 1252[2mms[22m[39m
       [33m[2m✓[22m[39m retries when job is not found initially then succeeds [33m 2379[2mms[22m[39m
       [33m[2m✓[22m[39m gives up after 10 not-found retries [33m 14073[2mms[22m[39m

[2m Test Files [22m [1m[32m315 passed[39m[22m[2m | [22m[33m1 skipped[39m[90m (316)[39m
[2m      Tests [22m [1m[32m6253 passed[39m[22m[2m | [22m[33m7 skipped[39m[90m (6260)[39m
[2m   Start at [22m 01:46:55
[2m   Duration [22m 20.70s[2m (transform 145.06s, setup 0ms, import 201.88s, tests 96.20s, environment 42ms)[22m



[stderr]
[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2minitJobDb[2m > [22m[2mshould initialize the database successfully
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2minitJobDb[2m > [22m[2mshould create the jobs.db file
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2minitJobDb[2m > [22m[2mshould be idempotent
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleCheckJobStatus - SQLite path[2m > [22m[2mreturns job data from SQLite when no JSON file exists
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleCheckJobStatus - SQLite path[2m > [22m[2mreturns job data from SQLite when no JSON file exists
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleCheckJobStatus - SQLite path[2m > [22m[2mreturns error when job not found in SQLite or JSON
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mcloseJobDb[2m > [22m[2mshould close the database
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleCheckJobStatus - SQLite path[2m > [22m[2mreturns error when job not found in SQLite or JSON
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleCheckJobStatus - SQLite path[2m > [22m[2mshows fallback metadata when present
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleCheckJobStatus - SQLite path[2m > [22m[2mshows fallback metadata when present
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleListJobs - SQLite path[2m > [22m[2mlists active jobs from SQLite
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleListJobs - SQLite path[2m > [22m[2mlists active jobs from SQLite
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleListJobs - SQLite path[2m > [22m[2mlists completed jobs from SQLite
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2misJobDbInitialized[2m > [22m[2mshould return true after init
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2misJobDbInitialized[2m > [22m[2mshould return false after close
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobDb[2m > [22m[2mshould return database instance when initialized
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobDb[2m > [22m[2mshould return database instance when initialized
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupsertJob[2m > [22m[2mshould insert a new job
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleListJobs - SQLite path[2m > [22m[2mlists completed jobs from SQLite
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupsertJob[2m > [22m[2mshould insert a new job
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupsertJob[2m > [22m[2mshould update an existing job
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleListJobs - SQLite path[2m > [22m[2mlists failed and timeout jobs under failed filter
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleListJobs - SQLite path[2m > [22m[2mlists failed and timeout jobs under failed filter
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleListJobs - SQLite path[2m > [22m[2mlists all jobs with deduplication
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleListJobs - SQLite path[2m > [22m[2mlists all jobs with deduplication
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupsertJob[2m > [22m[2mshould update an existing job
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupsertJob[2m > [22m[2mshould return false when db is not initialized
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupsertJob[2m > [22m[2mshould handle jobs with all optional fields
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleListJobs - SQLite path[2m > [22m[2mrespects limit parameter
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleListJobs - SQLite path[2m > [22m[2mrespects limit parameter
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleListJobs - SQLite path[2m > [22m[2mfilters by provider
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleListJobs - SQLite path[2m > [22m[2mfilters by provider
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupsertJob[2m > [22m[2mshould handle jobs with all optional fields
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupsertJob[2m > [22m[2mshould handle jobs with undefined optional fields
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupsertJob[2m > [22m[2mshould handle jobs with undefined optional fields
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mkills a running job found only in SQLite
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mkills a running job found only in SQLite
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mkills a running job found only in SQLite
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mhandles ESRCH (process already exited) via SQLite path
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mhandles ESRCH (process already exited) via SQLite path
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mhandles ESRCH (process already exited) via SQLite path
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mdoes NOT update DB status on non-ESRCH kill errors
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mdoes NOT update DB status on non-ESRCH kill errors
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mdoes NOT update DB status on non-ESRCH kill errors
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJob[2m > [22m[2mshould return a job by provider and jobId
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJob[2m > [22m[2mshould return a job by provider and jobId
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJob[2m > [22m[2mshould return null for non-existent job
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJob[2m > [22m[2mshould return null for non-existent job
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJob[2m > [22m[2mshould handle both providers independently
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJob[2m > [22m[2mshould handle both providers independently
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mrejects killing a terminal-state job in SQLite
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mrejects killing a terminal-state job in SQLite
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mrejects killing a job with no valid PID in SQLite
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJob[2m > [22m[2mshould correctly map boolean fields
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJob[2m > [22m[2mshould correctly map boolean fields
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJob[2m > [22m[2mshould return null when db is not initialized
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mhandleKillJob - SQLite fallback path[2m > [22m[2mrejects killing a job with no valid PID in SQLite
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mJSON fallback when SQLite not initialized[2m > [22m[2mreturns not found when both SQLite and JSON are unavailable
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-management-sqlite.test.ts[2m > [22m[2mjob-management SQLite integration[2m > [22m[2mJSON fallback when SQLite not initialized[2m > [22m[2mhandleListJobs returns empty when no source available
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobsByStatus[2m > [22m[2mshould filter by status for all providers
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobsByStatus[2m > [22m[2mshould filter by status for all providers
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobsByStatus[2m > [22m[2mshould filter by provider and status
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobsByStatus[2m > [22m[2mshould filter by provider and status
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobsByStatus[2m > [22m[2mshould return empty array when no matches
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobsByStatus[2m > [22m[2mshould return empty array when no matches
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobsByStatus[2m > [22m[2mshould return empty array when db is not initialized
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetActiveJobs[2m > [22m[2mshould return spawned and running jobs
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetActiveJobs[2m > [22m[2mshould return spawned and running jobs
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetActiveJobs[2m > [22m[2mshould filter by provider
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetActiveJobs[2m > [22m[2mshould filter by provider
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetActiveJobs[2m > [22m[2mshould return empty array when no active jobs
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetActiveJobs[2m > [22m[2mshould return empty array when no active jobs
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetActiveJobs[2m > [22m[2mshould return empty array when db is not initialized
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetActiveJobs[2m > [22m[2mshould include timeout status as not active
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetActiveJobs[2m > [22m[2mshould include timeout status as not active
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetRecentJobs[2m > [22m[2mshould return jobs within time window
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetRecentJobs[2m > [22m[2mshould return jobs within time window
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetRecentJobs[2m > [22m[2mshould filter by provider
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetRecentJobs[2m > [22m[2mshould filter by provider
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetRecentJobs[2m > [22m[2mshould use default time window of 1 hour
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetRecentJobs[2m > [22m[2mshould use default time window of 1 hour
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetRecentJobs[2m > [22m[2mshould return empty array when db is not initialized
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould update specific fields
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould update specific fields
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould return true even if no fields to update
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould return true even if no fields to update
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould update pid field
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould update pid field
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould update error field
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould update error field
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould update fallback fields
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould update fallback fields
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould update killedByUser field
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould update killedByUser field
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould update slug, model, and agentRole fields
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould update slug, model, and agentRole fields
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mupdateJobStatus[2m > [22m[2mshould return false when db is not initialized
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mdeleteJob[2m > [22m[2mshould delete a job
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mdeleteJob[2m > [22m[2mshould delete a job
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mdeleteJob[2m > [22m[2mshould succeed even if job does not exist
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mdeleteJob[2m > [22m[2mshould succeed even if job does not exist
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mdeleteJob[2m > [22m[2mshould only delete the specified provider job
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mdeleteJob[2m > [22m[2mshould only delete the specified provider job
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mdeleteJob[2m > [22m[2mshould return false when db is not initialized
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould import valid status JSON files
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould import valid status JSON files
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould skip malformed files
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould skip malformed files
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould return zero counts for empty directory
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould return zero counts for empty directory
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould import multiple files in a transaction
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould import multiple files in a transaction
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould skip files missing required fields
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould skip files missing required fields
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould handle non-existent directory gracefully
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould handle non-existent directory gracefully
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mmigrateFromJsonFiles[2m > [22m[2mshould return zero counts when db is not initialized
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mcleanupOldJobs[2m > [22m[2mshould remove old terminal jobs
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mcleanupOldJobs[2m > [22m[2mshould remove old terminal jobs
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mcleanupOldJobs[2m > [22m[2mshould not remove active jobs regardless of age
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mcleanupOldJobs[2m > [22m[2mshould not remove active jobs regardless of age
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mcleanupOldJobs[2m > [22m[2mshould remove timeout status jobs
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mcleanupOldJobs[2m > [22m[2mshould remove timeout status jobs
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mcleanupOldJobs[2m > [22m[2mshould use default max age of 24 hours
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mcleanupOldJobs[2m > [22m[2mshould use default max age of 24 hours
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mcleanupOldJobs[2m > [22m[2mshould return 0 when db is not initialized
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mcleanupOldJobs[2m > [22m[2mshould return 0 when no jobs to clean
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mcleanupOldJobs[2m > [22m[2mshould return 0 when no jobs to clean
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobStats[2m > [22m[2mshould return correct counts
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobStats[2m > [22m[2mshould return correct counts
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobStats[2m > [22m[2mshould return all zeros for empty db
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobStats[2m > [22m[2mshould return all zeros for empty db
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobStats[2m > [22m[2mshould count both providers together
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobStats[2m > [22m[2mshould count both providers together
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobStats[2m > [22m[2mshould return null when db is not initialized
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould return empty string when no jobs
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould return empty string when no jobs
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould include active jobs
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould include active jobs
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould include recent completed jobs
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould include recent completed jobs
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould include job stats
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould include job stats
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould show elapsed time for active jobs
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould show elapsed time for active jobs
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould show fallback information
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould show fallback information
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[task-file-ops] WARN: could not acquire lock for task 1, updating without lock
[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould show error messages
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould show error messages
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould truncate long error messages
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould truncate long error messages
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould limit recent jobs to 10
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould limit recent jobs to 10
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould only show recent jobs from last hour
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould only show recent jobs from last hour
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould show both codex and gemini jobs
[22m[39m[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.
[job-state-db] DEPRECATED: using _lastCwd fallback. Pass cwd explicitly.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould show both codex and gemini jobs
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/__tests__/job-state-db.test.ts[2m > [22m[2mjob-state-db[2m > [22m[2mgetJobSummaryForPreCompact[2m > [22m[2mshould return empty string when db is not initialized
[22m[39m[job-state-db] DEPRECATED: closeJobDb() called without cwd. Use closeAllJobDbs() for explicit intent.

[90mstderr[2m | src/hooks/session-end/__tests__/duplicate-notifications.test.ts[2m > [22m[2mprocessSessionEnd notification deduplication (issue #1440)[2m > [22m[2mdoes not re-dispatch session-end through notify() when config only comes from legacy stopHookCallbacks
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/omc-session-end-dedupe-78VT3Y'[39m }

[90mstderr[2m | src/hooks/session-end/__tests__/session-end-bridge-cleanup.test.ts[2m > [22m[2mprocessSessionEnd python bridge cleanup[2m > [22m[2mpasses extracted python_repl sessions to cleanupBridgeSessions
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/omc-session-end-bridge-vLDVz9'[39m }

[90mstderr[2m | src/team/__tests__/edge-cases.test.ts[2m > [22m[2minbox-outbox edge cases[2m > [22m[2mreadNewInboxMessages with malformed JSONL mixed with valid[2m > [22m[2mskips malformed lines, advances cursor past them, and returns all valid messages
[22m[39m[inbox-outbox] Skipping malformed JSONL line for w-malformed-test: this is not json

[90mstderr[2m | src/hooks/session-end/__tests__/duplicate-notifications.test.ts[2m > [22m[2mprocessSessionEnd notification deduplication (issue #1440)[2m > [22m[2mskips the legacy Discord callback when explicit session-end notifications already cover Discord
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/omc-session-end-dedupe-KEXZkH'[39m }

[90mstderr[2m | src/team/__tests__/runtime-prompt-mode.test.ts[2m > [22m[2mspawnWorkerForTask – prompt mode (Gemini & Codex)[2m > [22m[2mnon-prompt worker throws when pane never becomes ready and resets task to pending
[22m[39m[tmux-session] waitForPaneReady: pane %42 timed out after 40ms (set OMC_SHELL_READY_TIMEOUT_MS to tune)

[90mstderr[2m | src/__tests__/delegation-enforcement-levels.test.ts[2m > [22m[2mdelegation-enforcement-levels[2m > [22m[2mprocessPreToolUse integration via processHook[2m > [22m[2mcalls enforcement before HUD tracking
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-project'[39m }

[90mstderr[2m | src/__tests__/delegation-enforcement-levels.test.ts[2m > [22m[2mdelegation-enforcement-levels[2m > [22m[2mprocessPreToolUse integration via processHook[2m > [22m[2mblocks propagated from enforcement
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-project'[39m }

[90mstderr[2m | src/__tests__/delegation-enforcement-levels.test.ts[2m > [22m[2mdelegation-enforcement-levels[2m > [22m[2mprocessPreToolUse integration via processHook[2m > [22m[2mwarnings propagated from enforcement
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-project'[39m }

[90mstderr[2m | src/__tests__/delegation-enforcement-levels.test.ts[2m > [22m[2mdelegation-enforcement-levels[2m > [22m[2mprocessPreToolUse integration via processHook[2m > [22m[2mTask tool tracking still works when enforcement passes
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-project'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mTask tool with run_in_background=true[2m > [22m[2mshould allow background Task when under limit
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mTask tool with run_in_background=true[2m > [22m[2mshould block background Task when at limit
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mTask tool with run_in_background=true[2m > [22m[2mshould block background Task when over limit
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mTask tool with run_in_background=true[2m > [22m[2mshould allow foreground Task (no run_in_background)
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould route "keyword-detector" and return a valid HookOutput
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould route "ralph" and return a valid HookOutput
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mTask tool with run_in_background=true[2m > [22m[2mshould block executor background Task when Edit/Write are not pre-approved
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mTask tool with run_in_background=true[2m > [22m[2mshould keep read-only background Task in background without Edit/Write approvals
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mTask tool with run_in_background=true[2m > [22m[2mshould keep executor background Task when Edit/Write are pre-approved
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mBash tool with run_in_background=true[2m > [22m[2mshould block background Bash when at limit
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mBash tool with run_in_background=true[2m > [22m[2mshould allow foreground Bash even when at limit
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mBash tool with run_in_background=true[2m > [22m[2mshould block unsafe background Bash when not pre-approved
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mBash tool with run_in_background=true[2m > [22m[2mshould keep safe background Bash commands in background
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mBash tool with run_in_background=true[2m > [22m[2mshould keep exact pre-approved background Bash commands in background
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mconfigurable limits[2m > [22m[2mshould respect custom maxBackgroundTasks from config
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mconfigurable limits[2m > [22m[2mshould allow up to limit - 1 tasks
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mconfigurable limits[2m > [22m[2mshould default to 5 when config has no maxBackgroundTasks
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mnon-background tools unaffected[2m > [22m[2mshould not block Read tool
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/background-process-guard.test.ts[2m > [22m[2mBackground Process Guard (issue #302)[2m > [22m[2mnon-background tools unaffected[2m > [22m[2mshould not block Write tool
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-openclaw.test.ts[2m > [22m[2mbridge-level regression tests[2m > [22m[2mkeyword-detector injects translation message for non-Latin prompts
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-openclaw.test.ts[2m > [22m[2mbridge-level regression tests[2m > [22m[2mkeyword-detector does NOT inject translation message for Latin prompts
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-openclaw.test.ts[2m > [22m[2mbridge-level regression tests[2m > [22m[2mpre-tool-use calls _openclaw.wake for AskUserQuestion
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/session-end/__tests__/openclaw-session-end.test.ts[2m > [22m[2msession-end OpenClaw behavior (issue #1456)[2m > [22m[2mwakes OpenClaw from the bridge during session-end when OMC_OPENCLAW=1
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/omc-session-end-claw-nMH8jp'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge.test.ts[2m > [22m[2mprocessHook - Environment Kill-Switches[2m > [22m[2mDISABLE_OMC flag[2m > [22m[2mshould process normally when DISABLE_OMC is not set
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge.test.ts[2m > [22m[2mprocessHook - Environment Kill-Switches[2m > [22m[2mDISABLE_OMC flag[2m > [22m[2mshould process normally when DISABLE_OMC=false
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge.test.ts[2m > [22m[2mprocessHook - Environment Kill-Switches[2m > [22m[2mOMC_SKIP_HOOKS flag[2m > [22m[2mshould process normally when hook type is not in skip list
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/session-end/__tests__/openclaw-session-end.test.ts[2m > [22m[2msession-end OpenClaw behavior (issue #1456)[2m > [22m[2mdoes not call wakeOpenClaw directly when processSessionEnd is invoked without the bridge
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/omc-session-end-claw-bxVKy6'[39m }

[90mstderr[2m | src/hooks/session-end/__tests__/openclaw-session-end.test.ts[2m > [22m[2msession-end OpenClaw behavior (issue #1456)[2m > [22m[2mdoes not call wakeOpenClaw when OMC_OPENCLAW is not set
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/omc-session-end-claw-M2QPnI'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge.test.ts[2m > [22m[2mprocessHook - Environment Kill-Switches[2m > [22m[2mOMC_SKIP_HOOKS flag[2m > [22m[2mshould process normally when OMC_SKIP_HOOKS is empty
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge.test.ts[2m > [22m[2mprocessHook - Environment Kill-Switches[2m > [22m[2mPerformance[2m > [22m[2mshould have no performance impact when flags are not set
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test'[39m }

[90mstderr[2m | src/hooks/session-end/__tests__/openclaw-session-end.test.ts[2m > [22m[2msession-end OpenClaw behavior (issue #1456)[2m > [22m[2mdoes not throw even if wakeOpenClaw mock is configured to reject
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/omc-session-end-claw-N4SmwU'[39m }

[90mstderr[2m | src/__tests__/rate-limit-wait/integration.test.ts[2m > [22m[2mRate Limit Wait Integration Tests[2m > [22m[2mScenario: Error handling and edge cases[2m > [22m[2mshould handle API timeout gracefully
[22m[39m[RateLimitMonitor] Error checking rate limit: Error: ETIMEDOUT
    at [90m/home/bellman/Workspace/oh-my-claudecode/[39msrc/__tests__/rate-limit-wait/integration.test.ts:335:45
    at [90mfile:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:145:11
    at [90mfile:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:915:26
    at [90mfile:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:1243:20
    at new Promise (<anonymous>)
    at runWithTimeout [90m(file:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:1209:10[90m)[39m
    at [90mfile:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:1653:37
    at Traces.$ [90m(file:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4mvitest[24m/dist/chunks/traces.CCmnQaNT.js:142:27[90m)[39m
    at trace [90m(file:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4mvitest[24m/dist/chunks/test.B8ej_ZHS.js:239:21[90m)[39m
    at runTest [90m(file:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:1653:12[90m)[39m

[90mstderr[2m | src/__tests__/rate-limit-wait/integration.test.ts[2m > [22m[2mRate Limit Wait Integration Tests[2m > [22m[2mScenario: Error handling and edge cases[2m > [22m[2mshould handle malformed tmux output
[22m[39m[TmuxDetector] Invalid pane ID format: output

[90mstderr[2m | src/cli/commands/__tests__/team.test.ts[2m > [22m[2mteamCommand api operations[2m > [22m[2mblocks team start when running inside worker context
[22m[39mWorker context (demo-team/worker-1) cannot start/spawn new teams. Use only "omc team api ..." operations from worker sessions.

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould route "persistent-mode" and return a valid HookOutput
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-security.test.ts[2m > [22m[2mMCP Prompt Injection Boundaries[2m > [22m[2mshould return undefined for non-existent but valid-format agent roles
[22m[39m[loadAgentPrompt] Agent prompt file not found
[prompt-injection] Agent role "nonexistent-agent-xyz" prompt not found, skipping injection

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould route "session-start" and return a valid HookOutput
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-security.test.ts[2m > [22m[2mInput Normalization Security[2m > [22m[2mshould pass through unknown fields for non-sensitive hooks
[22m[39m[bridge-normalize] Unknown field "custom_field" passed through for hook "pre-tool-use"

[90mstderr[2m | src/hooks/__tests__/bridge-security.test.ts[2m > [22m[2mSensitive Hook Field Filtering[2m > [22m[2mshould never write unknown-field warnings to stdout (console.debug)
[22m[39m[bridge-normalize] Unknown field "totally_unknown_field" passed through for hook "pre-tool-use"

hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
[90mstderr[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2mskips Telegram when missing credentials
[22m[39m[stop-callback] Telegram: missing botToken or chatId

[90mstderr[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2mskips Discord when missing webhook URL
[22m[39m[stop-callback] Discord: missing webhookUrl

[90mstderr[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2mhandles file write errors gracefully
[22m[39m[stop-callback] File write failed: Error: Permission denied
    at [90m/home/bellman/Workspace/oh-my-claudecode/[39msrc/hooks/session-end/__tests__/callbacks.test.ts:376:13
    at Mock [90m(file:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/spy[24m/dist/index.js:285:34[90m)[39m
    at writeToFile [90m(/home/bellman/Workspace/oh-my-claudecode/[39msrc/hooks/session-end/callbacks.ts:124:5[90m)[39m
    at Module.triggerStopCallbacks [90m(/home/bellman/Workspace/oh-my-claudecode/[39msrc/hooks/session-end/callbacks.ts:253:19[90m)[39m
    at [90m/home/bellman/Workspace/oh-my-claudecode/[39msrc/hooks/session-end/__tests__/callbacks.test.ts:391:18
    at [90mfile:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:145:11
    at [90mfile:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:915:26
    at [90mfile:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:1243:20
    at new Promise (<anonymous>)
    at runWithTimeout [90m(file:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:1209:10[90m)[39m

[90mstderr[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2mhandles Telegram API errors gracefully
[22m[39m[stop-callback] Telegram send failed: Telegram API error: 401 - undefined

[90mstderr[2m | src/hooks/session-end/__tests__/callbacks.test.ts[2m > [22m[2mtriggerStopCallbacks[2m > [22m[2mhandles network errors gracefully
[22m[39m[stop-callback] Discord send failed: Network error

hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
[90mstderr[2m | src/cli/__tests__/launch.test.ts[2m > [22m[2mrunClaude — exit code propagation[2m > [22m[2mdirect policy[2m > [22m[2mexits with code 1 on ENOENT
[22m[39m[omc] Error: claude CLI not found in PATH.

[90mstderr[2m | src/cli/__tests__/launch.test.ts[2m > [22m[2mrunClaude — exit code propagation[2m > [22m[2minside-tmux policy[2m > [22m[2mexits with code 1 on ENOENT
[22m[39m[omc] Error: claude CLI not found in PATH.

hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
[90mstderr[2m | src/__tests__/delegation-enforcer.test.ts[2m > [22m[2mdelegation-enforcer[2m > [22m[2mprocessPreToolUse[2m > [22m[2mlogs warning only when OMC_DEBUG=true and model injected
[22m[39m[OMC] Auto-injecting model: sonnet for executor (normalized from claude-sonnet-4-6)

hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
[90mstderr[2m | src/tools/__tests__/cancel-integration.test.ts[2m > [22m[2mcancel-integration[2m > [22m[2m4. Stale cleanup[2m > [22m[2mshould detect and deactivate state files with old _meta.updatedAt
[22m[39m[state-manager] cleanupStaleStates: marking "ralph-state.json" inactive (last updated 2026-03-09T20:46:59.040Z)

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould route "session-end" and return a valid HookOutput
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould route "pre-tool-use" and return a valid HookOutput
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould route "post-tool-use" and return a valid HookOutput
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould route "autopilot" and return a valid HookOutput
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
[90mstderr[2m | src/hooks/__tests__/askuserquestion-lifecycle.test.ts[2m > [22m[2mAskUserQuestion notification lifecycle (issue #597)[2m > [22m[2mpre-tool-use should dispatch ask-user-question notification
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-issue-597'[39m }

[90mstderr[2m | src/hooks/__tests__/askuserquestion-lifecycle.test.ts[2m > [22m[2mAskUserQuestion notification lifecycle (issue #597)[2m > [22m[2mpost-tool-use should NOT dispatch ask-user-question notification
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-issue-597'[39m }

[90mstderr[2m | src/hooks/__tests__/askuserquestion-lifecycle.test.ts[2m > [22m[2mAskUserQuestion notification lifecycle (issue #597)[2m > [22m[2mpre-tool-use should skip notification when sessionId is missing
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-issue-597'[39m }

[90mstderr[2m | src/hooks/__tests__/askuserquestion-lifecycle.test.ts[2m > [22m[2mAskUserQuestion notification lifecycle (issue #597)[2m > [22m[2mnon-AskUserQuestion tools should not trigger notification
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-issue-597'[39m }

hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
[90mstderr[2m | src/__tests__/rate-limit-wait/tmux-detector.test.ts[2m > [22m[2mtmux-detector[2m > [22m[2msecurity: input validation[2m > [22m[2mshould reject invalid pane IDs in capturePaneContent
[22m[39m[TmuxDetector] Invalid pane ID format: ; rm -rf /
[TmuxDetector] Invalid pane ID format: %0; echo hacked
[TmuxDetector] Invalid pane ID format: $(whoami)
[TmuxDetector] Invalid pane ID format: %0`id`
[TmuxDetector] Invalid pane ID format: ../etc/passwd
[TmuxDetector] Invalid pane ID format: 
[TmuxDetector] Invalid pane ID format: abc

hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
[90mstderr[2m | src/tools/lsp/__tests__/client-eviction.test.ts[2m > [22m[2mLspClientManager eviction and disconnectAll[2m > [22m[2mdisconnectAll resilience[2m > [22m[2mshould continue disconnecting when one client throws
[22m[39mLSP disconnectAll: failed to disconnect client "key2": Error: connection reset

[90mstderr[2m | src/tools/lsp/__tests__/client-eviction.test.ts[2m > [22m[2mLspClientManager eviction and disconnectAll[2m > [22m[2mdisconnectAll resilience[2m > [22m[2mshould clear all maps after disconnectAll even with failures
[22m[39mLSP disconnectAll: failed to disconnect client "key1": Error: timeout

hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
[90mstderr[2m | src/__tests__/load-agent-prompt.test.ts[2m > [22m[2mloadAgentPrompt[2m > [22m[2msecurity: path traversal prevention[2m > [22m[2mallows valid agent names only
[22m[39m[loadAgentPrompt] Agent prompt file not found

[90mstderr[2m | src/__tests__/load-agent-prompt.test.ts[2m > [22m[2mloadAgentPrompt[2m > [22m[2merror handling[2m > [22m[2mreturns fallback for nonexistent agent
[22m[39m[loadAgentPrompt] Agent prompt file not found

[90mstderr[2m | src/__tests__/load-agent-prompt.test.ts[2m > [22m[2mloadAgentPrompt[2m > [22m[2merror handling[2m > [22m[2mfallback does not leak internal paths
[22m[39m[loadAgentPrompt] Agent prompt file not found

hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
[90mstderr[2m | src/__tests__/hooks.test.ts[2m > [22m[2mMutual Exclusion - UltraQA and Ralph[2m > [22m[2mRalph mutual exclusion[2m > [22m[2mshould fail to start Ralph when UltraQA is active
[22m[39mCannot start Ralph Loop while UltraQA is active. Cancel UltraQA first with /oh-my-claudecode:cancel.

hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
[90mstderr[2m | src/__tests__/rate-limit-wait/rate-limit-monitor.test.ts[2m > [22m[2mrate-limit-monitor[2m > [22m[2mcheckRateLimitStatus[2m > [22m[2mshould handle API errors gracefully
[22m[39m[RateLimitMonitor] Error checking rate limit: Error: API error
    at [90m/home/bellman/Workspace/oh-my-claudecode/[39msrc/__tests__/rate-limit-wait/rate-limit-monitor.test.ts:147:45
    at [90mfile:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:145:11
    at [90mfile:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:915:26
    at [90mfile:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:1243:20
    at new Promise (<anonymous>)
    at runWithTimeout [90m(file:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:1209:10[90m)[39m
    at [90mfile:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:1653:37
    at Traces.$ [90m(file:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4mvitest[24m/dist/chunks/traces.CCmnQaNT.js:142:27[90m)[39m
    at trace [90m(file:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4mvitest[24m/dist/chunks/test.B8ej_ZHS.js:239:21[90m)[39m
    at runTest [90m(file:///home/bellman/Workspace/oh-my-claudecode.[39momx-worktrees/launch-feat-refactor-skills/node_modules/[4m@vitest/runner[24m/dist/index.js:1653:12[90m)[39m

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould route "permission-request" and return a valid HookOutput
[22m[39m[hook-bridge] validateHookInput failed for "permission-request": missing keys: toolName

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould handle keyword-detector with a keyword prompt
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould route code review keyword to the review mode message
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould route security review keyword to the security mode message
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould handle keyword-detector with no keyword prompt
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould handle pre-tool-use with Bash tool input
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould handle post-tool-use with tool output
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/__tests__/hud/state.test.ts[2m > [22m[2mreadHudConfig[2m > [22m[2merror handling[2m > [22m[2mreturns defaults when settings.json is invalid JSON
[22m[39m[HUD] Failed to read settings.json: Unexpected token 'i', "invalid json" is not valid JSON

[90mstderr[2m | src/__tests__/hud/state.test.ts[2m > [22m[2mreadHudConfig[2m > [22m[2merror handling[2m > [22m[2mfalls back to legacy when settings.json read fails
[22m[39m[HUD] Failed to read settings.json: Read error

fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mHookType routing[2m > [22m[2mshould handle session-start and return continue:true
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2minput normalization[2m > [22m[2mshould normalize snake_case tool_name to camelCase toolName
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2minput normalization[2m > [22m[2mshould normalize cwd to directory
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2minput normalization[2m > [22m[2mshould normalize tool_response to toolOutput
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2minput normalization[2m > [22m[2mshould handle already-camelCase input without breaking
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mOMC_SKIP_HOOKS kill-switch[2m > [22m[2mshould process normally with empty OMC_SKIP_HOOKS
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mDISABLE_OMC kill-switch[2m > [22m[2mshould process normally when DISABLE_OMC=false
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/test-routing'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mRegression #858 — snake_case fields reach handlers after normalization[2m > [22m[2msession-end: snake_case input reaches handler without crashing
[22m[39m[worktree] non-git directory provided, falling back to process root { directory: [32m'/tmp/bridge-858-session-end-SHwZIE'[39m }

[90mstderr[2m | src/hooks/__tests__/bridge-routing.test.ts[2m > [22m[2mprocessHook - Routing Matrix[2m > [22m[2mRegression #858 — snake_case fields reach handlers after normalization[2m > [22m[2mpre-compact: snake_case input reaches handler and creates checkpoint directory
[22m[39m[bridge-normalize] Unknown field "trigger" passed through for hook "pre-compact"

[90mstderr[2m | src/cli/commands/__tests__/teleport.test.ts[2m > [22m[2mcreateWorktree — no shell injection via execFileSync[2m > [22m[2mpasses branchName and baseBranch as discrete array arguments, never as a shell string
[22m[39mNot in a git repository. Run this command from within a git repo.

[90mstderr[2m | src/cli/commands/__tests__/teleport.test.ts[2m > [22m[2mcreateWorktree — no shell injection via execFileSync[2m > [22m[2mdoes not invoke execSync for the three createWorktree git commands
[22m[39mNot in a git repository. Run this command from within a git repo.


