From c3aaacc89e2ccd6144ca18c067cc9a272cf7472a Mon Sep 17 00:00:00 2001 From: fancydirty Date: Sat, 15 Aug 2026 00:46:30 +0800 Subject: [PATCH 1/2] fix: handle batched code mode tail events --- .../__tests__/code-mode-tail.test.ts | 25 +++++++++++++++++++ packages/workshop-backend/src/overseer.ts | 5 ++++ 2 files changed, 30 insertions(+) create mode 100644 packages/workshop-backend/__tests__/code-mode-tail.test.ts diff --git a/packages/workshop-backend/__tests__/code-mode-tail.test.ts b/packages/workshop-backend/__tests__/code-mode-tail.test.ts new file mode 100644 index 00000000..c02f4a4d --- /dev/null +++ b/packages/workshop-backend/__tests__/code-mode-tail.test.ts @@ -0,0 +1,25 @@ +import { expect, it, vi } from "vitest"; +import { CodeModeTailLoopback } from "../src/overseer.js"; + +const trace = (rpcMethod: string) => ({ + event: { rpcMethod }, logs: [], exceptions: [], diagnosticsChannelEvents: [], +}) as unknown as TraceItem; + +it("delivers only a run paired with one verify", async () => { + const deliverCodeModeTrace = vi.fn(async () => undefined); + const loopback = { ctx: { + props: { executionId: "execution", overseerId: "overseer" }, + exports: { OverseerDurableObject: { + idFromString: (id: string) => id, + get: () => ({ deliverCodeModeTrace }), + } }, + } }; + const tail = (...methods: string[]) => CodeModeTailLoopback.prototype.tail.call( + loopback as unknown as CodeModeTailLoopback, methods.map(trace)); + await tail("verify", "run"); + expect(deliverCodeModeTrace).toHaveBeenCalledOnce(); + expect(deliverCodeModeTrace.mock.calls[0]?.[1]).toMatchObject({ event: { rpcMethod: "run" } }); + for (const methods of [["verify", "other"], ["verify", "verify", "run"], ["run", "run"]]) { + deliverCodeModeTrace.mockClear(); await tail(...methods); expect(deliverCodeModeTrace).not.toHaveBeenCalled(); + } +}); diff --git a/packages/workshop-backend/src/overseer.ts b/packages/workshop-backend/src/overseer.ts index e5fed5bb..fd2d1002 100644 --- a/packages/workshop-backend/src/overseer.ts +++ b/packages/workshop-backend/src/overseer.ts @@ -7235,6 +7235,11 @@ export class CodeModeTailLoopback extends WorkerEntrypoint event.event && "rpcMethod" in event.event + ? event.event.rpcMethod : undefined); + if (events.length === 2 && methods.includes("verify") && methods.includes("run")) { + events = [events[methods.indexOf("run")]]; + } if (events.length != 1) { logger.error("unexpected code mode trace size", { event: "code.mode.trace.size.unexpected", From fa043f150459bf306393eb4d6a006755cb01345d Mon Sep 17 00:00:00 2001 From: fancydirty Date: Sat, 15 Aug 2026 01:37:18 +0800 Subject: [PATCH 2/2] refactor: clarify code mode tail batch selection --- .../workshop-backend/__tests__/code-mode-tail.test.ts | 2 -- packages/workshop-backend/src/overseer.ts | 10 ++++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/workshop-backend/__tests__/code-mode-tail.test.ts b/packages/workshop-backend/__tests__/code-mode-tail.test.ts index c02f4a4d..270c9681 100644 --- a/packages/workshop-backend/__tests__/code-mode-tail.test.ts +++ b/packages/workshop-backend/__tests__/code-mode-tail.test.ts @@ -1,10 +1,8 @@ import { expect, it, vi } from "vitest"; import { CodeModeTailLoopback } from "../src/overseer.js"; - const trace = (rpcMethod: string) => ({ event: { rpcMethod }, logs: [], exceptions: [], diagnosticsChannelEvents: [], }) as unknown as TraceItem; - it("delivers only a run paired with one verify", async () => { const deliverCodeModeTrace = vi.fn(async () => undefined); const loopback = { ctx: { diff --git a/packages/workshop-backend/src/overseer.ts b/packages/workshop-backend/src/overseer.ts index fd2d1002..cdf5fd7f 100644 --- a/packages/workshop-backend/src/overseer.ts +++ b/packages/workshop-backend/src/overseer.ts @@ -7235,10 +7235,12 @@ export class CodeModeTailLoopback extends WorkerEntrypoint event.event && "rpcMethod" in event.event - ? event.event.rpcMethod : undefined); - if (events.length === 2 && methods.includes("verify") && methods.includes("run")) { - events = [events[methods.indexOf("run")]]; + if (events.length === 2) { + const [first, second] = events; + const firstMethod = first.event && "rpcMethod" in first.event ? first.event.rpcMethod : undefined; + const secondMethod = second.event && "rpcMethod" in second.event ? second.event.rpcMethod : undefined; + if (firstMethod === "verify" && secondMethod === "run") events = [second]; + else if (firstMethod === "run" && secondMethod === "verify") events = [first]; } if (events.length != 1) { logger.error("unexpected code mode trace size", {