Commit Graph

13320 Commits

Author SHA1 Message Date
gsxdsm
ccebe5c5cf fix(engine): keep orphaned planning recovery alive (#3399)
## Summary

Resolves merge conflicts from #3392 against current `main`.

`main` already landed the core #3386 fix via FN-8909 (`includeArchived:
false` live-row enumeration + per-task isolation). This PR rebases the
remaining #3392 refinements on top of that:

- Best-effort, secret-free audit emission (per-task and no-action)
- Distinguish `no-eligible-orphan` vs `all-attempts-failed` /
`no-finalization` no-action outcomes
- Redacted `errorType=` warn logs so poisoned-row failures cannot abort
the sweep or leak error prose

Supersedes #3392 (fork head is not writable from this environment
despite `maintainer_can_modify`).

## Test plan

- [x] `pnpm --filter @fusion/engine exec vitest run
src/__tests__/self-healing.test.ts --project engine-default --run -t
"finalizeOrphanedPlanningSegments"` — 8 passed
- [ ] CI PR checks green

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

## Summary by CodeRabbit

* **Bug Fixes**
* Improved recovery of orphaned planning segments when individual
finalization attempts fail.
* Recovery now continues successfully even if audit recording encounters
an error.
* Added clearer recovery outcomes, distinguishing cases where no
segments qualify, all attempts fail, or only some segments are
finalized.
* Warning messages now provide structured error details without exposing
sensitive information.

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

Co-authored-by: Codex <codex@openai.com>
2026-08-09 13:48:39 -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
7775000bfd fix(dashboard): silence no-empty catch warnings in planning storage
Add intentional comments to best-effort eviction/retry catch blocks so eslint no-empty no longer warns.
2026-08-09 16:27:51 -07:00
Phil Larson
a39a5116c2 fix(dashboard): preserve recommendation recovery across archive lanes (#3360)
## Summary
- align dependency-link tests with prompt-only Definition refreshes
- classify archived recommendation tasks through shared workflow-trait
lanes, including legacy and v1 compatibility
- restore deterministic recommendation tasks directly to their workflow
intake lane without invoking cold-storage unarchive

## Test plan
- `FUSION_DASHBOARD_DEEP=1 corepack pnpm --filter @fusion/dashboard exec
vitest run src/routes/__tests__/task-recommendation-routes.test.ts
src/__tests__/task-lifecycle-lanes.test.ts
app/components/__tests__/TaskDetailModal.responsive-and-dependencies.test.tsx
--silent=passed-only --reporter=dot`
- `corepack pnpm --filter @fusion/dashboard typecheck`
- `corepack pnpm --filter @fusion/dashboard build`
- `corepack pnpm exec eslint
packages/dashboard/src/routes/register-task-workflow-routes.ts
packages/dashboard/src/routes/__tests__/task-recommendation-routes.test.ts
packages/dashboard/src/task-lifecycle-lanes.ts
packages/dashboard/src/__tests__/task-lifecycle-lanes.test.ts
packages/dashboard/app/components/__tests__/TaskDetailModal.responsive-and-dependencies.test.tsx`
- `corepack pnpm check:lifecycle-columns`
- `corepack pnpm check:changesets --strict`
2026-08-09 13:22:32 -10:00
gsxdsm
9ce698699a FN-8917: add telemetry seams to merger test stores
Ensure merger test fixtures model session-usage telemetry so user-hold release coverage exercises the production lane.

- Add emitUsageEvent fakes across merger AI test stores.
- Assert the user-held branch-group member emits merger session telemetry when explicitly released.
- Document fixture requirements and expected hold-path stderr.

Files changed:
 .../src/__tests__/group-merge-coordinator.test.ts   | 21 +++++++++++++++++++++
 .../engine/src/__tests__/merger-ai-cleanup.test.ts  |  1 +
 .../merger-ai-dependency-install.slow.test.ts       |  1 +
 .../__tests__/merger-ai-push-after-merge.test.ts    |  1 +
 .../src/__tests__/merger-ai-renamed-columns.test.ts |  6 ++++++
 .../ai-merge-cleanup-enoent-idempotent.test.ts      |  1 +
 6 files changed, 31 insertions(+)

Fusion-Task-Id: FN-8917

Fusion-Task-Lineage: aab96cdb-50ec-441f-80f5-944e8e1d70ab

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 16:09:55 -07:00
gsxdsm
6bd8004ba1 FN-8915: document agent activity API contract
Publish an inspectable contract for durable agent-activity history and pagination.

- Define the route wire shape, cursor semantics, retention, and SSE recovery behavior.
- Add PostgreSQL and dashboard coverage for documented pagination and truncation guarantees.
- Link architecture and diagnostics guidance to the canonical contract and validate its prerequisite lineage.

Files changed:
 .changeset/fn-8864-agent-activity-events.md        |  2 +-
 AGENTS.md                                          |  1 +
 docs/agent-activity-contract.md                    | 94 ++++++++++++++++++++++
 docs/architecture.md                               |  2 +-
 docs/diagnostics.md                                |  2 +-
 .../agent-activity-cursor-contract.pg.test.ts      | 90 +++++++++++++++++++++
 .../src/__tests__/agent-activity-route.test.ts     | 10 +++
 .../src/__tests__/sse-agent-activity.test.ts       | 12 ++-
 scripts/check-fn-8864-ancestry.sh                  | 35 ++++++++
 9 files changed, 244 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-8915

Fusion-Task-Lineage: da3f8c96-3b58-4e6d-a413-c51bdd643f26

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 15:58:54 -07:00
gsxdsm
22711c2dbb Test update 2026-08-09 15:51:35 -07:00
gsxdsm
8a7ab1dedc FN-8911: allow direct database URLs for planning locks
Allow planning lifecycle locks to use non-pooled runtime PostgreSQL connections without a duplicate migration URL.

- Select runtime-direct endpoints for direct DATABASE_URL connections and retain migration overrides for pooled endpoints.
- Preserve lifecycle transport failures across triage retries and expose lock helpers through the core barrel.
- Document the connection behavior and add resolver, advisory-lock, and triage regression coverage.

Files changed:
 .../fn-8911-direct-database-url-planning-lock.md   |   7 +
 docs/architecture.md                               |   2 +-
 docs/multi-project.md                              |   4 +-
 .../__tests__/postgres/backend-resolver.test.ts    |  43 +++++-
 .../planning-lifecycle-advisory-lock.pg.test.ts    |  28 +++-
 packages/core/src/index.ts                         |   2 +
 packages/core/src/postgres/advisory-locks.ts       |   6 +-
 packages/core/src/postgres/backend-resolver.ts     |  29 +++-
 packages/core/src/postgres/index.ts                |   5 +
 ...ge-planning-lifecycle-transport-failure.test.ts | 159 +++++++++++++++++++++
 packages/engine/src/triage.ts                      | 100 +++++++++++--
 11 files changed, 360 insertions(+), 25 deletions(-)

Fusion-Task-Id: FN-8911
Fusion-Task-Lineage: ac2ec0d6-f409-40ba-a678-6dd7da7006dd
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 15:24:21 -07:00
gsxdsm
3aa32a846c FN-8910: allow held tasks to remediate review findings
Allow pre-merge remediation to proceed under project-level merge holds while preserving task-level operator holds.

- Restrict remediation holds to operator-authored task-level auto-merge settings
- Record remediation and revision-budget refusals for parked review tasks
- Keep fire-and-forget remediation failures in their review lane
- Cover shared-branch recovery behavior and document the policy

Files changed:
 .changeset/fn-8910-premerge-remediation-hold.md    |  7 ++
 docs/workflow-steps.md                             |  2 +
 packages/core/src/__tests__/task-merge.test.ts     | 44 ++++++-------
 packages/core/src/merge/task-merge.ts              | 20 +++---
 .../__tests__/executor-graph-requeue-gate.test.ts  | 60 ++++++++++++++++-
 ...cutor-live-branch-group-auto-merge-hold.test.ts | 63 ++++++++++++++++--
 .../workflow-graph-optional-step-fix.test.ts       | 24 +++++--
 .../src/__tests__/workflow-task-runtime.test.ts    | 10 ++-
 packages/engine/src/executor.ts                    | 76 ++++++++++++++++++----
 9 files changed, 244 insertions(+), 62 deletions(-)

Fusion-Task-Id: FN-8910

Fusion-Task-Lineage: b5e10f87-67cf-4acf-b125-91be5ade17a8

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 15:16:12 -07:00
gsxdsm
6bd178bdcf FN-8864: add durable agent activity stream
Add a persisted, project-scoped agent activity feed with query and live delivery surfaces.

- Store sequenced, attributed activity events with privacy-safe metadata and retention.

- Emit activity across agents, workflow execution, reviews, approvals, merges, and recovery.

- Provide paginated API history and resilient SSE tailing with coverage and documentation.

- Renumber the activity migration to 0049 after reconciling main’s 0048 GitHub check-state migration.

Files changed:

 .changeset/fn-8864-agent-activity-events.md        |   7 +
 docs/architecture.md                               |   8 +
 docs/diagnostics.md                                |   4 +
 docs/storage.md                                    |   1 +
 .../__tests__/agent-activity-attribution.test.ts   |  21 +
 .../agent-activity-metadata-hygiene.test.ts        |  60 +++
 .../src/__tests__/agent-activity-writers.test.ts   |  94 +++++
 .../postgres/agent-activity-events.pg.test.ts      |  57 +++
 .../src/__tests__/postgres/schema-applier.test.ts  |  34 +-
 packages/core/src/agents/agent-store.ts            |  24 ++
 packages/core/src/agents/approval-request-store.ts |  15 +-
 packages/core/src/index.ts                         |   4 +
 .../0049_fn_8864_agent_activity_events.sql         |  24 ++
 packages/core/src/postgres/schema-applier.ts       |  15 +-
 packages/core/src/postgres/schema/project.ts       |  19 +-
 packages/core/src/store.ts                         |  17 +
 .../core/src/task-store/agent-activity-outbox.ts   |  75 ++++
 .../src/task-store/async/async-agent-activity.ts   |  71 ++++
 packages/core/src/types.ts                         |   2 +
 packages/core/src/types/agents/agents.ts           |  79 ++++
 packages/dashboard/app/api.ts                      |  54 +++
 .../src/__tests__/agent-activity-route.test.ts     |  68 ++++
 .../src/__tests__/sse-agent-activity.test.ts       | 315 +++++++++++++++
 packages/dashboard/src/routes/README.md            |   2 +-
 .../src/routes/register-setup-activity-routes.ts   |  19 +-
 packages/dashboard/src/sse.ts                      | 139 ++++++-
 .../src/__tests__/agent-activity-writers.test.ts   | 442 +++++++++++++++++++++
 packages/engine/src/executor.ts                    | 110 ++++-
 packages/engine/src/merger.ts                      |  15 +-
 packages/engine/src/self-healing.ts                |  35 +-
 30 files changed, 1809 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-8864
Fusion-Task-Lineage: 4938f35b-a0bc-4eb3-905c-178fed859cc6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 14:39:17 -07:00
gsxdsm
3ca5d4d643 FN-8913: prioritize older tasks in hold-release scheduling
Rank eligible hold-release candidates by priority, age, and task ID to prevent newer work from starving older peers.

- Reuse the core priority-age-ID comparator for hold-release evaluation.
- Add regression coverage for priority, age, dependency, and overlap scheduling behavior.
- Document the production hold-release fairness order and add a patch changeset.

Files changed:
 .changeset/fn-8913-older-first-scheduling.md       |   7 ++
 docs/architecture.md                               |   4 +-
 .../hold-release-priority-age-order.test.ts        | 113 +++++++++++++++++++++
 .../__tests__/scheduler-overlap-starvation.test.ts |  76 ++++++++++++++
 packages/engine/src/execution/hold-release.ts      |  17 +++-
 5 files changed, 212 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-8913

Fusion-Task-Lineage: 89910df9-9d3a-404c-85fa-f0797e8fa001

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 14:23:24 -07:00
gsxdsm
ad91795dac FN-8843: assign eligible executors to new tasks
Assign durable executor ownership during shared task intake.

- Resolve eligible executor owners for API, dashboard, and reserved-ID task creation.
- Preserve explicit assignments, reject invalid owners, and audit unresolved ownerless intake.
- Cover routing and PostgreSQL intake behavior with regression tests and document the contract.

Files changed:
 .changeset/fn-8843-intake-agent-assignment.md      |   7 +
 docs/architecture.md                               |   6 +
 docs/workflow-steps.md                             |  12 +-
 .../postgres/create-task-reserved-id.pg.test.ts    | 187 +++++++++++++++
 .../__tests__/task-intake-owner-resolver.test.ts   | 141 ++++++++++++
 packages/core/src/store.ts                         |  29 ++-
 packages/core/src/task-store/task-creation.ts      | 251 +++++++++++++++++----
 .../core/src/tasks/task-intake-owner-resolver.ts   | 239 ++++++++++++++++++++
 .../dashboard/src/__tests__/routes-tasks.test.ts   |  47 ++++
 .../__tests__/task-create-intake-owner.pg.test.ts  | 195 ++++++++++++++++
 .../src/routes/register-task-workflow-routes.ts    |  12 +-
 .../src/__tests__/workflow-agent-routing.test.ts   |  19 +-
 .../engine/src/agents/workflow-agent-router.ts     |  37 ++-
 13 files changed, 1120 insertions(+), 62 deletions(-)

Fusion-Task-Id: FN-8843

Fusion-Task-Lineage: b94728b4-d9e8-4a26-8fbc-7096eb797839

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 14:12:49 -07:00
gsxdsm
c1c41ac60a FN-8909: isolate orphaned planning segment recovery failures
Keep planning-time recovery active when archived or soft-deleted tasks retain timing anchors.

- Restrict orphaned planning segment candidates to live, non-archived tasks.
- Isolate per-task and sweep failures so poisoned rows do not abort healthy finalization.
- Add PostgreSQL and unit regressions for archived, deleted, and racing rows.
- Add a patch changeset for the recovery fix.

Files changed:
 .../fn-8909-orphaned-planning-segment-sweep.md     |   7 ++
 ...phaned-planning-segment-poisoned-row.pg.test.ts |  91 ++++++++++++++++++
 packages/engine/src/__tests__/self-healing.test.ts |  75 +++++++++++++++
 packages/engine/src/self-healing.ts                | 103 +++++++++++++--------
 4 files changed, 237 insertions(+), 39 deletions(-)

Fusion-Task-Id: FN-8909

Fusion-Task-Lineage: 247867ea-90ce-4768-b21c-2441788170f3

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 13:51:52 -07:00
gsxdsm
e72d9da1f7 FN-8907: hide Promote for planning tasks
Prevent planning-stage task cards from exposing an action that cannot safely advance work.

- Gate the Promote action and related cost-row layout on planning state.
- Cover planning, approval, replan, and planned hold-card render paths.
- Add a patch changeset for the dashboard behavior fix.

Files changed:
 .changeset/fn-8907-promote-planning.md             |  7 ++
 packages/dashboard/app/components/TaskCard.tsx     | 18 +++-
 .../__tests__/TaskCard.cost-badge.test.tsx         |  3 +-
 .../__tests__/TaskCard.footer-wrap.test.tsx        |  2 +-
 .../app/components/__tests__/TaskCard.test.tsx     | 97 ++++++++++++++++++++--
 5 files changed, 116 insertions(+), 11 deletions(-)

Fusion-Task-Id: FN-8907

Fusion-Task-Lineage: d64aaa0a-6675-4c59-9b21-7fd82f20ecfa

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 12:17:03 -07:00
gsxdsm
29bb6d0dc2 FN-8868: restore durable agent activity telemetry
Restore Activity telemetry for durable agent sessions.

- Emit session-start and usage events across durable agent lanes.
- Count durable agent sessions and user messages in Activity analytics.
- Cover lifecycle wiring and telemetry persistence with tests.

Files changed: .../fn-8868-durable-agent-activity-telemetry.md    |   7 +
 docs/dashboard-guide.md                            |   8 +-
 .../message-store-user-message-telemetry.test.ts   |  73 ++++++++++
 ...mmand-center-activity-durable-agents.pg.test.ts | 158 +++++++++++++++++++++
 packages/core/src/board/activity-analytics.ts      |  12 +-
 packages/core/src/stores/message-store.ts          |  16 +++
 packages/core/src/task-store/async/async-events.ts |  11 ++
 .../dashboard/src/__tests__/chat-manager.test.ts   |  88 ++++++++++++
 packages/dashboard/src/chat.ts                     |  17 +++
 .../__tests__/agent-usage-telemetry-lanes.test.ts  |  84 +++++++++++
 .../__tests__/agent-usage-telemetry-wiring.test.ts | 119 ++++++++++++++++
 .../src/__tests__/agent-usage-telemetry.test.ts    |  33 +++++
 .../engine/src/__tests__/executor-prompt.test.ts   |   8 ++
 packages/engine/src/__tests__/merger-ai.test.ts    |  11 ++
 .../src/__tests__/merger-merge-lifecycle.test.ts   |  21 ++-
 packages/engine/src/__tests__/reviewer.test.ts     |  58 +++++++-
 .../src/__tests__/step-session-executor.test.ts    |  37 ++++-
 packages/engine/src/__tests__/triage.test.ts       |  31 ++++
 packages/engine/src/agent-heartbeat.ts             |  43 ++++++
 packages/engine/src/agents/agent-logger.ts         |  30 +++-
 .../engine/src/agents/agent-usage-telemetry.ts     |  30 ++++
 packages/engine/src/execution/reviewer.ts          |  41 +++++-
 .../engine/src/execution/step-session-executor.ts  |  12 ++
 packages/engine/src/executor.ts                    |  27 +++-
 packages/engine/src/merge/merger-ai.ts             |   7 +
 packages/engine/src/merger.ts                      | 120 +++++++++++++++-
 packages/engine/src/triage.ts                      |   5 +
 27 files changed, 1085 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-8868

Fusion-Task-Lineage: 0aa2ee4e-4d40-4adc-a510-bf8f4b1c0233

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 10:28:24 -07:00
gsxdsm
5108cfc312 FN-8906: scope Stats runtime-status assertions
Scope Task Detail Stats status assertions to their semantic region.

- Centralize the shared Stats runtime-status assertion helper.
- Update Stats-tab integration assertions to avoid ambiguous status queries.

Files changed:
 ...lModal.inline-editing-and-integrations.test.tsx | 10 ++++++++--
 .../__tests__/TaskDetailModal.rendering.test.tsx   | 19 ++----------------
 .../__tests__/TaskDetailModal.test-helpers.ts      | 23 +++++++++++++++++++++-
 3 files changed, 32 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-8906
Fusion-Task-Lineage: 980f24a1-0409-46ba-9957-a87329e9831e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 10:03:49 -07:00
gsxdsm
6ee8994767 FN-8881: test Planning Mode image import parity
Cover Planning Mode image-context import behavior at both responsive breakpoints.

- Exercise desktop and mobile Planning Mode actions with image-bearing issue comments.
- Assert provider metadata and every image-bearing body are forwarded without a client-side cap.

Files changed:
 .../__tests__/GitHubImportModal.test.tsx           | 58 ++++++++++++++--------
 1 file changed, 36 insertions(+), 22 deletions(-)

Fusion-Task-Id: FN-8881

Fusion-Task-Lineage: e14cf0a6-a967-46ff-9d65-3e4fabbf9f45

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 09:21:29 -07: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
673b962dfe FN-8904: fix GitHub PR conflict route tests
Align PR merge route mocks with the pre-flight readiness check.

- Add coverage for pre-flight merge blockers and missing head commits
- Sequence refreshed status mocks for post-failure conflict diagnostics
- Document the two-stage merge-status contract

Files changed:
 .../dashboard/src/__tests__/routes-github.test.ts  | 181 ++++++++++++++++-----
 .../dashboard/src/routes/register-git-github.ts    |  10 +-
 2 files changed, 140 insertions(+), 51 deletions(-)

Fusion-Task-Id: FN-8904

Fusion-Task-Lineage: dabf463f-4f04-47a7-8ccb-7b158adaa767

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 08:56:18 -07:00
gsxdsm
b6af36916e FN-8877: import GitHub issue images into planning mode
Planning Mode now preserves eligible GitHub issue and comment images through task creation.

- Capture image-bearing issue and cached comment bodies when starting Planning Mode.
- Persist validated image URLs with planning provenance and attach them after task creation.
- Bound browser transport and server downloads while covering the import flow with regression tests.

Files changed:
 .../fn-8877-planning-issue-image-attachments.md    |   7 ++
 docs/dashboard-guide.md                            |   4 +-
 .../dashboard/app/components/GitHubImportModal.tsx |  43 +++++--
 .../__tests__/GitHubImportModal.test.tsx           | 111 ++++++++++++++++++
 .../src/__tests__/issue-image-attachments.test.ts  |  33 +++++-
 .../planning-body-parser-integration.test.ts       |  58 ++++++++++
 .../__tests__/planning-e2e-plan-creation.test.ts   |  34 ++++++
 .../__tests__/routes-planning-issue-images.test.ts | 127 +++++++++++++++++++++
 .../src/__tests__/routes-planning-tracking.test.ts |   3 +
 packages/dashboard/src/issue-image-attachments.ts  |  37 ++++--
 packages/dashboard/src/issue-image-markup.ts       |   6 +
 packages/dashboard/src/planning.ts                 |  31 ++++-
 .../src/routes/register-planning-subtask-routes.ts |  28 ++++-
 packages/dashboard/src/server.ts                   |  33 ++++--
 14 files changed, 518 insertions(+), 37 deletions(-)

Fusion-Task-Id: FN-8877

Fusion-Task-Lineage: 057a8a2b-1c0f-4502-9fb3-7ee136d39563

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 08:31:26 -07:00
gsxdsm
661b2cf7b3 FN-8899: document unified AI merge path
Clarify that approved work is merged exclusively through the clean-room AI merge workflow.

- Replace the legacy merger entry point with runAiMerge in the architecture overview.
- Mark aiMergeTask as retained, soft-deprecated, and inert.

Files changed:
 docs/architecture.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Fusion-Task-Id: FN-8899

Fusion-Task-Lineage: 03436366-3f48-46c7-908e-ff97843b81d9

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 07:22:31 -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
gsxdsm
98ad663011 FN-8872: add structural mail reports from chat
Add a report-oriented mail workflow that turns completed chat responses into structured, reviewable messages.

- Render structural report items with dedicated visual treatment and tests across mail surfaces.
- Add report-mode composer fields and route Send as report handoffs from completed chat responses.
- Document the mail/chat workflow and publish a Fusion changeset.

Files changed:
 .changeset/fn-8872-structural-mail-ui.md           |   7 +
 docs/dashboard-guide.md                            |   3 +
 packages/dashboard/app/App.tsx                     |   9 +
 packages/dashboard/app/components/ChatView.tsx     |  36 ++--
 packages/dashboard/app/components/MailboxModal.tsx |  28 ++-
 .../app/components/MailboxStructuralItem.css       |  73 +++++++
 .../app/components/MailboxStructuralItem.tsx       | 100 ++++++++++
 packages/dashboard/app/components/MailboxView.tsx  |  50 ++++-
 .../dashboard/app/components/MessageComposer.css   |  18 ++
 .../dashboard/app/components/MessageComposer.tsx   |  57 +++++-
 .../__tests__/ChatMailReportRouting.test.tsx       | 144 ++++++++++++++
 .../__tests__/ChatView.send-as-report.test.tsx     |  96 +++++++++
 .../__tests__/MailboxStructuralItem.test.tsx       |  90 +++++++++
 .../MailboxStructuralMail.surfaces.test.tsx        | 217 +++++++++++++++++++++
 .../app/components/__tests__/MailboxView.test.tsx  |  28 +++
 .../__tests__/MessageComposer.report-mode.test.tsx | 106 ++++++++++
 .../components/__tests__/chatReportHandoff.test.ts |  26 +++
 .../dashboard/app/components/chatReportHandoff.ts  |  65 ++++++
 .../app/components/dashboard/MainContent.tsx       |   4 +
 .../dashboard/app/components/dashboard/types.ts    |   3 +
 20 files changed, 1135 insertions(+), 25 deletions(-)

Fusion-Task-Id: FN-8872

Fusion-Task-Lineage: 55e4bf5e-e7f3-48a5-8084-4090ab24710a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 06:07:01 -07:00
gsxdsm
3d6a908b95 FN-8898: document inert prerebase settings
Clarify that legacy prerebase settings are inert on the production merge path.

- Mark retained prerebase configuration and audit events as legacy-only.
- Add a static validator and tests preventing new prerebase callers.
- Update merge architecture, testing, and settings documentation.

Files changed:
 AGENTS.md                                          |   2 +-
 docs/architecture.md                               |   3 +-
 docs/settings-reference.md                         |   6 +-
 docs/testing.md                                    |   2 +-
 package.json                                       |   6 +-
 packages/core/src/types/settings/settings-scope.ts |  32 +++--
 .../src/errors/transient-merge-error-classifier.ts |  12 +-
 packages/engine/src/merge/merger-auto-prerebase.ts |  12 +-
 packages/engine/src/util/run-audit.ts              |   2 +
 scripts/__tests__/check-prerebase-inert.test.mjs   |  73 +++++++++++
 scripts/__tests__/run-static-gate-checks.test.mjs  |   1 +
 scripts/__tests__/verify-fast.test.mjs             |   1 +
 scripts/check-prerebase-inert.mjs                  | 146 +++++++++++++++++++++
 scripts/lib/source-projection.mjs                  |  87 ++++++++++++
 14 files changed, 359 insertions(+), 26 deletions(-)

Fusion-Task-Id: FN-8898

Fusion-Task-Lineage: 9cfd836d-17c2-44a0-a076-56fef0917935

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 06:01:02 -07:00
gsxdsm
94470d27ca FN-8876: harden graph-owned executor test mocks
Align executor test fixtures with graph-owned session routing.

- Route executor harnesses through durable and ephemeral graph agents.
- Select implementation sessions by their task-completion tool.
- Guard lifecycle tests against review-only and empty captures.

Files changed:
 .../engine/src/__tests__/executor-prompt.test.ts   | 389 ++++++++++-----------
 .../src/__tests__/executor-step-session.test.ts    | 185 ++++++----
 .../engine/src/__tests__/executor-test-helpers.ts  |  87 ++---
 3 files changed, 344 insertions(+), 317 deletions(-)

Fusion-Task-Id: FN-8876

Fusion-Task-Lineage: d89eeb54-0910-4dfb-890d-5f570afa9186

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 05:54:57 -07:00
gsxdsm
74b4de3d19 FN-8883: migrate executor tests to StepSessionExecutor seam
Route executor lifecycle tests through graph-owned StepSessionExecutor fixtures.

- Add reusable workflow routing, worktree refresh, and implementation-session test helpers
- Update executor prompt, step-session, pause, and completion assertions for graph-owned sessions
- Document the graph executor fixture seams for focused verification

Files changed:
 docs/testing.md                                    |   3 +
 .../__tests__/ephemeral-task-create-gate.test.ts   |  29 +-
 .../engine/src/__tests__/executor-prompt.test.ts   | 417 ++++++++++++---------
 .../src/__tests__/executor-review-verdicts.test.ts |   2 +-
 .../executor-step-numbering-zero-based.test.ts     |  23 +-
 .../src/__tests__/executor-step-session.test.ts    | 152 ++++++--
 .../executor-task-done-summary.test.ts             |  14 +-
 .../engine/src/__tests__/executor-test-helpers.ts  |  65 +++-
 8 files changed, 468 insertions(+), 237 deletions(-)

Fusion-Task-Id: FN-8883

Fusion-Task-Lineage: 7ebbee52-fe43-4e18-b0e9-2253911a0acb

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 04:59:15 -07:00
gsxdsm
2643f4e567 FN-8884: enable GitHub-native PR auto-merge
Enable opt-in GitHub-managed auto-merge for pull requests.

- Add a project setting and dashboard control for GitHub native auto-merge.
- Arm individual, group, dashboard, and workflow PRs with `gh pr merge --auto` or GraphQL, including while checks are pending.
- Preserve deferred PR reconciliation, unavailable-feature errors, project-scoped runtime configuration, tests, documentation, and a release changeset.

Files changed:
 .changeset/fn-8884-github-native-auto-merge.md     |   7 +
 docs/settings-reference.md                         |   5 +
 packages/cli/src/commands/__tests__/daemon.test.ts |  16 +++
 packages/cli/src/commands/__tests__/serve.test.ts  |  14 ++
 .../src/commands/__tests__/task-lifecycle.test.ts  | 158 +++++++++++++++++++++
 packages/cli/src/commands/daemon.ts                |  11 +-
 packages/cli/src/commands/dashboard.ts             |  11 +-
 packages/cli/src/commands/serve.ts                 |  11 +-
 packages/cli/src/commands/task-lifecycle.ts        |  45 ++++--
 .../core/src/__tests__/settings-defaults.test.ts   |   4 +
 packages/core/src/config/settings-schema.ts        |   1 +
 packages/core/src/types/settings/settings-scope.ts |   8 ++
 .../settings/__tests__/section-keys.test.ts        |   1 +
 .../app/components/settings/section-keys.ts        |   1 +
 .../components/settings/sections/MergeSection.tsx  |  14 +-
 .../settings-default-descriptions.test.tsx         |   1 +
 .../src/__tests__/github-native-auto-merge.test.ts | 114 +++++++++++++++
 .../src/__tests__/routes-pr-merge.test.ts          |  84 +++++++++++
 packages/dashboard/src/github.ts                   |  88 +++++++++++--
 packages/dashboard/src/index.ts                    |   2 +-
 .../dashboard/src/routes/register-git-github.ts    |  33 +++--
 .../project-engine-deferred-startup.test.ts        |  21 +++
 packages/engine/src/project-engine-manager.ts      |   2 +
 packages/engine/src/project-engine.ts              |   6 +
 packages/engine/src/project/project-runtime.ts     |   6 +
 packages/engine/src/runtimes/in-process-runtime.ts |   9 +-
 packages/i18n/locales/en/app.json                  |   4 +-
 27 files changed, 634 insertions(+), 43 deletions(-)

Fusion-Task-Id: FN-8884

Fusion-Task-Lineage: cf1b1ea4-7ef7-4050-bd87-25933456a5b6

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 04:50:30 -07:00
gsxdsm
c60a11607f FN-8856: bound scheduler hold-release sweep work
Keep hold-release scheduling and dashboard health checks responsive under PostgreSQL load.

- Batch and cache workflow-selection reads for each hold-release pass.
- Bound sweep execution, prevent overlapping project passes, and expose sweep instrumentation.
- Time-bound PostgreSQL health probes and add regression coverage.

Files changed:
 .changeset/fn-8856-hold-release-sweep-bounded.md   |   7 +
 docs/architecture.md                               |   6 +
 docs/diagnostics.md                                |   4 +
 .../__tests__/workflow-ir-selection-cache.test.ts  |  77 ++++
 packages/core/src/index.ts                         |   2 +
 packages/core/src/store.ts                         |   6 +-
 .../core/src/task-store/workflow-definitions.ts    |  25 ++
 .../core/src/workflows/workflow-ir-resolver.ts     |  27 +-
 .../__tests__/dashboard-postgres-health.test.ts    |  76 ++++
 .../dashboard/src/dashboard-postgres-health.ts     |  34 +-
 .../__tests__/hold-release-instrumentation.test.ts |  34 ++
 .../hold-release-sweep-bounded-db-work.test.ts     | 467 +++++++++++++++++++++
 packages/engine/src/execution/hold-release.ts      | 391 +++++++++--------
 packages/engine/src/scheduler.ts                   |  56 ++-
 14 files changed, 1021 insertions(+), 191 deletions(-)

Fusion-Task-Id: FN-8856

Fusion-Task-Lineage: 5fa55d95-0760-4c4d-8c6c-6e1805109b3c

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 04:37:47 -07:00
gsxdsm
e945723903 FN-8897: strengthen executor graph-routing test harnesses
Ensure executor tests verify graph-routed implementation sessions instead of passing vacuously.

- Add helpers that select sessions exposing the implementation completion tool.
- Assert routed runs reach graph review and unrouted runs suspend before session creation.
- Cover graph routing in review-verdict and worktree-liveness fixtures.

Files changed:
 .../src/__tests__/executor-review-verdicts.test.ts | 46 +++++++++++++++++++---
 .../engine/src/__tests__/executor-test-helpers.ts  | 18 +++++++++
 .../__tests__/executor-worktree-liveness.test.ts   | 45 ++++++++++++++++++---
 3 files changed, 99 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-8897

Fusion-Task-Lineage: a8feb7fc-599a-4bdf-a423-f39ed620c5d8

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 04:24:47 -07:00
gsxdsm
cf171bc4b2 FN-8900: rescue deterministic Kimi K3 catalog test
Rescue Kimi K3 route coverage with a deterministic bundled-catalog registry seam.

- Use pi-ai's real Kimi catalog without live registry refresh.
- Restore route merge and deduplication coverage and remove the paired quarantine records.
- Document the measured refresh stall and preserve the existing timeout budget.

Files changed:
 docs/testing.md                                    |  3 +-
 packages/dashboard/package.json                    |  1 +
 .../src/__tests__/_kimi-model-catalog-fixture.ts   | 40 +++++++++
 ...ister-model-routes-kimi-k3-supplemental.test.ts | 75 ++++++-----------
 packages/dashboard/vitest.config.ts                | 19 ++---
 pnpm-lock.yaml                                     | 98 +++++++++++++++++-----
 scripts/lib/test-quarantine.json                   |  5 --
 7 files changed, 153 insertions(+), 88 deletions(-)

Fusion-Task-Id: FN-8900

Fusion-Task-Lineage: 6d4986ed-bc93-479f-85fb-510d17ced4b5

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 03:47:56 -07:00
gsxdsm
7c034f4862 FN-8888: emit approval mail for triage pauses
Route triage approval pauses through the shared structural-mail helper.

- Pass the runtime message store into triage processing.
- Emit idempotent, fail-soft approval mail when triage pauses for approval.
- Cover triage approval-mail delivery and publish the feature changeset.

Files changed:
 .changeset/fn-8888-triage-approval-mail.md         |   7 ++
 .../src/__tests__/approval-mail-emission.test.ts   | 101 +++++++++++++++++++++
 packages/engine/src/runtimes/in-process-runtime.ts |   1 +
 packages/engine/src/triage.ts                      |  14 +++
 4 files changed, 123 insertions(+)

Fusion-Task-Id: FN-8888

Fusion-Task-Lineage: f0970c59-abca-4081-b213-c9aec0833416

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 03:15:00 -07:00
gsxdsm
c9f8c3d7dd FN-8896: route executor harnesses through graph agent store
Migrate executor test harnesses to exercise graph principal routing.

- Add routing-aware executor fixtures backed by the workflow agent store.
- Assert executor sessions route a principal before opening.
- Mock worktree acquisition phases so liveness tests reach containment gates.

Files changed:
 .../src/__tests__/executor-review-verdicts.test.ts | 60 +++++++++++++++----
 .../__tests__/executor-worktree-liveness.test.ts   | 68 +++++++++++++++++++---
 2 files changed, 108 insertions(+), 20 deletions(-)

Fusion-Task-Id: FN-8896

Fusion-Task-Lineage: 3b01ccb3-2900-4cc8-8439-09c0127d8476

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 02:50:06 -07:00
gsxdsm
7745c59e63 FN-8880: align shared-member recovery consent tests
Align recovery expectations with the shared-member consent policy.

- Hold non-opted-in shared members when project auto-merge is off.
- Cover explicit per-task auto-merge opt-in during startup and self-healing recovery.
- Document the project-off consent rule for branch-group members.

Files changed:
 AGENTS.md                                          |  2 +-
 docs/architecture.md                               |  4 +-
 packages/engine/src/__tests__/project-engine.test.ts    | 41 +++++++++++------
 packages/engine/src/__tests__/self-healing.test.ts | 51 +++++++++++++++++++---
 4 files changed, 75 insertions(+), 23 deletions(-)

Fusion-Task-Id: FN-8880

Fusion-Task-Lineage: 3118064d-59ca-4c2e-89a8-442ee8876cf8

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 02:41:02 -07:00
gsxdsm
7c4b29f642 FN-8895: harden group merge coordinator store fakes
Ensure group-merge coordinator tests exercise the production store seams without warning suppression.

- Provide scoped settings and branch-group task fake methods used by promotion evaluation
- Await promotion evaluation and fail the fixture on missing-store-method warnings
- Assert branch-group task lookup is reached during the merge drain

Files changed:
 packages/engine/src/__tests__/group-merge-coordinator.test.ts | 59 ++++++++++++++++++----
 1 file changed, 49 insertions(+), 10 deletions(-)

Fusion-Task-Id: FN-8895

Fusion-Task-Lineage: 99748c07-2083-41f9-b776-da644bf1857a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 02:28:33 -07:00
gsxdsm
ef99dcd1b0 FN-8894: model advancing clocks in oversight tests
Ensure TaskDetailModal mutation fixtures mirror server update timestamps.

- Add an advancing-clock task fixture helper for mutation responses
- Update desktop and mobile oversight control mocks to use newer task snapshots
- Cover equal-clock merge behavior and document the fixture contract

Files changed:
 docs/testing.md                                    |  6 ++
 .../TaskDetailModal.oversight-controls.test.tsx    | 74 +++++++++++++++++++++-
 .../TaskDetailModal.oversight-mobile.test.tsx      |  3 +-
 .../__tests__/TaskDetailModal.test-helpers.ts      | 15 +++++
 4 files changed, 94 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-8894

Fusion-Task-Lineage: 614eb85a-0fbf-4f44-a08d-347f2511499b

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 02:23:54 -07:00
gsxdsm
ccf2ffe93d FN-8854: document rebase settings and configuration audits
Document the worktree rebase controls and configuration audit surfaces.

- Describe worktree rebase defaults, remote resolution, and legacy pipeline reachability
- Explain configuration revisions and Activity Log query contracts
- Add source-aligned documentation contract coverage

Files changed:
 docs/diagnostics.md                                | 22 ++++-
 docs/settings-reference.md                         | 15 ++++
 .../configuration-audit-documentation.test.ts      | 94 ++++++++++++++++++++++
 3 files changed, 130 insertions(+), 1 deletion(-)

Fusion-Task-Id: FN-8854

Fusion-Task-Lineage: 5807280f-e1da-4847-8337-1c27c8ed695f

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 02:06:44 -07:00
gsxdsm
555316c12f FN-8892: test responsive status badge fallbacks
Cover lifecycle badge fallback behavior across AppModals status surfaces.

- Verify authoritative status refreshes replace stale Planning labels with In Progress lifecycle badges.
- Exercise board, desktop list, mobile list, and detail modal status renderers.
- Isolate task cache and viewport mocks for deterministic responsive assertions.

Files changed:
 .../app/components/__tests__/AppModals.test.tsx    | 145 ++++++++++++++++++++-
 1 file changed, 140 insertions(+), 5 deletions(-)

Fusion-Task-Id: FN-8892

Fusion-Task-Lineage: 34ccda74-3f29-4bc3-8221-f44983a97a5e

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 02:01:05 -07:00
gsxdsm
56e330f66e FN-8887: fix dependency link test hydration
Align TaskDetailModal dependency tests with the full-task hydration contract.

- Assert that full task details skip mount fetches before dependency navigation
- Cover unscoped dependency requests and slim-task hydration before link fetches
- Preserve click, keyboard, failure, and blocking-link assertions with scoped mocks

Files changed:
 ...etailModal.responsive-and-dependencies.test.tsx | 94 +++++++++++++++++-----
 1 file changed, 73 insertions(+), 21 deletions(-)

Fusion-Task-Id: FN-8887

Fusion-Task-Lineage: db910342-4cde-418c-99fa-c0f19498d5e2

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 01:45:52 -07:00
gsxdsm
4cb7bea967 FN-8882: add merge-lane fixture drift test
Prevent unseeded ProjectEngine merge-lane fields from causing prototype fake TypeErrors.

- Inspect the auto-merge state block for declared fields
- Require fixture defaults or documented drain-path exclusions for each field

Files changed:
 ...project-engine-merge-lane-fixture-drift.test.ts | 55 ++++++++++++++++++++++
 1 file changed, 55 insertions(+)

Fusion-Task-Id: FN-8882

Fusion-Task-Lineage: c5cb270d-d988-43e7-a554-7f9bc8770c5c

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 01:40:34 -07:00
gsxdsm
d59c1b162f FN-8855: enforce configured PR checks before merging
Add configurable Fusion-side PR check gating across merge surfaces.

- Add project required-check settings, validation, UI controls, CLI support, and operator documentation.
- Evaluate configured checks before dashboard and CLI PR merges, accepting successful, skipped, and neutral checks.
- Bind merges to the evaluated PR head SHA to prevent push-and-merge races.
- Cover required-check policy and head-SHA merge behavior with tests.

Files changed:
 .changeset/fn-8855-required-checks.md              |   7 +
 docs/dashboard-guide.md                            |   5 +
 docs/settings-reference.md                         |   1 +
 .../src/commands/__tests__/task-lifecycle.test.ts  |  30 ++++-
 packages/cli/src/commands/task-lifecycle.ts        |  17 ++-
 .../core/src/__tests__/required-checks.test.ts     |  16 +++
 packages/core/src/config/index.ts                  |   1 +
 packages/core/src/config/required-checks.ts        |  16 +++
 packages/core/src/config/settings-schema.ts        |   1 +
 packages/core/src/index.ts                         |   1 +
 packages/core/src/types.ts                         |   6 +
 packages/core/src/types/settings/settings-scope.ts |   6 +
 packages/core/src/types/task/task-tracking.ts      |   5 +
 .../settings/__tests__/section-keys.test.ts        |   1 +
 .../app/components/settings/section-keys.ts        |   1 +
 .../settings/sections/MergeSection.search.ts       |   3 +
 .../components/settings/sections/MergeSection.tsx  |  30 ++++-
 .../__tests__/MergeSection.requiredChecks.test.tsx |  50 +++++++
 .../settings-default-descriptions.test.tsx         |   1 +
 packages/dashboard/src/__tests__/github.test.ts    | 123 +++++++++++++++++
 packages/dashboard/src/github.ts                   | 149 +++++++++++++--------
 .../dashboard/src/routes/register-git-github.ts    |  38 ++++--
 .../src/routes/register-task-workflow-routes.ts    |   8 +-
 packages/i18n/locales/en/app.json                  |   4 +-
 24 files changed, 441 insertions(+), 79 deletions(-)

Fusion-Task-Id: FN-8855

Fusion-Task-Lineage: 708e9c27-72be-4925-bf09-5db421bcaa67

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 01:33:06 -07:00
gsxdsm
2809fcb608 FN-8886: fix Git Manager mobile CSS contract tests
Aligns Git Manager mobile CSS assertions with the documented phone breakpoint.

- Target Git Manager assertions at the <768px media query.
- Require stable Git Manager selectors before checking phone layout rules.

Files changed:
 .../__tests__/core-modals-mobile.test.tsx          | 30 ++++++++++++++++------
 1 file changed, 22 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-8886

Fusion-Task-Lineage: d0de1f25-49db-4674-8d2b-302feb2ebc2a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 01:06:19 -07:00
gsxdsm
601a63709c FN-8878: strengthen mobile FloatingWindow overflow coverage
Protect the shared mobile FloatingWindow sheet overflow contract with focused regression coverage.

- Assert common full-screen geometry for chat, GitHub Import, and Task Detail sheets.
- Verify Task Detail reasserts clipping on phones while other sheets inherit base clipping.
- Prevent visible-overflow overrides for chat and GitHub Import mobile sheets.

Files changed:
 .../__tests__/GitHubImportModal.test.tsx           | 65 ++++++++++++++++++++--
 1 file changed, 59 insertions(+), 6 deletions(-)

Fusion-Task-Id: FN-8878

Fusion-Task-Lineage: b631876b-f6a1-4562-8edb-bb77a414f249

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 00:55:03 -07:00
gsxdsm
2d52908d52 FN-8879: preserve local task detail patches
Keep locally authored task-detail updates visible without weakening server snapshot freshness.

- Add a local patch helper that preserves lifecycle guards only for explicitly stale patches.
- Apply id-less local detail updates in modal, split-detail, and main-panel views while rejecting foreign task ids.
- Cover equal-clock, lifecycle, and split-detail patch behavior with dashboard tests.
- Add a patch changeset for visible PR and review updates.

Files changed:
 .changeset/fn-8879-detail-task-patch.md            |  7 ++
 packages/dashboard/app/components/ListView.tsx     | 15 +++--
 .../app/components/__tests__/ListView.test.tsx     | 21 ++++++
 .../app/components/dashboard/MainContent.tsx       |  6 +-
 .../MainContent.detail-task-patch.test.tsx         | 77 ++++++++++++++++++++++
 .../app/hooks/__tests__/useModalManager.test.ts    | 42 ++++++++++++
 .../__tests__/useTasks-hydration-freshness.test.ts | 61 ++++++++++++++++-
 packages/dashboard/app/hooks/useModalManager.ts    | 15 +++--
 packages/dashboard/app/hooks/useTasks.ts           | 45 +++++++++++++
 9 files changed, 275 insertions(+), 14 deletions(-)

Fusion-Task-Id: FN-8879

Fusion-Task-Lineage: 7166b597-c4c7-491a-a9d8-856fa820865e

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 00:47:50 -07:00
gsxdsm
9c43736794 FN-8870: add structural approval and report mail
Add typed report and approval metadata to the mailbox contract.

- Define and validate structural mail kinds, report sections, and approval references.
- Let agents send validated reports while reserving approval mail for engine emission.
- Emit idempotent, fail-soft approval notifications and document the contract.

Files changed:
 .changeset/fn-8870-structural-mail-contract.md     |   7 ++
 docs/agents.md                                     |   2 +
 docs/architecture.md                               |   4 +
 .../message-metadata-structural-mail.test.ts       |  25 ++++
 packages/core/src/index.gate.ts                    |   2 +-
 packages/core/src/index.ts                         |   2 +-
 packages/core/src/types.ts                         |  30 +++++
 packages/core/src/types/messaging/messages.ts      |  21 ++++
 ...gent-tools-send-message-structural-mail.test.ts |  34 +++++
 .../src/__tests__/approval-mail-emission.test.ts   | 137 +++++++++++++++++++++
 packages/engine/src/agent-heartbeat.ts             |   3 +
 packages/engine/src/agent-tools.ts                 |  28 ++++-
 packages/engine/src/agents/approval-mail.ts        |  40 ++++++
 packages/engine/src/executor.ts                    |   3 +
 14 files changed, 334 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-8870

Fusion-Task-Lineage: 7d30b2f9-c004-4975-86b1-9600e2c8d76f

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 00:41:18 -07:00
gsxdsm
0e8d743064 FN-8867: prevent false task wedge notifications
Prevent stale terminal snapshots and pause markers from notifying for progressing tasks.

- Reclassify the live task immediately before claiming wedge episodes.
- Require actual pause state for pause-derived wedge reasons.
- Cover resumed-task races and stale pause markers with notification tests.
- Document the wedge notification behavior and add a patch changeset.

Files changed:
 .changeset/fn-8867-wedge-false-terminal-alerts.md  |   7 ++
 docs/agents.md                                     |   2 +-
 docs/architecture.md                               |   2 +-
 .../__tests__/notification-service.test.ts         |   9 +-
 .../__tests__/task-wedge-notification.test.ts      | 102 +++++++++++++++++++--
 .../src/notification/notification-service.ts       |  22 +++--
 .../src/notification/task-wedge-notification.ts    |  22 ++++-
 7 files changed, 137 insertions(+), 29 deletions(-)

Fusion-Task-Id: FN-8867

Fusion-Task-Lineage: c92c7735-e8b9-4979-8028-10a0555810f1

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-09 00:01:44 -07:00
gsxdsm
ec52a9131a FN-8859: add native roadmap embeds to chat
Enable roadmap structures to open, preview, and embed directly from chat and dashboard views.

- Register roadmap views as native structures with chat-reference support.
- Add composer previews, in-place dashboard embedding, and drag-safe interactions.
- Document the native-structure plugin contract and add coverage across supported surfaces.

Files changed:
 .changeset/fn-8859-roadmap-native-structure-embeds.md     |   7 +
 docs/PLUGIN_AUTHORING.md                           |   1 +
 docs/dashboard-guide.md                            |   6 +-
 packages/dashboard/app/components/MessageComposer.tsx   |  16 +-
 packages/dashboard/app/components/__tests__/MessageComposer.test.tsx  | 102 ++++++++++-
 packages/dashboard/app/components/__tests__/overflowViewRegistry.test.tsx | 68 +++++++-
 packages/dashboard/app/components/dashboard/MainContent.tsx | 22 ++-
 packages/dashboard/app/components/dashboard/__tests__/MainContent.native-structure-roadmap.test.tsx | 188 +++++++++++++++++++++
 packages/dashboard/app/components/nativeStructureChatRef.ts | 4 +-
 packages/dashboard/app/components/overflowViewRegistry.tsx | 34 ++--
 packages/dashboard/app/plugins/types.ts            |  10 +-
 packages/dashboard/app/utils/__tests__/nativeStructureDrag.test.ts | 46 +++--
 packages/dashboard/app/utils/nativeStructureDrag.ts | 18 +-
 plugins/fusion-plugin-roadmap/src/dashboard-view.tsx | 7 +-
 plugins/fusion-plugin-roadmap/src/dashboard/RoadmapsView.tsx | 22 ++-
 plugins/fusion-plugin-roadmap/src/dashboard/__tests__/RoadmapsView.test.tsx | 51 ++++++
 16 files changed, 560 insertions(+), 42 deletions(-)

Fusion-Task-Id: FN-8859

Fusion-Task-Lineage: 99a7292b-2a06-4325-8131-ca74431214e3

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-08 23:54:40 -07:00
gsxdsm
0a2fe913c6 FN-8863: fix standalone pre-merge remediation holds
Allow standalone tasks to recover from failed pre-merge steps when project auto-merge is disabled.

- Add a remediation-specific auto-merge hold for shared members and explicit user holds.
- Restore Plan Review replans and Code Review fix handoffs for standalone tasks.
- Cover hold behavior and document the operator-consent policy.

Files changed:
 .changeset/fn-8863-remediation-auto-merge-hold.md  |   7 ++
 docs/dashboard-guide.md                            |   2 +-
 packages/core/src/__tests__/task-merge.test.ts     |  38 ++++++++
 packages/core/src/index.gate.ts                    |   1 +
 packages/core/src/index.ts                         |   1 +
 packages/core/src/merge/task-merge.ts              |  18 ++++
 ...cutor-live-branch-group-auto-merge-hold.test.ts |  27 ++++++
 .../workflow-graph-optional-step-fix.test.ts       | 106 +++++++++++++++++++++
 packages/engine/src/executor.ts                    |  16 +++-
 9 files changed, 212 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-8863

Fusion-Task-Lineage: 930bf37a-3173-4a3b-84ca-575f7f5d94b9

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-08 23:34:41 -07:00
gsxdsm
8ee6eff9cd FN-8871: seed complete merge-lane state in coordinator tests
Ensure group-merge coordinator fakes initialize production merge-lane state.

- Add a reusable fixture for ProjectEngine merge-lane fields.
- Use the fixture in the group-merge routing integration test.
- Include capacity and PR-retry state required by the production drain.

Files changed:
 .../_project-engine-merge-lane-fixture.ts          | 62 ++++++++++++++++++++++
 .../src/__tests__/group-merge-coordinator.test.ts  | 15 +++---
 2 files changed, 69 insertions(+), 8 deletions(-)

Fusion-Task-Id: FN-8871

Fusion-Task-Lineage: 9bde0439-fa88-481b-a7f3-9feb7e663883

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-08 23:24:23 -07:00
gsxdsm
fb125b6f5e FN-8852: exclude heartbeat writes from revision history
Prevent liveness bookkeeping from evicting real settings changes while making revision history pageable.

- Exclude engineLastActiveAt from project revision snapshots and preserve its live value during rollback.
- Add validated limit/offset paging with hasMore to configuration revision stores and the API.
- Cover heartbeat filtering, rollback compatibility, and paging contracts; document the behavior and add a patch changeset.

Files changed:
 .changeset/fn-8852-config-revision-heartbeat.md    |   7 +
 docs/settings-reference.md                         |   4 +
 docs/storage.md                                    |   6 +
 .../__tests__/configuration-revision-store.test.ts | 178 ++++++++++++++++++++-
 .../configuration-revision-heartbeat.pg.test.ts    | 118 ++++++++++++++
 .../async-configuration-revision-store.ts          |  46 ++++--
 .../src/config/configuration-revision-store.ts     |   9 +-
 packages/core/src/config/global-settings.ts        |   2 +-
 packages/core/src/config/settings-schema.ts        |  20 +++
 packages/core/src/index.gate.ts                    |   2 +-
 packages/core/src/index.ts                         |   2 +-
 packages/core/src/task-store/task-mutation-ops.ts  |  24 ++-
 packages/core/src/types.ts                         |   6 +
 packages/core/src/types/settings/settings-scope.ts |   3 +
 .../register-org-portability-routes.test.ts        |  19 ++-
 .../src/routes/register-org-portability-routes.ts  |  18 ++-
 16 files changed, 437 insertions(+), 27 deletions(-)

Fusion-Task-Id: FN-8852

Fusion-Task-Lineage: 46d5ac9d-d2c0-4294-a5f7-d228fcb341c9

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-08 23:16:01 -07:00