Commit Graph

549 Commits

Author SHA1 Message Date
gsxdsm
3af54418cf FN-9191: add the Iceberg dashboard theme
Add a persisted Iceberg palette across dashboard and desktop theme surfaces.

- Define coordinated dark and light Iceberg color tokens and selector swatches.
- Register Iceberg in shared persistence, theme selectors, and first-paint validation.
- Add registry coverage, documentation, visual references, and a release changeset.

Files changed:
 .changeset/fn-9191-iceberg-theme.md                |   6 ++
 docs/dashboard-guide.md                            |   5 +-
 docs/settings-reference.md                         |   4 +-
 packages/core/src/types/ui/execution-and-ui.ts     |   2 +
 .../dashboard/app/__tests__/iceberg-theme.test.ts  | 102 +++++++++++++++++++++
 .../dashboard/app/components/ThemeSelector.css     |  15 +++
 .../components/__tests__/ThemeDropdown.test.tsx    |   3 +-
 .../components/__tests__/ThemeSelector.test.tsx    |   3 +-
 .../__tests__/CommandCenterControls.test.tsx       |   3 +-
 packages/dashboard/app/components/themeOptions.ts  |   2 +
 packages/dashboard/app/index.html                  |   3 +-
 packages/dashboard/app/public/theme-data.css       |  85 +++++++++++++++++
 packages/desktop/src/renderer/index.html           |   2 +
 screenshots/fn-9191-iceberg-theme-dark.png         |   3 +
 screenshots/fn-9191-iceberg-theme-light.png        |   3 +
 15 files changed, 234 insertions(+), 7 deletions(-)

Fusion-Task-Id: FN-9191

Fusion-Task-Lineage: a8b441c6-763a-4c38-a682-bffab1fdd293

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-22 19:43:45 -07:00
Fusion Agent
a786c45bb9 FN-149: converge review cycles before human escalation
Add bounded review convergence so disputed review gates can resolve independently before requiring operator intervention.

- Add staged remediation, arbitration, dispute tooling, and stale-attempt fencing.
- Preserve review history and findings while exposing convergence state in core, dashboard, and audit paths.
- Add migration, configuration, documentation, changeset, and regression coverage.

Files changed:
 .changeset/fn-149-review-convergence.md            |   7 +
 AGENTS.md                                          |   2 +
 docs/architecture.md                               |   4 +
 docs/dashboard-guide.md                            |   4 +
 docs/run-audit.md                                  |   4 +
 docs/settings-reference.md                         |   4 +
 docs/workflow-steps.md                             |   8 +
 .../src/__tests__/default-workflow-hooks.test.ts   |  13 +
 packages/core/src/__tests__/plan-approval.test.ts  |  21 ++
 .../src/__tests__/reopen-semantics-by-role.test.ts |  25 ++
 packages/core/src/__tests__/review-severity-gate.test.ts     |  18 +-
 packages/core/src/__tests__/workflow-step-results.test.ts    |  52 +++-
 packages/core/src/config/settings-schema.ts        |   6 +
 packages/core/src/index.gate.ts                    |   9 +
 packages/core/src/index.ts                         |   9 +
 packages/core/src/planner/plan-approval.ts         |  27 +-
 .../0065_fn_149_review_convergence_stage.sql       |   3 +
 packages/core/src/postgres/schema-applier.ts       |  10 +
 packages/core/src/postgres/schema/project.ts       |   2 +
 packages/core/src/store.ts                         |   2 +-
 packages/core/src/task-store/persistence.ts        |   4 +
 packages/core/src/task-store/reset-lifecycle.ts    |   2 +
 packages/core/src/task-store/serialization.ts      |   2 +
 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        |   4 +
 packages/core/src/tasks/in-review-stall.ts         |  21 ++
 packages/core/src/tasks/manual-retry-reset.ts      |   2 +
 packages/core/src/types/settings/settings-scope.ts |   7 +
 packages/core/src/types/task/task-core.ts          |   3 +
 packages/core/src/types/task/task-review.ts        |   2 +-
 packages/core/src/types/workflow/workflow-steps.ts |  24 +-
 .../src/workflows/builtin-workflow-settings.ts     |  43 +++
 .../core/src/workflows/default-workflow-hooks.ts   |  10 +-
 .../core/src/workflows/workflow-step-results.ts    | 185 ++++++++++++-
 .../dashboard/app/components/TaskReviewTab.tsx     |   6 +-
 .../components/__tests__/TaskReviewTab.test.tsx    |   6 +-
 .../dashboard/src/__tests__/routes-tasks.test.ts   |   7 +
 .../src/routes/register-task-workflow-routes.ts    |   4 +-
 .../__tests__/review-arbitration-release.test.ts   |  46 ++++
 .../src/__tests__/review-arbitration.test.ts       |  57 ++++
 .../__tests__/review-convergence-context.test.ts   |  95 +++++++
 .../review-convergence-escalation.test.ts          | 135 +++++++++
 .../src/__tests__/review-dispute-tool.test.ts      | 113 +++++++
 .../__tests__/review-finding-supersession.test.ts  |  55 ++-
 .../review-findings-injection.test.ts              |  19 +-
 .../__tests__/review-history-preservation.test.ts  | 186 +++++++++++++
 .../__tests__/review-ladder-entry-points.test.ts   | 304 +++++++++++++++++++++
 ...un-audit-sink-health-review-convergence.test.ts | 251 +++++++++++++++++
 .../workflow-graph-optional-step-fix.test.ts       |  59 ++--
 packages/engine/src/execution/replan-target.ts     |   6 +-
 .../clear-terminal-step-failures-for-retry.ts      |   8 +-
 .../src/executor/create-review-dispute-tool.ts     | 126 +++++++++
 packages/engine/src/executor/deps-bags.ts          |   2 +-
 .../engine/src/executor/execute-workflow-graph.ts  |  71 ++++-
 packages/engine/src/executor/execute-workflow-step.ts   |  16 +-
 packages/engine/src/executor/free-reexports.ts     |   1 +
 packages/engine/src/executor/impl-bindings.ts      |   1 +
 .../engine/src/executor/optional-step-revision.ts  |  33 ++-
 .../src/executor/recover-failed-pre-merge-step.ts  |  43 ++-
 .../request-pre-merge-optional-step-fix.ts         |  85 +++---
 packages/engine/src/executor/review-arbitration.ts | 233 +++++++++++++++
 .../src/executor/review-convergence-ladder.ts      | 237 +++++++++++++++
 .../route-graph-failure-to-execution-resume.ts     |  16 +-
 .../route-retryable-remediation.ts                 |   9 +-
 .../engine/src/executor/run-graph-custom-node.ts   |   1 +
 packages/engine/src/executor/run-implementation.ts |   2 +
 .../src/executor/task-executor-session-facades.ts  |   3 +-
 .../engine/src/executor/workflow-rerun-bounce.ts   |  13 +-
 .../executor/workflow-step-failure-injection.ts    |  23 +-
 .../engine/src/executor/workflow-step-failures.ts  |  16 +-
 .../engine/src/executor/workflow-step-verdict.ts   |   2 +
 packages/engine/src/self-healing.ts                |   5 +-
 packages/engine/src/util/run-audit.ts              |   9 +-
 .../src/workflows/workflow-graph-executor.ts       |   8 +-
 .../engine/src/worktree/review-diff-fingerprint.ts |  21 +++
 .../src/worktree/workspace-review-evidence.ts      |   9 +-
 77 files changed, 2719 insertions(+), 166 deletions(-)

Fusion-Task-Id: FN-149
Fusion-Task-Lineage: 9330df9d-5086-4b40-8daa-66f0ea31cf3e
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-23 01:36:32 +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
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
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
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
Fusion Agent
b2125aeb2d FN-104: preserve update restart state
Preserve a pending update across Settings reopen while coordinating installation and restart behavior.

- Add pending-update install state and coordinator flows across dashboard and system controls.
- Expose health/settings update APIs and retain restart state through modal reopen.
- Cover desktop/mobile UX, route behavior, coordinator logic, and document the update flow.

