Commit Graph

266 Commits

Author SHA1 Message Date
gsxdsm
934071cc3c FN-6107: always summarize untitled agent-created tasks
Ensure agent-created untitled tasks still request AI-generated titles even when project auto-summarization is disabled.

- force summarize=true for agent-created tasks that do not provide an explicit title
- add engine tests covering untitled, titled, and title-generation behavior with autoSummarizeTitles disabled
- document the agent-task summarization behavior in settings docs
- add a patch changeset for the published CLI package

Files changed:
 .changeset/agent-task-title-summaries.md          |  5 ++
 docs/settings-reference.md                        |  2 +-
 packages/engine/src/__tests__/agent-tools.test.ts | 63 +++++++++++++++++++++++
 packages/engine/src/agent-tools.ts                |  1 +
 4 files changed, 70 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-6107

Fusion-Task-Lineage: d0c25981-a5cb-48ca-b835-9267817b4edd
2026-06-09 12:51:20 -07:00
gsxdsm
c1a723134e feat: redesign mobile workflow editor 2026-06-09 08:30:35 -07:00
gsxdsm
13c6d96fe1 FN-6031: add workflow notification nodes
Add workflow notify nodes with templated notification dispatch support.

- add notify node support to workflow IR, engine handlers, and executor wiring
- expose notify node configuration and summaries in the dashboard editor and node metadata
- add regression tests and a published changeset, plus workflow/settings documentation updates

Files changed:
 .changeset/fn-6031-notification-node.md            |   5 +
 docs/settings-reference.md                         |   6 +-
 docs/workflow-steps.md                             |  10 +-
 packages/core/src/__tests__/workflow-ir.test.ts    |  59 ++++++++++
 packages/core/src/types.ts                         |   4 +-
 packages/core/src/workflow-ir-types.ts             |   4 +-
 packages/core/src/workflow-ir.ts                   |  19 +++
 packages/dashboard/app/components/WorkflowNodeEditor.tsx          |  76 +++++++++++-
 packages/dashboard/app/components/__tests__/WorkflowNodeEditor.test.tsx          |  61 ++++++++++
 packages/dashboard/app/components/__tests__/node-summary.test.ts  |  29 +++++
 packages/dashboard/app/components/__tests__/workflow-flow-mapping.test.ts        |  37 ++++++
 packages/dashboard/app/components/nodes/WorkflowNodeTypes.tsx     |   7 +-
 packages/dashboard/app/components/nodes/node-summary.ts |   5 +
 packages/engine/src/__tests__/workflow-node-handlers-notify.test.ts          | 131 +++++++++++++++++++++
 packages/engine/src/executor.ts                    |   2 +
 packages/engine/src/notification/ntfy-provider.ts  |  11 ++
 packages/engine/src/notification/webhook-provider.ts    |   6 +-
 packages/engine/src/workflow-graph-executor.ts     |   4 +
 packages/engine/src/workflow-graph-task-runner.ts  |   4 +
 packages/engine/src/workflow-node-handlers.ts      |  93 ++++++++++++++-
 20 files changed, 560 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6031

Fusion-Task-Lineage: ff5c91e2-3872-4264-9c18-5d9e11628f13
2026-06-09 01:57:16 -07:00
gsxdsm
c8cb740b93 FN-6026: use model dropdowns for workflow lane settings
Use the shared model picker for workflow lane settings instead of raw provider/model text entry.

- replace built-in workflow model provider/model string fields with combined dropdown controls in the Values tab
- fetch available models and save or clear paired provider/model workflow values together, including fallback lanes
- add regression coverage for dropdown rendering, selection, clearing, empty registries, and paired-key validation errors
- update dashboard and settings documentation to describe the shared workflow model picker behavior

Files changed:
 docs/dashboard-guide.md                            |   4 +-
 docs/settings-reference.md                         |  22 +-
 packages/dashboard/app/components/WorkflowSettingsPanel.tsx       | 241 +++++++++++++++++++--
 packages/dashboard/app/components/__tests__/WorkflowSettingsPanel.test.tsx       | 133 +++++++++++-
 4 files changed, 369 insertions(+), 31 deletions(-)

Fusion-Task-Id: FN-6026

Fusion-Task-Lineage: 7f41120f-f764-4011-9aa5-a323e0aa64d6
2026-06-08 13:32:58 -07:00
gsxdsm
e623340e71 FN-5994: restore project summarization model settings
Keep summarization and PR metadata model selection on project settings while leaving workflow lanes on the workflow.

- restore the project summarization model lane in Project Models and replace per-phase workflow lanes with a workflow-settings redirect stub
- remove moved workflow model keys from project settings defaults/save paths and update settings docs/tests for the restored project lane behavior
- make PR metadata generation resolve its model from the title summarizer settings lane instead of task planning settings

