## What Adds a new built-in workflow **Coding (Ideas)** — a capture-first variant of the default coding pipeline that puts a manual **Ideas (no AI)** intake in front of a merged **Todo** (planner + capacity) column. The board becomes five stages, each staffed by a distinct role: ``` Ideas (no AI) → Todo (planner) → In-progress (coder) → In-review (reviewer) → Done ``` ## Why The current board parks un-worked cards in a passive **Todo** column where no agent is active. Operators asked for a way to (1) capture ideas without the engine auto-planning them, and (2) collapse the triage/todo split so every visible column has an agent working it — planning now happens *in* Todo. A "Ready" badge distinguishes planned cards waiting for a capacity slot from freshly promoted unplanned ones. ## How it works 1. **Create** a task against Coding (Ideas) → it lands in **Ideas** (`autoTriage:false` intake). The triage service ignores it — no AI runs. 2. **Start** (button on the card, or drag) moves it to **Todo**. The triage poll discovers the unplanned card (bootstrap-stub PROMPT.md) and plans it in place. 3. While planning the card shows **Planning**; once the spec is written it shows **Ready** and waits for an in-progress slot under the normal capacity hold. 4. From Todo onward the graph is identical to the default Coding workflow (stepwise execution → optional code review → merge). ## Engine changes | Surface | Change | |---|---| | `createTask` (`store.ts`) | Lands cards in the workflow's intake column (`resolvedEntryColumn`) instead of hardcoding `"triage"`. Default workflow is byte-identical (intake resolves to `"triage"`). Bootstrap-prompt check generalized to all pre-planning columns. | | Triage poll (`triage.ts`) | Also discovers unplanned `todo` tasks (bootstrap-stub prompt); `finalizeApprovedTask` skips the redundant triage→todo move for in-place planning; planning-concurrency counter covers both columns. | | Scheduler (`scheduler.ts`) | Skips `todo` tasks with `status:"planning"` or a bootstrap-stub prompt so unplanned cards are never dispatched. | | TaskCard (`TaskCard.tsx`) | **Start** button on ideas cards; **Ready** badge on planned todo tasks. | | Board (`board-workflows.ts`) | `ideas` column label. | All engine changes are **gated** — they only affect workflows whose intake is not `"triage"`, so the default Coding workflow and every existing built-in are byte-identical in behavior. ## Tests - `builtin-coding-ideas-workflow-ir.test.ts` *(new)* — column set, intake trait (`autoTriage:false`), merged todo traits, node re-homing (start→ideas, planning→todo), optional-group defaults, round-trip. - `store-create-intake-column.test.ts` *(new)* — createTask lands in `ideas` for explicit + default selection, `triage` for the default workflow, writes a bootstrap prompt. - Updated `builtin-workflows.test.ts` catalog-order assertion for the new entry. ## Verification - Typecheck: core ✓ engine ✓ dashboard ✓ - Lint ✓ · Changeset format ✓ (`minor`) - Merge gate (`test:gate`): 321 engine-core + 63 CI-shape ✓ - Regression suites: triage (39), concurrency (165), movement/migration/hooks (259), builtin workflows (65), store-create (54) — all green - `verify:fast`: workspace build + CLI build + boot smoke (`fn --help` + real `/api/health`) ✓ ## Changeset `.changeset/fn-coding-ideas-workflow.md` — `@runfusion/fusion: minor` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added a new “Coding (Ideas)” builtin workflow with an Ideas intake stage and merged planning flow. * Updated task cards to support a **Start** action and show a **Ready** badge for qualifying planning-stage tasks. * **Bug Fixes** * Tasks created for the Ideas workflow now persist into the correct entry column and get the right prompt bootstrapping. * Scheduler and triage avoid promoting/releasing unplanned todo tasks that still contain the bootstrap prompt stub, and stale planning is cleaned up across the merged intake flow. * **Tests** * Added coverage for the new builtin workflow IR and create-task intake wiring. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Changeset Format Guide
Each changeset file in this directory describes one user-facing change for release notes.
Required body format
---
"@runfusion/fusion": minor
---
summary: Add a Command Center productivity control for LOC backfills.
category: feature
dev: Uses the new `fn_backfill_loc` tool; settings key `commandCenter.locBackfill`.
Fields
| Field | Required | Description |
|---|---|---|
summary |
Yes | One line, user-facing, max 120 chars. Describe what changed for the operator. |
category |
Yes | One of: feature, fix, breaking, security, performance, internal. |
dev |
No | Developer or migration detail. Preserved in per-package CHANGELOGs but excluded from distilled release notes. |
Audience
The summary is the only content that appears in end-user release notes by default. Write for Fusion operators — describe behavior, fixes, and what changed. Avoid internal class names, file paths, and implementation detail.
Bump types
patch— bug fixes, internal changesminor— new features, CLI additions, toolsmajor— breaking changes
Validation
Run pnpm check:changesets to validate. The linter runs in the PR-check gate and test:gate. Legacy freeform changesets pass with a warning during the transition period.