Files changed:
 .changeset/fn-104-pending-update-restart.md        |   7 ++
 docs/architecture.md                               |   3 +
 docs/assets/fn-104-pending-update-desktop.png      | Bin 0 -> 10926 bytes
 docs/assets/fn-104-pending-update-mobile.png       | Bin 0 -> 6101 bytes
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   2 +-
 packages/core/src/task-store/task-creation.ts      |   1 -
 packages/dashboard/app/api/client/health.ts        |  12 ++++
 packages/dashboard/app/api/settings/settings.ts    |   3 +
 .../dashboard/app/components/SettingsModal.tsx     |  46 ++++++++-----
 .../app/components/UpdateAvailableBanner.tsx       |  20 ++++--
 .../__tests__/SettingsModal.general.test.tsx       |   6 ++
 .../__tests__/SettingsModal.models-auth.test.tsx   |  72 +++++++++++++++++++
 .../__tests__/UpdateAvailableBanner.test.tsx       |   2 +
 .../components/__tests__/settings-mobile.test.tsx  |   3 +
 .../command-center/areas/SystemControlsArea.tsx    |  18 +++--
 .../__tests__/usePendingUpdateInstall.test.ts      |  44 ++++++++++++
 .../dashboard/app/hooks/usePendingUpdateInstall.ts |  76 +++++++++++++++++++++
 packages/dashboard/app/hooks/useUpdateCheck.ts     |   8 +++
 .../dashboard/src/__tests__/auto-update.test.ts    |  18 +++++
 .../__tests__/update-install-coordinator.test.ts   |  36 ++++++++++
 packages/dashboard/src/auto-update.ts              |  14 +++-
 .../__tests__/register-update-check-routes.test.ts |  14 ++++
 .../src/routes/register-update-check-routes.ts     |  31 ++++++++-
 .../dashboard/src/update-install-coordinator.ts    |  23 +++++++
 25 files changed, 425 insertions(+), 36 deletions(-)

Fusion-Task-Id: FN-104
Fusion-Task-Lineage: c754b258-654d-4efe-9b12-1addc7ed190b
Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-21 14:41:37 +00: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
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
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
Fusion Agent
07125886b7 FN-061: refine medieval theme typography
Refine the medieval dashboard theme so its typography and responsive presentation are more balanced.

- Reduce oversized theme typography and tune responsive layout styling.
- Load Pixelify Sans and update theme tokens, documentation, and changesets.
- Expand theme and hook coverage with desktop and mobile visual references.

Files changed:
 .changeset/fn-058-medieval-theme.md                |   2 +-
 .changeset/fn-061-medieval-theme-refinement.md     |   7 +
 docs/dashboard-guide.md                            |   4 +-
 docs/settings-reference.md                         |   2 +-
 .../dashboard/app/__tests__/medieval-theme.test.ts | 172 +++++++++++++++++++--
 .../dashboard/app/hooks/__tests__/useTheme.test.ts |  14 ++
 packages/dashboard/app/main.tsx                    |   2 +-
 packages/dashboard/app/public/theme-data.css       |  22 ++-
 packages/dashboard/app/styles.css                  |  46 +++++-
 packages/dashboard/package.json                    |   2 +-
 pnpm-lock.yaml                                     |   8 +-
 screenshots/fn-061-medieval-desktop.png            | Bin 0 -> 753177 bytes
 screenshots/fn-061-medieval-mobile.png             | Bin 0 -> 208805 bytes
 13 files changed, 244 insertions(+), 37 deletions(-)

Fusion-Task-Id: FN-061

Fusion-Task-Lineage: fe95f1d1-7db4-4098-965f-f4c0aa8860e0

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:57:23 +00: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
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
b1893a63af FN-043: add canonical thinking levels for custom providers
Custom-provider models now expose the full thinking-level selector and faithfully transmit the selected effort.

- Register all canonical thinking levels and preserve provider-specific API dialects.
- Remove the redundant reasoning toggle and update provider status and settings documentation.
- Add dashboard, engine, and provider registration coverage for thinking-level behavior.
- Add a minor changeset for the published CLI package.

Files changed:
 .../fn-043-custom-provider-thinking-levels.md      |  7 ++
 docs/settings-reference.md                         |  2 +
 .../dashboard/app/api/settings/provider-status.ts  |  1 -
 .../app/components/CustomProviderForm.css          |  5 +-
 .../app/components/CustomProviderForm.tsx          | 18 ++---
 .../__tests__/CustomProviderForm.test.tsx          | 35 ++++++---
 ...r-model-routes-custom-provider-thinking.test.ts | 91 ++++++++++++++++++++++
 .../custom-provider-thinking-levels.test.ts        | 49 ++++++++++++
 .../custom-providers-openai-completions.test.ts    |  2 +-
 .../custom-providers-openai-responses.test.ts      |  3 +-
 .../src/__tests__/pi-create-fn-agent.test.ts       | 31 +++++++-
 .../src/__tests__/provider-registration.test.ts    | 20 ++++-
 .../engine/src/auth/custom-provider-registry.ts    | 14 +++-
 packages/engine/src/pi.ts                          |  9 ++-
 14 files changed, 251 insertions(+), 36 deletions(-)

Fusion-Task-Id: FN-043

Fusion-Task-Lineage: fdd3308a-d5bd-4f54-911a-226c2b46a927

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
a7afb020e9 FN-032: use deterministic titles for short descriptions
Short untitled task descriptions now receive stable planning titles instead of an empty placeholder.

- Derive short-task titles from the first meaningful description line with shared normalization and length safety.
- Preserve explicit titles and leave long or empty descriptions on existing AI/none behavior.
- Persist the planning heading title through normal task metadata finalization and document the threshold.

Files changed:
 .changeset/fn-032-short-description-title.md |   7 ++
 docs/settings-reference.md                   |   2 +-
 docs/task-management.md                      |   4 +-
 packages/engine/src/__tests__/triage.test.ts | 115 ++++++++++++++++++++++++---
 packages/engine/src/triage.ts                |  23 +++++-
 5 files changed, 137 insertions(+), 14 deletions(-)

Fusion-Task-Id: FN-032

Fusion-Task-Lineage: 886f5a32-7eb5-460d-bf1a-93ebf5dc0b93

Co-authored-by: Fusion <noreply@runfusion.ai>
2026-08-20 03:55:39 +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
cc6f389e71 FN-003: consolidate model overrides and Docker tooling
Consolidate model override settings while adding supported operator tools to the Docker image.

- Group project and workflow model overrides in the Settings interface with updated search metadata, translations, tests, and documentation.
- Install gh, tailscale, and cloudflared from signed vendor repositories and cover the Docker configuration.
- Add release changesets for the settings and container capabilities.

Files changed:
 .changeset/docker-operator-tooling.md              |   7 +
 .changeset/fn-003-model-override-organization.md   |   7 +
 Dockerfile                                         |  36 ++++-
 docs/dashboard-guide.md                            |   6 +-
 docs/settings-reference.md                         |   9 +-
 .../app/__tests__/settings-sections.test.tsx       |  10 ++
 .../__tests__/SettingsModal.models-auth.test.tsx   |   2 +-
 .../settings/sections/GlobalModelsSection.tsx      |  16 +-
 .../settings/sections/ProjectModelsSection.tsx     | 171 +++++++++++----------
 packages/dashboard/src/shared/settings-sections.ts |   6 +-
 packages/i18n/locales/en/app.json                  |   5 +
 .../dockerfile-workspace-manifests.test.mjs        |  22 +++
 12 files changed, 200 insertions(+), 97 deletions(-)

Fusion-Task-Id: FN-003

Fusion-Task-Lineage: 4df75b7f-f8dd-472c-b343-d06800d6c615

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
gsxdsm
87e673baf7 feat(merge): remove the pre-commit diff-volume gate
The gate blocked approved clean-room squashes on per-file shrinkage with no
override path ("AI merge diff-volume gate blocked the approved squash").
Removed by operator decision: delete checkDiffVolume/DiffVolumeRegressionError,
the merge:diff-volume-blocked audit event, the runDiffVolumeGate call sites in
every legacy squash finalizer, the AI-merge pre-land check, and the
mergeDiffVolume* settings. File scope remains the pre-land guard; the
post-squash audit policy remains the shrinkage backstop.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 22:42:39 -07:00
gsxdsm
9f5f981e33 FN-9114: expose enabled skills and enforce agent skill reads
Make project-enabled skills available across agent sessions while preserving explicit per-agent skills as observable read-first requirements.

