Commit Graph

7145 Commits

Author SHA1 Message Date
gsxdsm
3c2bbf36c5 fix: add missing lastReviewDecision to legacy PrInfo type
PrPanel.tsx references prInfo.lastReviewDecision but the local
PrInfo interface in legacy.ts was missing this field, breaking
typecheck on main.
2026-05-17 12:10:14 -07:00
gsxdsm
14c5a17844 fix(FN-4939): preserve worktree on contamination auto-recovery
The in-line branch-cross-contamination auto-recovery in executor.ts had
two related bugs that produced transient "no-worktree-no-merge-confirmed"
stall signals in the dashboard while a live worktree was still mapped
on disk:

1. autoRecoverCrossContamination was called with repoDir=this.rootDir.
   The recovery does: git checkout --detach <baseSha> → cherry-pick
   wanted commits → git update-ref → git checkout <branch>. When the
   branch is checked out in a worktree (the normal case), that final
   recheckout in rootDir is blocked by git with "branch already used
   by worktree at ...", so the in-line happy path silently failed for
   every contaminated task that had a real worktree. Pass the task's
   worktree as repoDir when available so the operations stay internal
   to the worktree and the recheckout succeeds.

2. The successful-recovery branch called
       moveTask(taskId, 'todo', { preserveResumeState: true })
   without preserveWorktree:true. moveTask defaults to nulling
   task.worktree on requeue. The worktree directory and git mapping
   were still live — the dashboard's in-review-stall classifier
   (no-worktree-no-merge-confirmed) and TaskChangesTab both keyed off
   task.worktree being null and lied about the worktree being gone.
   Sibling recovery paths (auto-recovery-handlers/contamination.ts,
   tryBootstrapMisbindingRecovery, self-healing.ts:1639) all already
   pass preserveWorktree:true; this site was inconsistent.

Updated the existing FN-4428 regression test and added a new
FN-4939 test asserting repoDir uses task.worktree (with fallback
to rootDir when the task has no worktree pointer).

Refs: packages/core/src/in-review-stall.ts:116
2026-05-17 12:03:55 -07:00
Fusion (runfusion.ai)
93e49b062a feat(FN-4939): complete Step 5 — add changeset and native helper re-export
Fusion-Task-Id: FN-4939
Fusion-Task-Lineage: b2a00edb-5245-4223-97e4-0a16dd2c3289
2026-05-17 11:49:10 -07:00
Fusion (runfusion.ai)
329b102eb2 fix(FN-4939): stabilize desktop test mocks and restore lint/type safety
Fusion-Task-Id: FN-4939
Fusion-Task-Lineage: b2a00edb-5245-4223-97e4-0a16dd2c3289
2026-05-17 11:49:09 -07:00
Fusion (runfusion.ai)
2619a170e2 feat(FN-4939): complete Step 3 — document window visibility guard
Fusion-Task-Id: FN-4939
Fusion-Task-Lineage: b2a00edb-5245-4223-97e4-0a16dd2c3289
2026-05-17 11:49:09 -07:00
Fusion (runfusion.ai)
1f2b553079 feat(FN-4939): complete Step 2 — guard window position and force show
Fusion-Task-Id: FN-4939
Fusion-Task-Lineage: b2a00edb-5245-4223-97e4-0a16dd2c3289
2026-05-17 11:49:08 -07:00
Fusion (runfusion.ai)
9a462388b5 feat(FN-4928): complete Step 2 — fix prompt-sizes SQL and add real DB regression test
Fusion-Task-Id: FN-4939
Fusion-Task-Lineage: b2a00edb-5245-4223-97e4-0a16dd2c3289
2026-05-17 11:49:08 -07:00
Fusion (runfusion.ai)
e257ca6603 feat(FN-4939): complete Step 1 — add window-state display clamp helper
Fusion-Task-Id: FN-4939
Fusion-Task-Lineage: b2a00edb-5245-4223-97e4-0a16dd2c3289
2026-05-17 11:49:08 -07:00
gsxdsm
bd48f1961c docs: compress AGENTS.md (1028 → 449 lines)
Remove stale entries, duplicate sections, and changelog-style fix logs:
- Drop duplicate 'Design Tokens' header stub
- Remove unshipped fn_secret_get section (pending FN-4867)
- Drop Node Settings Sync endpoint table (planned rows; lives in docs/architecture.md)
- Collapse 'Reliability governance freeze LIFTED' to current contract
- Compress TUI section to one line

