From 2db280b4358bb848b8748bd19770cc67f852dff3 Mon Sep 17 00:00:00 2001 From: Noah Lindner Date: Tue, 8 Sep 2026 14:39:32 -0400 Subject: [PATCH] The batch is consumed at render, not after the response A response that times out never reached the consume line, so the next one rendered the same batch plus new traffic; five ten-minute sessions in a row, 50 threads pending. What the agent was shown is its own. Co-Authored-By: Claude Fable 5.1 --- src/ledger-service.ts | 2 +- src/scheduler.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/ledger-service.ts b/src/ledger-service.ts index 3729294..023ad04 100644 --- a/src/ledger-service.ts +++ b/src/ledger-service.ts @@ -135,7 +135,7 @@ ${text}`, return updated.waitingOn === "human" ? this.transition(task.id, { type: "wake" }) : updated; } - agentResponded(convos: Conversation[], settled: Task[]): void { + rendered(convos: Conversation[], settled: Task[]): void { for (const convo of convos) this.db .delete(conversations) diff --git a/src/scheduler.ts b/src/scheduler.ts index 9a56726..b9e06bc 100644 --- a/src/scheduler.ts +++ b/src/scheduler.ts @@ -109,9 +109,9 @@ export class Scheduler { const prompt = await this.prompts.response(convos, settled); const direct = convos.filter((convo) => convo.direct); for (const convo of direct) this.voice.open(convo); + this.ledger.rendered(convos, settled); this.voice.begin(); await this.codex.respond(prompt); - this.ledger.agentResponded(convos, settled); this.voice.close(direct); this.tick(); }