- resolve all enabled discovered skills without using agent metadata as an availability filter
- carry forced skill intent through PI, plugin, chat, workflow, merger, and heartbeat session paths
- report resolved and unavailable forced skills in session summaries and diagnostics
- document the updated skill model and add release notes and regression coverage

Files changed:
 .changeset/fn-9114-forced-skills.md                |   7 +
 docs/PLUGIN_AUTHORING.md                           |   2 +-
 docs/agents.md                                     |  10 +-
 docs/diagnostics.md                                |   2 +-
 docs/settings-reference.md                         |   2 +-
 packages/core/src/__tests__/skill-settings.test.ts |   9 +
 .../dashboard/src/__tests__/chat-manager.test.ts   |  26 ++-
 packages/dashboard/src/chat.ts                     |  10 +
 .../engine/src/__tests__/agent-skills-flow.test.ts |  14 +-
 .../compound-engineering-skill-resolution.test.ts  |   2 +-
 .../engine/src/__tests__/heartbeat-skills.test.ts  |  41 ++++
 .../__tests__/hermes-runtime-integration.test.ts   |  63 +++++-
 .../engine/src/__tests__/merger-skills.test.ts     |  33 ++-
 packages/engine/src/__tests__/pi.test.ts           |  35 ++-
 .../__tests__/plugin-skill-body-delivery.test.ts   |   8 +-
 .../src/__tests__/plugin-skill-integration.test.ts |   3 +-
 .../src/__tests__/session-skill-context.test.ts    |  40 ++--
 .../engine/src/__tests__/skill-resolver.test.ts    |  38 +++-
 .../__tests__/step-execute-skill-loading.test.ts   |   6 +
 packages/engine/src/agents/agent-runtime.ts        |   2 +
 .../engine/src/agents/agent-session-helpers.ts     |  88 ++++++-
 .../src/cli-runtime/session-skill-context.ts       | 117 ++++------
 packages/engine/src/cli-runtime/skill-resolver.ts  | 252 +++++++++------------
 .../engine/src/executor/execute-workflow-step.ts   |  14 ++
 packages/engine/src/executor/run-implementation.ts |   5 +
 packages/engine/src/pi.ts                          |  28 ++-
 26 files changed, 576 insertions(+), 281 deletions(-)

Fusion-Task-Id: FN-9114

Fusion-Task-Lineage: fe63ebd1-f947-40d7-be7b-c13d7f1c35c9

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 21:57:22 -07:00
gsxdsm
d4d13e2fa5 FN-9111: Add global Quick Add Enter-save preference
Add an operator-level setting that controls whether plain Enter saves a Quick Add task while preserving Cmd/Ctrl+Enter submission.

- add the global quickAddSubmitOnEnter setting, defaults, settings UI, and app context
- update Quick Add keyboard handling with multiline and duplicate/in-flight safeguards
- add focused settings and keyboard regression coverage, localization, documentation, and a release changeset

Files changed:
 .changeset/fn-9111-quick-add-enter.md              |   7 ++
 docs/dashboard-guide.md                            |   2 +
 docs/settings-reference.md                         |   1 +
 .../core/src/__tests__/settings-defaults.test.ts   |  10 ++
 packages/core/src/config/settings-schema.ts        |   5 +
 packages/core/src/types/settings/settings-scope.ts |   5 +
 packages/dashboard/app/App.tsx                     |   4 +
 .../dashboard/app/components/QuickEntryBox.tsx     |  24 ++++-
 .../QuickEntryBox.submit-on-enter.test.tsx         | 118 +++++++++++++++++++++
 .../__tests__/SettingsModal.general.test.tsx       |  18 ++++
 .../app/components/settings/save-split.ts          |   1 +
 .../sections/GlobalGeneralSection.search.ts        |   9 ++
 .../settings/sections/GlobalGeneralSection.tsx     |  10 ++
 .../settings-default-descriptions.test.tsx         |   1 +
 .../__tests__/useQuickAddSubmitOnEnter.test.tsx    |  24 +++++
 packages/dashboard/app/hooks/useAppSettings.ts     |   4 +
 .../app/hooks/useQuickAddSubmitOnEnter.ts          |  21 ++++
 packages/i18n/locales/en/app.json                  |   2 +
 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               |   4 +-
 packages/i18n/locales/zh-CN/app.json               |   4 +-
 packages/i18n/locales/zh-TW/app.json               |   4 +-
 packages/i18n/src/resources.d.ts                   |   4 +-
 25 files changed, 284 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-9111

Fusion-Task-Lineage: 246153a8-5127-48df-838c-d9b60920cd91

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 21:24:25 -07:00
gsxdsm
b6efd89ae5 FN-9097: add Cursor CLI execution runtime
Add a supervised Cursor CLI runtime for routed Cursor model sessions.

- Stream Cursor prompt output into Fusion session callbacks with resume support.
- Support Windows Cursor shims, inactivity-based supervision, and cursor-agent to cursor fallback execution.
- Route Cursor CLI models through the bundled plugin and document the runtime contract.

Files changed:
 .changeset/fn-9097-cursor-cli-runtime.md           |   7 ++
 docs/cursor-cli-contract.md                        |  21 ++++
 docs/settings-reference.md                         |   4 +-
 .../cli-runtime-routing-conformance.test.ts        |  11 +-
 .../engine/src/agents/agent-session-helpers.ts     |   6 +-
 packages/engine/src/agents/cli-provider-routing.ts |  27 ++---
 plugins/fusion-plugin-cursor-runtime/README.md     |  21 ++++
 plugins/fusion-plugin-cursor-runtime/package.json  |   1 +
 .../src/__tests__/cli-spawn.test.ts                |  25 ++++-
 .../src/__tests__/prompt-transport.test.ts         |  58 ++++++++++
 .../src/__tests__/runtime-adapter.test.ts          |  44 +++++---
 .../src/__tests__/stream-parser.test.ts            |  12 +++
 .../fusion-plugin-cursor-runtime/src/cli-spawn.ts  |  57 +++++++++-
 plugins/fusion-plugin-cursor-runtime/src/index.ts  |   4 +-
 .../src/prompt-transport.ts                        | 120 +++++++++++++++++++++
 .../src/runtime-adapter.ts                         |  59 ++++++----
 .../src/stream-parser.ts                           |  43 ++++++++
 plugins/fusion-plugin-cursor-runtime/src/types.ts  |  18 ++--
 pnpm-lock.yaml                                     |   3 +
 19 files changed, 458 insertions(+), 83 deletions(-)

Fusion-Task-Id: FN-9097

Fusion-Task-Lineage: a4eed861-6059-4528-9f80-3426f5ccad58

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 08:51:35 -07:00
gsxdsm
1d3f6c198c FN-9096: route CLI models through installed runtimes
Route every CLI-provider selection through an explicit installed-runtime policy.

- Centralize CLI provider classifications, runtime hints, fallback behavior, and actionable missing-runtime errors.
- Validate routing coverage statically and add conformance and integration tests for CLI runtime paths.
- Document runtime routing behavior and add a published CLI changeset.

Files changed: .changeset/fn-9096-cli-runtime-routing.md          |   7 +
 docs/settings-reference.md                         |  29 +++
 docs/testing.md                                    |   6 +-
 package.json                                       |   6 +-
 .../src/__tests__/cli-provider-routing.test.ts     |  74 ++++++++
 .../__tests__/cli-runtime-routing-check.test.ts    |  25 +++
 .../cli-runtime-routing-conformance.test.ts        | 210 +++++++++++++++++++++
 .../__tests__/hermes-runtime-integration.test.ts   |  28 +++
 .../engine/src/agents/agent-session-helpers.ts     | 166 ++++------------
 packages/engine/src/agents/cli-provider-routing.ts | 174 +++++++++++++++++
 scripts/check-cli-runtime-routing.mjs              |  26 +++
 scripts/lib/cli-runtime-routing-check.mjs          |  84 +++++++++
 12 files changed, 701 insertions(+), 134 deletions(-)

Fusion-Task-Id: FN-9096

Fusion-Task-Lineage: f9f6a434-b28d-4ebb-816a-53ca75efc2c4

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-15 07:19:29 -07:00
gsxdsm
6896f1d7f3 FN-9045: wire workspace mode toggle to workspace config
Connect workspace-mode settings updates to the runtime workspace configuration lifecycle.