Compress fix-log-style sections into contracts:
- Architecture: enumerate invariants instead of per-FN fix history
- Merging Branches Into Main: 8 numbered rules instead of 10 dense paragraphs
- Agent Spawning + Delegation Tools: collapse 6 full API tables into
  pointers (tool schemas already document parameter contracts)
- Engine Diagnostic Logging: link out to docs/diagnostics.md

Compress Dashboard UI Styling Guide:
- Drop exhaustive token/color/component tables (styles.css is source of truth)
- Keep rules, conventions, and pitfalls
- Collapse touch-target FN-3965/FN-4351 history under buttons-frozen directive

Combine Per-Agent Heartbeat / Budget / Trigger Scheduling / Performance
Ratings into one Agent Runtime Config section.

Collapse three identical 5-tier Model Selection Hierarchy lists into one.
2026-05-17 11:46:09 -07:00
Fusion (runfusion.ai)
439716165b test(FN-4761): complete Step 5 — add review transition regression coverage
Fusion-Task-Id: FN-4761
Fusion-Task-Lineage: b6b1ed73-c396-4dd2-b97f-366272d05c7f
2026-05-17 11:39:19 -07:00
Fusion (runfusion.ai)
3d7e737fbe feat(FN-4761): finalize review auto-move docs and release note
Fusion-Task-Id: FN-4761
Fusion-Task-Lineage: b6b1ed73-c396-4dd2-b97f-366272d05c7f
2026-05-17 11:39:19 -07:00
Fusion (runfusion.ai)
9cee0ef083 fix(FN-4761): correct review-feedback document persistence
Fusion-Task-Id: FN-4761
Fusion-Task-Lineage: b6b1ed73-c396-4dd2-b97f-366272d05c7f
2026-05-17 11:39:19 -07:00
Fusion (runfusion.ai)
5bde911bdb feat(FN-4761): sync PR reviews and surface review threads
Fusion-Task-Id: FN-4761
Fusion-Task-Lineage: b6b1ed73-c396-4dd2-b97f-366272d05c7f
2026-05-17 11:39:19 -07:00
Fusion (runfusion.ai)
cfadcf3835 feat(FN-4761): complete Step 1 — core review comment ingestion
Fusion-Task-Id: FN-4761
Fusion-Task-Lineage: b6b1ed73-c396-4dd2-b97f-366272d05c7f
2026-05-17 11:39:18 -07:00
Fusion (runfusion.ai)
f183186743 feat(FN-4924): complete Step 6 — documentation and changeset
Fusion-Task-Id: FN-4924
Fusion-Task-Lineage: a5f882e1-8348-4f9d-89be-15994adc148c
2026-05-17 11:33:56 -07:00
Fusion (runfusion.ai)
eaa67616a4 test(FN-4924): align useAgents cache assertions with envelope format
Fusion-Task-Id: FN-4924
Fusion-Task-Lineage: a5f882e1-8348-4f9d-89be-15994adc148c
2026-05-17 11:33:56 -07:00
Fusion (runfusion.ai)
cf12704885 feat(FN-4924): apply cache ttl hydration across dashboard hooks
Fusion-Task-Id: FN-4924
Fusion-Task-Lineage: a5f882e1-8348-4f9d-89be-15994adc148c
2026-05-17 11:33:56 -07:00
Fusion (runfusion.ai)
7ad3449c8f feat(FN-4924): complete Step 1 — add swr cache envelope ttl
Fusion-Task-Id: FN-4924
Fusion-Task-Lineage: a5f882e1-8348-4f9d-89be-15994adc148c
2026-05-17 11:33:56 -07:00
Fusion (runfusion.ai)
ff7c2336cf feat(FN-4911): complete Step 3 — add secrets view component
Fusion-Task-Id: FN-4911
Fusion-Task-Lineage: 021e3ee9-a776-4648-a17d-8ae1a7ebc5be
2026-05-17 11:11:00 -07:00
Fusion (runfusion.ai)
73c6f46b5b fix(FN-4911): correct reveal payload and reader identity
Fusion-Task-Id: FN-4911
Fusion-Task-Lineage: 021e3ee9-a776-4648-a17d-8ae1a7ebc5be
2026-05-17 11:10:59 -07:00
Fusion (runfusion.ai)
ea0c400dab feat(FN-4911): complete Step 1 — add secrets API routes
Fusion-Task-Id: FN-4911
Fusion-Task-Lineage: 021e3ee9-a776-4648-a17d-8ae1a7ebc5be
2026-05-17 11:10:59 -07:00
Fusion (runfusion.ai)
0dc4c9c6a0 test(FN-4904): cover worktree-root lookup in extension tools
Fusion-Task-Id: FN-4904
Fusion-Task-Lineage: 5da52c8c-0ed6-4e3a-920e-aa1b56d0b719
2026-05-17 10:45:41 -07:00
Fusion (runfusion.ai)
47eaf089bf feat(FN-4904): complete Step 3 — align engine and CLI root resolution
Fusion-Task-Id: FN-4904
Fusion-Task-Lineage: 5da52c8c-0ed6-4e3a-920e-aa1b56d0b719
2026-05-17 10:45:41 -07:00
Fusion (runfusion.ai)
b40a58d693 test(FN-4904): add core resolver integration coverage
Fusion-Task-Id: FN-4904
Fusion-Task-Lineage: 5da52c8c-0ed6-4e3a-920e-aa1b56d0b719
2026-05-17 10:45:41 -07:00
Fusion (runfusion.ai)
87d259b366 feat(FN-4904): complete Step 1 — promote worktree root resolver
Fusion-Task-Id: FN-4904
Fusion-Task-Lineage: 5da52c8c-0ed6-4e3a-920e-aa1b56d0b719
2026-05-17 10:45:41 -07:00
Fusion (runfusion.ai)
3d729c7a50 feat(FN-4916): complete Step 4 — enforce built stylesheet order
Fusion-Task-Id: FN-4916
Fusion-Task-Lineage: 80b56c97-04c6-4cd4-bb83-e3ef8faaa4ee
2026-05-17 10:37:55 -07:00
Fusion (runfusion.ai)
007fb43da0 test(FN-4916): complete Step 3 — add theme link regression coverage
Fusion-Task-Id: FN-4916
Fusion-Task-Lineage: 80b56c97-04c6-4cd4-bb83-e3ef8faaa4ee
2026-05-17 10:37:54 -07:00
Fusion (runfusion.ai)
e25f8b20aa feat(FN-4916): complete Step 1 — add static theme-data link
Fusion-Task-Id: FN-4916
Fusion-Task-Lineage: 80b56c97-04c6-4cd4-bb83-e3ef8faaa4ee
2026-05-17 10:37:54 -07:00
Fusion (runfusion.ai)
03a10c7419 test(FN-4907): stabilize dashboard unpause merge-queue assertion
Fusion-Task-Id: FN-4907
Fusion-Task-Lineage: e84d5357-0719-4cc7-ab3f-f665ac83b218
2026-05-17 10:31:35 -07:00
Fusion (runfusion.ai)
500a55ff37 docs(FN-4907): finalize stale-settings audit report
Fusion-Task-Id: FN-4907
Fusion-Task-Lineage: e84d5357-0719-4cc7-ab3f-f665ac83b218
2026-05-17 10:31:35 -07:00
Fusion (runfusion.ai)
a2bd876eb4 test(FN-4907): cover stale settings invalidation and sync refresh paths
Fusion-Task-Id: FN-4907
Fusion-Task-Lineage: e84d5357-0719-4cc7-ab3f-f665ac83b218
2026-05-17 10:31:35 -07:00
Fusion (runfusion.ai)
4416de159c fix(FN-4907): invalidate stale settings caches on sync and provider writes
Fusion-Task-Id: FN-4907
Fusion-Task-Lineage: e84d5357-0719-4cc7-ab3f-f665ac83b218
2026-05-17 10:31:34 -07:00
Fusion (runfusion.ai)
f6d6f0f4c0 feat(FN-4907): complete Step 2 — audit suspect stale-snapshot call sites
Fusion-Task-Id: FN-4907
Fusion-Task-Lineage: e84d5357-0719-4cc7-ab3f-f665ac83b218
2026-05-17 10:31:34 -07:00
Fusion (runfusion.ai)
576d0cae63 feat(FN-4907): complete Step 1 — enumerate settings write paths and cache invariants
Fusion-Task-Id: FN-4907
Fusion-Task-Lineage: e84d5357-0719-4cc7-ab3f-f665ac83b218
2026-05-17 10:31:34 -07:00
gsxdsm
1b82e29218 Update dependency graph manifest 2026-05-17 10:04:37 -07:00
gsxdsm
724f8bf908 feat(FN-4906): merge fusion/fn-4906 2026-05-17 09:56:03 -07:00
Fusion (runfusion.ai)
97d92dabd3 feat(FN-4905): complete Step 5 — add release changeset
Fusion-Task-Id: FN-4905
Fusion-Task-Lineage: 677b6f08-90d7-4785-a0b8-195acc42f79e
2026-05-17 09:51:50 -07:00
Fusion (runfusion.ai)
2a9ef2ba36 fix(FN-4905): unblock workspace verification type errors
Fusion-Task-Id: FN-4905
Fusion-Task-Lineage: 677b6f08-90d7-4785-a0b8-195acc42f79e
2026-05-17 09:51:49 -07:00
Fusion (runfusion.ai)
c61ebb85d7 test(FN-4905): complete Step 3 — cover lifecycle stale-settings refresh
Fusion-Task-Id: FN-4905
Fusion-Task-Lineage: 677b6f08-90d7-4785-a0b8-195acc42f79e
2026-05-17 09:51:49 -07:00
Fusion (runfusion.ai)
8bcc381041 feat(FN-4905): complete Step 2 — add lifecycle refresh fallback
Fusion-Task-Id: FN-4905
Fusion-Task-Lineage: 677b6f08-90d7-4785-a0b8-195acc42f79e
2026-05-17 09:51:49 -07:00
Fusion (runfusion.ai)
10455b7992 feat(FN-4898): reconcile task title-id drift in storage migrations
Adds a title-id drift detection and reconciliation system to prevent duplicate tasks when task titles change after initial creation. Core adds the `task-title-id-drift.ts` module with `markTitleIdStable` and `resolveTitleIdDrift` logic, wired through `db.ts`, `store.ts`, and `archive-db.ts`, with co

