From dc19d30ba8279205e41ef429a5c03c181cdaa99c Mon Sep 17 00:00:00 2001 From: Zbigniew Sobiecki Date: Fri, 17 Apr 2026 19:07:31 +0000 Subject: [PATCH] fix(linear): pass stateId when creating checklist sub-issues addChecklistItem() created sub-issues via linearClient.createIssue() without stateId, so they landed in the team's default state ("Ideas") instead of "Backlog". Same bug as createWorkItem() (fixed in #1137), different code path. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/pm/linear/adapter.ts | 1 + tests/unit/pm/linear/adapter.test.ts | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/pm/linear/adapter.ts b/src/pm/linear/adapter.ts index 04be22b3..e90f237f 100644 --- a/src/pm/linear/adapter.ts +++ b/src/pm/linear/adapter.ts @@ -227,6 +227,7 @@ export class LinearPMProvider implements PMProvider { await linearClient.createIssue({ teamId: this.config.teamId, ...(this.config.projectId ? { projectId: this.config.projectId } : {}), + ...(this.config.statuses?.backlog ? { stateId: this.config.statuses.backlog } : {}), title: name, description, parentId, diff --git a/tests/unit/pm/linear/adapter.test.ts b/tests/unit/pm/linear/adapter.test.ts index dcee1d70..4d0bfd99 100644 --- a/tests/unit/pm/linear/adapter.test.ts +++ b/tests/unit/pm/linear/adapter.test.ts @@ -396,6 +396,16 @@ describe('LinearPMProvider', () => { ); }); + it('passes stateId for backlog on sub-issue creation', async () => { + mockCreateIssue.mockResolvedValue(makeIssue()); + + await provider.addChecklistItem('subtasks-issue-uuid', 'Sub-task 1'); + + expect(mockCreateIssue).toHaveBeenCalledWith( + expect.objectContaining({ stateId: 'state-backlog' }), + ); + }); + it('throws when checklistId has no extractable parent', async () => { await expect(provider.addChecklistItem('invalid-id', 'Sub-task')).rejects.toThrow( 'Cannot extract parent issue ID from checklist ID: invalid-id',