diff --git a/.changeset/fn-7660-planning-label-consistency.md b/.changeset/fn-7660-planning-label-consistency.md
new file mode 100644
index 0000000000..d7bbaa7e4e
--- /dev/null
+++ b/.changeset/fn-7660-planning-label-consistency.md
@@ -0,0 +1,7 @@
+---
+"@runfusion/fusion": patch
+---
+
+summary: Built-in workflow boards and Automations editors now label the intake column "Planning", not "Triage".
+category: fix
+dev: board-workflows canonical label map BUILTIN_WORKFLOW_COLUMN_LABELS.triage was still "Triage", overriding FN-7599's IR rename; set to "Planning". English schedule.columnTriage/taskColumnTriage/triageColumn set to "Planning" and dashboard locale copy re-synced. Also fixed board.triage (AgentDetailView task-column badge) and docs/dashboard-guide.md references. Column id "triage" unchanged.
diff --git a/docs/dashboard-guide.md b/docs/dashboard-guide.md
index dfebec0f98..3d4053757d 100644
--- a/docs/dashboard-guide.md
+++ b/docs/dashboard-guide.md
@@ -219,9 +219,10 @@ FNXC:TaskCardMobileSelection 2026-07-01-00:00: Mobile Board long-press is a task
-
-- The Triage/Planning column actions dropdown includes **Auto-approve plan**. Turning it on sets the project plan approval mode to auto-approve all planned tasks; turning it off returns to the workflow/default plan approval behavior. In workflow-mode Boards, the same switch appears only on the intake/planning column and on the equivalent **All workflows** aggregate intake column — not on hold (Todo-like) or other lifecycle columns. Use Settings → Merge for the full three-state project control, including **Require approval for all tasks**.
+
+- The Planning column actions dropdown includes **Auto-approve plan**. Turning it on sets the project plan approval mode to auto-approve all planned tasks; turning it off returns to the workflow/default plan approval behavior. In workflow-mode Boards, the same switch appears only on the intake/planning column and on the equivalent **All workflows** aggregate intake column — not on hold (Todo-like) or other lifecycle columns. Use Settings → Merge for the full three-state project control, including **Require approval for all tasks**.
- Column ordering semantics: `todo` mirrors scheduler pickup order (priority descending, then oldest `createdAt`, then task ID); `triage`, `in-progress`, `in-review`, and `archived` remain priority-first with task-ID tie-breaks; `done` defaults to most recent completion first (`columnMovedAt`, then `updatedAt`, then `createdAt` fallback) and can be switched from the Done/complete column actions dropdown to descending task ID. In workflow mode, non-archived columns marked with the `complete` flag use the same Done menu items even when their column ID or label is customized.
- Done-column sorting has two descending modes: **Completion date (newest first)** keeps the default completion-time order, while **Task ID (newest first)** places the highest numeric task IDs first. The sort actions are only shown in Done/complete column action menus, including custom workflow completion lanes; Archive All Done lives in the same menu when available.
- On mobile, both default and workflow-mode boards fill the project viewport while the column strip remains the internal horizontal scroller with contained edge overscroll.
@@ -919,7 +920,7 @@ Features:
- **Token Usage by Agent** includes task-derived token counts for ephemeral/task-worker system agents when system agents are shown, matching Agent detail and Command Center Team token surfaces.
- Agent list cards show the configured **Model** or plugin **Runtime** for each agent, falling back to **Auto** when no override is set
-- Agent list, live-agent, and detail task badges show the linked task ID with its current column when the task is non-terminal (for example `FN-6902 · Triage` or `FN-6902 · In Progress`). Terminal linked tasks are omitted, and unresolved column lookups render an explicit `Unresolved task` suffix so missing or deleted task links are not mistaken for healthy parked work.
+- Agent list, live-agent, and detail task badges show the linked task ID with its current column when the task is non-terminal (for example `FN-6902 · Planning` or `FN-6902 · In Progress`). Terminal linked tasks are omitted, and unresolved column lookups render an explicit `Unresolved task` suffix so missing or deleted task links are not mistaken for healthy parked work.
- First-run setup asks whether to create an optional project agent after project registration. The default template is **CEO**; users can choose another preset, use the AI interview when `experimentalFeatures.agentOnboarding` is enabled, or skip it. Fusion can still build tasks without an agent by starting temporary agents to plan, code, review, and merge task work.
- Start, pause, stop, and trigger agent runs from the view and from detail panels
- In **Agent detail**, use the kebab **Bulk agent actions** button in the header utility cluster (next to **Refresh** and **Close**) to run project-wide lifecycle transitions for non-ephemeral agents in the current project — **Pause All Agents** targets agents in the `active` or `running` state, while **Resume All Agents** targets agents in the `paused` state only
diff --git a/packages/dashboard/app/components/AgentDetailView.tsx b/packages/dashboard/app/components/AgentDetailView.tsx
index d6e3edb79f..9bf07867cc 100644
--- a/packages/dashboard/app/components/AgentDetailView.tsx
+++ b/packages/dashboard/app/components/AgentDetailView.tsx
@@ -2298,7 +2298,7 @@ function TasksTab({
{task.id}{
({
- triage: t("board.triage", "Triage"),
+ triage: t("board.triage", "Planning"),
todo: t("board.todo", "Todo"),
"in-progress": t("board.inProgress", "In Progress"),
"in-review": t("board.inReview", "In Review"),
diff --git a/packages/dashboard/app/components/RoutineEditor.tsx b/packages/dashboard/app/components/RoutineEditor.tsx
index 83ced05aab..7caffe284d 100644
--- a/packages/dashboard/app/components/RoutineEditor.tsx
+++ b/packages/dashboard/app/components/RoutineEditor.tsx
@@ -703,7 +703,7 @@ export function RoutineEditor({ routine, onSubmit, onCancel, scope: formScope, p
diff --git a/packages/dashboard/app/components/ScheduleForm.tsx b/packages/dashboard/app/components/ScheduleForm.tsx
index aac9a61b92..df108bd280 100644
--- a/packages/dashboard/app/components/ScheduleForm.tsx
+++ b/packages/dashboard/app/components/ScheduleForm.tsx
@@ -739,7 +739,7 @@ export function ScheduleForm({ schedule, onSubmit, onCancel, scope: formScope, p
value={taskColumn}
onChange={(e) => setTaskColumn(e.target.value)}
>
-
+
diff --git a/packages/dashboard/app/components/ScheduleStepsEditor.tsx b/packages/dashboard/app/components/ScheduleStepsEditor.tsx
index 7d42cb82e5..3bb2c15f11 100644
--- a/packages/dashboard/app/components/ScheduleStepsEditor.tsx
+++ b/packages/dashboard/app/components/ScheduleStepsEditor.tsx
@@ -331,7 +331,7 @@ function StepEditor({ step, onSave, onCancel }: StepEditorProps) {
value={taskColumn}
onChange={(e) => setTaskColumn(e.target.value)}
>
-
+
{t("schedule.targetColumnHelp", "Column where the new task will be created")}
diff --git a/packages/dashboard/src/routes/__tests__/board-workflows.test.ts b/packages/dashboard/src/routes/__tests__/board-workflows.test.ts
index c4a0b8af77..dde887bc8d 100644
--- a/packages/dashboard/src/routes/__tests__/board-workflows.test.ts
+++ b/packages/dashboard/src/routes/__tests__/board-workflows.test.ts
@@ -81,14 +81,19 @@ describe("buildBoardWorkflowsPayload", () => {
"done",
"archived",
]);
+ // FN-7660: the intake column (id: "triage") displays as "Planning";
+ // the id itself is unchanged.
expect(defaultWf!.columns.map((c) => c.name)).toEqual([
- "Triage",
+ "Planning",
"Todo",
"In Progress",
"In Review",
"Done",
"Archived",
]);
+ const intakeColumn = defaultWf!.columns.find((c) => c.id === "triage");
+ expect(intakeColumn).toBeDefined();
+ expect(intakeColumn!.name).toBe("Planning");
const inReview = defaultWf!.columns.find((c) => c.id === "in-review");
expect(inReview).toBeDefined();
expect(inReview!.flags.mergeBlocker).toBe(true);
diff --git a/packages/dashboard/src/routes/board-workflows.ts b/packages/dashboard/src/routes/board-workflows.ts
index 886b81ebc7..6e68226431 100644
--- a/packages/dashboard/src/routes/board-workflows.ts
+++ b/packages/dashboard/src/routes/board-workflows.ts
@@ -70,9 +70,17 @@ export interface BoardWorkflowsPayload {
taskWorkflowIds: Record;
}
+/*
+ * FNXC:Workflows 2026-07-07-00:00:
+ * The canonical built-in lifecycle label for the intake column (id: "triage")
+ * is "Planning" — FN-7599 renamed the IR column name, but this override map
+ * was still clobbering it back to "Triage" for built-in workflows via
+ * describeColumns(ir, true). Do not re-clobber the IR rename (FN-7660); the
+ * column id itself remains "triage" everywhere (types, DB, transitions).
+ */
const BUILTIN_WORKFLOW_COLUMN_LABELS: Record = {
ideas: "Ideas",
- triage: "Triage",
+ triage: "Planning",
todo: "Todo",
"in-progress": "In Progress",
"in-review": "In Review",
diff --git a/packages/i18n/locales/en/app.json b/packages/i18n/locales/en/app.json
index 3511a67f99..cab1e41738 100644
--- a/packages/i18n/locales/en/app.json
+++ b/packages/i18n/locales/en/app.json
@@ -1213,7 +1213,7 @@
"workflowMismatch": "Drag can't move a card between workflows. Use the workflow switcher instead."
},
"todo": "To Do",
- "triage": "Triage",
+ "triage": "Planning",
"workflow": {
"edit": "Edit workflows",
"new": "New workflow"
@@ -5295,7 +5295,7 @@
"catchUpPolicyRunOne": "Run the most recent missed run",
"catchUpPolicySkip": "Skip missed runs",
"columnTodo": "To Do",
- "columnTriage": "Triage",
+ "columnTriage": "Planning",
"command": "Command",
"commandHelp": "Shell command to execute. Runs with your user permissions.",
"commandHint": "Shell command to execute.",
@@ -5473,7 +5473,7 @@
"targetColumnLabel": "Target Column",
"taskColumnLabel": "Target Column",
"taskColumnTodo": "To Do",
- "taskColumnTriage": "Triage",
+ "taskColumnTriage": "Planning",
"taskDescription": "Task Description *",
"taskDescriptionHelp": "Describes the task that will be created.",
"taskDescriptionHint": "Describes the task that will be created.",
@@ -5493,7 +5493,7 @@
"title": "Automations",
"todoColumn": "To Do",
"toggleError": "Failed to toggle routine",
- "triageColumn": "Triage",
+ "triageColumn": "Planning",
"triggerApi": "API",
"triggerCron": "Cron",
"triggerManual": "Manual",