Files changed:
 docs/settings-reference.md                         |   4 +-
 .../core/src/__tests__/settings-migration.test.ts  |  18 +-
 .../core/src/__tests__/settings-parity.test.ts     |  17 +-
 packages/core/src/__tests__/store-settings.test.ts |  54 ++--
 .../core/src/__tests__/task-creation-hook.test.ts  |  10 +-
 packages/core/src/builtin-workflow-settings.ts     |  24 --
 packages/core/src/settings-schema.ts               |  13 +-
 .../components/__tests__/SettingsModal.test.tsx    |  11 +-
 .../app/components/settings/save-split.ts          |  11 +-
 .../settings/sections/ProjectModelsSection.tsx     | 330 +++------------------
 .../src/__tests__/pr-metadata-generator.test.ts    |  25 +-
 packages/dashboard/src/pr-metadata-generator.ts    |   4 +-
 12 files changed, 140 insertions(+), 381 deletions(-)

Fusion-Task-Id: FN-5994

Fusion-Task-Lineage: f7f6f1ff-5d06-4d16-b46d-644eb219e7c1
2026-06-08 13:32:58 -07:00
gsxdsm
61ae1bf706 feat(workflow-settings): simplify workflow model lanes 2026-06-07 22:07:47 -07:00
gsxdsm
3615b0b19d FN-5941: stop todo/in-progress flapping
Prevent scheduler and self-healing churn from bouncing live tasks between todo and in-progress.

- add dispatch oscillation settings, scheduler settle-window tracking, and auto-pause audit/logging for rapid todo↔in-progress cycles
- harden self-healing against reclaiming genuinely active tasks by checking executor activity, grace windows, and heartbeat runs before requeueing
- cover the new reliability invariants with focused engine tests and document the new diagnostics/settings behavior

Files changed:
 docs/architecture.md                               |   1 +
 docs/diagnostics.md                                |   9 +
 docs/settings-reference.md                         |   3 +
 .../core/src/__tests__/settings-parity.test.ts     |   6 +
 packages/core/src/settings-schema.ts               |   6 +
 packages/core/src/types.ts                         |   9 +
 .../todo-inprogress-flapping.test.ts               | 556 +++++++++++++++++++++
 packages/engine/src/__tests__/scheduler.test.ts    |  14 +-
 .../self-healing-in-progress-limbo.test.ts         |   2 +-
 packages/engine/src/__tests__/self-healing.test.ts |   8 +-
 packages/engine/src/run-audit.ts                   |   8 +
 packages/engine/src/scheduler.ts                   | 113 ++++-
 packages/engine/src/self-healing.ts                | 230 +++++++--
 13 files changed, 928 insertions(+), 37 deletions(-)

Fusion-Task-Id: FN-5941

Fusion-Task-Lineage: babdd85e-d04c-47ca-901c-db692b2874bf
2026-06-07 18:51:47 -07:00
gsxdsm
61d687440b FN-5770: promote workflow interpreter to guarded lifecycle driver
Route default coding tasks through the workflow interpreter only when parity readiness checks pass.

- add a core cutover-readiness evaluator and exports for the workflowInterpreterAuthoritative flag
- wire a WorkflowAuthoritativeDriver into runtime dispatch and reuse authoritative lifecycle seams with legacy fallback behavior
- cover the cutover with reliability tests, docs updates, and a published CLI changeset

Files changed:
 .../FN-5770-workflow-interpreter-authoritative.md  |   5 +
 docs/architecture.md                               |   1 +
 docs/settings-reference.md                         |   5 +-
 docs/workflow-steps.md                             |  22 +-
 .../core/src/__tests__/workflow-cutover.test.ts    |  68 +++++
 packages/core/src/index.ts                         |   8 +
 packages/core/src/workflow-cutover.ts              |  81 ++++++
 .../src/__tests__/openclaw-runtime-e2e.test.ts     |   1 +
 .../engine/src/__tests__/pi-layers-wiring.test.ts  |   2 +-
 .../branch-recovery-live-zero-commits.test.ts      |   2 +-
 .../branch-recovery-stale-cached-base.test.ts      |   2 +-
 .../workflow-interpreter-cutover.test.ts           | 306 +++++++++++++++++++++
 .../self-healing-completion-fanout.test.ts         |   2 +-
 .../self-healing-ghost-branch-recovery.test.ts     |   2 +-
 .../self-healing-orphan-only-scope.test.ts         |   2 +-
 .../self-healing-reclaim-live-zero-commits.test.ts |   2 +-
 .../self-healing-stale-merger-status.test.ts       |   2 +-
 .../src/__tests__/step-session-executor.test.ts    |   2 +-
 .../__tests__/worktree-admin-entry-prune.test.ts   |   8 +-
 packages/engine/src/executor.ts                    |  13 +-
 packages/engine/src/index.ts                       |   6 +
 packages/engine/src/runtimes/in-process-runtime.ts |   8 +
 .../engine/src/workflow-authoritative-driver.ts    | 154 +++++++++++
 23 files changed, 686 insertions(+), 18 deletions(-)

Fusion-Task-Id: FN-5770
Fusion-Task-Lineage: dee668b5-10e0-4a3c-b025-9cc43a26286a
2026-06-07 18:51:46 -07:00
gsxdsm
e2707afbd4 test(core): end-to-end workflow-settings journey + surface enumeration; docs and changeset 2026-06-05 01:16:27 -07:00
gsxdsm
c82cdb281c FN-5944: stop redundant run-audit re-emission
Deduplicate unchanged scheduler and self-healing audit emissions while preserving transition visibility.

