diff --git a/packages/core/src/store.ts b/packages/core/src/store.ts index 2d94722028..524cbb788e 100644 --- a/packages/core/src/store.ts +++ b/packages/core/src/store.ts @@ -1601,6 +1601,20 @@ export class TaskStore extends EventEmitter { async clearWorkflowRunStepInstancesAsync(taskId: string, keepRunId?: string): Promise { return clearWorkflowRunStepInstancesAsyncImpl(this, taskId, keepRunId); } + /* + FNXC:WorkflowLifecycleColumns 2026-08-14-04:30: + Deliberately forwards `options` without resolving a lane here, and is recorded in + scripts/lib/lane-wiring-baseline.json for that reason. + + The guard exists to catch a callee silently falling back to a LEGACY COLUMN LITERAL when a caller + omits the lane. This callee does not: `listTaskRecommendationsImpl` falls back to + `resolveProjectColumnsForRoles(store, ["complete"])`, which reads the board's own lanes. Resolving + again in this wrapper would duplicate that query on every call and give the pass-through no + behavioural difference from the fallback. + + Real callers already supply it — the dashboard route resolves `completeColumns` and passes it — so + the fallback serves the pass-through wrapper, not production paths. + */ async listTaskRecommendations(options?: { completeColumns?: ReadonlySet; limit?: number; offset?: number }): Promise { return listTaskRecommendationsImpl(this, options); } diff --git a/scripts/lib/lane-wiring-baseline.json b/scripts/lib/lane-wiring-baseline.json index d89b48834b..b348922c04 100644 --- a/scripts/lib/lane-wiring-baseline.json +++ b/scripts/lib/lane-wiring-baseline.json @@ -1,6 +1,7 @@ { "counts": { "packages/core/src/merge/task-merge.ts": 1, + "packages/core/src/store.ts": 1, "packages/core/src/task-store/branch-and-pr-entities.ts": 1, "packages/core/src/task-store/moves.ts": 1, "packages/core/src/task-store/task-update.ts": 1,