dependabot[bot]
df0b295454
chore(deps): bump actions/setup-java from 4 to 5.6.0 ( #3303 )
...
Bumps [actions/setup-java](https://github.com/actions/setup-java ) from 4
to 5.6.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-java/releases ">actions/setup-java's
releases</a>.</em></p>
<blockquote>
<h2>v5.6.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Backport to v5: Add Maven compiler problem matcher for javac
diagnostics by <a
href="https://github.com/brunoborges "><code>@brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1087 ">actions/setup-java#1087</a></li>
<li>feat: expose cache-primary-key output (<a
href="https://redirect.github.com/actions/setup-java/issues/597 ">#597</a>)
[v5 backport] by <a
href="https://github.com/brunoborges "><code>@brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1089 ">actions/setup-java#1089</a></li>
<li>dist: Cover Tencent Kona JDK 25 (<a
href="https://redirect.github.com/actions/setup-java/issues/1108 ">#1108</a>)
[v5 backport] by <a
href="https://github.com/brunoborges "><code>@brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1110 ">actions/setup-java#1110</a></li>
<li>Backport <a
href="https://redirect.github.com/actions/setup-java/issues/1111 ">#1111</a>:
Preserve Maven toolchains across repeated setup-java runs (<a
href="https://redirect.github.com/actions/setup-java/issues/1099 ">#1099</a>)
by <a
href="https://github.com/brunoborges "><code>@brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1113 ">actions/setup-java#1113</a></li>
<li>Backport <a
href="https://redirect.github.com/actions/setup-java/issues/1097 ">#1097</a>/<a
href="https://redirect.github.com/actions/setup-java/issues/1098 ">#1098</a>
to v5: cache Maven and Gradle wrapper distributions separately by <a
href="https://github.com/brunoborges "><code>@brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1122 ">actions/setup-java#1122</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-java/compare/v5...v5.6.0 ">https://github.com/actions/setup-java/compare/v5...v5.6.0 </a></p>
<h2>v5.5.0</h2>
<h2>What's Changed</h2>
<ul>
<li>chore: enforce pre-PR validation (aggregate scripts, git hooks, PR
checklist) by <a
href="https://github.com/brunoborges "><code>@brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1061 ">actions/setup-java#1061</a></li>
<li>Bump github/codeql-action from 3 to 4 by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-java/pull/1069 ">actions/setup-java#1069</a></li>
<li>Bump actions/checkout from 6 to 7 by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-java/pull/1068 ">actions/setup-java#1068</a></li>
<li>Bump actions/setup-python from 5 to 6 by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-java/pull/1067 ">actions/setup-java#1067</a></li>
<li>Bump <code>@typescript-eslint/parser</code> from 8.61.1 to 8.62.0
by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-java/pull/1062 ">actions/setup-java#1062</a></li>
<li>feat: Add verify-signature plumbing and Temurin+Microsoft
verification support by <a
href="https://github.com/johnoliver "><code>@johnoliver</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/1060 ">actions/setup-java#1060</a></li>
<li>Updated jetbrains test: https.request() now catches errors. This
fixes leaking tests as well by <a
href="https://github.com/jmjaffe37 "><code>@jmjaffe37</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/1070 ">actions/setup-java#1070</a></li>
<li>Fix arm64 e2e workflow tests mislabeled as x64 by <a
href="https://github.com/brunoborges "><code>@brunoborges</code></a>
with <a href="https://github.com/Copilot "><code>@Copilot</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1073 ">actions/setup-java#1073</a></li>
<li>feat: suppress Maven transfer progress via MAVEN_ARGS by default
(add show-download-progress input) by <a
href="https://github.com/brunoborges "><code>@brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1053 ">actions/setup-java#1053</a></li>
<li>feat: Disable interactiveMode in generated Maven settings.xml by <a
href="https://github.com/brunoborges "><code>@brunoborges</code></a>
with <a href="https://github.com/Copilot "><code>@Copilot</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1052 ">actions/setup-java#1052</a></li>
<li>Bump prettier from 3.6.2 to 3.9.1 by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-java/pull/1066 ">actions/setup-java#1066</a></li>
<li>chore(deps-dev): bump eslint-plugin-jest from 29.0.1 to 29.15.4 by
<a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-java/pull/1074 ">actions/setup-java#1074</a></li>
<li>fix: Maven Toolchains grows unexpectedly by <a
href="https://github.com/Okeanos "><code>@Okeanos</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/534 ">actions/setup-java#534</a></li>
<li>dist: Support Tencent Kona JDK by <a
href="https://github.com/johnshajiang "><code>@johnshajiang</code></a>
in <a
href="https://redirect.github.com/actions/setup-java/pull/672 ">actions/setup-java#672</a></li>
<li>feat: Add set-default option by <a
href="https://github.com/gsmet "><code>@gsmet</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/1017 ">actions/setup-java#1017</a></li>
<li>docs: document problem matcher (and how to disable it), Maven
Wrapper caching, and generated interactiveMode by <a
href="https://github.com/brunoborges "><code>@brunoborges</code></a> in
<a
href="https://redirect.github.com/actions/setup-java/pull/1075 ">actions/setup-java#1075</a></li>
<li>feat: Add distribution detection support to .sdkmanrc file by <a
href="https://github.com/lukaszgyg "><code>@lukaszgyg</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/975 ">actions/setup-java#975</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/jmjaffe37 "><code>@jmjaffe37</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/1070 ">actions/setup-java#1070</a></li>
<li><a href="https://github.com/gsmet "><code>@gsmet</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/1017 ">actions/setup-java#1017</a></li>
<li><a href="https://github.com/lukaszgyg "><code>@lukaszgyg</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-java/pull/975 ">actions/setup-java#975</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-java/compare/v5...v5.5.0 ">https://github.com/actions/setup-java/compare/v5...v5.5.0 </a></p>
<h2>v5.4.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump <code>@typescript-eslint/parser</code> from 8.48.0 to 8.61.1
by <a
href="https://github.com/dependabot "><code>@dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-java/pull/1021 ">actions/setup-java#1021</a></li>
<li>Fix codeql workflow permissions by <a
href="https://github.com/jsoref "><code>@jsoref</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/993 ">actions/setup-java#993</a></li>
<li>fix CodeQL permissions by <a
href="https://github.com/gdams "><code>@gdams</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/1025 ">actions/setup-java#1025</a></li>
<li>fix: reject non-semver candidate versions in isVersionSatisfies by
<a href="https://github.com/sproctor "><code>@sproctor</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/1009 ">actions/setup-java#1009</a></li>
<li>Bump <code>@actions/cache</code> to 5.1.0, handle cache write
denied by <a
href="https://github.com/jasongin "><code>@jasongin</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/1026 ">actions/setup-java#1026</a></li>
<li>Add Maven Wrapper cache feature by <a
href="https://github.com/mahabaleshwars "><code>@mahabaleshwars</code></a>
in <a
href="https://redirect.github.com/actions/setup-java/pull/1027 ">actions/setup-java#1027</a></li>
<li>Spelling by <a
href="https://github.com/jsoref "><code>@jsoref</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/713 ">actions/setup-java#713</a></li>
<li>add link to advanced configuration for JetBrains by <a
href="https://github.com/robstoll "><code>@robstoll</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/850 ">actions/setup-java#850</a></li>
<li>docs(action): fix missing required or default fields by <a
href="https://github.com/kranthipoturaju "><code>@kranthipoturaju</code></a>
in <a
href="https://redirect.github.com/actions/setup-java/pull/1007 ">actions/setup-java#1007</a></li>
<li>feat: add microsoft openjdk 17.0.18 by <a
href="https://github.com/al-kau "><code>@al-kau</code></a> in <a
href="https://redirect.github.com/actions/setup-java/pull/1002 ">actions/setup-java#1002</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="03ad4de099 "><code>03ad4de</code></a>
Backport <a
href="https://redirect.github.com/actions/setup-java/issues/1097 ">#1097</a>/<a
href="https://redirect.github.com/actions/setup-java/issues/1098 ">#1098</a>:
cache Maven and Gradle wrapper distributions separately...</li>
<li><a
href="d229d2e858 "><code>d229d2e</code></a>
Backport <a
href="https://redirect.github.com/actions/setup-java/issues/1111 ">#1111</a>:
Preserve Maven toolchains across repeated setup-java runs (<a
href="https://redirect.github.com/actions/setup-java/issues/1 ">#1</a>...</li>
<li><a
href="bbf0f69670 "><code>bbf0f69</code></a>
dist: Cover Tencent Kona JDK 25 (<a
href="https://redirect.github.com/actions/setup-java/issues/1110 ">#1110</a>)</li>
<li><a
href="513edc4f87 "><code>513edc4</code></a>
feat: expose cache-primary-key output (<a
href="https://redirect.github.com/actions/setup-java/issues/597 ">#597</a>)
[v5 backport] (<a
href="https://redirect.github.com/actions/setup-java/issues/1089 ">#1089</a>)</li>
<li><a
href="62df799a9c "><code>62df799</code></a>
Add Maven compiler problem matcher for javac diagnostics (<a
href="https://redirect.github.com/actions/setup-java/issues/1087 ">#1087</a>)</li>
<li><a
href="176156a187 "><code>176156a</code></a>
chore: bump version to 5.6.0 for v5 release line</li>
<li><a
href="bf7b8deac2 "><code>bf7b8de</code></a>
build: rebuild dist for backported changes (<a
href="https://redirect.github.com/actions/setup-java/issues/1079 ">#1079</a>,
<a
href="https://redirect.github.com/actions/setup-java/issues/1083 ">#1083</a>,
<a
href="https://redirect.github.com/actions/setup-java/issues/1084 ">#1084</a>)</li>
<li><a
href="0173e6dd1b "><code>0173e6d</code></a>
Infer distribution from asdf .tool-versions vendor prefix (<a
href="https://redirect.github.com/actions/setup-java/issues/1084 ">#1084</a>)</li>
<li><a
href="f45cd82b67 "><code>f45cd82</code></a>
Rename jdkFile input to jdk-file with deprecated alias (<a
href="https://redirect.github.com/actions/setup-java/issues/1083 ">#1083</a>)</li>
<li><a
href="e2863ad499 "><code>e2863ad</code></a>
Map Zulu x86 architecture to i686 for Azul Metadata API (<a
href="https://redirect.github.com/actions/setup-java/issues/1079 ">#1079</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/setup-java/compare/v4...v5.6.0 ">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores )
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: gsxdsm <gsxdsm@users.noreply.github.com >
2026-08-01 22:35:17 -07:00
gsxdsm
cfc63fc8f5
FN-8724: stabilize hydration freshness tests
...
Make the useTasks hydration freshness coverage deterministic and restore it to the dashboard suite.
- Control the system clock for hydration fixtures and flush async updates without advancing time.
- Remove the rescued test from the dashboard exclusion list and quarantine ledger.
Files changed:
.../__tests__/useTasks-hydration-freshness.test.ts | 30 ++++++++++++++--------
packages/dashboard/vitest.config.ts | 8 ------
scripts/lib/test-quarantine.json | 5 ----
3 files changed, 19 insertions(+), 24 deletions(-)
Fusion-Task-Id: FN-8724
Fusion-Task-Lineage: 1d764e2c-0975-4d26-92c6-187a6a94caee
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 20:30:16 -07:00
gsxdsm
546a19aef6
chore(release): v0.74.0-beta.7
...
Version bump via changesets.
2026-08-01 20:22:07 -07:00
gsxdsm
4fb873f465
FN-8722: fix GitHub Import sheet spacing
...
Fix standalone GitHub Import content alignment on mobile and short sheet viewports.
- Remove the standalone resize-handle gutter when the FloatingWindow sheet contract applies.
- Add fixture and browser-smoke coverage for standalone, embedded, and detail import layouts.
- Document the shared short-height sheet geometry behavior and add a patch changeset.
Files changed:
.changeset/fn-8722-github-import-mobile-spacing.md | 7 ++
docs/dashboard-guide.md | 3 +-
.../__tests__/browser-layout-smoke-fixture.test.ts | 17 +++++
.../dashboard/app/components/FloatingWindow.css | 12 ++++
.../__tests__/GitHubImportModal.test.tsx | 18 +++++
.../dashboard/scripts/browser-layout-smoke.mjs | 78 ++++++++++++++++++++++
6 files changed, 134 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-8722
Fusion-Task-Lineage: cc812078-b0b5-4223-9435-ed77d80f2b47
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 20:04:41 -07:00
Phil Larson
fab2b3a7b1
fix(i18n): restore reverted-task locale parity ( #3302 )
...
## Summary
- add reverted-task resolution keys to every secondary app catalog
- restore structural locale parity after the reverted-task dashboard UI
landed
- include labeled patch release metadata
## Test plan
- `pnpm --filter @fusion/i18n test`
- `pnpm i18n:status`
- `pnpm check:changesets -- --strict`
- `pnpm build`
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Localization**
* Added localized labels for reverted tasks, resolution actions,
revision actions, and related task titles in French, Korean, Simplified
Chinese, and Traditional Chinese.
* Added Spanish locale entries for consistent support of these task
actions.
* Improved terminology coverage across supported secondary locales.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2026-08-01 19:18:15 -07:00
gsxdsm
9e0f29abc9
fix: durable parks for file-claim and PR blockers (FN-8700)
...
Classify blocked exits so check-file-claimed / open-PR collisions never
auto-replan. Park failed with externalBlockers metadata (pr:N supported),
promote BLOCKED session logs instead of incomplete-step requeue, thrash-
exhaust after 3 identical durable blocks, and clear parks when gh reports
blocking PRs merged or closed.
2026-08-01 18:34:42 -07:00
gsxdsm
af138d73ee
test: harden engine fixtures after lane and session refactors
...
Scope stuck-requeue merge-base failure to the task-branch proof so setup
still reaches the session; loosen MCP coverage to allow let session
rebinding; mock getRootDir for stranded-hold capacity; and expect the
scheduler parked-role site to use awaited resolveTaskParkedColumns after
FN-8656.
2026-08-01 18:21:19 -07:00
gsxdsm
400c640c85
fix: stop inactive DUPLICATE replan loop (FN-8704)
...
After one free needs-replan clear of an inactive DUPLICATE marker, a
re-emit of the same dismissed canonical parks status failed
(DUPLICATE_REPLAN_EXHAUSTED) so triage no longer re-admits the card.
Tracks clear count in sourceMetadata; self-healing mirrors triage.
2026-08-01 17:48:29 -07:00
gsxdsm
66052d4178
test(FN-slow): replace real 400ms waits in ListView refetch tests with fake timers
...
Convert three real-timer 400ms wall waits in the unmapped-workflow forced-refetch
negative-assertion tests to deterministic vi.useFakeTimers()/advanceTimersByTimeAsync
advances, removing ~1.2s of dead wall-time while preserving the REVERT CHECK semantics
(a regression that armed a RETRY_DELAY_MS retry would still fire and fail).
Fusion-Task-Id: FN-slow
2026-08-01 17:15:04 -07:00
gsxdsm
6d176a9372
FN-8721: reconcile census, delegation routing, and archive repair
...
Align lifecycle census coverage while routing delegated work to workflow-ready lanes and safely repairing archived tasks.
- Route delegated tasks through the selected workflow's hold or entry column.
- Scope soft-deleted archive repairs by project and protect them with compare-and-set updates.
- Refresh lifecycle-column census detection, baseline, documentation, and coverage.
Files changed:
docs/testing.md | 21 +++---
.../u15-engine-dashboard-consumers.test.ts | 31 ++++++++-
.../core/src/task-store/archive-lifecycle-2.ts | 5 ++
.../core/src/task-store/async-archive-lineage.ts | 5 ++
packages/core/src/task-store/async-persistence.ts | 11 ++++
packages/core/src/task-store/async-self-healing.ts | 76 +++++++++++++++-------
.../src/__tests__/agent-tools-delegation.test.ts | 43 +++++++++++-
.../__tests__/lifecycle-column-census-ast.test.ts | 20 ++++++
.../src/__tests__/lifecycle-column-census.test.ts | 29 ++++++---
packages/engine/src/agent-tools.ts | 29 +++++++--
scripts/lib/lifecycle-column-census-ast.mjs | 21 +++++-
scripts/lib/lifecycle-column-census-baseline.json | 17 ++---
scripts/lifecycle-column-census.mjs | 3 +-
13 files changed, 245 insertions(+), 66 deletions(-)
Fusion-Task-Id: FN-8721
Fusion-Task-Lineage: ff78481f-5ecb-4d9b-b21a-a095682372ed
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 16:57:49 -07:00
gsxdsm
54c2c1e666
FN-8719: fix stale milestone validation badges
...
Keep persisted milestone validation rollups and dashboard badges synchronized after assertion changes.
- Reconcile assertion mutations and validation rollups atomically within each project.
- Prevent stale rollup and telemetry responses from overwriting newer milestone state.
- Cover repaired and removed failure states with PostgreSQL and dashboard tests.
Files changed:
.changeset/fn-8719-milestone-validation-rollup.md | 7 +
docs/missions.md | 4 +
.../__tests__/postgres/mission-store.pg.test.ts | 61 +++++++
packages/core/src/async-mission-store.ts | 142 ++++++++++------
.../dashboard/app/components/MissionManager.tsx | 108 ++++++++----
.../MissionManager.validation-rollup.test.tsx | 181 +++++++++++++++++++++
6 files changed, 416 insertions(+), 87 deletions(-)
Fusion-Task-Id: FN-8719
Fusion-Task-Lineage: c505211c-935a-4ad3-b35d-81c486e56121
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 14:38:45 -07:00
gsxdsm
3b633512d8
FN-8707: recover noisy mission validator JSON
...
Recover bounded, valid mission validator payloads amid ordinary response formatting noise.
- Extract bounded, string-aware fenced and balanced JSON candidates and prefer the final valid payload.
- Conservatively repair trailing commas and missing closing delimiters while retaining fail-closed assertion validation.
- Cover recovery and irreparable-response behavior, document the safety bounds, and add a patch changeset.
Files changed:
.../fn-8707-mission-validator-json-recovery.md | 7 +
docs/missions.md | 2 +
.../src/__tests__/mission-execution-loop.test.ts | 74 ++++++++-
packages/engine/src/mission-execution-loop.ts | 183 +++++++++++++++------
4 files changed, 204 insertions(+), 62 deletions(-)
Fusion-Task-Id: FN-8707
Fusion-Task-Lineage: 0eb5e5c0-a520-4485-9f54-0376a47a5b5e
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 13:37:23 -07:00
gsxdsm
bf173dad7c
FN-8696: keep reverted tasks out of Done
...
Keep reverted tasks out of completed views and give every task-detail host a revision recovery path.
- Exclude reverted tasks from complete columns and group them in dedicated recovery lists.
- Provide Delete and Revise actions in cards, lists, docks, modals, and popped-out details.
- Add localized copy, documentation, regression coverage, and a patch changeset.
Files changed:
.changeset/fn-8696-reverted-task-resolution.md | 7 ++++
docs/dashboard-guide.md | 4 ++
packages/dashboard/app/App.tsx | 2 +
packages/dashboard/app/components/AppModals.tsx | 2 +
packages/dashboard/app/components/Board.tsx | 42 +++++++++++++++++++-
packages/dashboard/app/components/DockTaskList.tsx | 21 +++++++++-
packages/dashboard/app/components/ListView.tsx | 18 +++++++++
packages/dashboard/app/components/TaskCard.css | 4 ++
packages/dashboard/app/components/TaskCard.tsx | 9 +++++
.../dashboard/app/components/TaskDetailModal.tsx | 18 ++++++++-
.../app/components/__tests__/Board.test.tsx | 46 ++++++++++++++++++++++
.../app/components/__tests__/DockTaskList.test.tsx | 29 +++++++++++++-
.../app/components/dashboard/MainContent.tsx | 4 ++
.../app/components/overflowViewRegistry.tsx | 3 ++
.../app/components/useRightDockController.tsx | 9 +++++
.../app/utils/__tests__/taskRevert.test.ts | 16 +++++++-
packages/dashboard/app/utils/taskRevert.ts | 18 +++++++++
packages/i18n/locales/en/app.json | 3 ++
18 files changed, 249 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-8696
Fusion-Task-Lineage: 7c9550fb-ef8e-4422-8ec1-0de1665413a3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 13:30:18 -07:00
gsxdsm
529ab26ba4
FN-8695: fix dashboard assertion CRUD validation
...
Restore dashboard assertion status edits and deletes for store-generated IDs.
- Validate assertion route IDs against the MissionStore-generated format while preserving legacy IDs.
- Dispatch assertion deletes through the shared confirmation handler and surface request failures.
- Cover current ID CRUD routes and desktop/mobile deletion behavior.
Files changed:
.changeset/fn-8695-assertion-id-validation.md | 7 ++
docs/missions.md | 2 +-
.../dashboard/app/components/MissionManager.tsx | 51 ++++++++---
.../MissionManager.delete-confirm.test.tsx | 99 ++++++++++++++++++++
.../mission-assertion-id-validation.test.ts | 100 +++++++++++++++++++++
packages/dashboard/src/mission-routes.ts | 8 +-
6 files changed, 249 insertions(+), 18 deletions(-)
Fusion-Task-Id: FN-8695
Fusion-Task-Lineage: b7e2d70f-d3c7-4fdd-92f6-989cf414570b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 13:10:26 -07:00
gsxdsm
1e67e87321
FN-8702: fix Git Manager phone sheet spacing
...
Make Git Manager use the standalone phone layout only below the 768px boundary.
- Remove the hidden resize-handle gutter from Git Manager phone sheets
- Preserve embedded, tablet, and desktop Git Manager geometry
- Add responsive layout smoke fixtures and regression coverage
- Document the phone-sheet behavior and add a patch changeset
Files changed:
.changeset/fn-8702-git-manager-mobile-spacing.md | 7 +
docs/dashboard-guide.md | 5 +-
.../__tests__/browser-layout-smoke-fixture.test.ts | 23 ++++
.../dashboard/app/components/FloatingWindow.css | 12 ++
packages/dashboard/app/components/ScriptsModal.css | 10 +-
.../components/__tests__/GitManagerModal.test.tsx | 31 +++--
packages/dashboard/scripts/browser-layout-smoke.mjs| 143 +++++++++++++++++++++
7 files changed, 211 insertions(+), 20 deletions(-)
Fusion-Task-Id: FN-8702
Fusion-Task-Lineage: 52473a8a-d3a7-48d2-b768-fc2f6fcd18b9
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 13:03:34 -07:00
gsxdsm
fdd2bf2418
fix: prevent queued badge icon clipping on tablets
2026-08-01 12:58:29 -07:00
gsxdsm
5d06c92b77
FN-8713: handle missing auth-status query data
...
Keep auth-status available when direct callers omit credential-instance query data.
- Default absent request query data to an empty selection.
- Preserve validation and prevent dangling instances from falling back to other credentials.
- Add coverage for omitted, valid, and dangling credential-instance queries.
- Add a patch changeset for the auth-status fix.
Files changed:
.changeset/fn-8713-auth-status-query.md | 7 +++
.../register-auth-routes-hermes-additive.test.ts | 67 ++++++++++++++++++++--
.../dashboard/src/routes/register-auth-routes.ts | 9 ++-
3 files changed, 77 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-8713
Fusion-Task-Lineage: 0bcb965e-0606-4c7b-aefc-e7e3461ae75d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 12:53:07 -07:00
gsxdsm
494362cd23
FN-8697: preserve redacted failed-tool diagnostics
...
Persist safe error detail so operators can diagnose repeated executor tool failures.
- Redact and retain failed-tool diagnostics even when tool output persistence is disabled.
- Cover redaction, disclosure independence, inert rendering, and retry-backoff normalization.
Files changed:
.../__tests__/AgentLogViewer.rendering.test.tsx | 29 +++++++++++++++++
.../src/__tests__/agent-logger-diagnostics.test.ts | 38 ++++++++++++++++++++++
packages/engine/src/__tests__/agent-logger.test.ts | 4 +--
.../__tests__/executor-tool-failure-retry.test.ts | 22 ++++++++++++-
packages/engine/src/agent-logger.ts | 11 +++++--
5 files changed, 99 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8697
Fusion-Task-Lineage: 5ed900b6-a42b-4ad7-9270-47053295e6e1
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 12:48:30 -07:00
gsxdsm
39368f4bb8
FN-8694: add content-addressed validation memoization
...
Memoizes mission validation inputs and bounds repeat failures.
- Persist validator input fingerprints and atomically admit validation runs.
- Reuse unchanged static passes while enforcing per-fingerprint failure budgets.
- Add migration coverage, execution-loop tests, and operator documentation.
Files changed:
.changeset/fn-8694-validation-memoization.md | 7 +
docs/missions.md | 6 +
docs/storage.md | 6 +
.../__tests__/postgres/mission-store.pg.test.ts | 40 +++-
packages/core/src/async-mission-store-queries.ts | 24 ++-
packages/core/src/async-mission-store.ts | 65 +++++-
packages/core/src/mission-store.ts | 10 +-
packages/core/src/mission-types.ts | 19 ++
.../0042_fn_8694_validator_input_fingerprint.sql | 9 +
packages/core/src/postgres/schema-applier.ts | 13 +-
packages/core/src/postgres/schema/project.ts | 5 +
.../src/__tests__/mission-execution-loop.test.ts | 72 ++++++-
packages/engine/src/mission-execution-loop.ts | 217 +++++++++++++++++----
13 files changed, 443 insertions(+), 50 deletions(-)
Fusion-Task-Id: FN-8694
Fusion-Task-Lineage: 92a790d5-f2fc-4e71-b9ee-8334ff38b20d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 12:40:24 -07:00
gsxdsm
7dc6c4b4ec
FN-8711: preserve credential instances in settings actions
...
Preserve selected credential-instance identity across dashboard authentication actions.
- Route named-account OAuth and API-key actions with their instance IDs.
- Retain sibling credential accounts during targeted OAuth polling.
- Document the default-versus-named credential contract and extend desktop/mobile coverage.
Files changed:
...n-8711-settings-credential-instance-contract.md | 7 ++
docs/settings-reference.md | 2 +-
.../app/__tests__/settings-moved-keys.test.ts | 2 +
.../dashboard/app/components/SettingsModal.tsx | 49 +++++++++++---
.../__tests__/SettingsModal.models-auth.test.tsx | 78 ++++++++++++++++++++++
.../components/__tests__/settings-mobile.test.tsx | 14 ++--
.../settings/sections/AuthenticationSection.tsx | 15 +++--
.../settings-default-descriptions.test.tsx | 19 ++++++
8 files changed, 165 insertions(+), 21 deletions(-)
Fusion-Task-Id: FN-8711
Fusion-Task-Lineage: f43eaa27-4d36-4a3d-acf3-caba54e31857
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 12:33:35 -07:00
gsxdsm
6e98e16e70
fix: reject DUPLICATE-only PROMPT at dispatch (FN-8704)
...
FN-8704 failed at the graph parse node because PROMPT.md was only
"DUPLICATE: FN-8676". Filesystem validation treated non-empty as planned
and admitted the card into WIP, which then looped on parse failure.
Treat a sole DUPLICATE redirect as unplanned: block dispatch and hold
release, badge as awaiting planning, and if parse still sees that shape
rebound to needs-replan with feedback instead of parking failed.
2026-08-01 12:26:53 -07:00
gsxdsm
7f29809728
fix: exclude failed WIP from live capacity holders
...
Failed parks left in the WIP column still counted as running agents and
file-scope lease holders, so they consumed maxWorktrees/maxConcurrent and
could serialize unrelated todos. Match review-lane semantics: status
failed is never a live top-level holder.
2026-08-01 12:23:59 -07:00
gsxdsm
0512334e86
FN-8714: fix quality runner CLI argument passthrough
...
Allow dashboard aggregate quality commands through the pnpm script boundary.
- Normalize pnpm’s leading argument separator before validating runner options
- Add end-to-end aggregate and fail-fast quality-runner coverage with a deterministic fixture
- Document aggregate quality-runner invocation and failure reporting
Files changed:
docs/testing.md | 15 ++++
packages/dashboard/scripts/__tests__/quality-runner-fixture.mjs | 18 +++++
packages/dashboard/scripts/__tests__/run-quality-tests.test.ts | 88 ++++++++++++++++++++++
packages/dashboard/scripts/run-quality-tests.mjs | 23 ++++--
4 files changed, 139 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8714
Fusion-Task-Lineage: 48dbd434-a9e6-4283-8658-cbaa254a7dc7
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 12:13:52 -07:00
gsxdsm
e3fbd2ebf5
fix: stop inactive-duplicate clear from replan-storming
...
Clearing a DUPLICATE marker for an inactive or kept canonical left
status:null without PROMPT.md. The scheduler treats planning→null as
"finished planning" and re-dispatched the card; FS validation rebounded
to needs-replan with no ceiling, and triage re-planned with empty
feedback so the planner could re-emit the same inactive marker forever
(FN-8704 / FN-8676).
Leave needs-replan + dismissal metadata + replan feedback instead, share
the clear contract across triage and self-healing, and bound scheduler
filesystem-validation rebounds with the shared recovery budget.
2026-08-01 11:53:53 -07:00
gsxdsm
60706ed5e4
fix: demote high-frequency TUI log lines to debug
...
Session setup, track bookkeeping, intentional skill exclusions, token-cache
metrics, zero-count recovery summaries, and expected-missing PROMPT seed reads
were flooding the default log pane. Gate them behind FUSION_DEBUG so only
state transitions and operator-actionable warnings remain visible.
2026-08-01 11:48:56 -07:00
gsxdsm
7dbcff139c
fix: board lane counts and card glow never exceed live running agents
...
Operators summing the lane-header executing counts saw 10 active cards
under a 9-slot concurrency cap and read it as a capacity breach. The
header unioned the shared Running predicate with the card activity-chrome
predicate, which glowed needs-replan parks (FN-8494) and fresh
planner-log windows (FN-8300) that hold no concurrency slot.
isTaskAgentActive's positive arm now delegates to the shared
isRunningAgentTask predicate (footer/admission truth) and Column headers
count only that predicate, so glow and counts are a strict subset of the
live-agent population. Idle replans render the existing "Queued to
revise" waiting label instead of activity chrome.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-01 11:03:04 -07:00
gsxdsm
45daf4478c
FN-8710: cover credential instances in model selector saves
...
Add regression coverage for credential-instance persistence across task model selector lanes.
- Assert lane model saves explicitly clear stale credential instances.
- Cover selecting an available executor credential instance and replacing it with a new model.
- Verify inline task detail updates preserve and restore credential-instance state.
Files changed:
.../components/__tests__/ModelSelectorTab.test.tsx | 68 ++++++++++++++++++++++
...lModal.inline-editing-and-integrations.test.tsx | 51 ++++++++++++++--
2 files changed, 115 insertions(+), 4 deletions(-)
Fusion-Task-Id: FN-8710
Fusion-Task-Lineage: 35295b90-2aa7-4258-a170-9aaca537bb7a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 10:53:52 -07:00
gsxdsm
2ab81d954b
FN-8712: fix GitLab delete listener logging
...
Route GitLab delete-close listener failures through the structured dashboard logger.
- Replace console warnings with a named structured logger
- Record normalized error details alongside task and lifecycle metadata
- Cover listener-boundary failures without duplicate closure or unhandled rejections
Files changed:
.../src/__tests__/gitlab-delete-close.test.ts | 46 ++++++++++++++++++----
packages/dashboard/src/gitlab-delete-close.ts | 18 ++++++---
2 files changed, 51 insertions(+), 13 deletions(-)
Fusion-Task-Id: FN-8712
Fusion-Task-Lineage: 466a5b80-efa7-4961-bdb6-79277f6deb41
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 10:45:13 -07:00
gsxdsm
52310c9b65
FN-8698: test independent Board and List task popups
...
Add regression coverage for independently retained task popups across Board and List views.
- Exercise popup identity, refresh, visibility, and close behavior for the same task.
- Cover real desktop and mobile Board/List interaction paths.
Files changed:
.../app/__tests__/App.taskPopupViewGating.test.tsx | 69 ++++++++++++-
.../app/components/__tests__/App.test.tsx | 113 ++++++++++++++++++++-
2 files changed, 176 insertions(+), 6 deletions(-)
Fusion-Task-Id: FN-8698
Fusion-Task-Lineage: 857db4cb-0dd5-45ea-a7b7-9cb95f6f5fef
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 10:19:53 -07:00
gsxdsm
01d65805c3
FN-8693: refresh reused worktree bases before execution
...
Refresh reused execution worktrees against the current integration baseline.
- Rebase or reset clean reused worktrees before coding sessions while preserving task commits.
- Persist and audit refreshed base SHAs, and block unsafe refresh states before execution.
- Cover executor, graph, and heartbeat refresh paths with regression tests.
Files changed:
.changeset/fn-8693-stale-worktree-base.md | 7 +
docs/architecture.md | 1 +
.../src/__tests__/agent-heartbeat-worktree.test.ts | 28 ++++
.../__tests__/ce-workflow-step-executor.test.ts | 44 ++++++
.../src/__tests__/worktree-base-refresh.test.ts | 90 ++++++++++++
packages/engine/src/agent-heartbeat.ts | 35 ++++-
packages/engine/src/executor.ts | 67 ++++++++-
packages/engine/src/merger.ts | 5 +
packages/engine/src/run-audit.ts | 11 ++
packages/engine/src/workflow-graph-executor.ts | 32 ++++-
packages/engine/src/worktree-acquisition.ts | 28 +++-
packages/engine/src/worktree-base-refresh.ts | 158 +++++++++++++++++++++
12 files changed, 498 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-8693
Fusion-Task-Lineage: e39a441f-39b5-4723-b503-753e921018f3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 10:03:28 -07:00
gsxdsm
b8bde05ca6
FN-8703: render project overview before health telemetry
...
Render registered project cards immediately while optional health telemetry hydrates in the background.
- Publish completed health batches progressively and prevent stale responses from overwriting current state.
- Keep project controls usable while health metrics load and indicate per-card pending telemetry.
- Add coverage and operator documentation for progressive overview hydration.
Files changed:
.changeset/fn-8703-project-overview-load.md | 7 ++
docs/dashboard-guide.md | 3 +-
packages/dashboard/app/components/ProjectCard.tsx | 12 ++-
.../dashboard/app/components/ProjectOverview.tsx | 15 +--
.../components/__tests__/ProjectOverview.test.tsx | 101 ++++++++++++++++++++
.../app/hooks/__tests__/useProjectHealth.test.ts | 98 ++++++++++++++++++++
packages/dashboard/app/hooks/useProjectHealth.ts | 102 ++++++++++-----------
7 files changed, 277 insertions(+), 61 deletions(-)
Fusion-Task-Id: FN-8703
Fusion-Task-Lineage: eb816c9d-c808-4d52-a3f0-28bb9de5f149
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 09:53:36 -07:00
gsxdsm
5209e7fb8f
FN-8708: isolate task card menu interactions
...
Prevent portal menu interactions from bubbling into task-card detail navigation.
- Stop pointer, touch, click, keyboard, and context-menu propagation at the portaled menu wrapper.
- Cover pause and unpause mobile actions while retaining intentional card-tap navigation.
Files changed:
packages/dashboard/app/components/TaskCard.tsx | 19 ++++++-
.../app/components/__tests__/TaskCard.test.tsx | 63 ++++++++++++++++++++++
2 files changed, 81 insertions(+), 1 deletion(-)
Fusion-Task-Id: FN-8708
Fusion-Task-Lineage: 247d7101-ff3f-4423-b9b0-71f60f89e09b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 09:47:14 -07:00
gsxdsm
9c9dd7db2f
FN-8706: scan paginated PR files for claims
...
Scan paginated pull-request file lists so claim checks remain reliable for large diffs.
- Replace truncated PR diff scans with count-validated paginated GitHub API requests.
- Fail closed when open PR or file-list data is incomplete, malformed, or exceeds the API ceiling.
- Add coverage for large diffs, API failures, count mismatches, and claim precedence.
Files changed:
scripts/__tests__/check-file-claimed.test.mjs | 186 ++++++++++++++++++++++++++
scripts/check-file-claimed.mjs | 119 +++++++++++-----
2 files changed, 272 insertions(+), 33 deletions(-)
Fusion-Task-Id: FN-8706
Fusion-Task-Lineage: 1edf3546-553b-4e35-8c41-cd5143c08e0a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 09:39:38 -07:00
gsxdsm
b8f7f9e75c
FN-8701: standardize tool-call detail displays
...
Standardize expandable tool-call payloads across dashboard chat and log surfaces.
- Add a shared formatter and detail renderer that preserves complete browser-available arguments and results.
- Use compact previews with wrapped, scrollable expanded payloads in chat, activity, and agent logs.
- Cover formatting and rendering behavior with dashboard tests and document the display contract.
Files changed:
.changeset/fn-8701-tool-call-display.md | 7 ++
docs/dashboard-guide.md | 4 +-
.../dashboard/app/components/AgentLogViewer.tsx | 12 +++-
packages/dashboard/app/components/ChatView.css | 37 ++---------
.../app/components/StandardChatSurface.tsx | 56 +++++++---------
packages/dashboard/app/components/TaskChatTab.css | 17 -----
packages/dashboard/app/components/TaskChatTab.tsx | 31 +++++----
.../dashboard/app/components/ToolCallDetails.css | 52 +++++++++++++++
.../dashboard/app/components/ToolCallDetails.tsx | 77 ++++++++++++++++++++++
.../__tests__/AgentLogViewer.rendering.test.tsx | 8 +++
.../components/__tests__/ChatView.core.test.tsx | 24 +++++++
.../app/components/__tests__/TaskChatTab.test.tsx | 33 +++++++---
.../__tests__/TaskPlannerChatTab.test.tsx | 19 ++++++
13 files changed, 275 insertions(+), 102 deletions(-)
Fusion-Task-Id: FN-8701
Fusion-Task-Lineage: 86513f9a-31d4-45fb-97fe-1f0c73d0e5b3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 09:32:37 -07:00
gsxdsm
e8ca86d5ee
FN-8705: prioritize review and execution slot admission
...
Prioritize lifecycle-critical work whenever project capacity becomes available.
- Rank admission candidates as review/merge, execution, then planning.
- Coordinate scheduler handoffs with project and host capacity reservations.
- Cover lane priority and document the updated operator behavior.
Files changed: .changeset/fn-8705-slot-priority.md | 7 ++
docs/architecture.md | 2 +-
docs/dashboard-guide.md | 2 +-
packages/engine/src/__tests__/concurrency.test.ts | 95 +++++++++++-----------
.../engine/src/__tests__/project-engine.test.ts | 4 +-
.../starved-refinement-x-triage-poll.test.ts | 11 ++-
.../__tests__/triage-refinement-routing.test.ts | 16 ++--
.../workflow-continuation-capacity.test.ts | 3 +-
packages/engine/src/concurrency.ts | 37 +++++++--
packages/engine/src/project-engine.ts | 10 ++-
packages/engine/src/runtimes/in-process-runtime.ts | 3 +-
packages/engine/src/scheduler.ts | 40 ++++-----
packages/engine/src/triage.ts | 7 +-
13 files changed, 133 insertions(+), 104 deletions(-)
Fusion-Task-Id: FN-8705
Fusion-Task-Lineage: ef66360b-e504-4e3f-b25e-b032a719d8c0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 09:24:18 -07:00
gsxdsm
1aa1516023
FN-8692: harden mission validator assertion matching
...
Make validator assertion identity handling explicit and fail closed for ambiguous legacy responses.
- Include authoritative assertion IDs in validator prompts
- Recover only unique exact-count legacy results positionally
- Reject duplicate unknown and empty assertion IDs with regression coverage
- Document the assertion identity contract and add a patch changeset
Files changed:
.changeset/fn-8692-validator-assertion-ids.md | 7 +
docs/missions.md | 2 +-
.../src/__tests__/mission-execution-loop.test.ts | 142 ++++++++++++++++++++-
packages/engine/src/mission-execution-loop.ts | 70 ++++++++--
4 files changed, 204 insertions(+), 17 deletions(-)
Fusion-Task-Id: FN-8692
Fusion-Task-Lineage: 973c65e9-962f-472b-8d42-aef1de830d70
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 09:18:49 -07:00
gsxdsm
ac8ce148d5
FN-8691: suppress repeated task wedge notifications
...
Prevent resolved-and-rewedged tasks from flooding operator notification channels.
- Persist per-reason notification timestamps with a six-hour cooldown.
- Apply cooldown claims consistently in durable storage and in-memory fallback paths.
- Cover reason transitions, legacy state, invalid timestamps, and cooldown expiry.
Files changed:
.changeset/fn-8691-wedge-notification-cooldown.md | 7 ++
docs/architecture.md | 4 +-
.../postgres/store-wedge-resolution.pg.test.ts | 67 +++++++++++-
packages/core/src/index.ts | 1 +
packages/core/src/store.ts | 21 +++-
packages/core/src/task-store/task-mutation-ops.ts | 6 ++
packages/core/src/types.ts | 2 +
packages/core/src/types/task-core.ts | 15 +++
.../__tests__/task-wedge-notification.test.ts | 117 ++++++++++++++++++++-
.../src/notification/notification-service.ts | 30 +++++-
10 files changed, 261 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-8691
Fusion-Task-Lineage: b7460508-f9b0-488b-828c-a51e9477304d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 08:58:49 -07:00
gsxdsm
79d2a73a10
FN-8690: document Grok CLI provenance blocker
...
Document the unavailable Grok CLI source provenance and preserve the existing usage gate.
- Record provenance investigation results and the BLOCKED-NO-SOURCE hand-off
- Validate FN-8690 evidence sections and canonical verdicts
- Explain why the API-supplied percentage gate remains unchanged
Files changed:
docs/solutions/integration-issues/grok-cli-usage-data-source.md | 64 ++++++++++++++++++++++
packages/dashboard/src/__tests__/grok-usage-finding-doc.test.ts | 21 +++++++
packages/dashboard/src/usage.ts | 3 +
3 files changed, 88 insertions(+)
Fusion-Task-Id: FN-8690
Fusion-Task-Lineage: 4521063d-2a9a-4710-9609-35b7582a2f2d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 08:52:08 -07:00
gsxdsm
04c2bb4707
FN-8654: rotate credential instances after provider limits
...
Retry provider-limit failures with eligible credential instances before falling back to existing pauses and backoff.
- Add a runtime-shared credential rotator with cooldown, exhaustion, and audit handling.
- Wire credential rotation into executor and heartbeat retry lanes while preserving user pause controls.
- Document the behavior and cover rotation, recovery, and retry paths.
Files changed:
.changeset/fn-8654-credential-instance-rotation.md | 7 +
AGENTS.md | 1 +
docs/architecture.md | 2 +-
docs/settings-reference.md | 4 +
.../__tests__/credential-instance-rotation.test.ts | 88 +++++++++++
.../__tests__/credential-rotation-lanes.test.ts | 20 +++
.../__tests__/credential-rotation-recovery.test.ts | 19 +++
.../__tests__/credential-rotation-wiring.test.ts | 15 ++
.../__tests__/rate-limit-retry-rotation.test.ts | 50 ++++++
.../src/__tests__/usage-limit-detector.test.ts | 14 ++
packages/engine/src/agent-heartbeat.ts | 102 +++++++++++-
.../engine/src/credential-instance-rotation.ts | 175 +++++++++++++++++++++
packages/engine/src/executor.ts | 141 +++++++++++++++--
packages/engine/src/index.ts | 7 +
packages/engine/src/project-engine.ts | 5 +
packages/engine/src/rate-limit-retry.ts | 32 +++-
packages/engine/src/runtimes/in-process-runtime.ts | 29 +++-
packages/engine/src/usage-limit-detector.ts | 18 ++-
18 files changed, 699 insertions(+), 30 deletions(-)
Fusion-Task-Id: FN-8654
Fusion-Task-Lineage: 44d63441-270c-4949-8c34-47ec4c9992e4
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 08:20:29 -07:00
gsxdsm
006cc40454
FN-8685: add durable cross-process task deletion consumers
...
Deliver durable, replay-safe cross-process task deletion observation.
- Add PostgreSQL lifecycle consumer cursors, leases, acknowledgements, retention, and recovery.
- Start named consumers in dashboard, serve, and engine runtime paths.
- Preserve delete integration metadata while suppressing replayed GitHub and GitLab side effects.
- Cover outbox identity, observed delivery, fencing, and reconciliation behavior.
Files changed:
...fn-8685-cross-process-task-deleted-observers.md | 7 +
.../fn-8685-task-deleted-outbox-consumers.md | 7 +
docs/architecture.md | 8 +-
...tgres-cross-process-task-deleted-observation.md | 8 +-
docs/storage.md | 10 +-
packages/cli/src/commands/dashboard.ts | 9 +-
packages/cli/src/commands/serve.ts | 9 +-
packages/cli/src/project-context.ts | 9 +-
.../task-deleted-outbox-consumer.pg.test.ts | 157 ++++++++
...-deleted-observed-dispatch-side-effects.test.ts | 36 ++
.../task-lifecycle-consumer-identity.test.ts | 22 ++
packages/core/src/index.ts | 11 +
.../0041_fn_8685_task_lifecycle_consumers.sql | 88 +++++
packages/core/src/postgres/schema-applier.ts | 16 +-
packages/core/src/postgres/schema/project.ts | 45 +++
packages/core/src/postgres/startup-factory.ts | 4 +
packages/core/src/store.ts | 54 ++-
.../__tests__/lifecycle-outbox-writer.test.ts | 4 +-
.../core/src/task-store/archive-lifecycle-2.ts | 1 +
packages/core/src/task-store/lifecycle-ops.ts | 13 +-
packages/core/src/task-store/lifecycle-outbox.ts | 2 +
packages/core/src/task-store/project-store-ops.ts | 4 +-
.../src/task-store/task-deleted-outbox-consumer.ts | 333 +++++++++++++++++
.../task-store/task-lifecycle-consumer-identity.ts | 32 ++
.../task-store/task-lifecycle-consumer-registry.ts | 396 +++++++++++++++++++++
.../task-store/task-lifecycle-event-retention.ts | 104 ++++++
packages/core/src/task-store/task-mutation-ops.ts | 1 +
packages/dashboard/src/github-tracking-state.ts | 12 +-
packages/dashboard/src/gitlab-delete-close.ts | 3 +
packages/dashboard/src/gitlab-split-close.ts | 7 +-
packages/dashboard/src/project-store-resolver.ts | 9 +-
packages/engine/src/project-manager.ts | 4 +-
packages/engine/src/project-runtime.ts | 2 +-
packages/engine/src/runtimes/in-process-runtime.ts | 17 +-
packages/engine/src/self-healing.ts | 27 ++
35 files changed, 1439 insertions(+), 32 deletions(-)
Fusion-Task-Id: FN-8685
Fusion-Task-Lineage: 63eca9ac-d2af-44b0-ba79-388a950148d3
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 06:09:04 -07:00
gsxdsm
4b306f10bd
FN-8689: document Grok CLI source provenance gap
...
Record the unrecoverable Grok CLI provenance chain and preserve the unmeterable usage state.
- Document installed asset identity, attempted provenance retrievals, and the static-blocked verdict.
- Clarify that the legacy billing request is not verified CLI /usage behavior.
- Add a regression test for the provenance finding and credential-safe documentation.
Files changed:
docs/solutions/integration-issues/grok-cli-usage-data-source.md | 172 +++++++++++----------
packages/dashboard/src/__tests__/grok-usage-finding-doc.test.ts | 45 ++++++
packages/dashboard/src/usage.ts | 8 +-
3 files changed, 143 insertions(+), 82 deletions(-)
Fusion-Task-Id: FN-8689
Fusion-Task-Lineage: 473fc008-2e08-47f6-8f53-152da5b2c31a
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 04:41:50 -07:00
gsxdsm
8c9346ee94
FN-8684: persist task deletion events transactionally
...
Persist task-deletion lifecycle events through a transactional PostgreSQL outbox.
- Add the task lifecycle outbox schema, migration, and atomic writer.
- Route deletion notice persistence through the transaction and preserve non-blocking cleanup.
- Cover outbox behavior, schema installation, and caller attribution with tests.
Files changed:
.changeset/fn-8684-task-deleted-outbox-writer.md | 7 +
docs/architecture.md | 6 +
docs/storage.md | 6 +
.../src/__tests__/postgres/schema-applier.test.ts | 82 ++++++++-
.../task-delete-caller-attribution.test.ts | 12 +-
.../task-delete-nonblocking-cleanup.test.ts | 13 +-
.../core/src/__tests__/task-delete-notice.test.ts | 7 +-
.../0040_fn_8684_task_lifecycle_outbox.sql | 44 +++++
packages/core/src/postgres/schema-applier.ts | 15 +-
packages/core/src/postgres/schema/project.ts | 27 +++
.../__tests__/lifecycle-outbox-writer.test.ts | 201 +++++++++++++++++++++
.../core/src/task-store/archive-lifecycle-2.ts | 93 ++++++++--
packages/core/src/task-store/async-persistence.ts | 26 ++-
packages/core/src/task-store/lifecycle-outbox.ts | 46 +++++
14 files changed, 557 insertions(+), 28 deletions(-)
Fusion-Task-Id: FN-8684
Fusion-Task-Lineage: 1869d221-2d8a-48fb-b245-9cd1af56bda0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 04:24:05 -07:00
gsxdsm
a7591853eb
FN-8688: document unverified Grok CLI usage source
...
Document the provenance gap that prevents deriving Grok CLI usage data safely.
- Record version-skewed source and sanitized billing-replay evidence
- Keep absent Grok usage fields authenticated but unmeterable pending source-backed confirmation
- Link the usage-provider rationale to the investigation record
Files changed:
.../grok-cli-usage-data-source.md | 93 ++++++++++++++++++++++
packages/dashboard/src/usage.ts | 4 +-
2 files changed, 95 insertions(+), 2 deletions(-)
Fusion-Task-Id: FN-8688
Fusion-Task-Lineage: 5aafa505-968f-4f63-83db-35e623f84052
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 04:19:46 -07:00
gsxdsm
c978cdbacf
FN-8687: close imported GitLab issues on task deletion
...
Add GitLab close-on-delete behavior for imported source issues.
- Close linked GitLab issues by default while honoring leave and delete action semantics.
- Preserve split-close ownership, skip merge requests, and limit malformed tracking fallback to deletion.
- Document the lifecycle contract and add dashboard coverage.
Files changed:
.changeset/fn-8687-gitlab-close-on-delete.md | 7 ++
docs/gitlab-parity-inventory.md | 20 +++-
docs/settings-reference.md | 1 +
docs/task-management.md | 5 +-
.../src/__tests__/gitlab-delete-close.test.ts | 101 +++++++++++++++++++++
.../src/__tests__/gitlab-lifecycle.test.ts | 35 +++++++
.../gitlab-parity-inventory-documentation.test.ts | 7 +-
.../__tests__/gitlab-source-issue-close.test.ts | 8 ++
.../src/__tests__/gitlab-split-close.test.ts | 12 +++
packages/dashboard/src/gitlab-delete-close.ts | 90 ++++++++++++++++++
packages/dashboard/src/gitlab-lifecycle.ts | 33 +++++--
packages/dashboard/src/gitlab-split-close.ts | 2 +-
packages/dashboard/src/index.ts | 1 +
.../dashboard/src/routes/register-git-github.ts | 7 ++
14 files changed, 313 insertions(+), 16 deletions(-)
Fusion-Task-Id: FN-8687
Fusion-Task-Lineage: 48bc9159-fc35-43cb-b72e-1b6260d9e3cb
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 04:08:57 -07:00
gsxdsm
0e8f6769ba
FN-8666: add credential instance pickers
...
Add credential-instance selection across dashboard model configuration surfaces.
- Expose provider credential instances in custom model dropdowns and task, workflow, and settings forms.
- Persist per-role credential-instance overrides through dashboard APIs and effective model resolution.
- Document credential-instance precedence and cover dropdown/settings behavior, including task state synchronization.
Files changed:
.changeset/fn-8666-credential-instance-picker.md | 7 ++
docs/settings-reference.md | 2 +
docs/workflow-steps.md | 2 +-
packages/dashboard/app/api.ts | 1 +
packages/dashboard/app/api/models-usage.ts | 27 ++++-
packages/dashboard/app/api/tasks.ts | 8 ++
.../app/components/CustomModelDropdown.css | 12 ++-
.../app/components/CustomModelDropdown.tsx | 71 ++++++++++++-
.../dashboard/app/components/InlineCreateCard.tsx | 23 +++-
packages/dashboard/app/components/ListView.tsx | 29 +++++-
.../app/components/ModelSelectionModal.tsx | 25 ++++-
.../dashboard/app/components/ModelSelectorTab.tsx | 29 +++++-
packages/dashboard/app/components/NewTaskModal.tsx | 23 +++-
.../dashboard/app/components/QuickEntryBox.tsx | 28 +++++
.../dashboard/app/components/SettingsModal.tsx | 2 +
.../dashboard/app/components/TaskDetailModal.tsx | 32 +++++-
packages/dashboard/app/components/TaskForm.tsx | 18 ++++
.../app/components/WorkflowNodeEditor.tsx | 13 ++-
.../app/components/WorkflowSettingsPanel.tsx | 38 ++++++-
...ustomModelDropdown.credential-instance.test.tsx | 111 ++++++++++++++++++++
.../__tests__/WorkflowSettingsPanel.test.tsx | 9 +-
.../app/components/effective-model-resolution.ts | 8 +-
.../settings/sections/GlobalModelsSection.tsx | 31 +++++-
.../settings/sections/ProjectModelsSection.tsx | 116 ++++++++++++++++-----
.../ProjectModelsSection.chatDefault.test.tsx | 33 +++++-
packages/dashboard/app/hooks/useFavorites.ts | 6 +-
packages/dashboard/app/hooks/useModelsCache.ts | 5 +-
.../src/routes/register-task-workflow-routes.ts | 17 ++-
28 files changed, 655 insertions(+), 71 deletions(-)
Fusion-Task-Id: FN-8666
Fusion-Task-Lineage: 6c3711b3-68b8-47a0-ac36-4b64846adf39
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 04:03:26 -07:00
gsxdsm
4f09758dc8
FN-8681: retarget executor step credential instances
...
Enable executor step sessions to use selected and rotated credential instances.
- Pass task-selected credential instances into step-session execution.
- Re-resolve live credential targets after usage-limit retries using the effective agent runtime configuration.
- Retarget future sessions safely and cover retry behavior.
- Document the runtime behavior and add a patch changeset.
Files changed:
.changeset/fn-8681-credential-instance-retarget.md | 7 +
docs/settings-reference.md | 7 +-
.../src/__tests__/step-session-executor.test.ts | 211 +++++++++++++++++++++
packages/engine/src/executor.ts | 21 ++
packages/engine/src/step-session-executor.ts | 94 ++++++++-
5 files changed, 332 insertions(+), 8 deletions(-)
Fusion-Task-Id: FN-8681
Fusion-Task-Lineage: 99724283-6f5d-4890-b7f8-65af1d88b12c
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 03:45:59 -07:00
gsxdsm
4009eb34cb
FN-8683: remove unreachable SQLite task polling replica
...
Document PostgreSQL task-deletion observation and remove the obsolete SQLite polling path.
- Remove polling state, replica emissions, and activity-log suppression from TaskStore.
- Retain backend-aware cache warming while documenting the transactional-outbox follow-up.
- Add tombstone and soft-delete abort coverage across core and engine lanes.
Files changed:
docs/architecture.md | 3 +-
...tgres-cross-process-task-deleted-observation.md | 128 ++++++++++++++++
docs/storage.md | 3 +-
.../task-delete-nonblocking-cleanup.test.ts | 54 +++++++
.../task-deleted-polling-replica-tombstone.test.ts | 57 +++++++
.../task-updated-lanes-emit-surfaces.test.ts | 26 ----
packages/core/src/store.ts | 13 +-
packages/core/src/task-store/lifecycle-ops.ts | 168 ++-------------------
packages/core/src/task-store/task-artifacts-ops.ts | 4 -
.../__tests__/executor-soft-delete-abort.test.ts | 15 ++
.../src/__tests__/triage-soft-delete-abort.test.ts | 14 ++
11 files changed, 284 insertions(+), 201 deletions(-)
Fusion-Task-Id: FN-8683
Fusion-Task-Lineage: a052db0c-b6fc-4b05-b6b2-f8217b56ded0
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 03:24:36 -07:00
gsxdsm
23c9992e7b
FN-8682: add GitLab split-close issue comments
...
GitLab source issues now receive an explanatory split handoff before closure.
- Add a GitLab split-close service that posts normalized child-task notes before closing source issues.
- Wire split-close handling across project stores while preserving merge-request and failure safeguards.
- Document GitLab lifecycle parity and cover split-close behavior with tests.
Files changed:
.changeset/fn-8682-gitlab-split-close-comment.md | 7 ++
docs/gitlab-parity-inventory.md | 2 +-
docs/task-management.md | 1 +
.../gitlab-parity-inventory-documentation.test.ts | 2 +
.../src/__tests__/gitlab-split-close.test.ts | 113 +++++++++++++++++++++
packages/dashboard/src/gitlab-lifecycle.ts | 6 +-
packages/dashboard/src/gitlab-split-close.ts | 98 ++++++++++++++++++
packages/dashboard/src/gitlab-tracking-state.ts | 6 +-
packages/dashboard/src/index.ts | 1 +
.../dashboard/src/routes/register-git-github.ts | 6 ++
10 files changed, 237 insertions(+), 5 deletions(-)
Fusion-Task-Id: FN-8682
Fusion-Task-Lineage: 8eca9888-b10a-4ea9-b9d3-fc09a39022ab
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 03:19:00 -07:00
gsxdsm
3793b576d8
FN-8673: comment on split source issue closures
...
Explain GitHub source-issue closures when imported work is split into subtasks.
- carry split closure context through task deletion and triage
- post one explanatory comment before closing source and tracking GitHub issues
- preserve exactly-one-comment behavior when close retries after transient failures
- document split closure behavior and cover source/tracking scenarios
Files changed:
.changeset/fn-8673-split-close-issue-comment.md | 7 ++
docs/settings-reference.md | 2 +-
docs/task-management.md | 1 +
.../task-delete-caller-attribution.test.ts | 32 +++++++
packages/core/src/index.ts | 2 +-
packages/core/src/store.ts | 10 +--
packages/core/src/task-delete-attribution.ts | 16 ++++
.../core/src/task-store/archive-lifecycle-2.ts | 14 ++--
packages/core/src/task-store/archive-lifecycle.ts | 6 +-
packages/core/src/types.ts | 13 +++
.../src/__tests__/github-tracking-state.test.ts | 98 +++++++++++++++++++++-
packages/dashboard/src/github-tracking-state.ts | 82 +++++++++++++++---
packages/engine/src/__tests__/triage.test.ts | 4 +
packages/engine/src/triage.ts | 10 +++
14 files changed, 268 insertions(+), 29 deletions(-)
Fusion-Task-Id: FN-8673
Fusion-Task-Lineage: 904c2445-64d9-47b9-b706-f64b23c4e3a6
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 02:47:25 -07:00
gsxdsm
8a6949dd24
FN-8661: resolve selected credential instances for sessions
...
Resolve requested provider credential instances before creating agent sessions.
- Thread lane credential instance selections through planning, validation, execution, review, and merge sessions.
- Resolve selected instances into runtime credential stores while retaining provider-default fallback behavior.
- Preserve selected credentials for mission validation, executor retries, and spawned child agents.
Files changed:
.../fn-8661-credential-instance-resolution.md | 7 ++
AGENTS.md | 1 +
docs/architecture.md | 2 +-
docs/secrets.md | 2 +
docs/settings-reference.md | 1 +
.../dashboard/src/__tests__/routes-auth.test.ts | 80 +++++++++++++++++++
.../dashboard/src/routes/register-model-routes.ts | 78 +++++++++++++++++++
.../src/__tests__/agent-session-helpers.test.ts | 16 ++++
.../credential-instance-resolution.test.ts | 49 ++++++++++++
packages/engine/src/agent-heartbeat.ts | 1 +
packages/engine/src/agent-runtime.ts | 9 ++-
packages/engine/src/agent-session-helpers.ts | 67 +++++++++++-----
packages/engine/src/auth-storage.ts | 90 ++++++++++++++++++----
packages/engine/src/executor.ts | 29 ++++++-
packages/engine/src/merger-ai.ts | 2 +
packages/engine/src/merger.ts | 5 ++
packages/engine/src/mission-execution-loop.ts | 4 +-
packages/engine/src/pi.ts | 7 +-
packages/engine/src/pr-response-run-ops.ts | 1 +
packages/engine/src/reviewer.ts | 7 ++
packages/engine/src/triage.ts | 2 +
21 files changed, 420 insertions(+), 40 deletions(-)
Fusion-Task-Id: FN-8661
Fusion-Task-Lineage: 1e34a3ce-0857-4619-9746-ce0dc12dc2ba
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 02:05:03 -07:00