From ac91e844413590d78191411539fc8e9c62f417e7 Mon Sep 17 00:00:00 2001 From: ejclaw Date: Mon, 6 Apr 2026 21:58:22 +0900 Subject: [PATCH] Fix paired turn follow-up scheduling --- src/message-agent-executor-rules.test.ts | 4 ++-- src/message-agent-executor-rules.ts | 7 +++++++ src/message-agent-executor.test.ts | 5 +++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/message-agent-executor-rules.test.ts b/src/message-agent-executor-rules.test.ts index 7ad449a..a7eb7d5 100644 --- a/src/message-agent-executor-rules.test.ts +++ b/src/message-agent-executor-rules.test.ts @@ -130,7 +130,7 @@ describe('message-agent-executor-rules', () => { ).toBe('pending'); }); - it('does not request a generic follow-up after successful owner output moved the task to review_ready', () => { + it('requests a generic follow-up after successful owner output moved the task to review_ready', () => { expect( resolvePairedFollowUpQueueAction({ completedRole: 'owner', @@ -138,7 +138,7 @@ describe('message-agent-executor-rules', () => { sawOutput: true, taskStatus: 'review_ready', }), - ).toBe('none'); + ).toBe('generic'); }); it('does not request a generic follow-up after successful reviewer output moved the task back to active', () => { diff --git a/src/message-agent-executor-rules.ts b/src/message-agent-executor-rules.ts index 2671e10..0a250af 100644 --- a/src/message-agent-executor-rules.ts +++ b/src/message-agent-executor-rules.ts @@ -124,6 +124,13 @@ export function resolvePairedFollowUpQueueAction(args: { taskStatus: PairedTaskStatus | null; }): PairedFollowUpQueueAction { if (args.executionStatus === 'succeeded' && args.sawOutput) { + if ( + args.completedRole === 'owner' && + args.taskStatus === 'review_ready' + ) { + return 'generic'; + } + return args.completedRole === 'reviewer' && args.taskStatus === 'merge_ready' ? 'skip-inline-finalize' diff --git a/src/message-agent-executor.test.ts b/src/message-agent-executor.test.ts index 602078d..0cdf23a 100644 --- a/src/message-agent-executor.test.ts +++ b/src/message-agent-executor.test.ts @@ -1238,7 +1238,7 @@ describe('runAgentForGroup room memory', () => { expect(deps.queue.enqueueMessageCheck).not.toHaveBeenCalled(); }); - it('does not enqueue a generic follow-up when owner output already moved the task to review_ready', async () => { + it('enqueues a generic follow-up when owner output moved the task to review_ready', async () => { const group = { ...makeGroup(), folder: 'test-group' }; const deps = makeDeps(); @@ -1311,7 +1311,8 @@ describe('runAgentForGroup room memory', () => { }); expect(result).toBe('success'); - expect(deps.queue.enqueueMessageCheck).not.toHaveBeenCalled(); + expect(deps.queue.enqueueMessageCheck).toHaveBeenCalledTimes(1); + expect(deps.queue.enqueueMessageCheck).toHaveBeenCalledWith('group@test'); }); it('does not enqueue a generic follow-up when reviewer output already returned the task to active', async () => {