- Synchronize workspace.json and config.json when workspace mode changes.
- Reconcile settings events and executor state after successful or failed toggles.
- Add dashboard route, UI copy, localization, documentation, and regression coverage.

Files changed:
 .changeset/fn-9045-workspace-mode-toggle.md        |   7 +
 docs/settings-reference.md                         |   2 +-
 .../settings-workspace-toggle-side-effect.test.ts  | 178 +++++++++++++++++++++
 .../src/__tests__/workspace-mode-toggle.test.ts    |  71 ++++++++
 packages/core/src/git/git-repository.ts            | 147 ++++++++++++++++-
 packages/core/src/index.gate.ts                    |   6 +
 packages/core/src/index.ts                         |   6 +
 packages/core/src/task-store/settings-ops.ts       |  86 +++++++++-
 packages/core/src/types/settings/settings-scope.ts |  11 +-
 .../settings/sections/GeneralSection.tsx           |  10 +-
 .../settings-workspace-mode-route.test.ts          | 148 +++++++++++++++++
 .../src/routes/register-settings-memory-routes.ts  |  18 +++
 .../executor-workspace-toggle-invalidation.test.ts |  64 ++++++++
 .../engine/src/executor/task-executor-state.ts     |   6 +
 .../src/executor/workspace-config-resolver.ts      |  16 +-
 packages/engine/src/runtimes/in-process-runtime.ts |  12 ++
 packages/i18n/locales/en/app.json                  |   2 +-
 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               |   4 +-
 packages/i18n/locales/zh-CN/app.json               |   4 +-
 packages/i18n/locales/zh-TW/app.json               |   4 +-
 23 files changed, 791 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-9045

Fusion-Task-Lineage: e382726f-8409-4983-94ef-93f341a6adbf

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 23:33:36 -07:00
gsxdsm
d77b427b8c FN-9063: document multi-repository workspace mode
Document workspace setup, operation, recovery, and lifecycle guidance for operators.

- Add a dedicated multi-repository workspace guide.
- Link workspace mode from onboarding, settings, task management, and project documentation.
- Cover the documentation contract with focused dashboard tests.

Files changed:
 docs/README.md                                     |   1 +
 docs/getting-started.md                            |   2 +-
 docs/multi-project.md                              |   2 +-
 docs/settings-reference.md                         |   1 +
 docs/task-management.md                            |   4 +-
 docs/workspaces.md                                 | 129 +++++++++++++++++++++
 packages/dashboard/src/__tests__/workspace-documentation.test.ts |  74 ++++++++++++
 7 files changed, 209 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-9063

Fusion-Task-Lineage: b79baa34-fcd7-47ed-89de-b4637160c305

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 22:25:15 -07:00
gsxdsm
ba643fc384 FN-9042: fix dashboard update installation feedback
Make dashboard update actions report clear terminal outcomes and avoid unsupported installs.

- Distinguish update checks, no-op responses, installation failures, and unsupported installation methods.
- Block source-checkout, Homebrew, and missing-npm global installation attempts with actionable guidance.
- Surface update results in dashboard controls and cover API, updater, and UI behavior with tests.

Files changed:
 .changeset/fn-9042-update-now-outcomes.md          |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   2 +-
 packages/dashboard/app/api/settings/settings.ts    |   2 +
 .../dashboard/app/components/SettingsModal.tsx     |  18 +--
 .../app/components/UpdateAvailableBanner.tsx       |  11 +-
 .../__tests__/SettingsModal.general.test.tsx       |  20 ++++
 .../__tests__/UpdateAvailableBanner.test.tsx       |  19 ++++
 .../dashboard/src/__tests__/auto-update.test.ts    |  38 ++++++-
 .../dashboard/src/__tests__/update-check.test.ts   |  19 +++-
 packages/dashboard/src/auto-update.ts              |  33 +++++-
 .../__tests__/register-update-check-routes.test.ts | 104 ++++++++++++++++++
 .../src/routes/register-update-check-routes.ts     |  28 +++--
 packages/dashboard/src/server.ts                   |   9 +-
 packages/dashboard/src/update-check.ts             | 122 ++++++++++-----------
 15 files changed, 338 insertions(+), 96 deletions(-)

Fusion-Task-Id: FN-9042

Fusion-Task-Lineage: 22ae5540-e5b5-43cf-ad16-c7aa05782593

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-14 12:59:23 -07:00
gsxdsm
873f339ddd FN-9040: show backup status and preserve schedules
Expose database backup inventory and schedule execution evidence while keeping scheduled backups due after unchanged settings saves.

- Display backup files, empty and error states, and automatic schedule details in Settings.
- Reconcile the shared backup routine at engine startup and retain its next run when settings are unchanged.
- Add API, localization, documentation, and regression coverage for backup status and scheduling.

Files changed:
 .changeset/fn-9040-database-backups-visibility.md  |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   4 +
 .../src/__tests__/backup-schedule-status.test.ts   | 124 +++++++++++++++++++++
 .../core/src/automation/global-routine-store.ts    |  31 +++++-
 packages/core/src/backup/backup.ts                 |  95 ++++++++++++++--
 packages/core/src/index.gate.ts                    |   4 +-
 packages/core/src/index.ts                         |   4 +-
 .../app/api/agents/agent-import-generation.ts      |  14 +++
 packages/dashboard/app/api/legacy.ts               |   1 +
 .../dashboard/app/components/SettingsModal.tsx     |  12 +-
 .../__tests__/SettingsModal.test-harness.tsx       |   7 +-
 .../__tests__/SettingsModalNodeRouting.test.tsx    |   2 +-
 .../components/__tests__/settings-mobile.test.tsx  |   2 +-
 .../settings/sections/DatabaseBackupsSection.css   |  24 ++++
 .../settings/sections/DatabaseBackupsSection.tsx   |  67 ++++++-----
 .../__tests__/DatabaseBackupsSection.test.tsx      |  45 ++++++++
 .../register-system-maintenance-routes.test.ts     |  47 +++++++-
 .../routes/register-system-maintenance-routes.ts   |  46 ++++++--
 .../src/__tests__/in-process-runtime.pg.test.ts    |  15 ++-
 packages/engine/src/runtimes/in-process-runtime.ts |  13 +++
 packages/i18n/locales/en/app.json                  |  17 ++-
 packages/i18n/locales/es/app.json                  |  17 ++-
 packages/i18n/locales/fr/app.json                  |  17 ++-
 packages/i18n/locales/ko/app.json                  |  17 ++-
 packages/i18n/locales/pt-BR/app.json               |  17 ++-
 packages/i18n/locales/zh-CN/app.json               |  17 ++-
 packages/i18n/locales/zh-TW/app.json               |  17 ++-
 packages/i18n/src/resources.d.ts                   |  28 ++++-
 29 files changed, 623 insertions(+), 90 deletions(-)

Fusion-Task-Id: FN-9040

Fusion-Task-Lineage: 29a803a2-0784-4a99-b7cb-2f67d105254b

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 17:22:46 -07:00
gsxdsm
d1bb5f4eb0 FN-9039: fix voice runtime detection and add recheck action
Correct voice runtime detection for CommonJS Sherpa bindings and let operators re-check a repaired runtime.

- Resolve default and module.exports CommonJS bindings before reporting compatibility.
- Add a runtime re-check API and disabled-state Settings action.
- Localize and document the recovery flow with route, service, and UI coverage.

Files changed:
 .changeset/fn-9039-voice-runtime-interop.md        |  7 ++++
 docs/dashboard-guide.md                            |  2 +-
 docs/settings-reference.md                         | 11 +++--
 .../settings/__tests__/VoiceInputSection.test.tsx  | 47 ++++++++++++++++++++++
 .../settings/sections/VoiceInputSection.tsx        | 13 ++++++
 packages/dashboard/src/routes/README.md            | 11 +++--
 .../routes/__tests__/register-voice-routes.test.ts | 30 ++++++++++++++
 .../dashboard/src/routes/register-voice-routes.ts  | 10 ++++-
 .../dashboard/src/stt/__tests__/voice-stt.test.ts  | 37 ++++++++++++++++-
 packages/dashboard/src/stt/parakeet-service.ts     | 30 ++++++++++++--
 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               |  4 +-
 packages/i18n/locales/zh-CN/app.json               |  4 +-
 packages/i18n/locales/zh-TW/app.json               |  4 +-
 packages/i18n/src/resources.d.ts                   |  4 +-
 18 files changed, 206 insertions(+), 24 deletions(-)

