diff --git a/src/gateway/session-observer-bookkeeping.test.ts b/src/gateway/session-observer-bookkeeping.test.ts new file mode 100644 index 000000000000..fa14359f5fef --- /dev/null +++ b/src/gateway/session-observer-bookkeeping.test.ts @@ -0,0 +1,41 @@ +import { describe, expect, it } from "vitest"; + +describe("session observer run bookkeeping", () => { + it("bounds dormant runs and preserves revision continuity for evicted entries", async () => { + const { rememberSessionObserverDormantRun } = await import("./session-observer-model.js"); + const runs = new Map(); + const floors = new Map(); + for (let index = 0; index < 300; index += 1) { + rememberSessionObserverDormantRun(runs, floors, { + sessionKey: index === 0 ? "global" : `agent:main:session-${index}`, + sessionId: `session-${index}`, + runId: `run-${index}`, + agentId: index === 0 ? "work" : "main", + utilityModelRef: "openai/gpt-test", + startedAt: index, + lastPersistedAt: undefined, + revision: index + 1, + digestCount: 1, + consecutiveFailures: 0, + planProgress: undefined, + previousDigest: undefined, + }); + } + expect(runs.size).toBe(256); + expect(runs.has("run-0")).toBe(false); + expect(runs.has("run-299")).toBe(true); + expect(floors.get("agent:work:global")?.revision).toBe(1); + expect(floors.has("global")).toBe(false); + }); + + it("bounds disabled-run bookkeeping", async () => { + const { rememberSessionObserverDisabledRun } = await import("./session-observer-model.js"); + const runs = new Set(); + for (let index = 0; index < 600; index += 1) { + rememberSessionObserverDisabledRun(runs, `run-${index}`); + } + expect(runs.size).toBe(512); + expect(runs.has("run-0")).toBe(false); + expect(runs.has("run-599")).toBe(true); + }); +}); diff --git a/src/gateway/session-observer.test.ts b/src/gateway/session-observer.test.ts index 44f71ce1b9db..db609908e7c1 100644 --- a/src/gateway/session-observer.test.ts +++ b/src/gateway/session-observer.test.ts @@ -1084,43 +1084,3 @@ describe("session observer schema", () => { expect(normalized?.assessment).toHaveLength(320); }); }); - -describe("session observer run bookkeeping", () => { - it("bounds dormant runs and preserves revision continuity for evicted entries", async () => { - const { rememberSessionObserverDormantRun } = await import("./session-observer-model.js"); - const runs = new Map(); - const floors = new Map(); - for (let index = 0; index < 300; index += 1) { - rememberSessionObserverDormantRun(runs, floors, { - sessionKey: index === 0 ? "global" : `agent:main:session-${index}`, - sessionId: `session-${index}`, - runId: `run-${index}`, - agentId: index === 0 ? "work" : "main", - utilityModelRef: "openai/gpt-test", - startedAt: index, - lastPersistedAt: undefined, - revision: index + 1, - digestCount: 1, - consecutiveFailures: 0, - planProgress: undefined, - previousDigest: undefined, - }); - } - expect(runs.size).toBe(256); - expect(runs.has("run-0")).toBe(false); - expect(runs.has("run-299")).toBe(true); - expect(floors.get("agent:work:global")?.revision).toBe(1); - expect(floors.has("global")).toBe(false); - }); - - it("bounds disabled-run bookkeeping", async () => { - const { rememberSessionObserverDisabledRun } = await import("./session-observer-model.js"); - const runs = new Set(); - for (let index = 0; index < 600; index += 1) { - rememberSessionObserverDisabledRun(runs, `run-${index}`); - } - expect(runs.size).toBe(512); - expect(runs.has("run-0")).toBe(false); - expect(runs.has("run-599")).toBe(true); - }); -});