diff --git a/packages/engine/src/__tests__/self-healing-advanced-triage.test.ts b/packages/engine/src/__tests__/self-healing-advanced-triage.test.ts index c29e79ec33..3a9b908cb2 100644 --- a/packages/engine/src/__tests__/self-healing-advanced-triage.test.ts +++ b/packages/engine/src/__tests__/self-healing-advanced-triage.test.ts @@ -4,12 +4,26 @@ import type { Settings, Task, TaskStore } from "@fusion/core"; import { activeSessionRegistry } from "../active-session-registry.js"; import { SelfHealingManager } from "../self-healing.js"; +/* +FNXC:WorkflowResolvedColumns 2026-07-30-17:40: +The INTAKE column of the default lineage, which post-U11 is `todo` — the merged Planning column +carrying intake+hold+resetOnEntry. `triage` is not a declared column on any current workflow. + +Why this fixture went stale rather than merely renamed: `recoverAdvancedTriageTasks` was converted +from `listTasks({ column: "triage" })` to a ROLE filter (`filterByPreWipRole(..., ["intake"])`). +This store fake has no workflow-selection readers, so the sweep resolves the DEFAULT IR, in which +`triage` does not appear — the seeded card therefore carried no intake role, the filter returned no +candidates, and the sweep reported 0 recoveries. The test was asserting against a column id the +product had stopped declaring. +*/ +const INTAKE_COLUMN = "todo"; + function task(id: string, overrides: Partial = {}): Task { return { id, title: id, description: id, - column: "triage", + column: INTAKE_COLUMN, status: null, paused: false, worktree: `/tmp/${id}`, diff --git a/packages/engine/src/__tests__/self-healing-agent-link-drift.test.ts b/packages/engine/src/__tests__/self-healing-agent-link-drift.test.ts index bd4fe04cd0..0ad21fa492 100644 --- a/packages/engine/src/__tests__/self-healing-agent-link-drift.test.ts +++ b/packages/engine/src/__tests__/self-healing-agent-link-drift.test.ts @@ -83,7 +83,8 @@ describe("FN-4296: self-healing agent link drift", () => { const agents = [makeAgent("agent-backend", "FN-7001", "running")]; const queuedTask = { id: "FN-7001", - column: "triage", + // FNXC:WorkflowResolvedColumns 2026-07-30-17:40: the intake column post-U11 is `todo`. + column: "todo", status: "queued", overlapBlockedBy: "FN-6827", } as Task; diff --git a/packages/engine/src/__tests__/self-healing-starved-refinement.test.ts b/packages/engine/src/__tests__/self-healing-starved-refinement.test.ts index ad3b793a92..7a76108d9b 100644 --- a/packages/engine/src/__tests__/self-healing-starved-refinement.test.ts +++ b/packages/engine/src/__tests__/self-healing-starved-refinement.test.ts @@ -30,8 +30,22 @@ describe("SelfHealingManager.recoverStarvedRefinementTriageTasks", () => { vi.useFakeTimers(); vi.setSystemTime(new Date("2026-05-15T11:00:00.000Z")); + /* + FNXC:WorkflowResolvedColumns 2026-07-30-17:55: + The starved refinement rests in the INTAKE column, which post-U11 is `todo` — the merged + Planning column carrying intake+hold. `recoverStarvedRefinementTriageTasks` filters by ROLE, and + this store fake has no workflow-selection readers, so it resolves the DEFAULT IR in which + `triage` is not a declared column: the old fixture therefore carried no intake role, the filter + returned no candidates, and the sweep reported 0 escalations. + + Only THIS test's seed moved. The file's default stays `triage` on purpose: the case at the bottom + ("auto-approve-all overrides stored workflow approval") calls `recoverApprovedTask` directly, with + no role filter, and asserts a move INTO `todo` — seeding it in `todo` makes that move degenerate. + Whether asserting a triage -> todo move still encodes anything post-U11 is a question about that + test's subject, not this fix: FLAGGED, not guessed. + */ const tasks: Task[] = [ - task({ id: "FN-R1", sourceType: "task_refine", createdAt: "2026-05-15T10:00:00.000Z", updatedAt: "2026-05-15T10:00:00.000Z", priority: "low" }), + task({ id: "FN-R1", column: "todo", sourceType: "task_refine", createdAt: "2026-05-15T10:00:00.000Z", updatedAt: "2026-05-15T10:00:00.000Z", priority: "low" }), task({ id: "FN-P1", column: "todo", sourceType: "dashboard_ui", updatedAt: "2026-05-15T10:15:00.000Z" }), task({ id: "FN-P2", column: "todo", sourceType: "dashboard_ui", updatedAt: "2026-05-15T10:16:00.000Z" }), task({ id: "FN-P3", column: "todo", sourceType: "dashboard_ui", updatedAt: "2026-05-15T10:17:00.000Z" }),