feat(FN-4068): add branch conflict detection and recovery for stale worktre

Implements branch conflict detection and recovery across the Fusion engine, CLI, and dashboard — surfacing git worktree conflicts when tasks conflict with unrelated branch state, and providing a recovery workflow to resolve them. The executor and worktree pool now integrate typed branch conflict che

Fusion-Task-Id: FN-4068
This commit is contained in:
Fusion
2026-05-12 17:10:26 -07:00
committed by gsxdsm
parent ceccc382b1
commit bddcc3a931
28 changed files with 1341 additions and 209 deletions

View File

@@ -4,6 +4,7 @@
gap: var(--space-md);
height: 100%;
min-height: 0;
overflow: hidden;
padding: var(--space-lg);
padding-bottom: var(--space-lg);
}
@@ -30,6 +31,7 @@
gap: var(--space-md);
min-height: 0;
flex: 1;
overflow: hidden;
}
.research-view__sidebar,
@@ -39,6 +41,26 @@
flex-direction: column;
gap: var(--space-md);
min-height: 0;
overflow: hidden;
}
.research-view__reader {
overflow: auto;
}
.research-view__reader-content {
display: flex;
flex: 1;
flex-direction: column;
gap: var(--space-md);
min-height: 0;
}
.research-view__run-detail {
display: flex;
flex-direction: column;
gap: var(--space-md);
min-height: 0;
}
.research-view__form {
@@ -127,6 +149,7 @@
.research-view__actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: var(--space-xs);
margin-top: var(--space-sm);
}
@@ -171,11 +194,13 @@
padding-left: var(--space-lg);
}
.research-view__stats {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: var(--space-sm);
margin-top: auto;
padding-top: var(--space-sm);
border-top: var(--btn-border-width) solid var(--border);
}
.research-view__stat-card {
@@ -201,6 +226,7 @@
@media (max-width: 768px) {
.research-view {
overflow-y: auto;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
padding: var(--space-md);
padding-bottom: calc(var(--space-md) + var(--mobile-nav-height) + env(safe-area-inset-bottom, 0px) + var(--standalone-bottom-gap));
@@ -210,6 +236,21 @@
display: flex;
flex-direction: column;
grid-template-columns: minmax(0, 1fr);
gap: var(--space-md);
flex: initial;
overflow: visible;
}
.research-view__sidebar,
.research-view__reader {
overflow: visible;
}
.research-view__reader {
overflow: visible;
}
.research-view__reader-content {
flex: initial;
}
@@ -223,6 +264,10 @@
flex-direction: column;
}
.research-view__header .btn {
align-self: flex-start;
}
.research-view__stats {
grid-template-columns: minmax(0, 1fr);
}