Fusion-Task-Id: FN-9039

Fusion-Task-Lineage: 50858063-5b0a-4fec-8c34-171d58a288b6

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-13 16:39:11 -07:00
gsxdsm
ea53cbd4ff FN-9021: send mailbox notices for task recommendations
Completed tasks now optionally send captured recommendations to the operator mailbox.

- Add idempotent, non-blocking mailbox notices after accepted task completion.
- Expose a project setting and localized dashboard control for recommendation notices.
- Cover notification dispatch, settings parity, and completion-path behavior with tests.

Files changed:
 .../fn-9021-recommendation-mailbox-notice.md       |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   1 +
 .../core/src/__tests__/settings-parity.test.ts     |   2 +
 .../__tests__/task-recommendation-notice.test.ts   |  77 +++++++++++++
 packages/core/src/config/settings-schema.ts        |   2 +
 packages/core/src/index.ts                         |   9 ++
 packages/core/src/task-recommendation-notice.ts    | 122 +++++++++++++++++++++
 packages/core/src/types/settings/settings-scope.ts |   6 +
 .../__tests__/SettingsModal.general.test.tsx       |  10 ++
 .../app/components/settings/section-keys.ts        |   1 +
 .../settings/sections/GeneralSection.tsx           |  15 +++
 .../settings-default-descriptions.test.tsx         |   1 +
 .../executor-task-recommendations.test.ts          |  39 ++++++-
 .../executor/completion-recommendation-notice.ts   |  52 +++++++++
 .../engine/src/executor/create-task-done-tool.ts   |  12 ++
 packages/engine/src/executor/plan-review-no-op.ts  |  12 ++
 packages/engine/src/runtimes/in-process-runtime.ts |  14 +++
 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               |   4 +-
 packages/i18n/locales/zh-CN/app.json               |   4 +-
 packages/i18n/locales/zh-TW/app.json               |   4 +-
 packages/i18n/src/resources.d.ts                   |  40 ++++++-
 26 files changed, 442 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-9021
Fusion-Task-Lineage: f6c5c93c-a3b6-470b-9efb-79e6b4003985
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 21:15:53 -07:00
gsxdsm
508ebc3812 FN-9008: add Grok 4.6 model catalog support
Register Grok 4.6 across Fusion's shared Grok provider catalog.

- Add Grok 4.6 metadata and preserve it through provider merges
- Cover registration and extension model-list behavior
- Update Grok model references and publish a minor changeset

Files changed:
 .changeset/fn-9008-grok-4-6.md                    |  7 +++
 docs/grok-cli-contract.md                         |  4 +-
 docs/settings-reference.md                        |  2 +-
 packages/core/src/__tests__/grok-provider.test.ts | 54 +++++++++++++++++------
 packages/core/src/ai/grok-provider.ts             | 21 +++++++++
 5 files changed, 72 insertions(+), 16 deletions(-)

Fusion-Task-Id: FN-9008

Fusion-Task-Lineage: 5ee7688e-a1eb-4b57-8f72-1f69616ff456

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-12 13:29:34 -07:00
gsxdsm
6ae9299576 FN-8953: defer terminal wedge alerts during recovery
Hold terminal wedge alerts until their recovery window has elapsed.

- Persist and settle pending wedge notifications across restarts.
- Clear pending alerts on task progress and reconcile expired holds during self-healing.
- Expose the settle window in notification settings with coverage for store and notification flows.

Files changed:
 .changeset/fn-8953-wedge-settle-window.md          |   7 +
 AGENTS.md                                          |   1 +
 docs/architecture.md                               |   3 +-
 docs/settings-reference.md                         |   1 +
 .../core/src/__tests__/store-wedge-pending.test.ts |  56 +++++
 packages/core/src/config/settings-schema.ts        |   1 +
 packages/core/src/store.ts                         |  46 ++++
 packages/core/src/types/settings/settings-scope.ts |   2 +
 packages/core/src/types/task/task-core.ts          |  15 ++
 .../app/components/settings/save-split.ts          |   1 +
 .../sections/NotificationsSection.search.ts        |   9 +
 .../settings/sections/NotificationsSection.tsx     |  15 ++
 .../settings-default-descriptions.test.tsx         |   1 +
 ...self-healing-pending-wedge-notification.test.ts | 148 ++++++++++++
 .../__tests__/notification-service.test.ts         |   7 +-
 .../__tests__/task-wedge-notification.test.ts      | 258 ++++++++++++++++++++-
 .../src/notification/notification-service.ts       | 260 +++++++++++++++++++++
 packages/engine/src/self-healing.ts                |  38 +++
 packages/i18n/locales/en/app.json                  |   2 +
 19 files changed, 850 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-8953

Fusion-Task-Lineage: fd5b5827-c69d-409f-86d5-01ff23405ee3

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-11 12:34:47 -07:00
gsxdsm
5a1853cac6 FN-8934: add memory pre-steering across agent prompts
Add bounded memory-first guidance and consolidation observability across agent workflows.

- Apply mode-aware memory pre-steering to execution, triage, reviewer, heartbeat, and merger prompts.
- Export and test shared memory nudges while documenting memory inclusion settings.
- Expose agent memory consolidation history through dashboard API and detail UI.

Files changed:
 .changeset/fn-8934-memory-pre-steering.md          |  7 ++
 docs/agents.md                                     |  4 +
 docs/settings-reference.md                         |  2 +
 .../core/src/__tests__/memory-pre-steering.test.ts | 28 +++++++
 packages/core/src/__tests__/project-memory.test.ts | 22 ++++++
 packages/core/src/index.gate.ts                    |  7 ++
 packages/core/src/index.ts                         |  7 ++
 packages/core/src/memory/index.ts                  |  1 +
 packages/core/src/memory/memory-pre-steering.ts    | 41 ++++++++++
 packages/core/src/memory/project-memory.ts         | 19 +++++
 packages/dashboard/app/api/agents/agents.ts        | 12 +++
 packages/dashboard/app/api/legacy.ts               |  2 +
 .../dashboard/app/components/AgentDetailView.css   | 41 ++++++++++
 .../dashboard/app/components/AgentDetailView.tsx   | 56 +++++++++++++-
 ...etailView.memory-consolidation-history.test.tsx | 58 +++++++++++++++
 .../__tests__/AgentDetailView.test-helpers.ts      |  3 +
 .../register-agent-memory-consolidations.test.ts   | 87 ++++++++++++++++++++++
 .../register-agent-reflection-rating-routes.ts     | 36 +++++++++
 .../memory-pre-steering-injection.test.ts          | 50 +++++++++++++
 packages/engine/src/__tests__/reviewer.test.ts     | 18 +++++
 packages/engine/src/__tests__/triage.test.ts       | 18 ++++-
 packages/engine/src/agent-heartbeat.ts             | 14 +++-
 .../engine/src/agents/agent-heartbeat-prompts.ts   |  2 +
 packages/engine/src/agents/agent-instructions.ts   | 16 ++--
 packages/engine/src/execution/reviewer.ts          | 31 +++++---
 packages/engine/src/executor/execution-prompt.ts   |  6 +-
 packages/engine/src/merger.ts                      |  9 ++-
 packages/engine/src/triage.ts                      | 12 ++-
 28 files changed, 577 insertions(+), 32 deletions(-)

Fusion-Task-Id: FN-8934

Fusion-Task-Lineage: a062cc6b-1277-4d36-9926-b3ecba4945eb

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-11 04:57:14 -07:00
gsxdsm
637854ad36 FN-8932: add durable memory consolidation agent
Add a provisioned memory agent that consolidates durable recall material through idempotent heartbeat ticks.

- Provision and configure the durable memory agent with an enabled workflow setting.
- Add consolidation adapters, material collection, recall graph references, and run-audit metadata.
- Expose the setting in the dashboard and document the memory-agent behavior.
- Cover provisioning, heartbeat, consolidation, audit, and recall graph behavior with tests.