- suppress repeated queued-concurrency audits until the limiting gate signature changes or clears
- suppress repeated overlap-priority inversion audits until the blocker changes or overlap returns
- suppress repeated meta auto-archive skip and integrity-warning audits until their persisted reasons change
- update reliability tests and architecture/settings docs for the new transition-only audit cadence

Files changed:
 docs/architecture.md                               | 12 +--
 docs/settings-reference.md                         |  2 +-
 .../integrity-warning-persisted-dedup.test.ts      | 12 ++-
 .../scheduler-overlap-priority-inversion.test.ts   | 60 +++++++++++++-
 packages/engine/src/__tests__/scheduler.test.ts    | 13 ++-
 .../self-healing-meta-archive-guards.test.ts       | 45 +++++++++++
 packages/engine/src/scheduler.ts                   | 59 +++++++++++---
 packages/engine/src/self-healing.ts                | 94 +++++++++++++++++-----
 8 files changed, 243 insertions(+), 54 deletions(-)

Fusion-Task-Id: FN-5944

Fusion-Task-Lineage: f8fe6adf-1501-49b7-b04c-ff38376957f0
2026-06-03 22:31:23 -07:00
gsxdsm
12b418a524 FN-5942: add agent-run and config-revision pruning
Extend operational log retention pruning to cover agent runs and config revisions.

- prune completed agentRuns by endedAt while preserving in-flight runs
- prune old agentConfigRevisions by createdAt while always keeping each agent's latest revision
- document the expanded retention behavior and add regression coverage for pruning invariants

Files changed:
 docs/settings-reference.md             |   2 +-
 docs/storage.md                        |   2 +
 packages/core/src/__tests__/db.test.ts | 127 +++++++++++++++++++++++++++++++++
 packages/core/src/db.ts                |  55 ++++++++++++--
 packages/core/src/types.ts             |   9 ++-
 5 files changed, 185 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-5942

Fusion-Task-Lineage: 2bc49182-d52b-44c9-b17e-2737fac58eed
2026-06-03 22:31:23 -07:00
gsxdsm
e703bdd608 feat(i18n): add Korean locale + localized READMEs with language switcher
- ko added to SUPPORTED_LOCALES and every enumeration site (config,
  settings enum, help text, tests); Korean catalogs authored for all
  current keys; CLI bundles regenerated for 6 locales; 한국어 endonym
- README translated into zh-CN, zh-TW, fr, es, ko; every README carries
  a language-switcher line and the localized ones note that English is
  canonical

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 17:33:16 -07:00
gsxdsm
f48602500f merge main: i18n branch + auto-merge override/log-retention work; union CONCEPTS.md vocabularies and docs/solutions reference line 2026-06-03 13:32:26 -07:00
gsxdsm
76c18efa92 FN-5939: expose operational log retention setting
Expose operational log retention as a project setting in the dashboard.

- add an Operational log retention selector to the Project General settings section with supported retention options
- validate operationalLogRetentionDays in the settings API and cover accepted and rejected values in tests
- document the constrained retention values and assert project-scope/default parity for the setting

Files changed:
 docs/settings-reference.md                         |  2 +-
 packages/core/src/__tests__/settings-parity.test.ts |  7 ++++
 packages/dashboard/app/components/SettingsModal.tsx | 47 ++++++++++------------
 packages/dashboard/app/components/__tests__/SettingsModal.test.tsx |  8 ++++
 packages/dashboard/src/__tests__/routes-settings.test.ts | 21 ++++++++++
 packages/dashboard/src/routes/register-settings-memory-routes.ts | 10 +++++
 6 files changed, 69 insertions(+), 26 deletions(-)

Fusion-Task-Id: FN-5939

