From 6b40cf7a9c61034ead125c91febc250e635b45f4 Mon Sep 17 00:00:00 2001 From: kami Date: Mon, 3 Aug 2026 14:06:45 +0400 Subject: [PATCH] fix(vibe): bind next plan item query correctly --- backend/src/services/db.service.test.ts | 1 + backend/src/services/db.service.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/src/services/db.service.test.ts b/backend/src/services/db.service.test.ts index fcd4dc6..2052cc9 100644 --- a/backend/src/services/db.service.test.ts +++ b/backend/src/services/db.service.test.ts @@ -437,6 +437,7 @@ describe('DbService v2 methods', () => { await expect(service.serveNextVibePlanItem('session-1', 'user-1')).resolves.toEqual({ item, stale: false }); expect(clientQuery.mock.calls[1][0]).toContain('FOR UPDATE'); expect(clientQuery.mock.calls[3][0]).toContain('SET committed = true'); + expect(clientQuery.mock.calls[3][1]).toEqual(['plan-1']); expect(clientQuery.mock.calls[4][0]).toContain("'track_served'"); }); diff --git a/backend/src/services/db.service.ts b/backend/src/services/db.service.ts index d0014de..11f66e0 100644 --- a/backend/src/services/db.service.ts +++ b/backend/src/services/db.service.ts @@ -2203,12 +2203,12 @@ export class DbService { const item = await client.query( `WITH next_item AS ( SELECT i.plan_version_id, i.ordinal FROM vibe_plan_items i - WHERE i.plan_version_id = $2 AND NOT i.committed ORDER BY i.ordinal ASC LIMIT 1 FOR UPDATE + WHERE i.plan_version_id = $1 AND NOT i.committed ORDER BY i.ordinal ASC LIMIT 1 FOR UPDATE ) UPDATE vibe_plan_items i SET committed = true FROM next_item n WHERE i.plan_version_id = n.plan_version_id AND i.ordinal = n.ordinal RETURNING i.*`, - [sessionId, plan.id] + [plan.id] ); const served = item.rows[0] as VibePlanItem | undefined; if (!served) return { item: null, stale: false };