Commit Graph

3038 Commits

Author SHA1 Message Date
Fusion Agent
33f4797ceb FN-126: fix inert sync-lane validation
Prevent inert synchronization lanes from bypassing merge-gate validation while preserving task-lane cache and archive lifecycle behavior.

- Reject sync-resolved lane conversions in the static validator.
- Preserve task-lane cache emissions and active-session cleanup across task mutations and archival.
- Add regression coverage, baseline updates, documentation, and a release changeset.

Files changed:
 .changeset/fn-126-inert-sync-lane.md               |   7 +
 .../a-falling-count-is-not-evidence.md             |  12 +
 .../task-lane-cache-emitter-preservation.test.ts   | 269 +++++++++++++++++++++
 .../core/src/task-store/archive-lifecycle-2.ts     |   3 +-
 packages/core/src/task-store/moves.ts              |   3 +-
 packages/core/src/task-store/task-artifacts-ops.ts |   3 +-
 packages/core/src/task-store/task-update.ts       |   3 +-
 packages/core/src/task-store/update-task-deps.ts   |   3 +-
 ...xecutor-archive-releases-active-session.test.ts |  80 ++++++
 packages/engine/src/executor.ts                    |   4 +-
 .../src/executor/executor-side-effect-hosts.ts     |   2 +-
 .../executor/is-backward-move-out-of-planning.ts   |   7 +-
 .../src/executor/task-executor-graph-facades.ts    |   2 +-
 .../engine/src/executor/task-executor-imports.ts   |   1 -
 .../engine/src/executor/wire-executor-lifecycle.ts |  18 +-
 .../check-inert-sync-lane-conversions.test.mjs     |  83 +++++--
 scripts/check-inert-sync-lane-conversions.mjs      |  19 +-
 scripts/lib/inert-sync-lane-baseline.json          |   6 +-
 18 files changed, 479 insertions(+), 46 deletions(-)

Fusion-Task-Id: FN-126

Fusion-Task-Lineage: 0c7a1a3a-9446-44f8-955d-df6c402dfd31

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:36:12 +00:00
Fusion Agent
8b681775ae FN-122: fix local workspace integration across repositories
Make multi-repository workspace merges resolve and land against the correct local integration targets.

- Add local integration-target resolution and durable merge-dispatch leasing.
- Harden workspace merge fencing, failure handling, audit logging, and CLI/dashboard controls.
- Document the workflow and add regression coverage for workspace integration and task-log deduplication.
- Complete the CLI engine mock for the new public lease export.

Files changed:
 .changeset/fn-122-local-workspace-integration.md   |   7 +
 docs/architecture.md                               |   1 +
 docs/dashboard-guide.md                            |   4 +
 docs/settings-reference.md                         |   4 +-
 docs/testing.md                                    |  10 ++
 .../task-command-github-import-tracking.test.ts    |   2 +
 packages/cli/src/commands/__tests__/task.test.ts   |   1 +
 packages/cli/src/commands/dashboard.ts             |  15 +-
 packages/cli/src/commands/task.ts                  |  14 +-
 .../__tests__/postgres/task-log-dedupe.pg.test.ts  |  30 ++++
 packages/core/src/index.ts                         |   2 +-
 packages/core/src/store.ts                         |   5 +-
 packages/core/src/task-store/audit-ops.ts          |  38 ++++
 packages/core/src/types.ts                         |   2 +
 packages/core/src/types/task/task-core.ts          |  16 +-
 packages/core/src/types/task/task-log.ts           |   2 +
 .../app/components/WorkspaceWorktreesSummary.tsx   |  15 +-
 .../settings/sections/WorktreesSection.tsx         |   3 +-
 .../engine/src/__tests__/workspace-e2e.test.ts     | 198 ++++++++++++++++-----
 .../__tests__/workspace-integration-target.test.ts |  75 ++++++++
 .../src/__tests__/workspace-merger-lease.test.ts   |  42 ++++-
 packages/engine/src/index.ts                       |   6 +
 packages/engine/src/merge/merger-ai.ts             | 152 +++++++++++-----
 packages/engine/src/merge/workspace-fence-ref.ts   |  17 +-
 .../src/merge/workspace-integration-target.ts      |  87 +++++++++
 .../engine/src/merge/workspace-land-failure.ts     |   6 +-
 .../src/merge/workspace-merge-dispatch-lease.ts    |  54 ++++++
 packages/engine/src/project-engine.ts              |  25 +++
 28 files changed, 715 insertions(+), 118 deletions(-)

Fusion-Task-Id: FN-122
Fusion-Task-Lineage: 9364bba4-cebc-44e7-b2ae-60967fbc025c
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:36:12 +00:00
Fusion Agent
0b4dbd219b FN-125: prevent workflow agents from creating tasks
Stop workflow executor agents from creating ordinary tasks while preserving explicit self-spawned dependency handling.

- Gate task creation by session identity and execution context.
- Add self-spawned dependency support, validation, and persistence coverage.
- Update agent prompts, tools, documentation, and CLI integration.
- Add a published-package changeset.

Files changed:
 .changeset/fn-125-removal.md                       |  7 +++
 docs/agents.md                                     |  2 +-
 docs/dashboard-guide.md                            |  2 +-
 docs/settings-reference.md                         |  6 +-
 .../cli/skill/fusion/references/engine-tools.md    | 10 ++--
 .../extension-task-execution-task-creation.test.ts | 70 ++++++++++++++++++++++
 packages/cli/src/extension.ts                      | 49 +++++++++++++--
 .../postgres/store-self-spawned-dep.pg.test.ts     | 56 +++++++++++++++++
 .../src/__tests__/self-spawned-dependency.test.ts  | 18 ++++++
 .../__tests__/session-identity-registry.test.ts    | 14 ++++-
 packages/core/src/agents/agent-prompts.ts          | 27 ++++-----
 .../src/agents/task-execution-task-creation.ts     | 19 ++++++
 packages/core/src/index.ts                         |  7 +++
 packages/core/src/session-identity-registry.ts     |  7 +++
 packages/core/src/store.ts                         |  2 +
 packages/core/src/task-store/errors.ts             | 21 +++++++
 packages/core/src/task-store/task-update.ts        | 10 +++-
 packages/core/src/task-store/update-task-deps.ts   | 12 +++-
 .../__tests__/ephemeral-task-create-gate.test.ts   | 18 +++---
 .../src/__tests__/executor-review-verdicts.test.ts |  3 +-
 packages/engine/src/agent-tools.ts                 |  4 ++
 packages/engine/src/agents/agent-runtime.ts        |  2 +
 .../engine/src/execution/step-session-executor.ts  | 15 ++---
 .../executor/attempt-executor-verification-fix.ts  |  1 +
 .../engine/src/executor/create-spawn-agent-tool.ts |  1 +
 .../engine/src/executor/create-task-done-tool.ts   | 18 +++++-
 .../engine/src/executor/create-task-update-tool.ts | 12 +++-
 .../engine/src/executor/execute-workflow-step.ts   |  1 +
 packages/engine/src/executor/run-implementation.ts | 18 +++---
 packages/engine/src/executor/system-prompt.ts      | 21 +++----
 packages/engine/src/executor/task-add-dep-tool.ts  | 14 ++++-
 packages/engine/src/pi.ts                          | 15 ++++-
 32 files changed, 401 insertions(+), 81 deletions(-)

Fusion-Task-Id: FN-125

Fusion-Task-Lineage: da3d69f6-c9cb-45fd-8691-3dfaf7007514
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:36:12 +00:00
Fusion Agent
10c399d01e FN-120: fix workspace review evidence and landing recovery
Harden workspace review evidence and automatic landing recovery across workflow execution and merge paths.

- Preserve per-repository review evidence and reroute recoverable workspace review failures.
- Improve workflow lifecycle validation, continuation handling, and automatic recovery for workspace landing.
- Add regression coverage and document the updated workspace behavior.

Files changed:
 .changeset/fn-120-workspace-review-landing.md      |   7 ++
 docs/architecture.md                               |   4 +
 ...e-empty-merge-boundary-finalization-livelock.md |   4 +
 docs/testing.md                                    |   4 +
 docs/workflow-steps.md                             |   4 +
 docs/workspaces.md                                 |   6 +
 .../__tests__/builtin-coding-workflow-ir.test.ts   |  11 +-
 ...workspace-worktrees-concurrent-merge.pg.test.ts |  20 +++
 packages/core/src/db/legacy-adoption.ts            |   4 +
 packages/core/src/store.ts                         |   5 +-
 .../task-store/async/async-workflow-workitems.ts   |  21 ++++
 packages/core/src/task-store/task-mutation-ops.ts  |  20 ++-
 .../src/task-store/workflow-workitems-ops-2.ts     |   6 +-
 .../workflows/builtin-coding-ideas-workflow-ir.ts  |   9 +-
 .../src/workflows/builtin-coding-workflow-ir.ts    |  20 ++-
 .../builtin-stepwise-coding-workflow-ir.ts         |  21 +++-
 ...tin-stepwise-final-review-coding-workflow-ir.ts |  13 +-
 .../src/workflows/workflow-lifecycle-validation.ts |  28 ++++-
 .../__tests__/builtin-workflows-lifecycle.test.ts  |   4 +
 .../engine/src/__tests__/project-engine.test.ts    |  79 ++++++++++++
 .../graph-node-missing-worktree-recovery.test.ts   |  32 ++++-
 .../src/__tests__/reviewer-workspace.test.ts       |   2 +
 .../src/__tests__/task-pipeline-smoke.test.ts      |  10 +-
 .../src/__tests__/workflow-task-runtime.test.ts    |  10 +-
 .../engine/src/__tests__/workspace-e2e.test.ts     |  29 +++++
 .../engine/src/__tests__/workspace-merger.test.ts  |   4 +-
 .../__tests__/workspace-review-evidence.test.ts    |  58 +++++++++
 packages/engine/src/execution/reviewer.ts          |   2 +
 .../create-authoritative-workflow-seams.ts         |  59 +++++----
 .../engine/src/executor/execute-workflow-graph.ts  |  29 ++++-
 packages/engine/src/executor/graph-failure-pure.ts |   6 +
 .../engine/src/executor/handle-graph-failure.ts    |  26 ++++
 ...-unusable-worktree-graph-failure-to-recovery.ts |  22 +++-
 .../engine/src/executor/run-graph-custom-node.ts   |   4 +-
 .../src/executor/workspace-review-per-repo.ts      |  55 +++++----
 packages/engine/src/merge/merger-ai.ts             | 137 ++++++++++-----------
 .../engine/src/merge/workspace-review-reroute.ts   |  52 ++++++++
 packages/engine/src/project-engine.ts              |  47 +++++++
 .../self-healing/auto-recover-worktree-session.ts  |   2 +-
 .../src/workflows/workflow-graph-executor.ts       |  28 ++++-
 .../engine/src/workflows/workflow-merge-nodes.ts   |   6 +-
 .../src/worktree/workspace-review-evidence.ts      | 110 +++++++++++++++++
 .../engine/src/worktree/worktree-acquisition.ts    |  24 +++-
 43 files changed, 874 insertions(+), 170 deletions(-)
