  it.effect.each(["live in the user turn", "buffered before the user turn"] as const)(
    "TRANSCRIPT 26537: assistant %s",
    (assistantFrame) =>
      Effect.scoped(
        Effect.gen(function* () {
          const harness = yield* makeWakeHarness;
          const now = yield* DateTime.now;
          const log = (line: string) => console.log(`[26537 ${assistantFrame}] ${line}`);
          const turn = (attempt: string, text: string, ordinal: number, wake = false) =>
            makeClaudeTestTurnInput({
              threadId: harness.threadId,
              providerThread: harness.providerThread,
              now,
              attemptId: RunAttemptId.make(attempt),
              text,
              attachments: [],
              providerTurnOrdinal: ordinal,
              ...(wake ? { messageCreatedBy: "agent", messageCreationSource: "provider" } : {}),
            });
          const terminals = () =>
            harness.terminalEvents().map((event, index) => `#${index + 1}=${event.status}`).join(" ");

          yield* harness.runtime.startTurn(turn("t1", "Run the build in the background.", 1));
          yield* Queue.offer(harness.sdkMessages, wakeTaskStarted);
          yield* Queue.offer(harness.sdkMessages, turnOneResult);
          yield* harness.awaitTerminal(1);
          log(`run 1 (user) settled: ${terminals()}`);
          yield* harness.offerAndWait(wakeNotification);
          yield* harness.offerAndWait(wakeTurnInit);
          if (assistantFrame === "buffered before the user turn") yield* harness.offerAndWait(wakeAssistant);
          log(`idle: Claude opened its wake turn; continuation requests=${harness.continuationRequests.length}`);

          yield* harness.runtime.startTurn(turn("t2", "How is the build going?", 2));
          yield* harness.until(() => harness.offeredMessages.length === 2);
          log("run 2 (queued user message) started before the continuation; prompt offered to Claude");
          if (assistantFrame === "live in the user turn") yield* Queue.offer(harness.sdkMessages, wakeAssistant);
          yield* Queue.offer(
            harness.sdkMessages,
            makeResultFrame({ uuid: "00000000-0000-4000-8000-000000000105", result: "The build passed." }),
          );
          yield* harness.awaitTerminal(2);
          log(`run 2 settled, Claude answered the wake inside it: ${terminals()}`);

          yield* harness.runtime.startTurn(turn("t3", "Background task completed.", 3, true));
          log("run 3 (continuation for the already-answered wake) started");
          yield* TestClock.adjust("3 minutes");
          log(`+3 min (past the 2-minute wake deadline): ${terminals()}`);

          const next = yield* harness.runtime
            .startTurn(turn("t4", "Are you still there?", 4))
            .pipe(Effect.exit);
          log(
            Exit.isSuccess(next)
              ? `run 4 (next queued user message) started; prompts offered=${harness.offeredMessages.length}`
              : `run 4 (next queued user message) REJECTED: ${String(Exit.isFailure(next) ? JSON.stringify(next.cause).slice(0, 220) : "")}`,
          );
        }).pipe(
          Effect.provide(Layer.mergeAll(IdAllocator.layer, McpProviderSessions.layer, NodeServices.layer)),
        ),
      ),
  );