Files changed:
 .changeset/fn-8932-memory-agent.md                 |   7 ++
 AGENTS.md                                          |   1 +
 docs/agents.md                                     |  10 ++
 docs/settings-reference.md                         |   1 +
 docs/storage.md                                    |   2 +-
 .../memoryConsolidationEnabled-default.test.ts     |  22 ++++
 .../memory-recall-graph-cross-reference.pg.test.ts | 115 +++++++++++++++++++++
 .../__tests__/memory-agent-provisioning.test.ts    |  31 ++++++
 packages/core/src/agents/agent-store.ts            |  85 +++++++++++++++
 packages/core/src/agents/memory-agent-defaults.ts  |  30 ++++++
 packages/core/src/index.gate.ts                    |   2 +
 packages/core/src/index.ts                         |   9 ++
 packages/core/src/memory/recall/index.ts           |   1 +
 packages/core/src/memory/recall/recall-dedup.ts    |   3 +
 packages/core/src/memory/recall/recall-store.ts    |  35 ++++++-
 .../src/workflows/builtin-workflow-settings.ts     |  14 +++
 .../src/workflows/workflow-settings-resolver.ts    |  12 ++-
 .../__tests__/WorkflowSettingsPanel.test.tsx       |   8 ++
 .../__tests__/workflow-setting-display.test.ts     |   6 ++
 .../app/components/workflow-setting-display.ts     |   5 +
 .../memory-consolidation-heartbeat-hook.test.ts    |  92 +++++++++++++++++
 .../__tests__/memory-consolidation-ports.test.ts   |  34 ++++++
 ...memory-consolidation-run-audit-metadata.test.ts |  19 ++++
 .../__tests__/memory-consolidation-tick.test.ts    |  62 +++++++++++
 packages/engine/src/agent-heartbeat.ts             |  55 ++++++++++
 packages/engine/src/index.ts                       |   1 +
 packages/engine/src/memory/index.ts                |   3 +
 .../src/memory/memory-consolidation-adapters.ts    |  29 ++++++
 .../src/memory/memory-consolidation-material.ts    |  22 ++++
 packages/engine/src/memory/memory-consolidation.ts |  41 ++++++++
 packages/engine/src/util/run-audit.ts              |  10 ++
 31 files changed, 764 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-8932

Fusion-Task-Lineage: b4fdec50-1f42-4120-af17-0b6f3a94586e

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-11 03:53:11 -07:00
gsxdsm
7b3bd75268 fix(engine): wire the Plan Review replan cap and tombstone its dead predecessor
Investigating the "dead cap" turned up the opposite of what it looked like, plus a
worse problem next to it.

The Plan Review replan loop was NOT unbounded. U3 re-owned the cap-park in the
graph: requestPreMergeOptionalStepFix parks via parkPlanReviewReplanCapExhausted
at awaiting-approval with reason plan-review-replan-cap, on both an explicit
finite budget and the unbounded default. That capability has been live throughout.

What was actually dead:

1. PLAN_REVIEW_GATE_REPLAN_CAP = 8 — an unread constant belonging to the
out-of-graph triage gate (runPlanReviewBeforeExecution) that U10/R4 deleted. Its
companion column Task.planReviewReplanCount was persisted, serialized and reset
but never incremented or compared. A constant and a column that look like a live
safety ceiling while enforcing nothing are worse than no ceiling: they answer "is
this loop bounded?" with a confident yes. Deleted, ratcheted in
legacy-tombstones.test.ts, and the column documented as legacy/never-written with
the live owner named.

2. planReviewReplanCap — an operator-facing setting, declared, validated,
documented in settings-reference.md and editable in the Workflow Editor, that
NOTHING read. Lowering it changed nothing. The unbounded backstop was instead
hardcoded to PLAN_REVIEW_FEEDBACK_HISTORY_LIMIT — a bound on how much reviewer
PROSE is replayed into the next planning prompt, whose own comment says it is
"bounded independently of persistence and retry accounting". Two unrelated
concerns shared one number, so trimming prompt history would have silently
tightened a safety ceiling.

The backstop now resolves from the setting, defaulting to the new
DEFAULT_PLAN_REVIEW_REPLAN_CAP = 15 — the previously-effective value, so this is a
pure re-wiring rather than a silent behavior change. The existing 15-attempt
regression test passes unchanged, which is the evidence for that. 0 is honored as
park-on-first-REVISE. An explicit planReviewMaxRevisions / node maxRevisions
budget remains a stricter, earlier gate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 13:39:55 -07:00
gsxdsm
963dba6f80 feat: gate review verdicts on finding severity and preserve remediation sessions
Review remediation loops were the dominant cost of task wall-clock: over 14 days,
tasks with >=5 post-review fix rounds were 22% of tasks but consumed 78% of all
task active time, and 311 of 331 recorded findings were spec-internal-consistency
complaints that changed no delivered behavior.

Two causes compounded. Plan/Code Review remediation was unbounded by default, and
the review policy ordered a full re-derivation of the artifact after every edit
("distrust the edit ... fresh holistic pass"), so each round surfaced a fresh crop
of previously-acceptable observations as new blockers.

Make the already-persisted WorkflowReviewFinding.severity load-bearing instead of
decorative: a REVISE only blocks when it carries a finding at or above the review
kind's threshold (plan: P0+P1, code: P0). Non-blocking findings are still parsed,
persisted, and handed to the implementer as advisory notes in PROMPT.md. Fails
closed — a REVISE with no findings, or with any unclassified finding, still blocks,
so prose-only and custom reviewers keep full blocking power. The gate only ever
relaxes a verdict, never promotes one.

Reviewer prompts now request the structured findings schema (Plan Review emitted
none before), define severity by consequence as P0/P1/P2, omit nits entirely rather
than filing them as low-severity findings, and use an incremental re-review contract.
Remediation renders findings grouped by priority and sanctions an explicit decline
with rationale, so a disputed finding has a terminal state.

Also preserve the implementation session across a review bounce: sendTaskBackForFix
no longer nulls sessionFile when preserving resume state, and the executor's finally
no longer clears it on a review handoff. Remediation rounds continue the conversation
instead of re-reading the repo and re-deriving the change they just wrote. The resume
prompt now directs a PROMPT.md re-read, without which a resumed agent would never see
the new findings.

New per-workflow settings planReviewBlockingSeverity / codeReviewBlockingSeverity;
set either to "any" to restore the previous behavior.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 11:28:32 -07:00
gsxdsm
27cb2d2621 FN-8921: add deterministic knowledge graph tooling
Add a committable, provenance-tagged knowledge graph layer with CLI generation and query support.

- Extract TypeScript, Markdown, and FNXC knowledge into deterministic graph nodes and edges.
- Persist recoverable graph artifacts outside ignored Fusion state and expose build/query CLI commands.
- Document configuration and add core and CLI coverage for graph structure, serialization, and recovery.

