Skip to content

Commit 77440c3

Browse files
committed
Cover queued writers in concurrent-lane-overlap tests
1 parent 8610d41 commit 77440c3

1 file changed

Lines changed: 38 additions & 0 deletions

File tree

src/subagent/agent-fleet.test.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -925,6 +925,44 @@ describe("spawn_agent same-cwd concurrency", () => {
925925
defined(gates[2]).resolve({ report: "c done" });
926926
defined(gates[3]).resolve({ report: "d done" });
927927
});
928+
929+
test("a queued mutating peer does not log concurrent-lane-overlap", async () => {
930+
const dir = await mkdtemp(join(tmpdir(), "fleet-overlap-queued-"));
931+
const gates = [
932+
deferred<RunSubAgentResult>(),
933+
deferred<RunSubAgentResult>(),
934+
];
935+
let callIndex = 0;
936+
const deps = makeDeps(async () => defined(gates[callIndex++]).promise, {
937+
cwd: "/repo",
938+
});
939+
deps.getWorkdirBase = () => dir;
940+
deps.admission = createAdmissionQueue({ capacity: 1 });
941+
const spawn = createSpawnAgentTool(deps);
942+
943+
const first = await callTool(spawn, {
944+
description: "holder",
945+
prompt: "implement holder",
946+
intent: "implement",
947+
success_criteria: ["holder ships"],
948+
});
949+
const queued = await callTool(spawn, {
950+
description: "queued writer",
951+
prompt: "implement queued",
952+
intent: "implement",
953+
success_criteria: ["queued ships"],
954+
});
955+
expect(first.status).toBe("running");
956+
expect(queued.status).toBe("queued");
957+
await new Promise((resolve) => setTimeout(resolve, 50));
958+
959+
await expect(
960+
readFile(join(dir, INTERVENTION_FILE), "utf8"),
961+
).rejects.toThrow();
962+
963+
defined(gates[0]).resolve({ report: "holder done" });
964+
defined(gates[1]).resolve({ report: "queued done" });
965+
});
928966
});
929967

930968
describe("wait mailbox session tombstone and pin", () => {

0 commit comments

Comments
 (0)