Follow-up to #2336 (umbrella) / PR #2463 (partial sweep). Covers Area 8 deferred from that PR.
Context
The global `runPreparedReply` mock in `src/auto-reply/reply/get-reply.test-mocks.ts:39-40` replaces the real function with `vi.fn(async () => undefined)`, preventing any integration test from exercising the `resolveReplyDirectives` → `runPreparedReply` boundary. This is one of the five shields that hid #2334 from CI until a user-facing crash surfaced.
Scope
AC
Context
Follow-up to #2336 (umbrella) / PR #2463 (partial sweep). Covers Area 8 deferred from that PR.
Context
The global `runPreparedReply` mock in `src/auto-reply/reply/get-reply.test-mocks.ts:39-40` replaces the real function with `vi.fn(async () => undefined)`, preventing any integration test from exercising the `resolveReplyDirectives` → `runPreparedReply` boundary. This is one of the five shields that hid #2334 from CI until a user-facing crash surfaced.
Scope
AC
Context