Files changed:
 .changeset/fn-8921-knowledge-graph.md              |   7 +
 .gitattributes                                     |   3 +
 AGENTS.md                                          |   1 +
 docs/README.md                                     |   2 +
 docs/cli-reference.md                              |   4 +
 docs/knowledge-graph.md                            |  37 +++++
 docs/settings-reference.md                         |   4 +
 docs/storage.md                                    |   2 +
 packages/cli/package.json                          |   3 +-
 .../__tests__/knowledge-graph-bundle-shape.test.ts |   4 +
 .../src/__tests__/knowledge-graph-command.test.ts  | 115 ++++++++++++++
 packages/cli/src/bin.ts                            |  19 +++
 packages/cli/src/commands/knowledge-graph.ts       |  79 ++++++++++
 packages/cli/tsup.config.ts                        |   2 +
 packages/core/package.json                         |   4 +-
 packages/core/src/config/settings-schema.ts        |   2 +
 packages/core/src/index.ts                         |   1 +
 .../__tests__/derive-modules.test.ts               |  11 ++
 .../__tests__/extract-file-composition.test.ts     |  20 +++
 .../knowledge-graph/__tests__/extract-fnxc.test.ts |  33 ++++
 .../__tests__/extract-markdown.test.ts             |  21 +++
 .../__tests__/extract-typescript.test.ts           |  30 ++++
 .../__tests__/file-discovery.test.ts               |  26 ++++
 .../graph-artifact-not-gitignored.test.ts          |  15 ++
 .../__tests__/graph-builder-equivalence.test.ts    |  76 ++++++++++
 .../__tests__/graph-builder-incremental.test.ts    |  52 +++++++
 .../__tests__/graph-identity.test.ts               |  11 ++
 .../knowledge-graph/__tests__/graph-query.test.ts  |  13 ++
 .../__tests__/graph-serialization.test.ts          |  29 ++++
 .../__tests__/graph-store-recovery.test.ts         | 106 +++++++++++++
 .../__tests__/resolve-imports.test.ts              |  10 ++
 .../core/src/knowledge-graph/derive-modules.ts     |   4 +
 packages/core/src/knowledge-graph/extract-file.ts  |   6 +
 packages/core/src/knowledge-graph/extract-fnxc.ts  | 168 +++++++++++++++++++++
 .../core/src/knowledge-graph/extract-markdown.ts   |   9 ++
 .../core/src/knowledge-graph/extract-typescript.ts | 107 +++++++++++++
 .../core/src/knowledge-graph/file-discovery.ts     |  85 +++++++++++
 packages/core/src/knowledge-graph/graph-builder.ts | 141 +++++++++++++++++
 .../core/src/knowledge-graph/graph-manifest.ts     |   4 +
 packages/core/src/knowledge-graph/graph-query.ts   | 126 ++++++++++++++++
 .../src/knowledge-graph/graph-serialization.ts     | 134 ++++++++++++++++
 packages/core/src/knowledge-graph/graph-store.ts   |  97 ++++++++++++
 packages/core/src/knowledge-graph/graph-types.ts   |  54 +++++++
 packages/core/src/knowledge-graph/index.ts         |  14 ++
 .../core/src/knowledge-graph/resolve-imports.ts    |   4 +
 packages/core/src/types/settings/settings-scope.ts |   2 +
 pnpm-lock.yaml                                     |  12 +-
 47 files changed, 1700 insertions(+), 9 deletions(-)

Fusion-Task-Id: FN-8921

Fusion-Task-Lineage: 7014d0f1-fc47-454b-afe5-5f0d9b229f33

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-10 06:15:17 -07:00
gsxdsm
5b9e6643d6 FN-8869: inherit project model overrides for role agents
Role-based permanent agents now consistently use their effective project model and thinking settings.

- Resolve permanent-agent model and thinking inheritance by workflow role in core.
- Apply inherited settings to Agent views, Chat sessions, routes, and heartbeat sessions.
- Cover role-specific inheritance and preserve the lifecycle-column ratchet classification.

Files changed:
 .changeset/fn-8869-role-agent-project-model-override.md   |   7 ++
 docs/agents.md                                     |   9 +-
 docs/settings-reference.md                         |   4 +-
 packages/core/src/__tests__/agent-effective-model.test.ts    |  97 +++++++++++++++++++
 packages/core/src/__tests__/no-hardcoded-lifecycle-columns.test.ts |   2 +
 packages/core/src/ai/agent-effective-model.ts      |  82 +++++++++++++++++
 packages/core/src/ai/model-resolution.ts           |  14 +++
 packages/core/src/index.gate.ts                    |   7 ++
 packages/core/src/index.ts                         |   7 ++
 packages/core/src/types.ts                         |   7 ++
 packages/dashboard/app/components/AgentDetailView.tsx |  49 ++++++---
 packages/dashboard/app/components/AgentsView.tsx   |  11 ++-
 packages/dashboard/app/components/__tests__/AgentDetailView.effective-model.test.tsx |  55 +++++++++++
 packages/dashboard/app/components/__tests__/AgentDetailView.settings.test.tsx |  22 +++++
 packages/dashboard/app/components/__tests__/AgentsView.test.tsx |  25 +++++
 packages/dashboard/src/__tests__/chat-manager.test.ts |  45 +++++++++
 packages/dashboard/src/__tests__/routes-chat-sessions-project-model.test.ts | 103 +++++++++++++++++++++
 packages/dashboard/src/chat.ts                     |  65 +++++--------
 packages/dashboard/src/routes/register-chat-routes.ts |  37 +++++---
 packages/engine/src/__tests__/agent-session-helpers-test-mode.test.ts |  13 +++
 packages/engine/src/__tests__/agent-session-helpers.test.ts |  54 +++++++++++
 packages/engine/src/agent-heartbeat.ts             |  10 +-
 packages/engine/src/agents/agent-session-helpers.ts |   6 +-
 23 files changed, 648 insertions(+), 83 deletions(-)

Fusion-Task-Id: FN-8869

