docs(FN-4647): complete Step 6 — record done-task diff sources
Fusion-Task-Id: FN-4647 Fusion-Task-Lineage: c86304d4-ff28-478a-a254-8ddaeca53447
This commit is contained in:
5
.changeset/fn-4647-done-task-files-changed-labels.md
Normal file
5
.changeset/fn-4647-done-task-files-changed-labels.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@runfusion/fusion": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Done-task "files changed" surfaces now use the lineage-backed `/api/tasks/:id/diff` count and clearly label execution-time/merge-commit fallbacks.
|
||||||
@@ -1293,15 +1293,21 @@ Dashboard session-diff route registration (`packages/dashboard/src/routes/regist
|
|||||||
- `legacy` = recovered via legacy task-id/subject matching
|
- `legacy` = recovered via legacy task-id/subject matching
|
||||||
- `ambiguous` = manual reconciliation where historical task-id attribution could be misleading
|
- `ambiguous` = manual reconciliation where historical task-id attribution could be misleading
|
||||||
|
|
||||||
### Done-task changed-file aggregation provenance
|
### Done-task files-changed sources of truth
|
||||||
|
|
||||||
Done-task `files changed` data shown on Task Cards and Task Changes tabs comes from the dashboard diff endpoints (`/api/tasks/:id/diff` and `/api/tasks/:id/file-diffs`) using this precedence:
|
Done-task file-count surfaces intentionally distinguish three data sources:
|
||||||
|
|
||||||
1. If the task has a `lineageId`, aggregate reachable lineage commits from `task_commit_associations` (plus `mergeDetails.commitSha` when missing), then recompute net file patches/counts from the earliest reachable parent through the latest reachable SHA.
|
1. **`/api/tasks/:id/diff` (lineage union, authoritative landed diff)**
|
||||||
2. If lineage aggregation is unavailable or appears incomplete versus `mergeDetails.filesChanged`, fall back to commit-sha enumeration from `mergeDetails.commitSha` using merge-aware ranges (`^..` for normal commits, `^1...^2` for merge commits, empty-tree base for root commits).
|
- This route aggregates the task's landed lineage and returns `stats.filesChanged` plus the file list used by the Changes tab.
|
||||||
3. If no commit SHA is available, return merge summary numbers only (`mergeDetails.filesChanged/insertions/deletions`) without file patches.
|
- Task cards and done-task diff views should treat this as the canonical "files changed" source.
|
||||||
|
2. **`task.mergeDetails.filesChanged` / `insertions` / `deletions` (final-commit shortstat)**
|
||||||
|
- These fields describe only the recorded final merge/squash commit shortstat.
|
||||||
|
- In multi-commit lineages this can undercount the full landed diff and is therefore labeled as commit-level metadata (for example, "Files in merge commit" / "Final commit summary").
|
||||||
|
3. **`task.modifiedFiles` (execution-time worktree snapshot)**
|
||||||
|
- Captured in the executor worktree during implementation (`git diff <base>..HEAD` snapshot), before final merge outcomes are known.
|
||||||
|
- Can include transient/superset paths that did not land; UI labels this as "files touched during execution" rather than "files changed" for done tasks.
|
||||||
|
|
||||||
This keeps multi-commit landed tasks accurate while preserving compatibility for legacy/self-healed done tasks.
|
**FN-4647 decision:** `mergeDetails` shortstat fields remain commit-level metadata. No additional persisted lineage-level summary field is introduced at this time; done-task landed totals continue to be served live via `/api/tasks/:id/diff`.
|
||||||
|
|
||||||
### Task branch field plumbing (`branch` + `baseBranch`)
|
### Task branch field plumbing (`branch` + `baseBranch`)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user