Fusion-Task-Id: FN-4898
2026-05-17 09:51:10 -07:00
Fusion (runfusion.ai)
3d0cce72f2 feat(FN-4885): complete Step 7 — finalize docs and changeset
Fusion-Task-Id: FN-4885
Fusion-Task-Lineage: 31110eed-5ca3-4d67-8f11-581185056dc6
2026-05-17 09:31:07 -07:00
Fusion (runfusion.ai)
5793c4bcd7 feat(FN-4885): complete Step 6 — add deadlock disposition dashboard copy
Fusion-Task-Id: FN-4885
Fusion-Task-Lineage: 31110eed-5ca3-4d67-8f11-581185056dc6
2026-05-17 09:31:07 -07:00
Fusion (runfusion.ai)
ddfc927abd test(FN-4885): complete Step 5 — add deadlock disposition reliability interaction
Fusion-Task-Id: FN-4885
Fusion-Task-Lineage: 31110eed-5ca3-4d67-8f11-581185056dc6
2026-05-17 09:31:07 -07:00
Fusion (runfusion.ai)
4e9bfd6062 test(FN-4885): complete Step 4 — expand self-healing stall disposition coverage
Fusion-Task-Id: FN-4885
Fusion-Task-Lineage: 31110eed-5ca3-4d67-8f11-581185056dc6
2026-05-17 09:31:06 -07:00
Fusion (runfusion.ai)
7555f3d12f feat(FN-4885): complete Step 2 — add in-review stall deadlock disposition path
Fusion-Task-Id: FN-4885
Fusion-Task-Lineage: 31110eed-5ca3-4d67-8f11-581185056dc6
2026-05-17 09:31:06 -07:00
Fusion (runfusion.ai)
e3cfd0b05e feat(FN-4885): complete Step 1 — core deadlock threshold primitives
Fusion-Task-Id: FN-4885
Fusion-Task-Lineage: 31110eed-5ca3-4d67-8f11-581185056dc6
2026-05-17 09:31:06 -07:00
gsxdsm
67aff5de80 fix(dashboard): auto-invalidate index.html and view-chunk caches on mtime change
The dashboard server cached index.html and the Vite view-chunk manifest
forever with no invalidation. When the on-disk files changed (release
upgrade, rebuild) the server kept serving stale HTML referencing chunk
hashes that no longer existed, leaving the browser stuck on a blank
white page until the server was restarted.

Both caches now key on file mtime and refresh automatically. The
serveIndexHtml catch path also logs the failure and clears the
templated cache so the next request can recover instead of silently
404ing until restart.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 09:24:28 -07:00
Fusion (runfusion.ai)
c502820f68 fix(FN-4893): cast fn_secret_get context fields via local alias
Fusion-Task-Id: FN-4893
Fusion-Task-Lineage: 14912482-9b55-47ae-831e-03e149714d72
2026-05-17 09:20:08 -07:00
Fusion (runfusion.ai)
813001bc8b feat(FN-4893): add secrets_access approval action category
Fusion-Task-Id: FN-4893
Fusion-Task-Lineage: 14912482-9b55-47ae-831e-03e149714d72
2026-05-17 09:20:08 -07:00