Fusion-Task-Lineage: 00227aaf-b33b-43f1-bcbb-2203c9930dbc

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-10 02:25:03 -07:00
gsxdsm
1cf86baa1c refactor: package code organization wave 18 (executor pure peels) (#3317)
## Summary

Wave 18 continues the package code-organization program after wave 17
domain folders (U4 Slice A from
`docs/plans/2026-07-14-001-refactor-package-code-organization-plan.md`).

### What changed
Peel **pure, behavior-preserving** helpers out of
`packages/engine/src/executor.ts` into domain modules under
`packages/engine/src/executor/`, with **stable re-exports** from
`executor.ts` so deep imports and `vi.mock("../executor.js")` keep
working.

| New module | Symbols |
|------------|---------|
| `executor/task-done-refusal.ts` | `evaluateTaskDoneRefusal`,
`determineRevisionResetStart`, skip-bypass refusal helper |
| `executor/workflow-feedback-paths.ts` |
`extractReferencedPathsFromWorkflowFeedback`,
`isAlwaysAllowedScopeLeakPath`, `workflowPathMatchesDeclaredScope` |
| `executor/workflow-step-verdict.ts` |
`FUSION_WORKFLOW_STEP_CONVENTIONS_PREAMBLE`, `parseWorkflowStepVerdict`
/ `parseWorkflowStepOutput`, step outcome types |
| `executor/await-input-parse.ts` | `parseAwaitInputSentinel`,
`parseAwaitInputQuestionToolCall` |
| `executor/no-commit-eligibility.ts` | `getNoCommitEligibilityReason`
(+ prompt heuristics) |

`executor.ts` live LOC ~**22817 → ~22427** (first pure-peel batch; more
peels needed to approach the 2k cap).

### Shims
- `old path` `executor.ts` public exports → `new path` `executor/*.ts` →
delete-when consumer deep-imports are re-pointed (not this PR)

### Test plan
- [x] `@fusion/engine` typecheck
- [x] Oracle: task-done refusal, skip-bypass, workflow malformed
verdict, scope-leak allowlist, executor-step-session, executor-prompt
- [x] `vitest --project=engine-core` (merge-gate curated suite)
- [ ] CI merge gate

**Stack:** wave17 (merged) → **this PR**

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

* **New Features**
* Improved recognition of workflow outcomes from structured and
conversational responses.
* Added support for extracting questions from await-input responses and
tool calls.
* Improved workflow feedback handling for referenced files and declared
scope patterns.
* Added clearer guidance for task execution, approvals, verification,
and available tools.

* **Bug Fixes**
* Prevented completion when required review approvals are missing or
revisions remain pending.
* Improved handling of workflows that legitimately require no code
changes.
  * Added clearer refusal messages and more reliable revision restarts.
  * Sanitized repository paths in Git remediation instructions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-09 15:46:09 -10:00
Victor Canô
a09e0cb87f feat(i18n): add Português (Brasil) (pt-BR) locale (#3347)
## Summary

Adds **Português (Brasil)** (`pt-BR`) as a supported locale:

- Selectable as **Translation target language** (project settings) and
as the dashboard / terminal UI language.
- Full machine-drafted catalogs (`app`, `cli`, `common`), disclosed in
`packages/i18n/locales/TRANSLATION_STATUS.md` following the pattern
#1352 established — reviewed for glossary/register consistency (0.18%
untranslated, matching only keys that are empty in `en`), but
native-speaker corrections are welcome.
- Brazilian Portuguese content-language detection (accent-stripped
stopword list — the scorer strips diacritics before matching, so
accented entries never match; `com`/`mais` deliberately omitted to avoid
bare-domain `.com` and French collisions, with regression tests for both
directions).
- `pt`/`pt-PT` browser and environment locales resolve to `pt-BR` on all
three detection paths (`FALLBACK_LNG` routing plus a `pt` branch in
`normalizeToSupportedLocale`, mirroring the existing `zh` handling).
- `README.pt-BR.md` + switcher links in all READMEs, docs updates
(`settings-reference`, `cli-reference`, `i18n-contributing`, `--lang`
help text), changeset (`minor`).

Drive-by fixes bundled: `TRANSLATION_STATUS.md` was missing the `ko`
row; the LanguageSelector endonym test was missing `한국어`;
`docs/i18n-contributing.md` now names the two compile-enforced display
maps (`LOCALE_LABELS`, `localeDisplayName`) a new locale must update;
the `--lang` CLI help text no longer drifts from its validator.

## Test plan

- `pnpm i18n:status` (key parity gate) green; catalogs are
`i18n:sync`-idempotent.
- Updated/extended suites: core `locale-settings`, i18n
`config`/`parity`/`db-banner-catalog`/`i18n-gate-coverage`, dashboard
`useLanguage`/`LanguageSelector`/`GeneralSection.importTranslate`/`detectContentLanguage`
(incl. new pt-BR detection + bare-domain regression tests), CLI
`settings`.
- `pnpm verify:fast` (typecheck, build, boot smoke), `pnpm lint`, `pnpm
check:changesets`, and the bounded `pnpm test` lane all green locally
(the three `test:pg-gate` files fail locally only for lack of a Postgres
instance; they fail identically on clean `main`).


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

* **New Features**
* Added Brazilian Portuguese (Português (Brasil)) across the dashboard,
terminal interface, settings, and translation tools.
  * Added Portuguese translations for common interface and CLI content.
* Added automatic Portuguese language detection, locale normalization,
and fallback support.
* Added a Portuguese (Brazil) README with product, setup, and usage
documentation.

* **Documentation**
* Updated language selectors, CLI references, settings documentation,
and translation guidance.
  * Added Portuguese README links to translated documentation.
  * Added French to the documented dashboard language options.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: gsxdsm <gsxdsm@users.noreply.github.com>
2026-08-09 13:33:16 -10:00
gsxdsm
c7c879905b FN-8903: add event-driven GitHub CI merge checks
Persist ingested GitHub CI signals and use them to assess merge readiness.

- Store project-scoped GitHub check states with retention maintenance.
- Resolve configured required checks from ingested signals during PR merge decisions.
- Add delivery, lifecycle, persistence, and retention coverage with operator documentation.

Files changed:
 .changeset/fn-8903-event-driven-checks.md          |   7 ++
 docs/architecture.md                               |   1 +
 docs/settings-reference.md                         |   2 +-
 docs/signals-connectors.md                         |   2 +-
 .../src/commands/__tests__/task-lifecycle.test.ts  |  50 ++++++++-
 packages/cli/src/commands/task-lifecycle.ts        |   7 +-
 .../core/src/__tests__/ingested-checks.test.ts     |  66 +++++++++++
 .../postgres/github-check-states.pg.test.ts        |  71 ++++++++++++
 packages/core/src/config/index.ts                  |   1 +
 packages/core/src/config/ingested-checks.ts        |  32 ++++++
 packages/core/src/index.ts                         |  10 ++
 .../0048_fn_8903_github_check_states.sql           |  32 ++++++
 packages/core/src/postgres/schema-applier.ts       |  15 ++-
 packages/core/src/postgres/schema/project.ts       |  29 ++++-
 .../core/src/task-store/async/async-ci-checks.ts   | 104 ++++++++++++++++++
 packages/core/src/task-store/async/index.ts        |   1 +
 packages/core/src/types.ts                         |   2 +
 packages/dashboard/src/__tests__/github.test.ts    | 121 ++++++++++++++++++++-
 .../src/__tests__/register-signal-routes.test.ts   |  81 +++++++++++++-
 packages/dashboard/src/github.ts                   |  74 +++++++++----
 .../dashboard/src/routes/register-git-github.ts    |  29 +++--
 .../dashboard/src/routes/register-signal-routes.ts |  10 +-
 .../src/routes/register-task-workflow-routes.ts    |  14 ++-
 packages/dashboard/src/signal-source.ts            |  23 ++++
 packages/dashboard/src/signal-sources/github.ts    |   2 +
 .../self-healing-github-check-retention.test.ts    | 121 +++++++++++++++++++++
 packages/engine/src/self-healing.ts                |  23 ++++
 27 files changed, 878 insertions(+), 52 deletions(-)

Fusion-Task-Id: FN-8903
Fusion-Task-Lineage: b2643587-c568-4b6c-8b3a-d50a6165963d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 09:14:56 -07:00
gsxdsm
d09e3e5554 FN-8861: preserve GitHub issue context in planning
Preserve imported GitHub issue provenance through Planning Mode and source tracking.

- Pass structured GitHub issue context from import through planning task creation.
- Append source-issue metadata to planned tasks and safely link each source issue once.
- Cover provenance persistence, duplicate suppression, and planning UI handoff.

Files changed:
 .changeset/fn-8861-planning-source-issue.md        |   7 ++
 docs/dashboard-guide.md                            |   8 +-
 docs/settings-reference.md                         |   2 +-
 packages/dashboard/app/App.tsx                     |   4 +-
 packages/dashboard/app/api/planning/planning.ts    |   3 +-
 packages/dashboard/app/components/AppModals.tsx    |   2 +-
 .../dashboard/app/components/GitHubImportModal.tsx |  13 +--
 .../dashboard/app/components/PlanningModeModal.tsx |   5 +-
 .../__tests__/GitHubImportModal.test.tsx           |  34 ++++++
 .../app/components/dashboard/PlanningKeepAlive.tsx |   1 +
 .../dashboard/app/components/dashboard/types.ts    |   2 +-
 .../app/hooks/__tests__/useModalManager.test.ts    |  26 ++++-
 packages/dashboard/app/hooks/useModalManager.ts    |  17 ++-
 .../src/__tests__/github-tracking.test.ts          | 125 ++++++++++++++++++++-
 packages/dashboard/src/__tests__/github.test.ts    |  78 ++++++++++++-
 .../__tests__/planning-e2e-plan-creation.test.ts   |  49 +++++++-
 .../src/__tests__/planning-source-issue.test.ts    |  61 ++++++++++
 .../src/__tests__/routes-planning-tracking.test.ts | 118 ++++++++++++++++++-
 packages/dashboard/src/github-tracking.ts          | 112 ++++++++++++++++--
 packages/dashboard/src/github.ts                   |  50 +++++++++
 packages/dashboard/src/planning.ts                 |  48 +++++++-
 .../dashboard/src/routes/register-git-github.ts    |  31 +----
 .../src/routes/register-planning-subtask-routes.ts |  69 +++++++++++-
 23 files changed, 785 insertions(+), 80 deletions(-)

Fusion-Task-Id: FN-8861
Fusion-Task-Lineage: b2433f70-9c1b-47ef-bafa-0434861cd0a8
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 07:06:06 -07:00
gsxdsm
569d2eee91 FN-8885: add GitHub CI signal ingestion
Ingest signed GitHub CI webhook outcomes into Command Center incidents.

- Support check_suite, workflow_run, and status events with HMAC verification.
- Resolve the latest matching open incident for successful recovery events without creating tasks.
- Document GitHub signal configuration and add connector, route, and monitor-store coverage.

Files changed:
 .changeset/fn-8885-github-signals-connector.md     |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 docs/settings-reference.md                         |   1 +
 docs/signals-connectors.md                         |  31 ++++-
 .../core/src/task-store/async/async-monitor.ts     |  30 ++---
 packages/dashboard/README.md                       |   5 +-
 .../src/__tests__/github-signal-source.test.ts     |  49 ++++++++
 .../src/__tests__/monitor-store.pg.test.ts         |  35 ++++++
 .../src/__tests__/register-signal-routes.test.ts   | 132 +++++++++++++++++++-
 packages/dashboard/src/monitor-store.ts            |  28 ++---
 .../dashboard/src/routes/register-signal-routes.ts |  25 ++++
 packages/dashboard/src/signal-source.ts            |  17 ++-
 packages/dashboard/src/signal-sources/github.ts    | 135 +++++++++++++++++++++
 13 files changed, 461 insertions(+), 36 deletions(-)

Fusion-Task-Id: FN-8885

Fusion-Task-Lineage: d2e9f6ed-95fe-4387-81bd-2ee67b2e1283

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 06:51:22 -07:00