Fusion-Task-Lineage: 2148dd88-1cef-4c6d-9696-31148fce97d3
2026-06-03 13:20:17 -07:00
gsxdsm
e08a5633fa feat(i18n): language reset-to-auto-detect + review nitpicks (#1352)
Resolves the remaining review threads:

- Reset to auto-detect across all three layers (Greptile): store passes
  language:null through as null-as-delete; dashboard gains an Auto option
  (clearLanguage + hasExplicitChoice in useLanguage, re-detects from
  navigator, syncs cross-tab); CLI accepts 'fn settings set language auto'.
  Catalog keys added for all five locales; tests at every layer.
- CLI i18n test singleton: afterEach locale restore so zh-CN/fr switches
  can't leak across cases (CodeRabbit nitpick)
- useLocaleFormat memoized per locale for stable formatter identities
  (CodeRabbit nitpick)
- settings-reference.md documents the auto reset path

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 13:02:23 -07:00
gsxdsm
0c3960373f docs(i18n): capture i18n architecture learning + settings-reference language entry
- docs/solutions/architecture-patterns/: knowledge doc covering the Vite
  code-split catalog constraint, zh-CN/zh-TW routing, three-tier language
  persistence, CLI inline-resources init, and the CI failure modes hit
- CONCEPTS.md: seed shared domain vocabulary (Surface, Global Settings,
  Three-Tier Setting, Supported Locale)
- AGENTS.md: surface docs/solutions/ and CONCEPTS.md in Reference docs
- docs/settings-reference.md: add the missing GlobalSettings.language row

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 10:22:30 -07:00
gsxdsm
d72cb2ab2b FN-5911: move agent logs to per-task JSONL storage
Store agent logs in per-task JSONL files instead of the legacy SQLite table.

- add a file-backed agent log store with JSONL append/read/prune helpers and task-scoped source refs
- migrate legacy SQLite agentLogEntries data into task files, rewrite goal citation references, and preserve soft-deleted logs for forensics
- update task store, settings, docs, dashboard route coverage, and add regression tests for migration, retention, and log access

Files changed:
 .changeset/fn-5911-agent-log-jsonl.md              |   5 +
 AGENTS.md                                          |   2 +-
 docs/diagnostics.md                                |   2 +-
 docs/settings-reference.md                         |   2 +
 docs/soft-delete-verification-matrix.md            |   7 +-
 docs/storage.md                                    |   8 +-
 .../src/__tests__/agent-log-file-store.test.ts     | 123 ++++++
 .../core/src/__tests__/agent-log-migration.test.ts | 186 +++++++++
 .../core/src/__tests__/agent-log-retention.test.ts | 208 ++++++++++
 packages/core/src/__tests__/db-migrate.test.ts     |  14 +-
 packages/core/src/__tests__/db.test.ts             |  39 +-
 .../src/__tests__/goal-citations-store.test.ts     |  38 +-
 packages/core/src/__tests__/goals-schema.test.ts   |   2 +-
 packages/core/src/__tests__/insight-store.test.ts  |  10 +-
 .../src/__tests__/merge-request-record.test.ts     |   2 +-
 packages/core/src/__tests__/mission-store.test.ts  |   2 +-
 packages/core/src/__tests__/run-audit.test.ts      |   2 +-
 packages/core/src/__tests__/secrets-schema.test.ts |   6 +-
 .../src/__tests__/soft-delete-agent-logs.test.ts   |  71 ++--
 .../src/__tests__/store-agent-log-file.test.ts     |  91 +++++
 .../core/src/__tests__/store-merge-queue.test.ts   |   2 +-
 packages/core/src/__tests__/store-test-helpers.ts  |  43 +-
 packages/core/src/__tests__/store-upsert.test.ts   |  37 +-
 packages/core/src/__tests__/task-documents.test.ts |   2 +-
 packages/core/src/agent-log-constants.ts           |  25 ++
 packages/core/src/agent-log-file-store.ts          | 267 ++++++++++++
 packages/core/src/db.ts                            |  51 ++-
 packages/core/src/settings-schema.ts               |   1 +
 packages/core/src/store.ts                         | 453 ++++++++++++---------
 packages/core/src/types.ts                         |  10 +-
 .../__tests__/agent-log-routes.integration.test.ts |  48 +++
 .../src/__tests__/evaluator-evidence.test.ts       |  47 ++-
 packages/engine/src/self-healing.ts                |  12 +
 .../src/store/__tests__/roadmap-store.test.ts      |   4 +-
 34 files changed, 1477 insertions(+), 345 deletions(-)

Fusion-Task-Id: FN-5911

Fusion-Task-Lineage: 07c42f3a-87cf-4558-8f01-ac8460b5558b
2026-06-03 01:10:18 -07:00
gsxdsm
a1b7556c7b FN-5924: throttle OAuth expiry alerts across restarts
Persist OAuth expiry alert state so repeated provider expiry warnings are suppressed for 12 hours across engine restarts.

- add a persisted OAuth alert state store under ~/.fusion/agent and share it between the expiry monitor and startup validity logger
- throttle repeated oauth-token-expired notifications and startup expiry warnings per provider for 12 hours, while clearing stale state when providers disappear or change
- cover persisted throttling, restart behavior, failure handling, and wiring updates in engine notification tests
- document the persisted 12-hour OAuth alert throttle and add a patch changeset for @runfusion/fusion

Files changed:
 .changeset/fn-5924-oauth-alert-throttle.md         |   5 +
 docs/settings-reference.md                         |   4 +-
 packages/engine/src/__tests__/project-engine-soft-delete-merge-abort.test.ts |   3 +
 packages/engine/src/__tests__/project-engine.test.ts    |  17 ++-
 packages/engine/src/__tests__/reliability-interactions/soft-delete-in-flight-abort.test.ts            |   3 +
 packages/engine/src/auth-storage.ts                |   6 +-
 packages/engine/src/notification/__tests__/oauth-alert-state.test.ts            |  72 ++++++++++
 packages/engine/src/notification/__tests__/oauth-expiry-monitor.test.ts         | 148 ++++++++++++++++---
 packages/engine/src/notification/__tests__/oauth-validity-logger.test.ts        | 159 ++++++++++++++++++---
 packages/engine/src/notification/index.ts          |   3 +
 packages/engine/src/notification/oauth-alert-state.ts   | 144 +++++++++++++++++++
 packages/engine/src/notification/oauth-expiry-monitor.ts       |  12 +-
 packages/engine/src/notification/oauth-validity-logger.ts      |  16 ++-
 packages/engine/src/project-engine.ts              |  13 +-
 14 files changed, 554 insertions(+), 51 deletions(-)

Fusion-Task-Id: FN-5924
Fusion-Task-Lineage: 83255a25-40c7-44d4-8302-b068ae51250e
2026-06-02 23:13:16 -07:00
gsxdsm
cf23c6f571 FN-5909: run configured merge bootstrap before verification
Ensure AI merge verification reuses the configured worktree bootstrap command.

- run merge dependency sync unconditionally when a non-blank worktreeInitCommand is configured
- reuse the configured init command instead of inferred package-manager install commands during merge verification
- add merger verification coverage for warm/cold worktrees, inferred-install fallback, and whitespace-only init commands
- document the expanded worktreeInitCommand behavior and add a published changeset

Files changed:
 .changeset/fn-5909-merge-install-script.md         |   5 +
 docs/settings-reference.md                         |   2 +-
 packages/engine/src/__tests__/merger-verification.test.ts      | 159 +++++++++++++++------
 packages/engine/src/merger.ts                      |  30 +++-
 4 files changed, 143 insertions(+), 53 deletions(-)

Fusion-Task-Id: FN-5909

Fusion-Task-Lineage: 8530c641-9574-45e2-b9ac-82e42c9c00a7
2026-06-02 18:43:29 -07:00
gsxdsm
a6989ed7f4 FN-5891: respect validator model settings in mission validation
Use the configured validator lane when creating mission validation sessions.

- resolve mission validation session models from test mode, assigned agent runtime, and validator/default task settings in precedence order
- surface validation session creation failures as mission validation errors instead of triggering fix-feature retries
- add regression coverage and documentation for mission validation model resolution and error handling

Files changed:
 AGENTS.md                                          |   1 +
 docs/missions.md                                   |   4 +-
 docs/settings-reference.md                         |   6 +-
 .../src/__tests__/mission-execution-loop.test.ts   | 252 ++++++++++++++++++++-
 packages/engine/src/mission-execution-loop.ts      |  63 +++++-
 5 files changed, 316 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-5891

Fusion-Task-Lineage: 6254daee-fb6b-4ebb-9fb4-3636237404b1
2026-06-02 12:38:09 -07:00
gsxdsm
130f6f1e9a FN-5834: enforce explicit developer-role compatibility for custom providers
Prevent unsupported developer-role API failures by making provider role compatibility explicit and covered by regression safeguards.

- Add explicit supportsDeveloperRole capability to custom provider metadata/types and wire it through provider registration.
- Update CLI custom-provider registration behavior and tests to persist and validate developer-role compatibility settings.
- Add/adjust engine regression coverage for openai-completions message role conversion, including reasoning-model fallback behavior.
- Document the new custom provider setting and add a published changeset for @runfusion/fusion.

Files changed:
 .changeset/fn-5834-developer-role-compat.md        |  5 ++
 docs/settings-reference.md                         |  2 +-
 packages/cli/src/commands/__tests__/custom-provider-registry.test.ts     | 44 +++++++++++-
 packages/cli/src/commands/custom-provider-registry.ts   |  9 ++-
 packages/core/src/types.ts                         |  5 ++
 packages/engine/src/__tests__/custom-providers-openai-completions.test.ts    | 84 +++++++++++-----------
 6 files changed, 106 insertions(+), 43 deletions(-)

Fusion-Task-Id: FN-5834
Fusion-Task-Lineage: 4edc80c9-5e60-41e4-bce1-662d18255d88
2026-06-01 09:05:18 -07:00
gsxdsm
f76716e55b FN-5833: fix custom Responses API model lookup
Ensure custom OpenAI Responses providers resolve configured models without requiring registry entries.

- update global settings model resolution to preserve custom provider model configuration
- adjust engine custom-provider and fn-agent creation paths to avoid false 'model not found' failures
- add regression tests for OpenAI Responses custom providers and pi create-fn-agent flows
- document the custom provider model behavior and add a changeset for @runfusion/fusion

Files changed:
 .../FN-5833-custom-provider-responses-fix.md       | 10 ++++
 docs/settings-reference.md                         |  2 +-
 packages/core/src/global-settings.ts               | 56 +++++++++----------
 packages/core/src/index.ts                         |  2 +-
 .../custom-providers-openai-responses.test.ts      | 64 ++++++++++++++++++++++
 .../engine/src/__tests__/custom-providers.test.ts  | 33 ++++++++++-
 .../src/__tests__/pi-create-fn-agent.test.ts       | 11 +++-
 packages/engine/src/custom-providers.ts            |  4 +-
 packages/engine/src/pi.ts                          | 21 +++++--
 9 files changed, 162 insertions(+), 41 deletions(-)

Fusion-Task-Id: FN-5833

Fusion-Task-Lineage: a59481cf-faf5-42b8-97ce-7b3eca27b4fb
2026-06-01 08:23:02 -07:00
gsxdsm
5930c18b4d FN-5795: send ntfy notification when agents create tasks
Add agent task-created ntfy notifications with configurable settings and coverage.

- add notification plumbing to emit a dedicated event when an agent creates a task
- extend ntfy provider/settings typing and dashboard settings coverage for the new event toggle
- add regression tests for notification service, notifier integration, and ntfy provider behavior
- add a changeset and documentation updates describing the new notification capability

Files changed:
 .changeset/fn-5795-task-created-notification.md    |  9 +++
 docs/architecture.md                               |  4 +-
 docs/settings-reference.md                         |  4 +-
 docs/storage.md                                    |  2 +-
 packages/core/src/types.ts                         |  4 +-
 .../dashboard/app/components/SettingsModal.tsx     |  1 +
 .../components/__tests__/SettingsModal.test.tsx    | 27 +++++++-
 .../src/__tests__/notification-service.test.ts     | 71 ++++++++++++++++++++++
 packages/engine/src/__tests__/notifier.test.ts     |  5 ++
 .../engine/src/__tests__/ntfy-provider.test.ts     | 32 ++++++++++
 .../src/notification/notification-service.ts       | 53 +++++++++++++++-
 packages/engine/src/notification/ntfy-provider.ts  | 21 +++++--
 12 files changed, 220 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-5795

Fusion-Task-Lineage: 4cfa3b46-8e9c-451e-ab2d-b7d5c9bf5968
2026-05-31 19:59:32 -07:00
gsxdsm
06d84905ba FN-5783: enforce branch-group autoMerge precedence for shared promotions
Honor group-level autoMerge precedence when promoting shared branch groups.

- add core/store helpers to preserve branch-group autoMerge overrides and resolve effective precedence against task/project settings
- gate branch-group promotion eligibility in engine merge coordination and emit promotion-gated audit metadata
- update dashboard planning/subtask flows for shared mission triage routing and add reliability/unit coverage
- include docs and changeset updates for branch-group autoMerge precedence behavior

Files changed:
 .../fn-5783-branch-group-automerge-precedence.md   |   5 +
 AGENTS.md                                          |   1 +
 docs/settings-reference.md                         |   2 +-
 docs/workflow-steps.md                             |   2 +
 .../core/src/__tests__/branch-group-store.test.ts  |  18 ++++
 packages/core/src/__tests__/task-merge.test.ts     |  18 ++++
 packages/core/src/index.ts                         |   1 +
 packages/core/src/mission-store.ts                 |  13 +++
 packages/core/src/store.ts                         |  17 ++++
 packages/core/src/task-merge.ts                    |   8 ++
 .../dashboard/src/__tests__/mission-e2e.test.ts    |  98 ++++++++++++++++--
 .../src/__tests__/routes-planning.test.ts          | 109 ++++++++++++++++++++-
 packages/dashboard/src/planning.ts                 |   1 +
 .../src/routes/register-planning-subtask-routes.ts |  28 ++++++
 packages/dashboard/src/subtask-breakdown.ts        |   1 +
 .../branch-group-automerge-precedence.test.ts      | 102 +++++++++++++++++++
 packages/engine/src/group-merge-coordinator.ts     |  31 +++++-
 packages/engine/src/merger.ts                      |  30 ++++--
 18 files changed, 466 insertions(+), 19 deletions(-)

Fusion-Task-Id: FN-5783

Fusion-Task-Lineage: 74327984-b14f-445c-81cd-5295ee562382
2026-05-31 15:17:11 -07:00
gsxdsm
20c1c3261e FN-5741: persist merge-request handoff shadow contract
Introduce Phase 1 write-only persistence for merge-request handoff acceptance across core and engine paths.

- add persisted merge-request record types, schema/settings plumbing, and store write-path support
- update merger/executor/self-healing/run-audit flows to emit and consume the handoff-accepted shadow marker
- expand core/engine/roadmap tests and docs to cover the new merge-request shadow contract
- add a patch changeset for @runfusion/fusion for this bundled package update

Files changed:
 .changeset/fn-5741-merge-request-shadow.md         |   5 +
 AGENTS.md                                          |   1 +
 docs/architecture.md                               |   2 +
 docs/settings-reference.md                         |   1 +
 packages/core/src/__tests__/db-migrate.test.ts     |  12 +-
 packages/core/src/__tests__/db.test.ts             |  34 ++--
 packages/core/src/__tests__/goals-schema.test.ts   |   2 +-
 packages/core/src/__tests__/insight-store.test.ts  |  10 +-
 .../src/__tests__/merge-request-record.test.ts     |  97 +++++++++++
 packages/core/src/__tests__/mission-store.test.ts  |   2 +-
 packages/core/src/__tests__/run-audit.test.ts      |   2 +-
 packages/core/src/__tests__/secrets-schema.test.ts |   6 +-
 .../core/src/__tests__/settings-parity.test.ts     |   3 +
 .../core/src/__tests__/store-merge-queue.test.ts   |   2 +-
 packages/core/src/__tests__/task-documents.test.ts |   2 +-
 packages/core/src/db.ts                            |  49 +++++-
 packages/core/src/index.ts                         |   4 +-
 packages/core/src/settings-schema.ts               |  30 ++++
 packages/core/src/store.ts                         | 189 ++++++++++++++++++++-
 packages/core/src/types.ts                         |  37 ++++
 .../src/__tests__/merger-merge-lifecycle.test.ts   |  54 ++++++
 .../merge-request-shadow-handoff.test.ts           |  74 ++++++++
 packages/engine/src/executor.ts                    |  15 +-
 packages/engine/src/merger.ts                      |  37 ++++
 packages/engine/src/run-audit.ts                   |   1 +
 packages/engine/src/self-healing.ts                |  16 +-
 .../src/store/__tests__/roadmap-store.test.ts      |   4 +-
 27 files changed, 646 insertions(+), 45 deletions(-)

Fusion-Task-Id: FN-5741

Fusion-Task-Lineage: 3fec14c3-47ff-4f14-bc02-24021518c992
2026-05-30 14:42:50 -07:00
gsxdsm
da3f4aa967 FN-5717: add per-task auto-merge override in new task form
Add a New Task form option to override auto-merge behavior per task and wire it through task creation APIs.

- add TaskForm UI state/prop support for enabling or disabling per-task auto-merge override
- pass override values through NewTaskModal and legacy task creation API payloads
- persist and validate settings.autoMerge overrides in task workflow route handling
- add dashboard and route tests covering override defaults and explicit true/false behavior
- document per-task auto-merge override behavior in dashboard and settings docs

Files changed:
 docs/dashboard-guide.md                            |  1 +
 docs/settings-reference.md                         |  2 +-
 packages/dashboard/app/api/legacy.ts               |  2 +
 packages/dashboard/app/components/NewTaskModal.tsx | 11 ++++-
 packages/dashboard/app/components/TaskForm.tsx     | 27 ++++++++++++
 .../app/components/__tests__/NewTaskModal.test.tsx | 51 ++++++++++++++++++++++
 .../dashboard/src/__tests__/routes-tasks.test.ts   | 33 ++++++++++++++
 .../src/routes/register-task-workflow-routes.ts    |  6 +++
 8 files changed, 130 insertions(+), 3 deletions(-)

Fusion-Task-Id: FN-5717

Fusion-Task-Lineage: 3bdbb561-9c6d-4f64-ad4b-ae723e73223e
2026-05-30 10:11:23 -07:00
gsxdsm
230efa1cdc FN-5644: default AI merge commit body to summarize changes
Fusion-Task-Id: FN-5644

Fusion-Task-Lineage: 5cf0133b-2a14-4bb4-a1c4-2d5bef5793bc
2026-05-28 23:45:40 -07:00
gsxdsm
f258a75162 FN-5634: fix ntfy JSON publish priority mapping
Fusion-Task-Id: FN-5634

Fusion-Task-Lineage: 20868ce3-fe31-4638-87f6-83577f46caab
2026-05-28 21:17:02 -07:00
gsxdsm
b2dce7d852 Recovery: Re-land (Close source-imported GitHub issues on ta 2026-05-28 19:49:31 -07:00
gsxdsm
c07c033d30 feat(FN-5565): merge fusion/fn-5565 2026-05-23 20:23:52 -07:00
gsxdsm
a201f56f09 feat(core): add mergeAdvanceAutoSync project setting
Schema for what the merger should do in other worktrees still checked out
on the integration branch when it advances the branch ref. Modes:
  off          — legacy (user pulls manually)
  ff-only      — fast-forward only when other worktree is clean
  stash-and-ff — Smart Pull pipeline (default)

Threads through DEFAULT_PROJECT_SETTINGS, PROJECT_SETTINGS_KEYS (auto via
Object.keys), the docs settings table, and parity + persistence tests.
Merger consumption lands in the follow-up engine change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 14:19:50 -07:00
gsxdsm
8f5c1f97ad feat(FN-5255): flip directMergeCommitStrategy default from squash to direct
Changes the default merge strategy from squash to direct by flipping `directMergeCommitStrategy` in the settings schema and types, with the core implementation in `merger-ref-update-advance.ts`. Also aligns a heartbeat executor test assertion with the FN-5060 deduplication shape.

Fusion-Task-Id: FN-5255

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
Fusion-Task-Id: FN-5255
2026-05-23 11:08:08 -07:00
gsxdsm
2a3a07a612 feat(FN-5403): merge fusion/fn-5403 2026-05-22 23:12:49 -07:00
Fusion (runfusion.ai)
9c2b61eec6 feat(FN-5204): add test mode activation across settings, engine, and dashboard
- Add core settings schema/types support for testMode with model-resolution override handling
- Enforce engine session lane overrides in test mode with targeted helper coverage
- Add dashboard settings toggle plus persistent test-mode banner and related component tests
- Update settings documentation and parity/roundtrip tests for the new test mode behavior
2026-05-22 00:15:14 -07:00
Fusion (runfusion.ai)
d04c7803e0 feat(FN-5339): trim AGENTS.md to essential rules, move detailed guidance to
Restructured AGENTS.md from a 588-line catch-all into a lean reference of essential rules by offloading deep guidance into five new/expanded doc files: agents.md, architecture.md, dashboard-guide.md, settings-reference.md, and testing.md. Also restored a missing FN-5345 lifecycle invariant in self-h

Fusion-Task-Id: FN-5339

Fusion-Task-Lineage: e1a2dc4f-ae50-46f4-acd3-8f2c3673feb4
2026-05-21 19:41:52 -07:00
Fusion (runfusion.ai)
79850b233f feat(FN-5349): add integration branch resolver with auto-recovery fallback
FN-5349 adds a dedicated integration branch resolution module (`packages/engine/src/integration-branch.ts`) replacing ad-hoc dynamic fallbacks, routes merger branch conflict resolution through it, wires auto-recovery handlers (branch-worktree, contamination) to use integration branch fallback, and w

Fusion-Task-Id: FN-5349
2026-05-21 12:04:58 -07:00
Fusion (runfusion.ai)
5f9f777630 feat(FN-5374): raise room transcript defaults and align compaction settings
Raised room transcript defaults (`messagesBefore` and `daysBefore`) in the core settings schema and updated project-level setting defaults, with corresponding documentation refresh in the settings reference. Added full test coverage for room compaction defaults, pinned room default settings in Setti

Fusion-Task-Id: FN-5374
2026-05-21 07:05:48 -07:00
Fusion (runfusion.ai)
b12ff26f36 feat(FN-5424): add opencode-go provider to settings with model refresh on k
Exposes the `opencode-go` provider via `startup-model-sync`, wires it into the daemon and serve commands, and adds a refresh-status indicator in the SettingsModal that triggers model reloading whenever the provider key is saved. Includes a changeset, settings documentation, and corresponding tests a

Fusion-Task-Id: FN-5424
2026-05-20 22:34:32 -07:00
gsxdsm
b936ab9bb5 feat(FN-5414): merge fusion/fn-5414 2026-05-20 20:15:43 -07:00
Fusion (runfusion.ai)
dbccdb1275 feat(FN-5375): enforce manifest-gated cloudflared checksum installation
Added manifest-gated checksum verification for cloudflared remote access tunnels: a pinned manifest validator (Step 1) and enforcement logic (Step 2) wired into the settings memory routes, with aligned tests and documentation covering fail-closed install behavior and pending-manifest guidance.

Fusion-Task-Id: FN-5375
2026-05-20 18:43:17 -07:00
Fusion (runfusion.ai)
fd202e9356 feat(FN-5329): remove orphan rescue and branch-recovery primitives from eng
Removes the branch-recovery CLI surface, orphan-rescue engine primitives, and their associated tests (over 1,500 lines deleted), while restoring a minimal prune-only orphan branch sweep with proper git audit mutation types. Documentation across `cli-reference.md`, `task-management.md`, and `AGENTS.m

Fusion-Task-Id: FN-5329
2026-05-20 16:43:27 -07:00
Fusion (runfusion.ai)
c60045df22 feat(FN-5223): anchor staleness and stall detectors to engine activation ti
The merge introduces an engine-activation timestamp as the staleness floor for task age calculations, replacing arbitrary wall-clock thresholds with a runtime-relative anchor. Step 1 adds settings defaults, Steps 2–4 wire the floor helper through project engine, in-process runtime, and task store hy

Fusion-Task-Id: FN-5223
2026-05-20 14:29:07 -07:00
Fusion (runfusion.ai)
22d59b5f9a feat(FN-5279): add merge integration worktree feature with settings UI and
Implements the `mergeIntegrationWorktree` setting (FN-5279) that allows tasks to reuse their own worktree as the integration root instead of spawning a separate one. Steps 1–2 added the settings schema, types, and SettingsModal surface with documentation; Step 3 wired an integration-root resolver th

Fusion-Task-Id: FN-5279
2026-05-20 09:42:40 -07:00
Fusion (runfusion.ai)
9011c2107e feat(FN-5320): canonicalize worktrunk binary name and manifest
Implements canonical worktrunk binary naming and manifest handling (FN-5320), adding a worktrunk installer that canonicalizes the executable name and manifest data, with documentation updates for architecture and settings, plus test alignments across routes, audit, and worktree acquisition fixtures.

Fusion-Task-Id: FN-5320
2026-05-20 07:44:57 -07:00
Fusion (runfusion.ai)
41c243880a docs(FN-5093): complete Step 6 — document in-review-stalled detector
Fusion-Task-Id: FN-5093
Fusion-Task-Lineage: fe96617a-88f8-4a3c-b96c-c516d2206331
2026-05-19 03:54:49 -07:00
Fusion (runfusion.ai)
20e1bb9d25 feat(FN-5091): complete Step 6 — document dependency blocked backlog health
Fusion-Task-Id: FN-5091
Fusion-Task-Lineage: f59dc7dd-abc2-4d1d-a755-1fe446314131
2026-05-19 03:21:17 -07:00
Fusion (runfusion.ai)
0b9c652619 feat(FN-5034): complete Step 6 — document stale paused todo threshold
Fusion-Task-Id: FN-5034
Fusion-Task-Lineage: 1e315656-30d8-41d2-9802-0d9e155f0ba8
2026-05-19 03:10:25 -07:00
gsxdsm
af7367ab99 feat(FN-5035): merge fusion/fn-5035 2026-05-18 18:07:53 -07:00
gsxdsm
0bf89e7813 feat(FN-5071): merge fusion/fn-5071 2026-05-18 16:08:23 -07:00
gsxdsm
cae9c6c4fc feat(FN-5064): merge fusion/fn-5064 2026-05-18 12:46:23 -07:00