Auto-merge finalization now ignores stale branch-only residue once durable merge proof exists, so squash-landed tasks do not stay stuck in review because their task branch history is noisy.
Fusion-Task-Id: FN-7360
Pin fresh task worktree creation to the resolved integration branch when no explicit executionStartBranch is present, so ambient root checkout state cannot leak sibling task commits into new branches.
Use task baseCommitSha for merge-finalization branch proof when available, allowing already-landed mergeConfirmed tasks to finalize even if historical branch ancestry contains foreign commits.
Fusion-Task-Id: FN-7360
Render Board task context menus as viewport overlays so column clipping no longer hides actions.
- Portal TaskCard context menus to document.body and position them with viewport coordinates.
- Clamp context menus after render and close them when the task identity or column changes.
- Update TaskCard coverage for overflow escape, keyboard/touch placement, and menu lifecycle behavior.
- Document the overlay behavior and add a patch changeset for @runfusion/fusion.
Files changed:
.changeset/fn-7362-board-context-menu-overlay.md | 7 +
docs/dashboard-guide.md | 5 +-
packages/dashboard/app/components/TaskCard.css | 6 +-
packages/dashboard/app/components/TaskCard.tsx | 38 ++--
.../app/components/__tests__/TaskCard.test.tsx | 242 ++++++++++++++++-----
5 files changed, 211 insertions(+), 87 deletions(-)
Fusion-Task-Id: FN-7362
Fusion-Task-Lineage: 8f2fc0b1-ad63-402e-a960-6a09cbe9c893
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
## Summary
Workflow node behavior now has explicit engine-owned runner and service
boundaries instead of being concentrated in the default handler factory
and private executor seams. Workflow IR remains declarative: the graph
executor still walks and routes the graph, while node runners and
runtime services own node-kind behavior, primitive construction,
custom-node execution, review invocation, and planning dispatch.
## Design Notes
- Added a `WorkflowNodeRunner` registry that adapts runners to the
existing handler contract while preserving explicit handler override
precedence.
- Moved gate, notify, code, parse-steps, and merge behavior behind
runner modules while keeping compatibility exports from
`workflow-node-handlers.ts`.
- Added service boundaries for runtime primitive creation, custom-node
execution, single-cwd review invocation, and graph planning.
- Preserved fast-mode raw runner compatibility for stepwise built-ins by
skipping executable custom nodes and parsing `PROMPT.md` in memory when
no executor primitive deps are wired.
- Updated concepts and workflow runtime docs so future workflow behavior
has a clear home: IR, runner, primitive provider, runtime service, or
substrate.
## Validation
- `pnpm --filter @fusion/engine exec vitest run ... --silent=passed-only
--reporter=dot` across 20 focused workflow/runtime test files: 166 tests
passed.
- Targeted ESLint on touched workflow files and tests passed.
- `pnpm --filter @fusion/engine exec tsc --noEmit --pretty false`
passed.
- `git diff --check` passed.
- Browser pipeline: skipped by scope; no changed files map to
browser-testable routes.
## Post-Deploy Monitoring & Validation
No additional operational monitoring required. This is an internal
engine refactor with focused tests covering runner dispatch,
primitive-provider compatibility, custom-node service delegation,
review/planning service boundaries, merge behavior, fast-mode raw runner
compatibility, and docs alignment.
Healthy signals: workflow graph runs continue through planning,
parse-steps, optional groups, custom nodes, review, and merge with
existing outcome values. Failure signals: new `parse-steps-unwired`,
custom-node, review, or merge-attempt regressions in engine logs for
previously working built-in workflows. Rollback trigger: repeated
workflow graph task failures attributable to runner/service dispatch
rather than task content or provider errors.
---
[](https://github.com/EveryInc/compound-engineering-plugin)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added engine-owned workflow node runners and dedicated services for
custom-node execution, workflow planning, and step review.
* Exposed a runtime primitive provider abstraction and a node-runner
registry in the public API, including built-in runners for gate, code,
merge, parse-steps, and notify.
* **Bug Fixes**
* Improved fast-mode behavior when runtime capabilities are unavailable
(including optional-group skipping, merge/review handling, and a safe
parse-steps fallback).
* **Tests**
* Expanded coverage for the runner registry integration, custom-node
execution, runtime primitive provider, planning/review, and fast-mode
semantics.
* **Documentation**
* Clarified workflow responsibility boundaries and added glossary
definitions plus a refactor plan.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## Summary
- keep malformed planning-session responses persisted as retryable error
state instead of deleting the session
- add `fn dashboard --supervise` to restart unexpected dashboard exits
with bounded exponential backoff
- document the supervised-dashboard run mode and add a patch changeset
## Test Plan
- `corepack pnpm --filter @runfusion/fusion exec vitest run
src/commands/__tests__/dashboard.test.ts --silent=passed-only
--reporter=dot`
- `corepack pnpm --filter @fusion/dashboard exec vitest run
src/__tests__/session-error-recovery.test.ts --silent=passed-only
--reporter=dot`
- `corepack pnpm --filter @fusion/dashboard exec vitest run
src/__tests__/server.test.ts -t "returns health OK independently"
--silent=passed-only --reporter=dot`
- `corepack pnpm lint`
- `corepack pnpm typecheck`
- `corepack pnpm build`
- `corepack pnpm test:gate`
Note: a full `server.test.ts` run also exposes four existing
routine-runner expectation failures unrelated to this change; the added
health check passes when run by name.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **New Features**
* Added dashboard supervised mode via a new `--supervise` option, with
automatic restarts using a bounded restart budget and exponential
backoff.
* **Bug Fixes**
* Planning sessions now persist as retryable error states when AI output
can’t be parsed, preventing session loss.
* Improved reliability so `GET /api/health` remains available during
these planning error states.
* **Documentation**
* Documented “Dashboard Availability &amp; Supervised Mode”,
including health-check guidance and operational guardrails.
* **Tests**
* Added test coverage for supervised restart behavior, health during
planning errors, and ensuring no unhandled rejections on parse failures.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Classify structured provider model-not-found payloads as model-selection failures so configured fallback models run when Claude Sonnet 5 is unavailable on an account or API surface.
Keep the mobile Planning Mode New session CTA reachable while saved sessions scroll independently.
- Bound the mobile planning list shell so only the session list scrolls.
- Preserve the sidebar footer as a non-shrinking bottom action in list view.
- Add CSS contract coverage and a changeset for the published CLI package.
Files changed:
.changeset/fn-7348-mobile-planning-new-session.md | 7 ++++++
.../dashboard/app/components/PlanningModeModal.css | 23 +++++++++++++++++
.../__tests__/PlanningModeModal.css.test.ts | 29 ++++++++++++++++++++++
3 files changed, 59 insertions(+)
Fusion-Task-Id: FN-7348
Fusion-Task-Lineage: 0142e539-3e4c-4ac5-9a44-d02bce2c139b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Align footer Engine Controls current-use dots with Command Center slider geometry.
- Mirror Command Center range sizing, touch behavior, and mobile thumb geometry in the footer controls.
- Cover the shared marker geometry contract and pending-cap marker recalculation in EngineControlMenu tests.
- Document the footer/Command Center alignment requirement and add a patch changeset for the published CLI package.
Files changed:
.changeset/fn-7340-footer-concurrency-dot-alignment.md | 7 ++
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/EngineControlMenu.css | 28 ++++++-
packages/dashboard/app/components/__tests__/EngineControlMenu.test.tsx | 85 ++++++++++++++++++++++
4 files changed, 121 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7340
Fusion-Task-Lineage: 5cb4d829-2b70-429c-b9da-0c559fdbf131
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Align Shadcn Ember theme tokens with the Ember palette while preserving shadcn structure.
- Match Shadcn Ember accent text tokens to Ember values in dark and light modes.
- Strengthen regression coverage to compare every Ember-owned color token across both modes.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7339-shadcn-ember-colors.md | 7 +++
.../app/__tests__/shadcn-ember-theme.test.ts | 69 +++++++++++++++-------
packages/dashboard/app/public/theme-data.css | 7 ++-
3 files changed, 60 insertions(+), 23 deletions(-)
Fusion-Task-Id: FN-7339
Fusion-Task-Lineage: d0c2f0cf-938f-46a4-8da4-9acafc5cc4cf
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Board stabilization now avoids resetting the user's horizontal column position during refresh and resize handling.
- Keep mobile stabilization focused on document-level drift instead of forcing #board.scrollLeft back to triage.
- Add regression coverage for board and all-workflows scroll preservation across task refresh, window resize, and visualViewport resize.
- Add a patch changeset for the published Fusion package.
Files changed:
.changeset/fn-7342-board-scroll-reset.md | 7 ++
packages/dashboard/app/components/Board.tsx | 7 +-
.../app/components/__tests__/Board.test.tsx | 109 +++++++++++++++++++++
3 files changed, 121 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7342
Fusion-Task-Lineage: 0aa8b152-5cc0-4f77-93d5-f20faf0a5e19
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Stabilize Planner Chat task detail spacing across expanded and mobile layouts.
- Move Planner Chat body padding to the base selector so expand/collapse only changes height and flex behavior.
- Apply the mobile Planner Chat padding override to the same base body selector.
- Add CSS regression coverage and a patch changeset for the published CLI bundle.
Files changed:
.changeset/planner-chat-stable-spacing.md | 7 ++++
.../dashboard/app/components/TaskDetailModal.css | 11 +++++-
...etailModal.responsive-and-dependencies.test.tsx | 44 ++++++++++++++++++++++
3 files changed, 60 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-7333
Fusion-Task-Lineage: 84130908-fabb-433f-a48d-5d9c6649c234
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>