Fusion-Task-Id: FN-120
Fusion-Task-Lineage: 61c36613-89bd-44ca-8676-de77662bf53e
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:36:12 +00:00
XiaoHuo888-hue
41c23adf15 feat: add OrcaRouter as a named model provider (#3502)
## Summary

Adds [OrcaRouter](https://www.orcarouter.ai) as a first-class named
model provider, mirroring the existing OpenRouter integration.
OrcaRouter is an OpenAI-compatible gateway —
`https://api.orcarouter.ai/v1` — that routes to models from many
providers (Anthropic, OpenAI, DeepSeek, Google, Grok, Qwen, Zhipu, and
more) through a single API key. It also runs gateway-level, zero-trust
security for AI agents on the same endpoint — screening every
prompt/response and governing every tool call on a default-deny basis,
with no application code changes.

What this PR does:

- **Catalog sync**: `syncStartupModels` now fetches the OrcaRouter
`/v1/models` catalog at startup (gated by a new `orcarouterModelSync`
global setting, default enabled) and registers an `openai-completions`
provider at `https://api.orcarouter.ai/v1`. The key resolves from the
`ORCAROUTER_API_KEY` environment variable.
- **Auth + onboarding**: OrcaRouter appears in the API-key auth catalog,
onboarding setup copy + key hints, and quick-start provider list (key
format `sk-orca-...`, dashboard link to `https://www.orcarouter.ai`).
- **Icons**: New OrcaRouter brand mark (`OrcaRouterIcon`) with a
dedicated color token, wired into `ProviderIcon` and
`inferProviderIconKey` so `orcarouter/...` model ids render the brand
mark everywhere.
- **Settings**: Startup-sync toggle under **Settings → Global Models**,
settings search entry, and save-split allowlists.
- **Docs + i18n**: `docs/settings-reference.md` / `docs/storage.md` rows
and `en` + secondary-locale catalog keys.
- **Changeset**: `.changeset/add-orcarouter-provider.md` (minor).

Disclosure: I'm an engineer on the OrcaRouter team.

## Test plan

- `pnpm --filter @runfusion/fusion exec vitest run
src/commands/__tests__/startup-model-sync.test.ts` — 18 passed
- `pnpm --filter @fusion/core exec vitest run
src/__tests__/settings-parity.test.ts` — 80 passed
- `pnpm --filter @fusion/dashboard exec vitest run
app/components/__tests__/ProviderIcon.test.tsx` — 115 passed
- `pnpm --filter @fusion/dashboard exec vitest run
app/components/__tests__/AuthenticationSection.test.tsx
app/components/__tests__/ModelOnboardingModal.test.tsx` — 222 passed
- `tsc --noEmit` in `@fusion/cli`, `@fusion/core`, `@fusion/dashboard`,
`@fusion/engine` — all clean
- `pnpm lint` on changed files — clean
- `pnpm check:changesets` — clean
- **L3 live test**: exercised the production `syncStartupModels` path
against the live OrcaRouter API — catalog sync registered 209 models and
a real chat completion returned **HTTP 200** (`finish_reason: "stop"`).

Note: `pnpm i18n:status` reports pre-existing Jira key-parity gaps in
the `app.json` catalogs on a clean checkout (unrelated to this change);
the `common.json` catalogs touched here are in parity.


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
  - Added OrcaRouter as a built-in OpenAI-compatible provider.
- Added API-key setup, validation, authentication, onboarding guidance,
provider branding, and model catalog visibility.
- Added automatic startup synchronization of OrcaRouter models, enabled
by default.
  - Added a global setting to enable or disable model synchronization.
- **Documentation**
  - Documented the new synchronization setting and its configuration.
- **Localization**
  - Added OrcaRouter setup and usage text across supported languages.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: XiaoHuo888-hue <jinhao.song@myflashcloud.com>
Co-authored-by: XiaoHuo888-hue <jinhao.song@myflashcloud.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-21 19:30:08 -07:00
gsxdsm
5e8d7ae9ae FN-9190: Add invalid concurrency resolver regression coverage
Cover invalid persisted maxConcurrent values across both public resolver entry points.

- Add a shared matrix for zero, negative, non-finite, missing, and wrong-type values.
- Verify effective ceilings remain finite and positive after fallback resolution.
- Preserve binding and disabled worktree-limit behavior for every invalid value.

Files changed:
 .../concurrency-capacity-resolver.test.ts          | 68 +++++++++++++++++++++-
 1 file changed, 66 insertions(+), 2 deletions(-)

Fusion-Task-Id: FN-9190

Fusion-Task-Lineage: aeb0daad-8f03-4835-a218-f45448c66c33

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-21 17:22:17 -07:00
gsxdsm
a010dc42bf FN-9185: enforce effective task concurrency limits
Unify task concurrency around authoritative project settings and expose the effective admission ceiling.

- Resolve maxConcurrent and maxWorktrees through a shared core capacity model with consistent defaults.
- Apply the effective limit across scheduler, engine, runtime, CLI, API, and project-manager admission paths.
- Surface configured and binding concurrency values in dashboard controls, status views, diagnostics, and documentation.
- Add regression coverage for settings persistence, routing, scheduling, UI surfaces, and worktree-bound capacity.

Files changed:
 .../fn-9185-max-concurrent-effective-limit.md      |   7 +
 docs/architecture.md                               |   8 +-
 docs/cli-reference.md                              |   1 +
 docs/dashboard-guide.md                            |   4 +
 docs/settings-reference.md                         |   4 +-
 .../dashboard-concurrency-settings.test.ts         | 166 +++++++++++++++++++++
 packages/cli/src/commands/dashboard.ts             |  28 ++--
 packages/cli/src/commands/onboard.ts               |   4 +-
 packages/cli/src/project-resolver.ts               |  27 +++-
 .../concurrency-capacity-resolver.test.ts          |  46 ++++++
 .../src/__tests__/worktree-capacity-limit.test.ts  |  51 +++++--
 packages/core/src/index.gate.ts                    |   2 +-
 packages/core/src/index.ts                         |   2 +-
 packages/core/src/workflows/workflow-capacity.ts   |  61 ++++++--
 packages/dashboard/app/App.tsx                     |   2 +
 .../app/__tests__/concurrency-ui-surfaces.test.tsx | 155 +++++++++++++++++++
 .../scheduling-effective-concurrency.test.tsx      |  48 ++++++
 packages/dashboard/app/api/projects/projects.ts    |  10 +-
 packages/dashboard/app/api/settings/settings.ts    |  14 +-
 packages/dashboard/app/components/Board.tsx        |   7 +-
 packages/dashboard/app/components/Column.tsx       |  13 +-
 .../dashboard/app/components/EngineControlMenu.tsx |  17 ++-
 .../command-center/CommandCenterControls.tsx       |  17 ++-
 .../components/command-center/areas/TeamArea.tsx   |  10 +-
 .../app/components/dashboard/MainContent.tsx       |   3 +
 .../dashboard/app/components/dashboard/types.ts    |   2 +
 .../settings/sections/SchedulingSection.tsx        |  12 +-
 packages/dashboard/app/hooks/useAppSettings.ts     |   9 +-
 packages/dashboard/app/hooks/useExecutorStats.ts   |  10 +-
 .../app/utils/__tests__/worktreeGrouping.test.ts   |  12 +-
 packages/dashboard/app/utils/worktreeGrouping.ts   |   8 +-
 packages/dashboard/src/routes.ts                   |   6 +-
 ...concurrency-authoritative-source-routes.test.ts |  90 +++++++++++
 .../register-config-mcp-pi-settings-routes.test.ts |  29 +++-
 .../register-config-mcp-pi-settings-routes.ts      |  17 ++-
 .../src/routes/register-project-routes.ts          |  14 +-
 .../concurrency-effective-limit-surfaces.test.ts   |  34 +++++
 .../src/__tests__/project-engine-manager.test.ts   |  19 +++
 .../__tests__/scheduler-workflow-cutover.test.ts   |   6 +-
 packages/engine/src/concurrency/concurrency.ts     |  23 ++-
 packages/engine/src/concurrency/hybrid-executor.ts |  35 ++++-
 .../engine/src/executor/create-spawn-agent-tool.ts |   8 +-
 packages/engine/src/project-engine-manager.ts      |  50 +++++--
 packages/engine/src/project-engine.ts              |  12 +-
 packages/engine/src/project/project-manager.ts     |  26 +++-
 packages/engine/src/runtimes/in-process-runtime.ts |  12 +-
 packages/engine/src/scheduler.ts                   |  31 ++--
 packages/engine/src/triage.ts                      |  15 +-
 48 files changed, 1028 insertions(+), 159 deletions(-)

Fusion-Task-Id: FN-9185
Fusion-Task-Lineage: 6294456c-d417-40a5-a5fa-2035c6b964a6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-21 10:57:44 -07:00
gsxdsm
74dacd0758 FN-9188: respect externally managed updates
Managed deployments can now suppress self-update offers while unsupported installs receive actionable guidance.

- Add an install-level environment policy for externally managed updates across CLI, server, and dashboard surfaces.
- Detect missing npm shell failures and replace raw stderr with deployment-aware remediation.
- Document managed-update behavior and add regression coverage for checks, installs, automation, and UI actions.

Files changed:
 .changeset/fn-9188-managed-updates.md              |  7 +++
 docs/architecture.md                               |  6 +--
 docs/cli-reference.md                              |  2 +-
 docs/dashboard-guide.md                            |  2 +-
 docs/settings-reference.md                         |  4 +-
 packages/cli/src/__tests__/update-cache.test.ts    | 11 ++++-
 .../update-command-externally-managed.test.ts      | 39 +++++++++++++++
 packages/cli/src/commands/update.ts                | 42 +++++++++++-----
 packages/cli/src/update-cache.ts                   |  3 +-
 .../core/src/__tests__/update-management.test.ts   | 15 ++++++
 packages/core/src/config/update-management.ts      | 21 ++++++++
 packages/core/src/index.gate.ts                    |  5 ++
 packages/core/src/index.ts                         |  5 ++
 packages/dashboard/app/api/client/health.ts        |  3 ++
 .../dashboard/app/components/SettingsModal.tsx     |  4 ++
 .../__tests__/SettingsModal.general.test.tsx       | 20 ++++++++
 .../__tests__/UpdateAvailableBanner.test.tsx       | 26 ++++++++++
 .../components/__tests__/settings-mobile.test.tsx  | 24 +++++++++-
 .../__tests__/SystemControlsArea.test.tsx          | 20 ++++++++
 .../command-center/areas/SystemControlsArea.tsx    |  6 +++
 .../app/hooks/__tests__/useUpdateCheck.test.ts     |  1 +
 packages/dashboard/app/hooks/useUpdateCheck.ts     |  3 +-
 .../dashboard/src/__tests__/auto-update.test.ts    | 10 ++++
 .../dashboard/src/__tests__/update-check.test.ts   | 56 ++++++++++++++++++++++
 packages/dashboard/src/auto-update.ts              |  9 +++-
 .../__tests__/register-update-check-routes.test.ts | 24 +++++++++-
 .../src/routes/register-update-check-routes.ts     | 47 +++++++++++++++++-
 packages/dashboard/src/update-check.ts             | 50 ++++++++++++++++---
 28 files changed, 433 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-9188

Fusion-Task-Lineage: 60b114b9-8bf7-434f-9d26-0c954aea45ba

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-21 10:18:45 -07:00
gsxdsm
1a3230ff93 FN-9186: Bound no-progress self-healing requeues
Bound no-progress self-healing retries so persistent failures stop consuming agent sessions.

- Persist a three-attempt retry budget with exponential backoff and an idempotent terminal sentinel.
- Prevent restart and wedge recovery paths from reopening exhausted failures.
- Emit bounded retry and exhaustion audit events with regression coverage and operator documentation.

Files changed:
 .changeset/fn-9186-no-progress-requeue-budget.md   |   7 ++
 AGENTS.md                                          |   1 +
 docs/architecture.md                               |   2 +
 docs/run-audit.md                                  |   2 +
 docs/self-healing-backward-move-audit.md           |   2 +-
 .../src/__tests__/default-workflow-hooks.test.ts   |  18 +++
 .../non-executor-run-audit-sink-health.test.ts     |  43 +++++++
 .../__tests__/restart-recovery-coordinator.test.ts |  14 +++
 ...self-healing-no-progress-requeue-budget.test.ts | 131 +++++++++++++++++++++
 packages/engine/src/__tests__/self-healing.test.ts |  59 ++++++----
 .../src/healing/no-progress-requeue-budget.ts      |   7 ++
 .../src/healing/restart-recovery-coordinator.ts    |  10 +-
 .../__tests__/task-wedge-notification.test.ts      |  10 +-
 .../src/notification/task-wedge-notification.ts    |   9 ++
 packages/engine/src/self-healing.ts                |  95 +++++++++++++--
 packages/engine/src/util/run-audit.ts              |   3 +
 16 files changed, 378 insertions(+), 35 deletions(-)

Fusion-Task-Id: FN-9186

Fusion-Task-Lineage: 06d29a60-b6ad-4506-a3c1-f3c52411946a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-21 09:21:52 -07:00
gsxdsm
96ad20c93d FN-9187: Bound auto-archive failure retries
Prevent stale done-task retention from retrying permanently blocked archives forever.

- Pre-filter tasks with live lineage children while honoring renamed archive lanes.
- Bound repeated archive failures by reason and reset budgets when candidates or failure classes change.
- Emit one bounded audit event and operator-facing task log when retries are exhausted.
- Cover retry, escalation, reset, lineage, and renamed-lane behavior and document the retention contract.

Files changed:
 .changeset/fn-9187-bounded-auto-archive.md         |   7 ++
 AGENTS.md                                          |   1 +
 docs/architecture.md                               |   2 +
 docs/run-audit.md                                  |   1 +
 docs/settings-reference.md                         |   2 +-
 .../live-lineage-children-lanes.pg.test.ts         |   3 +-
 .../core/src/task-store/archive-lifecycle-2.ts     |  11 +-
 packages/engine/src/__tests__/self-healing.test.ts | 117 +++++++++++++++++++++
 .../engine/src/run-audit/run-audit-catalogue.ts    |   3 +
 packages/engine/src/self-healing.ts                |  93 +++++++++++++++-
 packages/engine/src/util/run-audit.ts              |   2 +
 11 files changed, 231 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-9187

Fusion-Task-Lineage: cc9a6adc-4b6d-44da-a84b-5633d4b80a10

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-21 08:25:18 -07:00
Phil Larson
5ec47e58de fix: resolve late-acquire lifecycle and plugin API drift (#3492)
## Summary
- resolves renamed review, complete, and archived workflow columns
before admitting late workspace repositories
- avoids workflow resolution when an existing repository or landing
state already decides the result
- syncs the bundled dependency-graph plugin with the current TaskCard
and scoped-storage APIs

## Test plan
- `pnpm --filter @fusion/engine exec vitest run
src/__tests__/workspace-add-repo-midflight.test.ts --silent=passed-only
--reporter=dot`
- `pnpm --filter @fusion/engine typecheck`
- `pnpm --filter @fusion-plugin-examples/dependency-graph test`
- `pnpm --filter @fusion-plugin-examples/dependency-graph build`
- `pnpm check:plugin-interop-drift`
- `pnpm check:lifecycle-columns`
- `pnpm check:changesets`
- `pnpm lint`
- `pnpm build`

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* Late workspace repository acquisition now respects renamed review,
complete, and archived workflow columns.
* Tasks entering a blocked lifecycle state during acquisition are
refused safely.
* Existing safeguards for merge status, landed worktrees, legacy
terminal identifiers, and existing worktrees remain supported.
* Concurrent acquisition attempts now avoid duplicate worktrees and
preserve task updates reliably.

* **Improvements**
* Improved dependency-graph dashboard interoperability with current
task-card and storage APIs.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-21 07:48:23 -07:00
gsxdsm
704d74c9ba chore(release): v0.77.0-beta.6
Version bump via changesets.
2026-08-21 07:44:32 -07:00
Fusion Agent
c91e5ce42d FN-106: prevent workspace finalization livelock
Repair workspace merge-boundary finalization so empty repository sets cannot loop indefinitely.

- Track workspace merge readiness and durable per-repository obligations.
- Gate landing and recovery on scope, blockers, leases, and checkout ownership.
- Preserve remediation state, add recovery paths, documentation, and regression coverage.

Files changed:
 .../fn-106-workspace-finalization-livelock.md      |  7 ++
 docs/architecture.md                               |  6 ++
 ...e-empty-merge-boundary-finalization-livelock.md | 40 ++++++++++
 docs/workflow-steps.md                             |  4 +
 packages/cli/src/commands/__tests__/task.test.ts   |  2 +
 ...workspace-worktrees-concurrent-merge.pg.test.ts | 23 ++++++
 packages/core/src/store.ts                         |  9 ++-
 packages/core/src/task-store/task-mutation-ops.ts  | 49 +++++++++++-
 packages/core/src/task-store/task-update.ts        |  6 +-
 packages/core/src/types/task/task-core.ts          |  7 ++
 .../engine/src/__tests__/executor-test-helpers.ts  |  6 ++
 .../executor-workspace-main-checkout-guard.test.ts |  8 +-
 .../executor-workspace-session-cwd.test.ts         | 37 +++++++++
 .../engine/src/__tests__/project-engine.test.ts    | 14 +++-
 .../src/__tests__/reviewer-workspace.test.ts       | 72 ++++++++++++++++-
 .../__tests__/workspace-merge-readiness.test.ts    | 46 +++++++++++
 .../workspace-merger-idempotency.slow.test.ts      | 15 ++--
 .../src/__tests__/workspace-merger-lease.test.ts   |  4 +-
 .../workspace-root-worktree-routing.test.ts        | 47 +++++++++++
 .../create-authoritative-workflow-seams.ts         |  2 +
 .../engine/src/executor/create-task-done-tool.ts   | 15 ++++
 .../executor/ensure-graph-custom-node-worktree.ts  |  8 ++
 .../request-pre-merge-optional-step-fix.ts         | 49 +++++++++++-
 .../engine/src/executor/run-graph-custom-node.ts   | 24 ++++--
 packages/engine/src/executor/run-implementation.ts |  9 +++
 packages/engine/src/executor/send-task-back-for-fix.ts  |  4 +-
 .../src/executor/workspace-main-checkout-guard.ts  | 26 +++++-
 .../src/executor/workspace-review-remediation.ts   | 54 +++++++++++++
 .../src/executor/worktree-verify-invariants.ts     |  2 +-
 packages/engine/src/merge/merger-ai.ts             | 93 +++++++++++++++++-----
 .../engine/src/merge/workspace-merge-readiness.ts  | 64 +++++++++++++++
 packages/engine/src/project-engine.ts              | 37 +++++++--
 packages/engine/src/self-healing.ts                | 54 ++++++++++---
 .../engine/src/worktree/worktree-acquisition.ts   | 20 ++++-
 34 files changed, 787 insertions(+), 76 deletions(-)

Fusion-Task-Id: FN-106

Fusion-Task-Lineage: 70b5c13d-9e17-419d-90ac-7258697657ef

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 14:41:37 +00:00
Fusion Agent
3717fc5af1 FN-107: block single-repository worktree acquisition
Prevent single-repository worktree acquisition from proceeding without explicit multi-repository workspace context.

- Require workspace-aware acquisition for single-repository tasks.
- Propagate acquisition origin and workspace configuration through executor, merger, and recovery paths.
- Add regression coverage, documentation, and a release changeset for the blocked behavior.

Files changed:
 .changeset/fn-107-single-repo-worktree.md          |   7 ++
 docs/architecture.md                               |   4 +
 docs/testing.md                                    |   4 +
 packages/core/src/branch/branch-assignment.ts      |  12 +++
 packages/core/src/index.gate.ts                    |   1 +
 packages/core/src/index.ts                         |   1 +
 packages/core/src/task-store/task-creation.ts      |   4 +-
 packages/core/src/task-store/task-update.ts        |   4 +-
 .../src/routes/register-planning-subtask-routes.ts |   1 +
 .../engine/src/__tests__/executor-test-helpers.ts  |  12 +++
 .../engine/src/__tests__/executor-worktree.test.ts |  44 ++++++---
 .../src/__tests__/node-worktree-isolation.test.ts  |   7 +-
 .../task-branch-write-origin-census.test.ts        |  49 ++++++++++
 .../worktree-acquisition-workspace.test.ts         |   6 +-
 .../src/__tests__/worktree-acquisition.test.ts     | 103 ++++++++++++++++++---
 .../engine/src/executor/handle-graph-failure.ts    |  16 +++
 .../src/executor/workspace-config-resolver.ts      |   1 +
 .../executor/worktree-branch-conflict-handle.ts    |   1 +
 packages/engine/src/merger.ts                      |   3 +-
 packages/engine/src/self-healing.ts                |   6 +
 .../self-healing/auto-recover-worktree-session.ts  |  10 +-
 .../src/workflows/workflow-graph-executor.ts       |   7 +-
 .../engine/src/worktree/worktree-acquisition.ts    |  73 +++++++++++++-
 23 files changed, 334 insertions(+), 42 deletions(-)

Fusion-Task-Id: FN-107

Fusion-Task-Lineage: 80df9dae-59a0-416e-8a02-6ab2dba9bb00

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 14:41:37 +00:00
gsxdsm
9e0f64af9a chore(release): v0.77.0-beta.5
Version bump via changesets.
2026-08-20 22:40:47 -07:00
gsxdsm
7c329d8bf2 fix(FN-094): remove stray brace that broke the core build
FN-094 closed resolveInitialRepositoryScope twice, so tsc failed with
TS1128 and `pnpm release` aborted at pnpm build:full.
2026-08-20 22:26:59 -07:00
Fusion Agent
c21f628174 FN-101: separate update installation and restart automation
Separate automatic update installation from restart recovery so dashboard reloads only after the replacement host is healthy.

- Add scoped update automation settings and localized descriptions.
- Coordinate update installation, restart recovery, timeout handling, and manual refresh guidance.
- Update settings UI, banner behavior, API routes, documentation, screenshots, and regression coverage.

Files changed:
 .changeset/fn-101-update-restart-lifecycle.md      |   7 ++
 docs/assets/fn-101-update-automation-desktop.png   | Bin 0 -> 17744 bytes
 docs/assets/fn-101-update-automation-mobile.png    | Bin 0 -> 11367 bytes
 docs/dashboard-guide.md                            |   6 +-
 docs/settings-reference.md                         |  12 ++-
 packages/core/src/config/settings-schema.ts        |   9 ++
 packages/core/src/config/update-automation.ts      |  17 +++
 packages/core/src/index.gate.ts                    |   1 +
 packages/core/src/index.ts                         |   1 +
 packages/core/src/types/settings/settings-scope.ts |   8 ++
 packages/dashboard/app/api/settings/settings.ts    |   4 +
 .../dashboard/app/components/SettingsModal.tsx     |  38 +++++--
 .../app/components/UpdateAvailableBanner.tsx       |  33 +++++-
 .../__tests__/SettingsModal.general.test.tsx       |  39 +++++++
 .../__tests__/UpdateAvailableBanner.test.tsx       |  59 ++++++++++-
 .../app/components/settings/save-split.ts          |   5 +-
 .../sections/GlobalGeneralSection.search.ts        |  22 ++--
 .../settings/sections/GlobalGeneralSection.tsx     |  29 +++--
 .../settings-default-descriptions.test.tsx         |   2 +
 .../__tests__/useSystemRestartRecovery.test.ts     | 118 +++++++++++++++++++++
 .../app/hooks/useSystemRestartRecovery.ts          | 118 +++++++++++++++++++++
 packages/dashboard/src/auto-update.ts              |  22 +++-
 .../src/routes/register-update-check-routes.ts     |  24 +++-
 .../dashboard/src/update-install-coordinator.ts    |  37 +++++++
 packages/i18n/locales/en/app.json                  |   4 +
 packages/i18n/locales/es/app.json                  |   4 +
 packages/i18n/locales/fr/app.json                  |   4 +
 packages/i18n/locales/ko/app.json                  |   4 +
 packages/i18n/locales/pt-BR/app.json               |   8 ++
 packages/i18n/locales/zh-CN/app.json               |   4 +
 packages/i18n/locales/zh-TW/app.json               |   4 +
 packages/i18n/src/resources.d.ts                   |   4 +
 32 files changed, 602 insertions(+), 45 deletions(-)

Fusion-Task-Id: FN-101

Fusion-Task-Lineage: 2d00e84e-a01d-4d19-bb02-aa87a818165b

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:36:21 +00:00
Fusion Agent
bbca7a1ffc FN-094: add mono- and multi-repository lifecycle parity
Extend workspace lifecycle behavior so mono-repository and multi-repository tasks share the same durable scope, workflow, review, and merge semantics.

- Add repository-scope persistence, migrations, serialization, and task mutation support.
- Align dashboard task creation, detail, and workspace worktree views with repository-aware lifecycle state.
- Extend executor, reviewer, merger, triage, and self-healing paths with parity coverage and tests.
- Document the lifecycle contract and publish the operator-facing changeset.

Files changed:
 .changeset/fn-094-multi-repository-lifecycle.md    |   7 +
 docs/agents.md                                     |   8 +
 docs/architecture.md                               |   6 +
 docs/dashboard-guide.md                            |   4 +
 docs/multi-project.md                              |   6 +
 docs/settings-reference.md                         |   2 +-
 docs/testing.md                                    |  12 ++
 docs/workspaces.md                                 |   6 +
 ...workspace-worktrees-concurrent-merge.pg.test.ts |  19 +++
 packages/core/src/index.ts                         |   2 +-
 .../core/src/postgres/migrations/0000_initial.sql  |   1 +
 .../0064_fn_094_task_repository_scope.sql          |   2 +
 packages/core/src/postgres/schema-applier.ts       |  13 +-
 packages/core/src/postgres/schema/project.ts       |   2 +
 packages/core/src/store.ts                         |  21 ++-
 .../core/src/task-store/branch-and-pr-entities.ts  |   2 +-
 packages/core/src/task-store/persistence.ts        |   4 +-
 packages/core/src/task-store/serialization.ts      |   2 +
 packages/core/src/task-store/task-creation.ts      |  31 ++++
 packages/core/src/task-store/task-mutation-ops.ts  | 131 +++++++++++++++-
 packages/core/src/task-store/task-row-mappers.ts   |   2 +-
 packages/core/src/task-store/task-update.ts        |  55 +++++--
 packages/core/src/tasks/repository-scope.ts        |  29 ++++
 packages/core/src/types.ts                         |   4 +
 packages/core/src/types/task/task-core.ts          |  35 ++++-
 packages/core/src/types/workflow/workflow-steps.ts |  21 +++
 packages/dashboard/app/api/tasks/tasks.ts          |  14 ++
 packages/dashboard/app/components/NewTaskModal.tsx |  16 +-
 .../dashboard/app/components/TaskDetailModal.css   |  27 ++++
 .../dashboard/app/components/TaskDetailModal.tsx   |  15 +-
 .../app/components/WorkspaceWorktreesSummary.tsx   |  68 ++++++++-
 .../app/components/__tests__/NewTaskModal.test.tsx |   1 +
 .../__tests__/WorkspaceWorktreesSummary.test.tsx   |  27 +++-
 .../src/routes/register-task-workflow-routes.ts    |  48 ++++++
 .../__tests__/executor-workspace-taskdone.test.ts  |  20 +++
 .../src/__tests__/reviewer-workspace.test.ts       | 170 ++++++++++++++++++++-
 .../src/__tests__/self-healing-workspace.test.ts   |   4 +
 .../workflow-graph-optional-group.test.ts          |  32 ++++
 .../workflow-graph-optional-step-fix.test.ts       |  58 +++++++
 .../engine/src/__tests__/workspace-e2e.test.ts     |  91 ++++++++++-
 .../__tests__/workspace-lifecycle-parity.test.ts   |  61 ++++++++
 .../src/__tests__/workspace-merger-lease.test.ts   |  25 +++
 .../__tests__/workspace-merger-scope-gates.test.ts |  58 +++++++
 .../engine/src/__tests__/workspace-merger.test.ts  |  59 ++++++-
 packages/engine/src/agent-tools.ts                 |  92 ++++++++++-
 packages/engine/src/execution/reviewer.ts          |  10 +-
 .../create-authoritative-workflow-seams.ts         |  95 ++++++++++--
 .../engine/src/executor/execute-workflow-graph.ts  |  37 ++++-
 .../request-pre-merge-optional-step-fix.ts         |  70 +++++++++
 .../engine/src/executor/run-graph-custom-node.ts   | 124 ++++++++++-----
 .../engine/src/executor/workflow-step-verdict.ts   |   6 +-
 .../src/executor/workspace-review-per-repo.ts      | 118 +++++++++++++-
 .../src/executor/worktree-task-done-scope-leak.ts  | 109 ++++++++++++-
 packages/engine/src/merge/merger-ai.ts             |  88 ++++++++++-
 packages/engine/src/self-healing.ts                |  19 ++-
 packages/engine/src/triage.ts                      |   9 ++
 .../src/workflows/workflow-graph-executor.ts       |  73 +++++++--
 .../engine/src/workflows/workflow-node-handlers.ts |  12 +-
 58 files changed, 1962 insertions(+), 121 deletions(-)

Fusion-Task-Id: FN-094

Fusion-Task-Lineage: 483f958f-cc67-474e-9383-26856c329543

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:35:58 +00:00
Fusion Agent
f714e45bda FN-090: reconcile AI merge review state
Reconcile AI merge-review outcomes with durable task state and operator-visible workflow controls.

- Persist merge-review findings and reconciliation metadata through the core task store and schema migration.
- Update merger prompts, execution, recovery handling, and workflow routes for approved review outcomes.
- Add dashboard task-detail presentation and release documentation for the reconciliation flow.

Files changed:
 .../fn-090-ai-merge-review-reconciliation.md       |   7 +
 docs/architecture.md                               |   6 +
 .../src/__tests__/postgres/schema-applier.test.ts  |   2 +-
 .../0063_fn_090_ai_merge_review_reconciliation.sql |   2 +
 packages/core/src/postgres/schema-applier.ts       |  19 +-
 packages/core/src/postgres/schema/project.ts       |   1 +
 packages/core/src/store.ts                         |  24 +-
 packages/core/src/task-store/persistence.ts        |   2 +
 packages/core/src/task-store/reset-lifecycle.ts    |   1 +
 packages/core/src/task-store/serialization.ts      |   1 +
 packages/core/src/task-store/task-mutation-ops.ts  |   2 +-
 packages/core/src/task-store/task-row-mappers.ts   |   2 +-
 packages/core/src/task-store/task-update.ts        |   5 +
 packages/core/src/types/task/task-core.ts          |  27 ++
 .../dashboard/app/api/tasks/tasks-lifecycle.ts     |   9 +
 .../dashboard/app/components/TaskDetailModal.css   |  19 ++
 .../dashboard/app/components/TaskDetailModal.tsx   |  29 ++
 .../src/routes/register-task-workflow-routes.ts    |  17 ++
 .../src/__tests__/merge-error-recovery.test.ts     |   5 +-
 packages/engine/src/__tests__/merger-ai.test.ts    | 234 +++++----------
 packages/engine/src/merge/merger-ai-prompts.ts     |  31 +-
 packages/engine/src/merge/merger-ai.ts             | 319 ++++++++++-----------
 packages/engine/src/project-engine.ts              |   4 +-
 23 files changed, 416 insertions(+), 352 deletions(-)

Fusion-Task-Id: FN-090
Fusion-Task-Lineage: 13450a9f-f17f-46b4-ab39-4887520c2a82
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:34:43 +00:00
Fusion Agent
525ecc9f25 FN-083: position auto-summarize task titles toggle
Align the auto-summarize task titles setting with task-language controls and preserve language-aware title generation behavior.

- Place the project toggle directly after the AI-authored task language selector.
- Verify toggle placement, state updates, and resolved title-output language instructions.
- Update settings documentation for language snapshotting and bounded fallback behavior.

Files changed:
 docs/settings-reference.md                         |  4 +--
 packages/core/src/__tests__/ai-summarize.test.ts   | 18 +++++++++++
 .../app/__tests__/settings-sections.test.tsx       | 23 ++++++++++++--
 .../settings/sections/ProjectModelsSection.tsx     | 37 ++++++++++------------
 4 files changed, 58 insertions(+), 24 deletions(-)

Fusion-Task-Id: FN-083
Fusion-Task-Lineage: 4a018f7e-3e8d-4478-8d9d-266fd04ada4c
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:33:56 +00:00
Fusion Agent
eb3eeb887a FN-074: remove task splitting and parent deletion
Remove complex-task splitting and parent-deletion behavior across core, dashboard, and engine.

- Remove subtask splitting, breakdown UI, and related API routes and lifecycle handling.
- Add the migration and prompt/documentation updates that enforce the simplified task model.
- Update affected tests and integrations for the removed behavior.

Files changed:
 .changeset/fn-074-removal.md                       |    7 +
 docs/dashboard-guide.md                            |   17 +-
 docs/gitlab-parity-inventory.md                    |    7 +-
 docs/mcp.md                                        |    6 +-
 docs/settings-reference.md                         |   16 +-
 docs/task-management.md                            |   31 +-
 docs/workflow-steps.md                             |   10 +-
 .../cli/skill/fusion/references/task-structure.md  |    2 +-
 .../cli/skill/fusion/workflows/specifications.md   |    4 +-
 packages/core/src/__tests__/agent-prompts.test.ts  |   19 +-
 .../builtin-workflow-settings-triage.test.ts       |   32 +-
 .../src/__tests__/postgres/schema-applier.test.ts  |    2 +-
 .../core/src/__tests__/prompt-overrides.test.ts    |    3 +-
 ...-deleted-observed-dispatch-side-effects.test.ts |    3 -
 .../task-deleted-outbox-consumer-backoff.test.ts   |    1 -
 packages/core/src/agents/agent-prompts.ts          |   56 +-
 packages/core/src/index.ts                         |    2 +-
 .../0062_remove_task_subtask_splitting.sql         |    2 +
 packages/core/src/postgres/schema-applier.ts       |   14 +-
 packages/core/src/postgres/schema/project.ts       |    1 -
 packages/core/src/store.ts                         |   12 +-
 packages/core/src/task-delete-attribution.ts       |   20 +-
 packages/core/src/task-delete-notice.ts            |    7 +-
 .../__tests__/lifecycle-outbox-writer.test.ts      |    4 +-
 .../core/src/task-store/archive-lifecycle-2.ts     |   13 +-
 packages/core/src/task-store/archive-lifecycle.ts  |    6 +-
 packages/core/src/task-store/lifecycle-outbox.ts   |    2 -
 packages/core/src/task-store/persistence.ts        |    2 -
 packages/core/src/task-store/serialization.ts      |    2 -
 packages/core/src/task-store/task-creation.ts      |    2 -
 .../src/task-store/task-deleted-outbox-consumer.ts |    4 -
 packages/core/src/task-store/task-mutation-ops.ts  |    2 +-
 packages/core/src/task-store/task-row-mappers.ts   |    2 +-
 packages/core/src/tasks/prompt-overrides.ts        |   35 -
 packages/core/src/types.ts                         |   12 -
 packages/core/src/types/mesh/archive-planning.ts   |    1 -
 packages/core/src/types/task/task-core.ts          |    3 -
 .../src/workflows/builtin-workflow-settings.ts     |   86 --
 packages/dashboard/app/App.tsx                     |   15 -
 .../mission-planning-modals-mobile.test.ts         |   15 -
 packages/dashboard/app/api/legacy.ts               |   18 +-
 packages/dashboard/app/api/planning/ai-text.ts     |  171 +---
 packages/dashboard/app/api/planning/planning.ts    |   46 -
 packages/dashboard/app/api/tasks/tasks.ts          |    4 +-
 packages/dashboard/app/components/AppModals.tsx    |   39 +-
 packages/dashboard/app/components/Board.tsx        |   10 +-
 packages/dashboard/app/components/Column.tsx       |    9 +-
 .../dashboard/app/components/InlineCreateCard.tsx  |   63 +-
 packages/dashboard/app/components/Lane.tsx         |    3 +-
 packages/dashboard/app/components/ListView.tsx     |   10 +-
 packages/dashboard/app/components/NewTaskModal.tsx |    8 +-
 .../dashboard/app/components/PlanningModeModal.css |  128 ---
 .../dashboard/app/components/PlanningModeModal.tsx |  566 +----------
 .../dashboard/app/components/QuickEntryBox.tsx     |   43 +-
 .../dashboard/app/components/SettingsModal.tsx     |    2 -
 .../app/components/SubtaskBreakdownModal.tsx       |  932 -----------------
 packages/dashboard/app/components/TaskCard.tsx     |    1 -
 packages/dashboard/app/components/TaskForm.tsx     |   23 +-
 .../__tests__/AgentPromptsManager.test.tsx         |    1 -
 .../app/components/__tests__/AppModals.test.tsx    |   92 +-
 .../app/components/__tests__/Board.test.tsx        |   69 +-
 .../components/__tests__/InlineCreateCard.test.tsx |  170 ----
 .../app/components/__tests__/ListView.test.tsx     |   38 -
 .../app/components/__tests__/NewTaskModal.test.tsx |   48 -
 .../components/__tests__/QuickEntryBox.test.tsx    |  293 +-----
 .../__tests__/SubtaskBreakdownModal.test.tsx       |  933 -----------------
 ...skDetail.mobile-transition.board-panel.test.tsx |    1 -
 .../__tests__/TaskDetail.swipe-back.test.tsx       |    1 -
 .../app/components/__tests__/TaskForm.test.tsx     |   67 --
 .../__tests__/WorkflowSettingsPanel.test.tsx       |   51 -
 .../app/components/__tests__/board-mobile.test.tsx |   20 -
 .../composer-settings-read-isolation.test.tsx      |   30 -
 .../components/__tests__/migratedModalFixtures.tsx |    2 -
 .../app/components/dashboard/MainContent.tsx       |    5 -
 .../dashboard/__tests__/DashboardBanners.test.tsx  |    1 -
 .../__tests__/MainContent.graph-popout.test.tsx    |    1 -
 .../dashboard/app/components/dashboard/types.ts    |    2 -
 .../app/components/workflow-setting-display.ts     |   10 -
 ...ckgroundSessions.resume-instrumentation.test.ts |    1 -
 .../hooks/__tests__/useBackgroundSessions.test.ts  |   25 +-
 .../app/hooks/__tests__/useModalManager.test.ts    |    3 -
 packages/dashboard/app/hooks/modalPersistence.ts   |   14 -
 .../dashboard/app/hooks/useBackgroundSessions.ts   |    9 +-
 packages/dashboard/app/hooks/useModalManager.ts    |   58 +-
 packages/dashboard/app/hooks/useProjectActions.ts  |    2 +-
 packages/dashboard/app/hooks/useTaskHandlers.ts    |    9 -
 packages/dashboard/app/utils/builtinPrompts.ts     |    7 -
 packages/dashboard/app/utils/projectStorage.ts     |    1 -
 .../src/__tests__/ai-session-diagnostics.test.ts   |    5 +-
 .../src/__tests__/github-tracking-state.test.ts    |   97 --
 .../src/__tests__/gitlab-delete-close.test.ts      |    6 +-
 .../gitlab-parity-inventory-documentation.test.ts  |    1 -
 .../src/__tests__/gitlab-split-close.test.ts       |  125 ---
 .../planning-flow-diagnostics-guardrail.test.ts    |    1 -
 .../src/__tests__/process-lifecycle.test.ts        |    1 -
 .../dashboard/src/__tests__/routes-auth.test.ts    |    2 -
 .../src/__tests__/routes-automation.test.ts        |    2 -
 .../dashboard/src/__tests__/routes-git.test.ts     |    2 -
 .../dashboard/src/__tests__/routes-github.test.ts  |   92 --
 .../src/__tests__/routes-planning-tracking.test.ts |  130 ---
 .../src/__tests__/routes-planning.test.ts          | 1062 +-------------------
 .../dashboard/src/__tests__/routes-system.test.ts  |    2 -
 .../dashboard/src/__tests__/routes-tasks.test.ts   |  902 -----------------
 .../shared-branch-group-entry-points.test.ts       |   93 --
 packages/dashboard/src/ai-session-diagnostics.ts   |    3 +-
 packages/dashboard/src/ai-session-store.ts         |    6 +-
 packages/dashboard/src/ai-session-timeout.ts       |    3 +-
 packages/dashboard/src/github-tracking-state.ts    |   43 +-
 packages/dashboard/src/gitlab-delete-close.ts      |    7 +-
 packages/dashboard/src/gitlab-lifecycle.ts         |    4 +-
 packages/dashboard/src/gitlab-split-close.ts       |  103 --
 packages/dashboard/src/gitlab-tracking-state.ts    |    2 +-
 packages/dashboard/src/index.ts                    |    1 -
 packages/dashboard/src/planning.ts                 |  171 ----
 packages/dashboard/src/routes.ts                   |    6 -
 ...er-planning-subtask-routes.parent-close.test.ts |  120 ---
 .../dashboard/src/routes/register-git-github.ts    |    6 -
 .../src/routes/register-planning-subtask-routes.ts |  773 +-------------
 .../src/routes/register-task-workflow-routes.ts    |    6 +-
 packages/dashboard/src/server.ts                   |    8 -
 packages/dashboard/src/subtask-breakdown.ts        |  833 ---------------
 packages/dashboard/src/triage-trait.ts             |   93 +-
 .../src/__tests__/agent-task-read-tools.test.ts    |    1 -
 .../triage-duplicate-search-regression.test.ts     |    3 -
 .../triage-split-into-subtasks-delete.test.ts      |  222 ----
 packages/engine/src/__tests__/triage.test.ts       |  519 +---------
 packages/engine/src/triage.ts                      |  239 +----
 127 files changed, 214 insertions(+), 10001 deletions(-)

Fusion-Task-Id: FN-074

Fusion-Task-Lineage: 23207799-4ec4-4ec7-bcd7-83cba4d98f53

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:32:53 +00:00
Fusion Agent
be34be7430 FN-073: prevent durable blocks from missing dependencies
Reconcile missing dependency references so task completion and self-healing do not leave durable lifecycle blocks.

- Validate and repair dependency references during task creation and lifecycle operations.
- Reconcile missing dependencies during self-healing and preserve honest blocked completion behavior.
- Add PostgreSQL and executor regression coverage and document the recovery behavior.

Files changed:
docs/task-management.md                            |   5 +-
packages/core/src/__tests__/postgres/task-dependency-mutation.pg.test.ts   | 124 ++++++++++++++++++++
packages/core/src/task-store/archive-lifecycle-2.ts     |  71 +++++++++++-
packages/core/src/task-store/async/async-lifecycle.ts   |  19 ++++
packages/core/src/task-store/project-store-ops.ts  |  46 +++++++-
packages/core/src/task-store/task-creation.ts      |  43 ++++++-
packages/engine/src/__tests__/executor-task-done-blocked.test.ts   |  65 ++++++++++-
packages/engine/src/__tests__/missing-dependency-reconcile.test.ts |  63 +++++++++++
packages/engine/src/executor/create-task-done-tool.ts   |  25 ++++-
packages/engine/src/self-healing.ts                |  58 ++++++++++
10 files changed, 502 insertions(+), 17 deletions(-)

Fusion-Task-Id: FN-073

Fusion-Task-Lineage: 863a07f9-a9d4-4195-b09a-a318689c6382

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:32:52 +00:00
Fusion Agent
dfa25335d0 FN-066: add task-ID search to Activity Log
Add task-ID filtering across the Activity Log data, API, and dashboard UI.\n\n- Index and expose task IDs in central activity audit queries.\n- Add API, hook, modal, styling, localization, and regression-test coverage for search.\n- Include the published-package changeset and PostgreSQL migration.\n\nFiles changed:\n .changeset/fn-066-activity-log-task-search.md      |  7 +++\n .../postgres/activity-log-parity.pg.test.ts        | 20 ++++++-\n .../postgres/central-core-backend.test.ts          | 16 +++++\n .../src/__tests__/postgres/schema-applier.test.ts  |  4 +-\n .../core/src/async-stores/async-central-core.ts    | 16 ++++-\n packages/core/src/central/central-core.ts          |  5 +\n .../core/src/postgres/migrations/0000_initial.sql  |  2 +\n .../0061_fn_066_activity_log_task_id_index.sql     |  7 +++\n packages/core/src/postgres/schema-applier.ts       | 13 ++++\n packages/core/src/postgres/schema/central.ts       |  1 +\n packages/core/src/store.ts                         |  2 +\n packages/core/src/task-store/async/async-audit.ts  | 19 +++--\n packages/dashboard/README.md                       |  1 +\n .../app/__tests__/activity-log-layout.test.ts      |  5 ++\n .../dashboard/app/__tests__/api-projects.test.ts   |  4 +\n packages/dashboard/app/api/projects/projects.ts    |  4 +\n packages/dashboard/app/api/system/scheduling.ts    |  3 +\n .../dashboard/app/components/ActivityLogModal.css  | 14 +++++\n .../dashboard/app/components/ActivityLogModal.tsx  | 68 +++++++++++-------\n packages/dashboard/app/components/ScriptsModal.css | 21 +++++++\n .../components/__tests__/ActivityLogModal.test.tsx | 58 ++++++++++++++++++\n .../app/hooks/__tests__/useActivityLog.test.ts     | 35 +++++++++++\n packages/dashboard/app/hooks/useActivityLog.ts     | 14 +++--\n .../src/__tests__/activity-log-route.test.ts       | 35 +++++++++++\n .../src/routes/register-setup-activity-routes.ts   | 28 +++++---\n packages/i18n/locales/en/app.json                  |  5 +\n packages/i18n/locales/es/app.json                  |  5 +\n packages/i18n/locales/fr/app.json                  |  5 +\n packages/i18n/locales/ko/app.json                  |  5 +\n packages/i18n/locales/pt-BR/app.json               |  5 +\n packages/i18n/locales/zh-CN/app.json               |  5 +\n packages/i18n/locales/zh-TW/app.json               |  5 +\n packages/i18n/src/resources.d.ts                   |  3 +\n 33 files changed, 384 insertions(+), 56 deletions(-)

Fusion-Task-Id: FN-066

Fusion-Task-Lineage: 055e2383-9701-4b7e-9f7d-92c2fe175049

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 04:32:52 +00:00
gsxdsm
5c008bab97 FN-9181: bound recall-capture audit emission
Route detached recall-capture telemetry through the bounded core audit seam.

- Preserve the injectable audit adapter while bounding production recorded and failed events.
- Add hostile-sink, metadata-contract, and source-routing regression coverage.
- Document the class-A decision and add a patch changeset.

Files changed:
 .changeset/fn-9181-recall-capture-bounded-audit.md |  7 +++
 AGENTS.md                                          |  1 +
 docs/run-audit.md                                  |  4 +-
 .../core-run-audit-emitter-isolation.test.ts       |  3 +-
 .../__tests__/core-run-audit-sink-health.test.ts   | 62 ++++++++++++++++++-
 .../src/__tests__/memory/recall-capture.test.ts    | 71 +++++++++++++++++++++-
 packages/core/src/memory/recall-capture.ts         | 43 +++++++------
 7 files changed, 166 insertions(+), 25 deletions(-)

Fusion-Task-Id: FN-9181

Fusion-Task-Lineage: 4700caca-7182-4aa7-9355-b0bfdef0e4e1

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-20 03:36:07 -07:00
gsxdsm
fdebfba8a1 FN-9180: Route deleted-task outbox audits through the bounded seam
Keep deleted-task outbox processing resilient to hostile audit sinks while preserving durable ordering.

- Route catch-up, reconciliation fallback, lease-fenced, and retention-pruned events through the core bounded audit emitter.
- Add production-path sink-health coverage and update emitter routing ratchets.
- Document the class-A decision and add a patch changeset.

Files changed:
 .changeset/fn-9180-outbox-run-audit.md             |   7 +
 AGENTS.md                                          |   1 +
 docs/run-audit.md                                  |   2 +-
 .../core-run-audit-emitter-isolation.test.ts       |  13 +-
 .../excluded-awaited-run-audit-layer-sites.test.ts | 203 +--------------------
 .../task-deleted-outbox-audit-sink-health.test.ts  | 117 ++++++++++++
 ...k-lifecycle-retention-audit-sink-health.test.ts |  64 +++++++
 .../src/task-store/task-deleted-outbox-consumer.ts |  13 +-
 .../task-store/task-lifecycle-event-retention.ts   |   8 +-
 9 files changed, 215 insertions(+), 213 deletions(-)

Fusion-Task-Id: FN-9180

Fusion-Task-Lineage: 33e126fd-23d6-4f3b-a377-1c4bfd7b2941

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-20 00:54:56 -07:00
gsxdsm
c8f6afe124 FN-9182: Bound reconciliation audit emissions
Keep reconciliation responsive while preserving audit-dependent outcomes.

- add a bounded core audit emitter that reports recorded, absent, failed, and timed-out outcomes
- route workflow-switch and phantom-reservation reconciliation through the outcome-aware seam
- cover hostile sink behavior, caller-visible failures, routing invariants, and operator documentation

Files changed:
 .changeset/fn-9182-bounded-run-audit-outcome.md    |  7 ++
 AGENTS.md                                          |  1 +
 docs/run-audit.md                                  |  4 +-
 .../core-run-audit-emitter-isolation.test.ts       | 10 +--
 .../__tests__/core-run-audit-sink-health.test.ts   | 51 ++++++++++++++-
 .../src/__tests__/emit-bounded-run-audit.test.ts   | 58 ++++++++++++++++-
 .../phantom-reservation-audit-outcome.test.ts      | 76 ++++++++++++++++++++++
 .../core/src/run-audit/emit-bounded-run-audit.ts   | 41 +++++++++---
 .../task-store/async/async-phantom-reservations.ts | 31 +++++----
 .../core/src/task-store/workflow-definitions.ts    | 48 ++++++++------
 10 files changed, 277 insertions(+), 50 deletions(-)

Fusion-Task-Id: FN-9182

Fusion-Task-Lineage: c98e8e5e-2dae-47a0-b969-4156f4beccb3

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-20 00:36:50 -07:00
gsxdsm
649b901bbd FN-9178: Classify awaited core run-audit emitters
Document and ratchet which core run-audit writers may remain lifecycle-coupled.

- classify awaited emitters by bounded-isolation safety and preserve transactional boundaries
- characterize hostile sink behavior across store- and data-layer call sites
- fail closed when new awaited audit writers lack an explicit classification

Files changed:
 AGENTS.md                                          |   1 +
 docs/run-audit.md                                  |   6 +
 .../core-run-audit-emitter-isolation.test.ts       |  71 ++++-
 .../excluded-awaited-run-audit-layer-sites.test.ts | 332 +++++++++++++++++++++
 .../excluded-awaited-run-audit-store-sites.test.ts | 236 +++++++++++++++
 5 files changed, 645 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-9178

Fusion-Task-Lineage: 25fed6a5-4f2f-4d4b-8724-838eff4323c8

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-20 00:28:59 -07:00
gsxdsm
f5192a5d15 FN-9177: route core run-audit emitters through bounded seam
Make best-effort core telemetry unable to block or alter lifecycle operations.

- Add a bounded core run-audit helper that absorbs missing, throwing, rejecting, hanging, and late-settling sinks.
- Route planner and task-store best-effort emitters through the helper while preserving transactional audit writes.
- Add sink-health, source-routing, and helper regressions plus operator-facing policy documentation and a release changeset.

Files changed:
 .changeset/fn-9177-core-run-audit.md               |   7 +
 AGENTS.md                                          |   5 +-
 docs/run-audit.md                                  |   6 +-
 .../core-run-audit-emitter-isolation.test.ts       |  21 ++
 .../__tests__/core-run-audit-sink-health.test.ts   | 317 +++++++++++++++++++++
 .../src/__tests__/emit-bounded-run-audit.test.ts   |  35 +++
 packages/core/src/planner/planner-intervention.ts  |   9 +-
 .../core/src/planner/planner-overseer-events.ts    |  15 +-
 .../core/src/run-audit/emit-bounded-run-audit.ts   |  51 ++++
 packages/core/src/task-store/audit-ops.ts          |   6 +-
 packages/core/src/task-store/branch-group-ops.ts   |   6 +-
 packages/core/src/task-store/lifecycle-ops.ts      |   4 +-
 packages/core/src/task-store/merge-queue-ops-2.ts  |   4 +-
 packages/core/src/task-store/task-artifacts-ops.ts |   4 +-
 packages/core/src/task-store/task-id-integrity.ts  |  52 ++--
 packages/core/src/task-store/task-mutation-ops.ts  |  13 +-
 packages/core/src/task-store/workflow-integrity.ts |   4 +-
 .../src/task-store/workflow-workitems-ops-2.ts     |   4 +-
 .../core/src/task-store/workflow-workitems-ops.ts  |   4 +-
 19 files changed, 512 insertions(+), 55 deletions(-)

Fusion-Task-Id: FN-9177

Fusion-Task-Lineage: 95082837-1670-4c25-9503-60ad983b9d68

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 23:29:37 -07:00
gsxdsm
a426e28781 FN-9165: Add optional JIRA workspace branch derivation
Add opt-in JIRA-backed workspace branch naming while preserving editable manual branch workflows.

- add scoped JIRA configuration, secret resolution, and documented inheritance
- expose a bounded JIRA issue client and branch-derivation API route
- add settings and task-form controls with recoverable errors and coverage
- derive sanitized branch names from configurable issue-key and summary templates

Files changed:
 .changeset/fn-9165-jira-branch-name.md             |   7 ++
 docs/secrets.md                                    |   4 +
 docs/settings-reference.md                         |  18 ++++
 docs/workspaces.md                                 |   4 +
 packages/core/src/__tests__/jira-config.test.ts    |   6 ++
 .../core/src/__tests__/settings-parity.test.ts     |  12 +++
 packages/core/src/config/settings-schema.ts        |  14 +++
 packages/core/src/index.ts                         |   2 +
 packages/core/src/jira/index.ts                    |   1 +
 packages/core/src/jira/jira-config.ts              |  34 +++++++
 packages/core/src/types/settings/settings-scope.ts |  16 ++++
 .../app/__tests__/settings-save-split.test.ts      |  43 +++++++++
 .../dashboard/app/components/SettingsModal.tsx     |  29 +++++-
 packages/dashboard/app/components/TaskForm.tsx     |  23 ++++-
 .../app/components/__tests__/TaskForm.test.tsx     |  31 +++++++
 .../settings/__tests__/section-keys.test.ts        |   2 +
 .../app/components/settings/save-split.ts          |  64 ++++++++++++-
 .../app/components/settings/section-keys.ts        |   1 +
 .../sections/SourceControlGlobalSection.search.ts  |   9 ++
 .../sections/SourceControlGlobalSection.tsx        |  20 ++++-
 .../sections/SourceControlSection.search.ts        |   9 ++
 .../settings/sections/SourceControlSection.tsx     |  12 +++
 .../settings-default-descriptions.test.tsx         |   7 ++
 .../dashboard/src/__tests__/jira-client.test.ts    |  58 ++++++++++++
 .../src/__tests__/register-jira-routes.test.ts     |  70 +++++++++++++++
 packages/dashboard/src/jira-auth.ts                |  18 ++++
 packages/dashboard/src/jira.ts                     |  75 ++++++++++++++++
 packages/dashboard/src/routes.ts                   |   2 +
 packages/dashboard/src/routes/README.md            | 100 +++++++++++----------
 .../src/routes/create-api-routes-mount-sequence.ts |   2 +-
 packages/dashboard/src/routes/register-jira.ts     |  66 ++++++++++++++
 packages/engine/src/index.ts                       |   2 +
 .../worktree/__tests__/jira-branch-name.test.ts    |   7 ++
 packages/engine/src/worktree/jira-branch-name.ts   |   6 ++
 packages/i18n/locales/en/app.json                  |  23 +++++
 35 files changed, 739 insertions(+), 58 deletions(-)

Fusion-Task-Id: FN-9165

Fusion-Task-Lineage: 88ab5fa3-f66e-421d-8139-5c3e8917348d

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 22:44:46 -07:00
gsxdsm
e40bcebc27 FN-9161: support operator workspace branches
Allow workspace tasks to use one operator-selected branch consistently across every sub-repository while preserving ownership during recovery.

- validate and persist operator branch provenance at task creation and update boundaries
- reuse custom branches across workspace worktrees, PR flows, cleanup, and self-healing without deleting operator-owned refs
- expose branch validation in task forms and document the workspace behavior
- add coverage and a release changeset for shared custom branch handling

Files changed:
 .changeset/fn-9161-workspace-custom-branch.md      |  7 ++
 docs/workspaces.md                                 |  6 ++
 packages/cli/src/commands/pr.ts                    | 10 ++-
 packages/cli/src/commands/task-lifecycle.ts        | 10 +--
 packages/cli/src/commands/task.ts                  |  4 +-
 packages/cli/src/extension.ts                      |  2 +-
 .../core/src/__tests__/branch-assignment.test.ts   | 37 ++++++++++
 .../task-update-awaiting-approval-reason.test.ts   |  8 +++
 .../core/src/async-stores/async-mission-store.ts   |  1 +
 packages/core/src/branch/branch-assignment.ts      | 64 +++++++++++++++++
 packages/core/src/index.gate.ts                    |  7 ++
 packages/core/src/index.ts                         |  7 ++
 packages/core/src/missions/mission-store.ts        |  1 +
 packages/core/src/store.ts                         |  2 +-
 packages/core/src/task-store/branch-context.ts     | 35 +++++++--
 packages/core/src/task-store/merge-queue-ops.ts    | 31 ++++----
 packages/core/src/task-store/task-creation.ts      | 30 ++++++++
 packages/core/src/task-store/task-mutation-ops.ts  | 18 ++++-
 packages/core/src/task-store/task-update.ts        | 60 ++++++++++++++--
 packages/core/src/types.ts                         |  5 ++
 packages/core/src/types/task/task-core.ts          | 20 +++++-
 packages/dashboard/app/components/NewTaskModal.tsx | 25 +++++--
 packages/dashboard/app/components/TaskForm.tsx     | 18 ++++-
 .../app/components/__tests__/NewTaskModal.test.tsx | 12 ++++
 packages/dashboard/src/pr-conflict-resolver.ts     | 14 ++--
 packages/dashboard/src/routes/branch-selection.ts  |  7 ++
 .../dashboard/src/routes/register-git-github.ts    | 18 +++--
 .../src/routes/register-task-workflow-routes.ts    | 17 ++++-
 .../engine/src/__tests__/worktree-hooks.test.ts    |  6 ++
 .../engine/src/__tests__/worktree-pool.test.ts     |  8 +++
 .../src/auto-recovery-handlers/branch-worktree.ts  | 20 +++---
 .../engine/src/execution/step-session-executor.ts  |  6 +-
 .../src/executor/build-foreach-worktree-deps.ts    |  5 +-
 .../engine/src/executor/create-task-done-tool.ts   |  8 +--
 packages/engine/src/executor/dep-abort-cleanup.ts  |  4 +-
 packages/engine/src/executor/mark-stuck-aborted.ts |  2 +-
 .../src/executor/release-pre-execution-worktree.ts |  2 +-
 packages/engine/src/executor/run-implementation.ts | 14 ++--
 .../src/executor/task-done-refusal-handler.ts      |  4 +-
 .../executor/worktree-branch-conflict-handle.ts    | 10 +--
 .../src/executor/worktree-cleanup-conflicting.ts   | 39 +++++-----
 .../src/executor/worktree-create-conflict.ts       |  1 +
 .../engine/src/executor/worktree-stale-branch.ts   |  9 +++
 .../src/healing/restart-recovery-coordinator.ts    |  2 +-
 packages/engine/src/merger.ts                      | 33 +++++----
 .../src/recovery/foreign-only-contamination.ts     |  8 ++-
 packages/engine/src/self-healing.ts                | 82 +++++++++++++++-------
 .../engine/src/worktree/worktree-acquisition.ts    | 52 ++++++++++----
 packages/engine/src/worktree/worktree-backend.ts   | 42 ++++++++---
 packages/engine/src/worktree/worktree-hooks.ts     | 24 +++++--
 packages/engine/src/worktree/worktree-names.ts     | 13 ++++
 packages/engine/src/worktree/worktree-pool.ts      | 17 ++++-
 52 files changed, 708 insertions(+), 179 deletions(-)

Fusion-Task-Id: FN-9161

Fusion-Task-Lineage: 5b0b9ecc-bead-471f-96f7-bec6698b69fc

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 21:42:29 -07:00
gsxdsm
53b57735f5 chore(release): v0.77.0-beta.4
Version bump via changesets.
2026-08-19 21:19:08 -07:00
ischindl
3d355465c7 feat(missions): done-credit via reverse lineage, feature re-point/unlink tools, and live unlink SSE (#3491)
## What this PR does

Closes three lifecycle gaps in the Mission → Milestone → Slice →
**Feature** model, where a feature links to exactly one delivery task
(single-valued `feature.taskId`, one-feature-one-task):

1. **Reverse-lineage done-credit** — a terminal, non-failed task
carrying a feature's reverse `missionLineage`
(featureId/sliceId/missionId) now credits the feature as satisfying its
acceptance criteria, independent of where the forward `feature.taskId`
points (e.g. a newer follow-up task). Credit is only applied when
**none** of the feature's lineage candidates is live, so a live
follow-up keeps the feature active. Fixes features that otherwise sit
"in-progress" forever after their delivering task completes.
2. **Re-point / unlink surface** — new `fn_feature_repoint_task` /
`fn_feature_unlink_task` agent tools (engine + CLI) backed by an atomic
`repointFeatureToTask` store primitive, so a mis-linked feature can be
re-attached to the correct delivery task or unlinked — without a manual
DB edit. Single-valued `feature.taskId` and one-feature-one-task
invariants are preserved; unlinking an already-unlinked feature errors
clearly. Classified as mutation tools, same class as the existing
`fn_feature_link_task`.
3. **Live SSE update** — the `feature:unlinked` store event is now
emitted over SSE (`event: feature:unlinked`) so the dashboard refreshes
immediately after a re-point/unlink instead of waiting for the next
poll.

## Why

The forward-only `feature.taskId` link made three real failure modes
unrecoverable from the product surface: stale done-features after task
replacement, permanently mis-linked features, and a stale dashboard
after a repair. This closes the feature lifecycle end-to-end.

## Invariants

- `feature.taskId` stays single-valued; one feature is linked to at most
one task at any time (atomic store primitive).
- Done-credit requires: terminal column, non-failed, and no live lineage
candidate.
- No new run-audit prose; store events carry ids/counts/outcomes only.

## Tests

- `mission-state-reconcile.test.ts` — reverse-lineage credit matrix
(live vs. terminal vs. failed candidates)
- `mission-store.pg.test.ts` — `repointFeatureToTask` atomicity +
invariants (PG; gate-safe auto-skip without Postgres)
- `agent-mission-tools.test.ts` — tool delegation (unlink / re-point
exactly once)
- `heartbeat-executor.test.ts`, `extension.test.ts` — tool exposure and
heartbeat interaction
- Changeset: `@runfusion/fusion: minor`

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Added tools to reassign a feature to another live task or remove its
task link.
- Unlinking resets the feature to a defined state and provides clear
errors when applicable.
  - Added live updates for feature unlink events.
- Improved reconciliation to recognize completed reverse-lineage work
while respecting active follow-up tasks and failures.
- Improved relationship consistency when concurrent task-link operations
occur.

- **Documentation**
- Documented feature linking, unlinking, reassignment, lifecycle events,
and reconciliation behavior.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-19 21:01:56 -07:00
Fusion Agent
2c16a7e9ba FN-058: add Medieval appearance theme
Add a bundled pixel-font Medieval theme with parchment and wood visual styling across dashboard and desktop surfaces.

- Add Medieval theme tokens, swatches, first-paint persistence, and selector integration.\n- Bundle Press Start 2P typography with responsive modal styling and documentation.\n- Add theme behavior tests, screenshots, and a published-package changeset.\n\nFiles changed:\n .changeset/fn-058-medieval-theme.md                |   7 ++\n docs/dashboard-guide.md                            |   5 +-\n docs/settings-reference.md                         |   2 +-\n packages/core/src/types/ui/execution-and-ui.ts     |   5 ++\n .../dashboard/app/__tests__/medieval-theme.test.ts |  71 +++++++++++++++++\n .../dashboard/app/components/ThemeSelector.css     |  15 +++\n .../components/__tests__/ThemeDropdown.test.tsx    |   2 +-\n .../components/__tests__/ThemeSelector.test.tsx    |  14 ++--\n .../__tests__/CommandCenterControls.test.tsx       |  10 ++-\n packages/dashboard/app/components/themeOptions.ts  |   1 +\n .../dashboard/app/hooks/__tests__/useTheme.test.ts |  28 +++++++\n packages/dashboard/app/index.html                  |   4 +-\n packages/dashboard/app/main.tsx                    |   1 +\n packages/dashboard/app/public/theme-data.css       |  86 +++++++++++++++++++++\n packages/dashboard/app/styles.css                  |  24 ++++++\n packages/dashboard/package.json                    |   1 +\n packages/desktop/src/renderer/index.html           |   3 +-\n pnpm-lock.yaml                                     |   8 ++\n screenshots/fn-058-medieval-theme-desktop.png      | Bin 0 -> 19898 bytes\n screenshots/fn-058-medieval-theme-mobile.png       | Bin 0 -> 14996 bytes\n 20 files changed, 269 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-058

Fusion-Task-Lineage: b7ce1b83-59ba-4516-8073-c1e8c46bb181

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
47a8b53ad2 FN-059: deduplicate failure activity logging
Record task failure activity only when a task enters the failed state, while preserving lifecycle metadata compatibility.

- Emit failure-transition metadata only for non-failed to failed updates.
- Preserve warm-cache lane decoration and cold-cache absent metadata.
- Add PostgreSQL parity coverage and a published-package changeset.

Files changed:
 .changeset/fn-059-activity-log-failure-dedup.md    |  7 +++
 .../postgres/activity-log-parity.pg.test.ts        | 50 ++++++++++++++++++++++
 packages/core/src/store.ts                         | 13 ++++--
 packages/core/src/task-store/lifecycle-ops.ts      | 11 +++--
 packages/core/src/task-store/task-update.ts        |  6 ++-

 5 files changed, 80 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-059

Fusion-Task-Lineage: 28c28c0d-d325-4fa6-844d-33a05a18e5ed

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
7563fcfe1b FN-037: configure AI-authored task output language
Configure a persisted output-language setting and apply it across AI-authored task text and workflow summaries.

- Add project/global output-language settings with defaults, validation, UI controls, translations, and documentation.
- Propagate the selected language through planning, execution, review, summaries, and task creation.
- Add focused coverage for language resolution and update affected dashboard, engine, and localization tests.

Files changed:
 .changeset/fn-037-task-output-language.md          |   7 ++
 docs/settings-reference.md                         |   4 +
 docs/task-management.md                            |   4 +
 .../core/src/__tests__/ai-output-language.test.ts  |  21 +++++
 packages/core/src/ai/ai-output-language.ts         |  42 +++++++++
 packages/core/src/ai/ai-summarize.ts               |  16 +++-
 packages/core/src/config/settings-schema.ts        |   2 +
 packages/core/src/index.gate.ts                    |   2 +
 packages/core/src/index.ts                         |   2 +
 packages/core/src/task-store/settings-ops.ts       |   7 ++
 packages/core/src/task-store/task-creation.ts      |   4 +
 packages/core/src/types/settings/settings-scope.ts |   2 +
 .../app/__tests__/settings-sections.test.tsx       |  21 +++--
 .../__tests__/SettingsModal.models-auth.test.tsx   |  10 +-
 .../app/components/settings/section-keys.ts        |   2 +-
 .../sections/ProjectModelsSection.search.ts        |  13 ++-
 .../settings/sections/ProjectModelsSection.tsx     |  28 ++++--
 .../settings-default-descriptions.test.tsx         |   4 +-
 .../src/__tests__/github-tracking.test.ts          |   4 +-
 .../__tests__/planning-prompt-resolution.test.ts   |  29 ++++--
 .../src/__tests__/routes-planning.test.ts          |  32 ++++++-
 packages/dashboard/src/ai-session-store.ts         |  15 ++-
 packages/dashboard/src/github-tracking.ts          |   3 +
 packages/dashboard/src/planning.ts                 |  75 +++++++++++++--
 .../routes/register-ai-text-assistant-routes.ts    |  11 ++-
 .../src/routes/register-planning-subtask-routes.ts |   6 +-
 .../src/routes/register-task-workflow-routes.ts    |   9 +-
 packages/dashboard/src/shared/settings-sections.ts |   2 +-
 .../__tests__/ce-workflow-step-executor.test.ts    |  45 ++++++++-
 .../__tests__/executor-review-artifacts.test.ts    |  65 +++++++++++++
 packages/engine/src/__tests__/triage.test.ts       |   7 +-
 .../src/__tests__/workflow-task-runtime.test.ts    |  23 +++++
 .../create-authoritative-workflow-primitives.ts    |  14 ++-
 .../create-authoritative-workflow-seams.ts         |  17 +++-
 .../engine/src/executor/execute-workflow-graph.ts  |  19 +++-
 .../engine/src/executor/execute-workflow-step.ts   |  13 ++-
 packages/engine/src/executor/execution-prompt.ts   |  10 +-
 .../engine/src/executor/handoff-task-to-review.ts  |  10 +-
 .../engine/src/executor/run-graph-custom-node.ts   |   6 +-
 .../src/executor/task-executor-graph-facades.ts    |   8 +-
 packages/engine/src/triage.ts                      |  35 ++-----
 .../src/workflows/workflow-completion-summary.ts   | 101 ++++++++++++++++++---
 .../engine/src/workflows/workflow-task-runtime.ts  |  12 +++
 packages/i18n/locales/en/app.json                  |   7 +-
 packages/i18n/locales/es/app.json                  |   7 +-
 packages/i18n/locales/fr/app.json                  |   7 +-
 packages/i18n/locales/ko/app.json                  |   7 +-
 packages/i18n/locales/pt-BR/app.json               |  14 ++-
 packages/i18n/locales/zh-CN/app.json               |   7 +-
 packages/i18n/locales/zh-TW/app.json               |   7 +-
 packages/i18n/src/resources.d.ts                   |  13 ++-
 51 files changed, 680 insertions(+), 151 deletions(-)

Fusion-Task-Id: FN-037

Fusion-Task-Lineage: 968a707e-7ffe-43ba-b983-d679b031f7a5

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
a81c9b80d9 FN-036: make task title summarization project-controlled
Make generated task titles project-controlled while preserving useful summaries at any length.

- Add project-level title summarization settings and UI controls.
- Make summarization length-independent across task creation, planning, GitHub, and agent flows.
- Update localization, documentation, and regression coverage.

Files changed:
 .../fn-036-systematic-title-summarization.md       |   7 +
 docs/settings-reference.md                         |   2 +-
 docs/storage.md                                    |   2 +-
 docs/task-management.md                            |   4 +-
 packages/core/src/__tests__/ai-summarize.test.ts   |  34 ++--
 .../__tests__/store-create-intake-column.test.ts   | 186 +++++++++++++++++++++
 packages/core/src/ai/ai-summarize.ts               |  32 ++--
 packages/core/src/task-store/task-creation.ts      |  83 +++++++--
 packages/core/src/types/settings/settings-scope.ts |   9 +-
 packages/core/src/types/task/task-core.ts          |   2 +-
 .../dashboard/app/__tests__/api-projects.test.ts   |   4 +-
 .../app/__tests__/settings-sections.test.tsx       |   2 +-
 .../dashboard/app/api/planning/ai-summarize.ts     |   2 +-
 .../__tests__/SettingsModal.search.test.ts         |   5 +-
 .../search/__tests__/settings-search-index.test.ts |   2 +-
 .../sections/ProjectModelsSection.search.ts        |   4 +-
 .../settings/sections/ProjectModelsSection.tsx     |  11 +-
 .../src/__tests__/github-tracking.test.ts          |  12 +-
 .../src/__tests__/routes-planning.test.ts          |  28 +++-
 .../dashboard/src/__tests__/routes-tasks.test.ts   |  19 +++
 packages/dashboard/src/github-tracking.ts          |   9 +-
 .../routes/register-ai-text-assistant-routes.ts    |   7 +-
 .../src/__tests__/agent-tools-delegation.test.ts   |   1 +
 .../src/__tests__/heartbeat-executor.test.ts       |   1 -
 packages/engine/src/__tests__/triage.test.ts       |   7 +-
 packages/engine/src/agent-tools.ts                 |   7 +-
 packages/engine/src/triage.ts                      |  12 +-
 packages/i18n/locales/en/app.json                  |   6 +-
 packages/i18n/locales/pt-BR/app.json               |   8 +-
 packages/i18n/src/resources.d.ts                   |   6 +-
 30 files changed, 418 insertions(+), 96 deletions(-)

Fusion-Task-Id: FN-036

Fusion-Task-Lineage: df603386-e63e-4be8-a8e5-bae9aa1d4a80

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
bcc77c9608 FN-035: require automatic task recommendations
Require task recommendations to be explicitly enabled and consistently surfaced across execution and settings.

- Add the automatic task recommendations setting, persistence, validation, and localized UI copy.
- Gate executor recommendation prompts and completion-tool behavior on the setting.
- Update dashboard/API coverage, documentation, and regression tests.

Files changed:
 .changeset/fn-035-required-task-recommendations.md |  7 +++
 docs/dashboard-guide.md                            |  3 +-
 docs/settings-reference.md                         |  2 +
 .../postgres/settings-persistence.pg.test.ts       | 18 +++++++
 .../core/src/__tests__/settings-parity.test.ts     |  3 ++
 packages/core/src/config/settings-schema.ts        |  2 +
 packages/core/src/task-store/settings-ops.ts       | 16 ++++--
 packages/core/src/types/settings/settings-scope.ts |  8 +++
 .../app/__tests__/settings-save-split.test.ts      | 16 ++++++
 .../__tests__/SettingsModal.general.test.tsx       | 36 +++++++++++++
 .../app/components/settings/section-keys.ts        |  1 +
 .../settings/sections/GeneralSection.search.ts     | 10 ++++
 .../settings/sections/GeneralSection.tsx           | 15 +++++-
 .../settings-default-descriptions.test.tsx         |  2 +
 .../register-settings-memory-worktrunk.test.ts     | 28 ++++++++++
 .../src/routes/register-settings-memory-routes.ts  |  5 ++
 ...cutor-prompt-completion-recommendations.test.ts | 31 +++++++++++
 .../executor-task-recommendations.test.ts          | 61 ++++++++++++++++++++--
 .../engine/src/executor/create-task-done-tool.ts   | 18 +++++--
 packages/engine/src/executor/system-prompt.ts      | 20 +++++--
 packages/i18n/locales/en/app.json                  |  3 ++
 packages/i18n/locales/es/app.json                  |  3 ++
 packages/i18n/locales/fr/app.json                  |  3 ++
 packages/i18n/locales/ko/app.json                  |  3 ++
 packages/i18n/locales/pt-BR/app.json               |  5 +-
 packages/i18n/locales/zh-CN/app.json               |  3 ++
 packages/i18n/locales/zh-TW/app.json               |  3 ++
 packages/i18n/src/resources.d.ts                   |  3 ++
 28 files changed, 307 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-035
Fusion-Task-Lineage: 336d4d99-3105-43df-b82c-ca413b9c5892
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
29f4de39c4 FN-038: prepare projects for Git during onboarding
Make project initialization and registration produce Git-ready projects consistently.\n\n- Centralize repository readiness and initialization behavior.\n- Update CLI onboarding and dashboard registration flows to use the Git-ready setup.\n- Add regression coverage and document the new project preparation behavior.\n\nFiles changed:\n .changeset/fn-038-git-ready-projects.md            |   7 +\n docs/cli-reference.md                              |  11 +-\n docs/getting-started.md                            |  17 +-\n docs/workspaces.md                                 |   4 +-\n packages/cli/src/commands/__tests__/init.test.ts   |  39 ++--\n packages/cli/src/commands/init.ts                  | 115 ++--------\n packages/core/src/__tests__/git-repository.test.ts | 125 +++++++++-\n packages/core/src/central/central-core.ts          |  57 +++--\n packages/core/src/git/git-repository.ts             | 254 +++++++++++++++++----\n packages/dashboard/app/api/projects/projects.ts    |   2 -\n packages/dashboard/app/components/SetupWizardModal.tsx |  46 +---\n packages/dashboard/app/components/__tests__/SetupWizardModal.git-missing.test.tsx |  74 +++---\n packages/dashboard/src/routes/__tests__/register-project-git-readiness.test.ts | 165 +++++++++++++\n packages/dashboard/src/routes/register-project-routes.ts |  11 -\n 14 files changed, 647 insertions(+), 280 deletions(-)

Fusion-Task-Id: FN-038

Fusion-Task-Lineage: 83634184-569b-4190-a88f-4a09eb832e9d

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00:00
Fusion Agent
3f85c4cf84 FN-034: route workspace tasks through repository worktrees
Route multi-repository planning and graph execution through declared repository worktrees instead of workspace roots.

- Acquire declared repository worktrees for planning and custom graph nodes.
- Filter planning coordinator selection to configured repositories and preserve workspace routing metadata.
- Add workspace worktree recovery, concurrency coverage, and release documentation.

Files changed:
 .changeset/fn-034-workspace-worktree-routing.md    |   7 ++
 docs/architecture.md                               |   1 +
 ...workspace-worktrees-concurrent-merge.pg.test.ts |  36 +++++++
 packages/core/src/store.ts                         |  10 ++
 packages/core/src/task-store/task-mutation-ops.ts  |  60 +++++++++++-
 .../executor-workspace-session-cwd.test.ts         |  29 ++++--
 packages/engine/src/__tests__/self-healing.test.ts |  17 ++--
 .../workspace-root-worktree-routing.test.ts        | 107 +++++++++++++++++++++
 .../create-authoritative-workflow-seams.ts         |  48 ++++++---
 .../executor/ensure-graph-custom-node-worktree.ts  |  45 +++++++-
 .../executor/ensure-task-worktree-for-planning.ts  |  38 ++++++--
 .../src/executor/reset-steps-if-work-lost.ts       |  12 ++-
 .../engine/src/executor/run-graph-custom-node.ts   |  83 ++++++++++++++--
 packages/engine/src/executor/run-implementation.ts |  59 ++++++++++--
 .../src/executor/workspace-config-resolver.ts      |  30 +++++-
 .../src/executor/workspace-review-per-repo.ts      |  29 +++++-
 .../executor/worktree-missing-session-recovery.ts  |  26 ++++-
 packages/engine/src/self-healing.ts                |  50 +++++++---
 .../self-healing/auto-recover-worktree-session.ts  |  31 +++++-
 .../engine/src/worktree/worktree-acquisition.ts    |  65 +++++++++++-
 20 files changed, 702 insertions(+), 81 deletions(-)

Fusion-Task-Id: FN-034
Fusion-Task-Lineage: 59c5f273-d676-4b7f-b006-c12dc6c3abe6
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:56:41 +00:00
Fusion Agent
5a0117a362 FN-031: add task reset lifecycle handling
Add durable task reset lifecycle support across core, dashboard, and engine integrations.

- Add reset lifecycle publication and disposal primitives with coverage.
- Expose reset lifecycle behavior through task workflow routes and dashboard task details.
- Update workflow intake, engine exports, and worktree integration documentation.

Files changed:
 docs/dashboard-guide.md                            |   8 +
 .../postgres/task-reset-publication.pg.test.ts     |  99 +++++++
 .../core/src/__tests__/task-move-disposer.test.ts  |  52 +++
 packages/core/src/index.gate.ts                    |   6 +
 packages/core/src/index.ts                         |   6 +
 packages/core/src/store.ts                         |   6 +
 packages/core/src/task-store/reset-lifecycle.ts    | 193 ++++++++++++++
 packages/core/src/tasks/task-move-disposer.ts      |  25 ++
 .../dashboard/app/components/TaskDetailModal.tsx   |   8 +-
 .../components/__tests__/TaskDetailModal.test.tsx  |  28 +-
 .../__tests__/plan-approval-intake-column.test.ts  |  80 ++----
 .../src/__tests__/task-reset-lifecycle.test.ts     | 171 +++++++++++++
 .../src/routes/register-task-workflow-routes.ts    | 285 ++++++++++-----------
 packages/engine/src/index.ts                       |  10 +-
 packages/engine/src/worktree/worktree-backend.ts   |   1 +
 15 files changed, 766 insertions(+), 212 deletions(-)

Fusion-Task-Id: FN-031

Fusion-Task-Lineage: 183bb709-485e-4069-bd2a-98f787b2bd73

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:39 +00:00
Fusion Agent
c3ff663c1c FN-030: route refinement tasks directly to planning
Route refinement and duplicate-task handling through the planning path while preserving task metadata and API behavior.\n\n- Route CLI refinement commands directly into planning.\n- Harden dependency updates and duplicate-task refinement persistence.\n- Expand PostgreSQL, CLI, and dashboard authorization coverage.\n- Document the refined task lifecycle and add the published-package changeset.\n\nFiles changed:\n .changeset/fn-030-refinement-planning-route.md     |   7 ++\n docs/architecture.md                               |  20 ++--\n docs/task-management.md                            |  11 +-\n packages/cli/src/commands/__tests__/task.test.ts   |   9 +-\n packages/cli/src/commands/task.ts                  |   2 +-\n .../postgres/refine-duplicate-task.pg.test.ts      | 130 +++++++++++++++++++++\n .../__tests__/postgres/store-comments.pg.test.ts   |  32 +++++\n packages/core/src/task-store/update-task-deps.ts   |  17 +--\n packages/dashboard/app/__tests__/api-auth.test.ts  |   5 +-\n 9 files changed, 207 insertions(+), 26 deletions(-)

Fusion-Task-Id: FN-030

Fusion-Task-Lineage: 885c0a9f-d8bf-4abf-9ec9-dca5a01648e8

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:39 +00:00
Fusion Agent
5089f1b88e FN-027: route dependency replans safely
Make dependency changes reliably replan Coding (Ideas) cards without sending them into manual intake.

- Derive dependency-replan destinations from workflow lifecycle traits.
- Preserve specifications while resetting approval evidence and re-entering planning.
- Cover dedicated and generic dependency writers, continuation states, and manual-intake admission.

Files changed:
 .../postgres/task-dependency-mutation.pg.test.ts   | 110 +++++++++++++++++++--
 packages/core/src/task-store/task-update.ts        |  28 ++----
 packages/core/src/task-store/update-task-deps.ts   |  35 ++++---
 .../src/workflows/workflow-lifecycle-traits.ts     |  29 ++++++
 .../src/__tests__/manual-intake-admission.test.ts  |  20 ++++
 5 files changed, 181 insertions(+), 41 deletions(-)

Fusion-Task-Id: FN-027

Fusion-Task-Lineage: 63ee58e6-550d-4f56-a1e0-9c878f957b66

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
b88bb1d532 FN-023: respect disabled built-in workflows
Make disabled built-in workflows unavailable for new selections while preserving existing task resolution.

- Validate enabled built-in workflow settings atomically and require a valid available option.
- Resolve defaults and origin pins through the effective enabled workflow set.
- Filter dashboard selectors while retaining management and direct-resolution paths.
- Add core and dashboard regression coverage plus operator-facing documentation.

Files changed:
 .changeset/fn-023-disabled-builtin-workflows.md    |  7 +++
 docs/dashboard-guide.md                            |  5 +-
 docs/workflow-steps.md                             |  6 +-
 packages/core/src/__tests__/builtin-workflows.test.ts   | 35 +++++++++--
 packages/core/src/index.ts                         |  6 ++
 packages/core/src/task-store/moves.ts              | 17 +++--
 packages/core/src/task-store/settings-ops.ts       | 22 +++++++
 packages/core/src/task-store/task-store-helpers.ts | 33 +++++++++-
 packages/core/src/workflows/builtin-workflows.ts   | 70 +++++++++++++++++++--
 packages/dashboard/app/__tests__/workflow-selection-cross-surface.test.tsx | 45 ++++++++++++++
 packages/dashboard/app/api/projects/board-workflows.ts |  2 +
 packages/dashboard/app/components/__tests__/Board.test.tsx | 22 +++++++
 packages/dashboard/app/components/__tests__/ListView.test.tsx | 38 ++++++++++++
 packages/dashboard/app/components/settings/sections/GeneralSection.tsx | 19 +++++-
 packages/dashboard/app/components/settings/sections/__tests__/GeneralSection.builtin-workflows.test.tsx | 72 ++++++++++++++++++++++
 packages/dashboard/app/hooks/__tests__/useBoardWorkflows.test.ts | 20 ++++++
 packages/dashboard/app/hooks/useBoardWorkflows.ts | 18 ++++--
 packages/dashboard/src/__tests__/board-workflows.test.ts | 35 +++++++++--
 packages/dashboard/src/routes/__tests__/register-settings-memory-worktrunk.test.ts | 37 +++++++++++
 packages/dashboard/src/routes/board-workflows.ts | 41 +++++++++---
 packages/dashboard/src/routes/register-settings-memory-routes.ts | 46 +++++++++++++-
 21 files changed, 553 insertions(+), 43 deletions(-)

Fusion-Task-Id: FN-023

Fusion-Task-Lineage: 1043fc42-2a02-49dd-b695-d9ae3af60e90

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
4d7e7dba4c FN-021: expose model-supported thinking levels, including max
Expose thinking-level options from model capabilities through API, workflows, and dashboard controls.

- Add model-supported thinking-level metadata, including max, across core and model routes.
- Propagate capability-aware levels through planning, agent creation, and chat/task UI.
- Update localized labels, documentation, tests, dependencies, and add a release changeset.

Files changed:
 .changeset/fn-021-thinking-levels.md               |  7 ++++
 docs/settings-reference.md                         |  8 +++-
 docs/workflow-steps.md                             |  8 ++--
 packages/core/src/__tests__/openai-models.test.ts  |  1 +
 .../core/src/__tests__/thinking-levels.test.ts     |  4 +-
 packages/core/src/__tests__/workflow-ir.test.ts    |  2 +-
 packages/core/src/ai/openai-models.ts              |  5 ++-
 packages/core/src/types/board/board.ts             |  8 ++--
 .../app/api/agents/agent-import-generation.ts      |  4 +-
 .../dashboard/app/api/planning/models-usage.ts     | 13 +++++++
 packages/dashboard/app/api/planning/planning.ts    |  5 ++-
 .../dashboard/app/components/AgentDetailView.tsx   |  2 +-
 .../app/components/ChatThinkingLevelControl.tsx    | 28 +++++++++++---
 .../app/components/CustomModelDropdown.tsx         | 29 ++++++++++----
 packages/dashboard/app/components/NewTaskModal.tsx |  4 +-
 .../dashboard/app/components/TaskDetailModal.tsx   |  4 +-
 .../__tests__/AgentDetailView.test-helpers.ts      |  2 +-
 .../__tests__/AgentOnboardingModal.test.tsx        |  2 +-
 .../__tests__/ChatThinkingLevelControl.test.tsx    | 27 ++++++++++++-
 .../__tests__/CustomModelDropdown.test.tsx         | 33 +++++++++++++++-
 .../__tests__/ModelSelectionModal.test.tsx         |  3 +-
 .../components/__tests__/NewAgentDialog.test.tsx   |  2 +
 .../components/__tests__/QuickEntryBox.test.tsx    |  3 +-
 .../components/agent-presets/agentCreatePayload.ts |  3 +-
 .../settings/sections/GlobalModelsSection.tsx      |  8 ++--
 packages/dashboard/package.json                    |  2 +-
 .../dashboard/src/__tests__/chat-manager.test.ts   |  8 ++--
 packages/dashboard/src/__tests__/chat.test.ts      |  2 +-
 ...-model-routes-openai-codex-supplemental.test.ts | 44 +++++++++++++++++++++-
 .../src/__tests__/routes-automation.test.ts        |  4 +-
 .../dashboard/src/__tests__/routes-tasks.test.ts   |  8 ++--
 packages/dashboard/src/agent-generation.ts         |  9 +++--
 packages/dashboard/src/agent-onboarding.ts         |  8 ++--
 packages/dashboard/src/routes.ts                   | 14 ++++++-
 .../src/routes/register-chat-room-routes.ts        |  2 +-
 .../dashboard/src/routes/register-model-routes.ts  | 43 ++++++++++++++++-----
 packages/i18n/locales/en/app.json                  |  1 +
 packages/i18n/locales/es/app.json                  |  1 +
 packages/i18n/locales/fr/app.json                  |  1 +
 packages/i18n/locales/ko/app.json                  |  1 +
 packages/i18n/locales/pt-BR/app.json               |  1 +
 packages/i18n/locales/zh-CN/app.json               |  1 +
 packages/i18n/locales/zh-TW/app.json               |  1 +
 packages/i18n/src/resources.d.ts                   |  1 +
 pnpm-lock.yaml                                     |  6 +--
 45 files changed, 289 insertions(+), 84 deletions(-)

Fusion-Task-Id: FN-021
Fusion-Task-Lineage: af1b0e09-6375-4f0c-9501-66a10c8b9168
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
6a28811d1a FN-012: sort tasks in every board column
Add independent task ordering controls across all board lanes and keep archive pagination aligned with the selected order.

- Add arrival and task-ID sorting to every board column, including archived tasks.
- Thread bounded, server-backed archive sorting through the API, store, hook, and UI.
- Preserve selected archive order for subsequent pages and add localized labels, typings, tests, and dashboard documentation.

Files changed:
 .changeset/fn-012-column-task-sorting.md           |   7 ++
 docs/dashboard-guide.md                            |  17 +--
 .../postgres/archive-pagination.pg.test.ts         |  19 ++++
 packages/core/src/__tests__/task-priority.test.ts  |  13 +++
 packages/core/src/async-stores/async-archive-db.ts |  18 ++--
 packages/core/src/index.gate.ts                    |   2 +
 packages/core/src/index.ts                         |   2 +
 packages/core/src/store.ts                         |   2 +-
 .../core/src/task-store/archive-lifecycle-2.ts     |  13 ++-
 packages/core/src/tasks/task-priority.ts           |  41 +++++---
 packages/core/src/types.ts                         |   2 +-
 packages/dashboard/app/App.tsx                     |   4 +-
 packages/dashboard/app/api/tasks/tasks.ts          |   3 +
 packages/dashboard/app/components/Board.tsx        |  62 +++++++---
 packages/dashboard/app/components/Column.tsx       |  54 ++++++----
 .../app/components/__tests__/Board.test.tsx        |  74 +++++++------
 .../app/components/__tests__/Column.test.tsx       |   8 +-
 .../app/components/dashboard/MainContent.tsx       |   6 ++
 .../dashboard/app/components/dashboard/types.ts    |   5 +
 .../dashboard/app/hooks/__tests__/useTasks.test.ts |  61 ++++++++++-
 packages/dashboard/app/hooks/useTasks.ts           | 116 ++++++++++++++++-----
 ...task-workflow-routes.archive-pagination.test.ts |  78 ++++++++++++++
 .../src/routes/register-task-workflow-routes.ts    |  20 ++--
 packages/i18n/locales/en/app.json                  |   5 +
 packages/i18n/locales/es/app.json                  |   7 +-
 packages/i18n/locales/fr/app.json                  |   7 +-
 packages/i18n/locales/ko/app.json                  |   7 +-
 packages/i18n/locales/pt-BR/app.json               |   7 +-
 packages/i18n/locales/zh-CN/app.json               |   7 +-
 packages/i18n/locales/zh-TW/app.json               |   7 +-
 packages/i18n/src/resources.d.ts                   |   5 +
 31 files changed, 537 insertions(+), 142 deletions(-)

Fusion-Task-Id: FN-012

Fusion-Task-Lineage: 18dff987-18d5-401d-9fe0-290a71f12e15

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
3ae22c23d1 FN-011: add project chat message width preference
Add a project-scoped conversation layout preference and apply full-width rendering consistently across dashboard chat surfaces.

- Add bubbles/full-width project settings with localized Appearance controls.
- Apply the preference to Chat, Activity, Planner Chat, Quick Chat, and docked hosts with responsive safeguards.
- Add regression coverage, documentation, and the published-package changeset.

Files changed:
 .changeset/fn-011-chat-message-layout.md           |  7 ++++
 docs/dashboard-guide.md                            |  4 ++
 .../core/src/__tests__/settings-defaults.test.ts   | 14 ++++++-
 .../core/src/__tests__/settings-parity.test.ts     |  4 ++
 packages/core/src/config/settings-schema.ts        |  5 +++
 packages/core/src/types/settings/settings-scope.ts |  5 +++
 packages/dashboard/app/App.tsx                     |  7 +++-
 packages/dashboard/app/components/AppModals.tsx    |  5 +++
 packages/dashboard/app/components/ChatView.css     | 23 +++++++++++
 packages/dashboard/app/components/ChatView.tsx     |  4 +-
 .../dashboard/app/components/SettingsModal.tsx     | 14 +++++++
 packages/dashboard/app/components/TaskChatTab.css  | 42 +++++++++++++++++++++
 packages/dashboard/app/components/TaskChatTab.tsx  |  4 +-
 .../app/components/TaskPlannerChatTab.css          | 22 +++++++++++
 .../app/components/TaskPlannerChatTab.tsx          |  4 +-
 .../components/__tests__/ChatView.core.test.tsx    | 34 +++++++++++++++++
 .../__tests__/SettingsModal.general.test.tsx       | 42 +++++++++++++++++++++
 .../app/components/__tests__/TaskChatTab.test.tsx  | 31 +++++++++++++++
 .../__tests__/TaskPlannerChatTab.test.tsx          | 32 ++++++++++++++++
 .../settings/sections/AppearanceSection.tsx        | 24 +++++++++++-
 .../sections/__tests__/AppearanceSection.test.tsx  | 22 ++++++++++-
 .../app/context/ChatMessageLayoutContext.tsx       | 16 ++++++++
 .../app/hooks/__tests__/useAppSettings.test.ts     | 44 ++++++++++++++++++++++
 packages/dashboard/app/hooks/useAppSettings.ts     | 29 ++++++++++++++
 .../app/task-modal-touch-resize-e2e-fixture.tsx    |  2 +-
 packages/i18n/locales/en/app.json                  |  6 ++-
 packages/i18n/locales/es/app.json                  |  6 ++-
 packages/i18n/locales/fr/app.json                  |  6 ++-
 packages/i18n/locales/ko/app.json                  |  6 ++-
 packages/i18n/locales/pt-BR/app.json               |  6 ++-
 packages/i18n/locales/zh-CN/app.json               |  6 ++-
 packages/i18n/locales/zh-TW/app.json               |  6 ++-
 packages/i18n/src/resources.d.ts                   |  4 ++
 33 files changed, 471 insertions(+), 15 deletions(-)

Fusion-Task-Id: FN-011
Fusion-Task-Lineage: d858d00f-e05b-4dc2-8ddb-cfc5b9973871
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
200b31089e FN-004: fix remote access token handoff
Ensure freshly generated Remote Access links authenticate against current global settings.

- Synchronize global-settings caches across token writers and readers
- Resolve remote-login tokens from canonical global settings
- Cover token handoff behavior and document persistent-token semantics

Files changed:
 .changeset/fn-004-remote-token-auth.md             |   7 +
 docs/remote-access.md                              |   6 +-
 .../core/src/__tests__/global-settings.test.ts     |  41 +++-
 .../postgres/settings-persistence.pg.test.ts       |  37 ++++
 packages/core/src/config/global-settings.ts        |  46 ++++-
 .../app/__tests__/auth-token-capture.test.ts       |  32 ++++
 .../app/__tests__/settings-save-split.test.ts      |   4 +
 .../src/__tests__/remote-login-handoff.test.ts     | 213 +++++++++++++++++++++
 .../src/__tests__/routes-remote-access.test.ts     |   4 +
 .../src/routes/register-settings-memory-routes.ts  |   9 +
 packages/dashboard/src/server.ts                   |  10 +-
 11 files changed, 400 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-004

Fusion-Task-Lineage: 1a64c345-a590-474e-afbf-af5e5d6df979

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
Fusion Agent
643a4098ab FN-001: add Velvet dashboard color theme
Add the Velvet plum/burgundy theme across dashboard and desktop startup.

- Register Velvet in persisted theme options and pre-hydration validators
- Define dark/light palette tokens, selector swatch, and regression coverage
- Document the theme and add a minor CLI changeset

Files changed:
 .changeset/fn-001-velvet-theme.md                  |   6 ++
 docs/dashboard-guide.md                            |   5 +-
 docs/settings-reference.md                         |   2 +-
 packages/core/src/types/ui/execution-and-ui.ts     |   2 +
 .../dashboard/app/__tests__/velvet-theme.test.ts   | 101 +++++++++++++++++++++
 .../dashboard/app/components/ThemeSelector.css     |  14 +++
 packages/dashboard/app/components/themeOptions.ts  |   1 +
 packages/dashboard/app/index.html                  |   2 +-
 packages/dashboard/app/public/theme-data.css       |  86 +++++++++++++++++-
 packages/desktop/src/renderer/index.html           |   1 +
 10 files changed, 215 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-001
Fusion-Task-Lineage: a57d7458-b598-48e3-b4ed-cc082f32197d
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:38 +00:00
gsxdsm
2a31505823 FN-9163: Add repositories to existing workspace tasks
Enable validated workspace membership additions and make active tasks discover new repositories safely.

- add idempotent direct-child Git repository validation and workspace configuration updates
- expose repository discovery and addition through Settings and dashboard API routes
- refresh workspace membership during acquisition while blocking additions after review or landing begins
- document the workflow and cover core, dashboard, and engine behavior with focused tests

Files changed:
 .changeset/fn-9163-workspace-add-repo.md           |   7 ++
 docs/dashboard-guide.md                            |   2 +
 docs/settings-reference.md                         |   2 +-
 docs/workspaces.md                                 |  12 +-
 .../core/src/__tests__/workspace-add-repo.test.ts  |  12 ++
 packages/core/src/git/git-repository.ts            |  68 ++++++++++-
 packages/core/src/index.gate.ts                    |   3 +
 packages/core/src/index.ts                         |   3 +
 packages/dashboard/app/api/agents/agents.ts        |  11 +-
 .../settings/sections/GeneralSection.tsx           |   3 +
 .../settings/sections/WorkspaceReposCard.css       |   6 +
 .../settings/sections/WorkspaceReposCard.tsx       |  46 ++++++++
 .../__tests__/workspace-repos-card.test.tsx        |  49 ++++++++
 .../src/__tests__/workspace-add-repo-route.test.ts |  65 ++++++++++
 .../dashboard/src/routes/register-git-github.ts    |  35 +++++-
 .../__tests__/workspace-add-repo-midflight.test.ts | 131 +++++++++++++++++++++
 packages/engine/src/agent-tools.ts                 |  27 ++++-
 packages/engine/src/executor/deps-bags.ts          |  44 ++++++-
 packages/engine/src/executor/run-implementation.ts |   2 +
 19 files changed, 512 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-9163

Fusion-Task-Lineage: 7456f55f-b7c8-4076-994f-42994d8babb0

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 19:59:04 -07:00
gsxdsm
3b0a6b795f FN-9162: Group workspace worktrees under configurable roots
Configure collision-safe workspace and repository subfolders beneath custom worktree roots.

- add shared workspace layout helpers and export them through runtime and gate barrels
- route acquisition, pinning, cleanup, archive, and extension discovery through grouped paths
- allow absolute worktree roots in settings and document the workspace layout
- protect shared-root containers from destructive sweeps and cover multi-repository behavior

Files changed:
 .changeset/fn-9162-workspace-worktree-root.md      |   7 ++
 docs/settings-reference.md                         |   2 +-
 docs/workspaces.md                                 |   6 ++
 .../extension-workspace-worktree-root.test.ts      |  81 +++++++++++++++++
 packages/cli/src/extension.ts                      |  53 ++++++++++-
 packages/core/src/__tests__/pi-extensions.test.ts  |  46 +++++++++-
 .../core/src/__tests__/worktree-layout.test.ts     |  49 ++++++++++
 packages/core/src/index.gate.ts                    |  13 +++
 packages/core/src/index.ts                         |   9 ++
 packages/core/src/plugins/pi-extensions.ts         |  12 ++-
 packages/core/src/task-store/archive-lifecycle.ts  |  11 +--
 packages/core/src/tasks/worktree-layout.ts         |  77 ++++++++++++++++
 .../dashboard/app/components/SettingsModal.tsx     |   4 +-
 .../settings/sections/WorktreesSection.tsx         |   2 +-
 .../worktree-acquisition-workspace.test.ts         |  55 ++++++++++-
 .../engine/src/__tests__/worktree-paths.test.ts    |  19 +++-
 .../engine/src/__tests__/worktree-pinning.test.ts  |  17 ++++
 .../engine/src/__tests__/worktree-pool.test.ts     |  19 +++-
 .../src/executor/workspace-main-checkout-guard.ts  |   2 +-
 packages/engine/src/self-healing.ts                |  20 +++-
 .../engine/src/worktree/worktree-acquisition.ts    | 101 +++++++++++++++------
 packages/engine/src/worktree/worktree-names.ts     |  14 +--
 packages/engine/src/worktree/worktree-paths.ts     |  75 ++++++++++++---
 packages/engine/src/worktree/worktree-pinning.ts   |  10 +-
 packages/engine/src/worktree/worktree-pool.ts      |  44 ++++++---
 25 files changed, 656 insertions(+), 92 deletions(-)

Fusion-Task-Id: FN-9162

Fusion-Task-Lineage: b5f5e247-577c-4357-9ffe-97e2447b4fd4

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-19 19:46:35 -07:00