@telora/daemon 0.22.132 → 0.22.136
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-info.json +6 -3
- package/dist/audit/audit-hooks.d.ts +6 -2
- package/dist/audit/audit-hooks.d.ts.map +1 -1
- package/dist/audit/audit-hooks.js +12 -5
- package/dist/audit/audit-hooks.js.map +1 -1
- package/dist/audit/audit-phase.js +1 -1
- package/dist/audit/audit-phase.js.map +1 -1
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +1 -0
- package/dist/backends/index.js.map +1 -1
- package/dist/completion/completion-phase-registry.d.ts +4 -0
- package/dist/completion/completion-phase-registry.d.ts.map +1 -1
- package/dist/completion/completion-phase-registry.js +63 -18
- package/dist/completion/completion-phase-registry.js.map +1 -1
- package/dist/completion/exit-classification.d.ts.map +1 -1
- package/dist/completion/exit-classification.js +1 -0
- package/dist/completion/exit-classification.js.map +1 -1
- package/dist/completion/review-approved-head-gate.d.ts +53 -0
- package/dist/completion/review-approved-head-gate.d.ts.map +1 -0
- package/dist/completion/review-approved-head-gate.js +124 -0
- package/dist/completion/review-approved-head-gate.js.map +1 -0
- package/dist/completion/review-census-record.d.ts +52 -0
- package/dist/completion/review-census-record.d.ts.map +1 -0
- package/dist/completion/review-census-record.js +145 -0
- package/dist/completion/review-census-record.js.map +1 -0
- package/dist/completion/review-exit-deps.d.ts +5 -1
- package/dist/completion/review-exit-deps.d.ts.map +1 -1
- package/dist/completion/review-exit-deps.js +7 -2
- package/dist/completion/review-exit-deps.js.map +1 -1
- package/dist/completion/review-exit-phase.d.ts.map +1 -1
- package/dist/completion/review-exit-phase.js +29 -16
- package/dist/completion/review-exit-phase.js.map +1 -1
- package/dist/completion/review-exit-progress.d.ts +8 -0
- package/dist/completion/review-exit-progress.d.ts.map +1 -1
- package/dist/completion/review-exit-progress.js +14 -0
- package/dist/completion/review-exit-progress.js.map +1 -1
- package/dist/completion/review-exit-shortfall-park.d.ts +14 -0
- package/dist/completion/review-exit-shortfall-park.d.ts.map +1 -0
- package/dist/completion/review-exit-shortfall-park.js +52 -0
- package/dist/completion/review-exit-shortfall-park.js.map +1 -0
- package/dist/completion/review-exit-shortfall.js +1 -1
- package/dist/completion/review-exit-shortfall.js.map +1 -1
- package/dist/completion/review-exit-verdict-gate.d.ts +58 -0
- package/dist/completion/review-exit-verdict-gate.d.ts.map +1 -1
- package/dist/completion/review-exit-verdict-gate.js +68 -8
- package/dist/completion/review-exit-verdict-gate.js.map +1 -1
- package/dist/completion/review-next-step.d.ts +15 -3
- package/dist/completion/review-next-step.d.ts.map +1 -1
- package/dist/completion/review-next-step.js +7 -2
- package/dist/completion/review-next-step.js.map +1 -1
- package/dist/completion/standing-approval-convergence.d.ts +68 -0
- package/dist/completion/standing-approval-convergence.d.ts.map +1 -0
- package/dist/completion/standing-approval-convergence.js +230 -0
- package/dist/completion/standing-approval-convergence.js.map +1 -0
- package/dist/completion/standing-approval-deps.d.ts +5 -0
- package/dist/completion/standing-approval-deps.d.ts.map +1 -0
- package/dist/completion/standing-approval-deps.js +37 -0
- package/dist/completion/standing-approval-deps.js.map +1 -0
- package/dist/completion/state-cascade.d.ts +11 -0
- package/dist/completion/state-cascade.d.ts.map +1 -1
- package/dist/completion/state-cascade.js +40 -1
- package/dist/completion/state-cascade.js.map +1 -1
- package/dist/completion/team-lifecycle.d.ts +14 -2
- package/dist/completion/team-lifecycle.d.ts.map +1 -1
- package/dist/completion/team-lifecycle.js +36 -36
- package/dist/completion/team-lifecycle.js.map +1 -1
- package/dist/completion/terminated-work-reconcile.d.ts +3 -1
- package/dist/completion/terminated-work-reconcile.d.ts.map +1 -1
- package/dist/completion/terminated-work-reconcile.js +24 -11
- package/dist/completion/terminated-work-reconcile.js.map +1 -1
- package/dist/delivery/delivery-advance-block.d.ts +6 -0
- package/dist/delivery/delivery-advance-block.d.ts.map +1 -1
- package/dist/delivery/delivery-advance-block.js +29 -3
- package/dist/delivery/delivery-advance-block.js.map +1 -1
- package/dist/delivery/delivery-reconciler.d.ts.map +1 -1
- package/dist/delivery/delivery-reconciler.js +4 -1
- package/dist/delivery/delivery-reconciler.js.map +1 -1
- package/dist/delivery/operator-hold.d.ts.map +1 -1
- package/dist/delivery/operator-hold.js +3 -1
- package/dist/delivery/operator-hold.js.map +1 -1
- package/dist/directive/directive-executor.d.ts.map +1 -1
- package/dist/directive/directive-executor.js +6 -0
- package/dist/directive/directive-executor.js.map +1 -1
- package/dist/directive/directive-queue.d.ts +8 -0
- package/dist/directive/directive-queue.d.ts.map +1 -1
- package/dist/directive/directive-queue.js +20 -0
- package/dist/directive/directive-queue.js.map +1 -1
- package/dist/directive/phase-sync.d.ts +5 -0
- package/dist/directive/phase-sync.d.ts.map +1 -1
- package/dist/directive/phase-sync.js +11 -1
- package/dist/directive/phase-sync.js.map +1 -1
- package/dist/directive/stranded-review-reroute.d.ts +37 -0
- package/dist/directive/stranded-review-reroute.d.ts.map +1 -0
- package/dist/directive/stranded-review-reroute.js +150 -0
- package/dist/directive/stranded-review-reroute.js.map +1 -0
- package/dist/focus/focus-engine.d.ts.map +1 -1
- package/dist/focus/focus-engine.js +15 -3
- package/dist/focus/focus-engine.js.map +1 -1
- package/dist/focus/focus-executor.d.ts.map +1 -1
- package/dist/focus/focus-executor.js +9 -65
- package/dist/focus/focus-executor.js.map +1 -1
- package/dist/focus/focus-lifecycle.d.ts +12 -0
- package/dist/focus/focus-lifecycle.d.ts.map +1 -1
- package/dist/focus/focus-lifecycle.js +66 -37
- package/dist/focus/focus-lifecycle.js.map +1 -1
- package/dist/focus/focus-phase.d.ts.map +1 -1
- package/dist/focus/focus-phase.js +6 -0
- package/dist/focus/focus-phase.js.map +1 -1
- package/dist/focus/focus-spawn-decision.d.ts.map +1 -1
- package/dist/focus/focus-spawn-decision.js +1 -0
- package/dist/focus/focus-spawn-decision.js.map +1 -1
- package/dist/focus/focus-team-state.d.ts +10 -0
- package/dist/focus/focus-team-state.d.ts.map +1 -1
- package/dist/focus/focus-team-state.js +19 -1
- package/dist/focus/focus-team-state.js.map +1 -1
- package/dist/focus/listener-auto-advance.d.ts.map +1 -1
- package/dist/focus/listener-auto-advance.js +1 -0
- package/dist/focus/listener-auto-advance.js.map +1 -1
- package/dist/focus/listener-spawn.d.ts +10 -0
- package/dist/focus/listener-spawn.d.ts.map +1 -1
- package/dist/focus/listener-spawn.js +46 -4
- package/dist/focus/listener-spawn.js.map +1 -1
- package/dist/focus/listener-state.d.ts.map +1 -1
- package/dist/focus/listener-state.js +11 -1
- package/dist/focus/listener-state.js.map +1 -1
- package/dist/focus/listener.d.ts +42 -0
- package/dist/focus/listener.d.ts.map +1 -1
- package/dist/focus/listener.js +62 -33
- package/dist/focus/listener.js.map +1 -1
- package/dist/focus/pending-review-approved-head.d.ts +41 -0
- package/dist/focus/pending-review-approved-head.d.ts.map +1 -0
- package/dist/focus/pending-review-approved-head.js +198 -0
- package/dist/focus/pending-review-approved-head.js.map +1 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts +5 -0
- package/dist/focus/pending-spawn-pass-deps.d.ts.map +1 -1
- package/dist/focus/pending-spawn-pass-deps.js +2 -1
- package/dist/focus/pending-spawn-pass-deps.js.map +1 -1
- package/dist/focus/pending-spawn-review-next-step.d.ts.map +1 -1
- package/dist/focus/pending-spawn-review-next-step.js +26 -4
- package/dist/focus/pending-spawn-review-next-step.js.map +1 -1
- package/dist/focus/review-spawn-coverage.d.ts +87 -0
- package/dist/focus/review-spawn-coverage.d.ts.map +1 -0
- package/dist/focus/review-spawn-coverage.js +104 -0
- package/dist/focus/review-spawn-coverage.js.map +1 -0
- package/dist/focus/session-health.d.ts +5 -2
- package/dist/focus/session-health.d.ts.map +1 -1
- package/dist/focus/session-health.js +2 -1
- package/dist/focus/session-health.js.map +1 -1
- package/dist/focus/session-process-reap.d.ts +50 -0
- package/dist/focus/session-process-reap.d.ts.map +1 -0
- package/dist/focus/session-process-reap.js +77 -0
- package/dist/focus/session-process-reap.js.map +1 -0
- package/dist/focus/unchanged-reviewed-head.d.ts +40 -0
- package/dist/focus/unchanged-reviewed-head.d.ts.map +1 -0
- package/dist/focus/unchanged-reviewed-head.js +84 -0
- package/dist/focus/unchanged-reviewed-head.js.map +1 -0
- package/dist/focus/verify-open-issues.d.ts +4 -19
- package/dist/focus/verify-open-issues.d.ts.map +1 -1
- package/dist/focus/verify-open-issues.js +83 -41
- package/dist/focus/verify-open-issues.js.map +1 -1
- package/dist/git/focus-integration-sync.d.ts +61 -0
- package/dist/git/focus-integration-sync.d.ts.map +1 -0
- package/dist/git/focus-integration-sync.js +73 -0
- package/dist/git/focus-integration-sync.js.map +1 -0
- package/dist/git/focus-own-delta.d.ts +38 -0
- package/dist/git/focus-own-delta.d.ts.map +1 -0
- package/dist/git/focus-own-delta.js +193 -0
- package/dist/git/focus-own-delta.js.map +1 -0
- package/dist/git/index.d.ts +2 -0
- package/dist/git/index.d.ts.map +1 -1
- package/dist/git/index.js +4 -0
- package/dist/git/index.js.map +1 -1
- package/dist/git/merge.d.ts.map +1 -1
- package/dist/git/merge.js +11 -1
- package/dist/git/merge.js.map +1 -1
- package/dist/git/resolution-restore.d.ts +66 -0
- package/dist/git/resolution-restore.d.ts.map +1 -0
- package/dist/git/resolution-restore.js +331 -0
- package/dist/git/resolution-restore.js.map +1 -0
- package/dist/loops/engine.d.ts.map +1 -1
- package/dist/loops/engine.js.map +1 -1
- package/dist/merge/abandoned-merge-recovery.d.ts +72 -0
- package/dist/merge/abandoned-merge-recovery.d.ts.map +1 -0
- package/dist/merge/abandoned-merge-recovery.js +117 -0
- package/dist/merge/abandoned-merge-recovery.js.map +1 -0
- package/dist/merge/focus-merge.d.ts +19 -0
- package/dist/merge/focus-merge.d.ts.map +1 -1
- package/dist/merge/focus-merge.js +136 -99
- package/dist/merge/focus-merge.js.map +1 -1
- package/dist/merge/merge-back-activity.d.ts +11 -0
- package/dist/merge/merge-back-activity.d.ts.map +1 -0
- package/dist/merge/merge-back-activity.js +57 -0
- package/dist/merge/merge-back-activity.js.map +1 -0
- package/dist/merge/merge-back-conflict.d.ts +119 -0
- package/dist/merge/merge-back-conflict.d.ts.map +1 -0
- package/dist/merge/merge-back-conflict.js +178 -0
- package/dist/merge/merge-back-conflict.js.map +1 -0
- package/dist/merge/merge-back-followup.d.ts +109 -0
- package/dist/merge/merge-back-followup.d.ts.map +1 -0
- package/dist/merge/merge-back-followup.js +316 -0
- package/dist/merge/merge-back-followup.js.map +1 -0
- package/dist/merge/merge-back-loop.d.ts +2 -0
- package/dist/merge/merge-back-loop.d.ts.map +1 -1
- package/dist/merge/merge-back-loop.js +14 -15
- package/dist/merge/merge-back-loop.js.map +1 -1
- package/dist/merge/merge-conflict-escalation.d.ts +12 -0
- package/dist/merge/merge-conflict-escalation.d.ts.map +1 -1
- package/dist/merge/merge-conflict-escalation.js +37 -2
- package/dist/merge/merge-conflict-escalation.js.map +1 -1
- package/dist/merge/merge-gate-coverage.d.ts.map +1 -1
- package/dist/merge/merge-gate-coverage.js +1 -0
- package/dist/merge/merge-gate-coverage.js.map +1 -1
- package/dist/prompt/prompt-listing.d.ts +5 -0
- package/dist/prompt/prompt-listing.d.ts.map +1 -1
- package/dist/prompt/prompt-listing.js +35 -0
- package/dist/prompt/prompt-listing.js.map +1 -1
- package/dist/prompt-sections/routing-decider-sections.d.ts.map +1 -1
- package/dist/prompt-sections/routing-decider-sections.js +2 -0
- package/dist/prompt-sections/routing-decider-sections.js.map +1 -1
- package/dist/prompt-sections/shortfall-park-section.d.ts +43 -0
- package/dist/prompt-sections/shortfall-park-section.d.ts.map +1 -0
- package/dist/prompt-sections/shortfall-park-section.js +36 -0
- package/dist/prompt-sections/shortfall-park-section.js.map +1 -0
- package/dist/queries/agent-resolvable-promotion.d.ts +16 -2
- package/dist/queries/agent-resolvable-promotion.d.ts.map +1 -1
- package/dist/queries/agent-resolvable-promotion.js +30 -3
- package/dist/queries/agent-resolvable-promotion.js.map +1 -1
- package/dist/queries/cause-key.d.ts +17 -22
- package/dist/queries/cause-key.d.ts.map +1 -1
- package/dist/queries/cause-key.js +50 -1
- package/dist/queries/cause-key.js.map +1 -1
- package/dist/queries/commit-attributions.d.ts +18 -0
- package/dist/queries/commit-attributions.d.ts.map +1 -0
- package/dist/queries/commit-attributions.js +39 -0
- package/dist/queries/commit-attributions.js.map +1 -0
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +3 -1
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/delivery-gate-state.d.ts +21 -5
- package/dist/queries/delivery-gate-state.d.ts.map +1 -1
- package/dist/queries/delivery-gate-state.js +35 -9
- package/dist/queries/delivery-gate-state.js.map +1 -1
- package/dist/queries/escalation-consumption.d.ts.map +1 -1
- package/dist/queries/escalation-consumption.js +2 -1
- package/dist/queries/escalation-consumption.js.map +1 -1
- package/dist/queries/escalation-field-bounds.d.ts +48 -0
- package/dist/queries/escalation-field-bounds.d.ts.map +1 -0
- package/dist/queries/escalation-field-bounds.js +83 -0
- package/dist/queries/escalation-field-bounds.js.map +1 -0
- package/dist/queries/escalation-refusal.d.ts +88 -0
- package/dist/queries/escalation-refusal.d.ts.map +1 -0
- package/dist/queries/escalation-refusal.js +217 -0
- package/dist/queries/escalation-refusal.js.map +1 -0
- package/dist/queries/escalation-suppression.d.ts +6 -0
- package/dist/queries/escalation-suppression.d.ts.map +1 -1
- package/dist/queries/escalation-suppression.js +4 -13
- package/dist/queries/escalation-suppression.js.map +1 -1
- package/dist/queries/escalations.d.ts +5 -13
- package/dist/queries/escalations.d.ts.map +1 -1
- package/dist/queries/escalations.js +25 -30
- package/dist/queries/escalations.js.map +1 -1
- package/dist/queries/filing-observation.d.ts.map +1 -1
- package/dist/queries/filing-observation.js +3 -1
- package/dist/queries/filing-observation.js.map +1 -1
- package/dist/queries/focus-review-approval.d.ts +2 -0
- package/dist/queries/focus-review-approval.d.ts.map +1 -1
- package/dist/queries/focus-review-approval.js +7 -2
- package/dist/queries/focus-review-approval.js.map +1 -1
- package/dist/queries/focuses.d.ts.map +1 -1
- package/dist/queries/focuses.js +2 -1
- package/dist/queries/focuses.js.map +1 -1
- package/dist/queries/incident-correlation.d.ts.map +1 -1
- package/dist/queries/incident-correlation.js +4 -1
- package/dist/queries/incident-correlation.js.map +1 -1
- package/dist/queries/misattributed-commits-record.d.ts +26 -0
- package/dist/queries/misattributed-commits-record.d.ts.map +1 -0
- package/dist/queries/misattributed-commits-record.js +5 -0
- package/dist/queries/misattributed-commits-record.js.map +1 -0
- package/dist/queries/reality-tree.d.ts.map +1 -1
- package/dist/queries/reality-tree.js +2 -1
- package/dist/queries/reality-tree.js.map +1 -1
- package/dist/queries/schemas.d.ts +3 -0
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +1 -0
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/shared.js +1 -1
- package/dist/queries/shortfall-park-record.d.ts +48 -0
- package/dist/queries/shortfall-park-record.d.ts.map +1 -0
- package/dist/queries/shortfall-park-record.js +31 -0
- package/dist/queries/shortfall-park-record.js.map +1 -0
- package/dist/queries/shortfall-rulings.d.ts +71 -0
- package/dist/queries/shortfall-rulings.d.ts.map +1 -0
- package/dist/queries/shortfall-rulings.js +53 -0
- package/dist/queries/shortfall-rulings.js.map +1 -0
- package/dist/queries/verification.d.ts +20 -1
- package/dist/queries/verification.d.ts.map +1 -1
- package/dist/queries/verification.js +48 -8
- package/dist/queries/verification.js.map +1 -1
- package/dist/resolvers/index.d.ts +2 -2
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/index.js.map +1 -1
- package/dist/resolvers/shared/delivery-trailer.d.ts +99 -0
- package/dist/resolvers/shared/delivery-trailer.d.ts.map +1 -0
- package/dist/resolvers/shared/delivery-trailer.js +103 -0
- package/dist/resolvers/shared/delivery-trailer.js.map +1 -0
- package/dist/resolvers/shared/git-diff.d.ts +11 -84
- package/dist/resolvers/shared/git-diff.d.ts.map +1 -1
- package/dist/resolvers/shared/git-diff.js +17 -84
- package/dist/resolvers/shared/git-diff.js.map +1 -1
- package/dist/resolvers/shared/review-window-commits.d.ts.map +1 -1
- package/dist/resolvers/shared/review-window-commits.js +1 -0
- package/dist/resolvers/shared/review-window-commits.js.map +1 -1
- package/dist/session/session-lineage.d.ts.map +1 -1
- package/dist/session/session-lineage.js +1 -0
- package/dist/session/session-lineage.js.map +1 -1
- package/dist/shell/config.d.ts +2 -1
- package/dist/shell/config.d.ts.map +1 -1
- package/dist/shell/config.js +21 -4
- package/dist/shell/config.js.map +1 -1
- package/dist/shell/crash-recovery.d.ts +3 -7
- package/dist/shell/crash-recovery.d.ts.map +1 -1
- package/dist/shell/crash-recovery.js +28 -31
- package/dist/shell/crash-recovery.js.map +1 -1
- package/dist/shell/orphan-capture.d.ts +42 -0
- package/dist/shell/orphan-capture.d.ts.map +1 -0
- package/dist/shell/orphan-capture.js +53 -0
- package/dist/shell/orphan-capture.js.map +1 -0
- package/dist/shell/worker-pidfile.d.ts +22 -4
- package/dist/shell/worker-pidfile.d.ts.map +1 -1
- package/dist/shell/worker-pidfile.js +51 -13
- package/dist/shell/worker-pidfile.js.map +1 -1
- package/dist/spawn/helpers.d.ts +3 -0
- package/dist/spawn/helpers.d.ts.map +1 -1
- package/dist/spawn/helpers.js +28 -9
- package/dist/spawn/helpers.js.map +1 -1
- package/dist/spawn/lead-launch.d.ts +34 -0
- package/dist/spawn/lead-launch.d.ts.map +1 -0
- package/dist/spawn/lead-launch.js +34 -0
- package/dist/spawn/lead-launch.js.map +1 -0
- package/dist/spawn/lead-process-ownership.d.ts +91 -0
- package/dist/spawn/lead-process-ownership.d.ts.map +1 -0
- package/dist/spawn/lead-process-ownership.js +120 -0
- package/dist/spawn/lead-process-ownership.js.map +1 -0
- package/dist/spawn/lifecycle.d.ts +43 -3
- package/dist/spawn/lifecycle.d.ts.map +1 -1
- package/dist/spawn/lifecycle.js +75 -44
- package/dist/spawn/lifecycle.js.map +1 -1
- package/dist/spawn/liveness.d.ts.map +1 -1
- package/dist/spawn/liveness.js +5 -1
- package/dist/spawn/liveness.js.map +1 -1
- package/dist/spawn/one-shot-process-ownership.d.ts +48 -0
- package/dist/spawn/one-shot-process-ownership.d.ts.map +1 -0
- package/dist/spawn/one-shot-process-ownership.js +44 -0
- package/dist/spawn/one-shot-process-ownership.js.map +1 -0
- package/dist/spawn/process-group-kill.d.ts +79 -0
- package/dist/spawn/process-group-kill.d.ts.map +1 -0
- package/dist/spawn/process-group-kill.js +210 -0
- package/dist/spawn/process-group-kill.js.map +1 -0
- package/dist/spawn/process-spawn.d.ts +18 -1
- package/dist/spawn/process-spawn.d.ts.map +1 -1
- package/dist/spawn/process-spawn.js +51 -20
- package/dist/spawn/process-spawn.js.map +1 -1
- package/dist/spawn/resolution-budget.d.ts +38 -0
- package/dist/spawn/resolution-budget.d.ts.map +1 -0
- package/dist/spawn/resolution-budget.js +87 -0
- package/dist/spawn/resolution-budget.js.map +1 -0
- package/dist/spawn/review-hold-park.d.ts.map +1 -1
- package/dist/spawn/review-hold-park.js +37 -5
- package/dist/spawn/review-hold-park.js.map +1 -1
- package/dist/spawn/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn/spawn-cooldown.js +9 -0
- package/dist/spawn/spawn-cooldown.js.map +1 -1
- package/dist/spawn/untracked-lead-sweep.d.ts +29 -0
- package/dist/spawn/untracked-lead-sweep.d.ts.map +1 -0
- package/dist/spawn/untracked-lead-sweep.js +100 -0
- package/dist/spawn/untracked-lead-sweep.js.map +1 -0
- package/dist/spawn/worker-registry.d.ts.map +1 -1
- package/dist/spawn/worker-registry.js +4 -1
- package/dist/spawn/worker-registry.js.map +1 -1
- package/dist/spawn/worktree-session.d.ts.map +1 -1
- package/dist/spawn/worktree-session.js +8 -6
- package/dist/spawn/worktree-session.js.map +1 -1
- package/dist/testing/fixtures/exit-capture-verify.d.ts +41 -0
- package/dist/testing/fixtures/exit-capture-verify.d.ts.map +1 -0
- package/dist/testing/fixtures/exit-capture-verify.js +152 -0
- package/dist/testing/fixtures/exit-capture-verify.js.map +1 -0
- package/dist/testing/fixtures/index.js +1 -1
- package/dist/testing/fixtures/pending-spawn-world.d.ts +7 -0
- package/dist/testing/fixtures/pending-spawn-world.d.ts.map +1 -1
- package/dist/testing/fixtures/pending-spawn-world.js +21 -1
- package/dist/testing/fixtures/pending-spawn-world.js.map +1 -1
- package/dist/testing/fixtures/stubborn-lead-process.d.ts +22 -0
- package/dist/testing/fixtures/stubborn-lead-process.d.ts.map +1 -0
- package/dist/testing/fixtures/stubborn-lead-process.js +68 -0
- package/dist/testing/fixtures/stubborn-lead-process.js.map +1 -0
- package/dist/types/config.d.ts +13 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/focus.d.ts +7 -0
- package/dist/types/focus.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/verify/commit-verdict-record.d.ts +13 -3
- package/dist/verify/commit-verdict-record.d.ts.map +1 -1
- package/dist/verify/commit-verdict-record.js +45 -25
- package/dist/verify/commit-verdict-record.js.map +1 -1
- package/dist/verify/credit-rearm.d.ts +18 -0
- package/dist/verify/credit-rearm.d.ts.map +1 -0
- package/dist/verify/credit-rearm.js +69 -0
- package/dist/verify/credit-rearm.js.map +1 -0
- package/dist/verify/delivery-commit-set.d.ts +10 -0
- package/dist/verify/delivery-commit-set.d.ts.map +1 -0
- package/dist/verify/delivery-commit-set.js +82 -0
- package/dist/verify/delivery-commit-set.js.map +1 -0
- package/dist/verify/explicit-rearm.d.ts.map +1 -1
- package/dist/verify/explicit-rearm.js +2 -0
- package/dist/verify/explicit-rearm.js.map +1 -1
- package/dist/verify/failure-signature.d.ts.map +1 -1
- package/dist/verify/failure-signature.js +1 -0
- package/dist/verify/failure-signature.js.map +1 -1
- package/dist/verify/gate-run-registry.d.ts.map +1 -1
- package/dist/verify/gate-run-registry.js +3 -0
- package/dist/verify/gate-run-registry.js.map +1 -1
- package/dist/verify/injection-stamp.d.ts +29 -0
- package/dist/verify/injection-stamp.d.ts.map +1 -0
- package/dist/verify/injection-stamp.js +139 -0
- package/dist/verify/injection-stamp.js.map +1 -0
- package/dist/verify/misattributed-commits-read.d.ts +31 -0
- package/dist/verify/misattributed-commits-read.d.ts.map +1 -0
- package/dist/verify/misattributed-commits-read.js +47 -0
- package/dist/verify/misattributed-commits-read.js.map +1 -0
- package/dist/verify/misattributed-commits.d.ts +52 -0
- package/dist/verify/misattributed-commits.d.ts.map +1 -0
- package/dist/verify/misattributed-commits.js +148 -0
- package/dist/verify/misattributed-commits.js.map +1 -0
- package/dist/verify/no-own-delta-verdict.d.ts +47 -0
- package/dist/verify/no-own-delta-verdict.d.ts.map +1 -0
- package/dist/verify/no-own-delta-verdict.js +74 -0
- package/dist/verify/no-own-delta-verdict.js.map +1 -0
- package/dist/verify/shortfall-park-escalation.d.ts +41 -0
- package/dist/verify/shortfall-park-escalation.d.ts.map +1 -0
- package/dist/verify/shortfall-park-escalation.js +177 -0
- package/dist/verify/shortfall-park-escalation.js.map +1 -0
- package/dist/verify/shortfall-park.d.ts +109 -0
- package/dist/verify/shortfall-park.d.ts.map +1 -0
- package/dist/verify/shortfall-park.js +208 -0
- package/dist/verify/shortfall-park.js.map +1 -0
- package/dist/verify/shortfall-repeat.d.ts +47 -16
- package/dist/verify/shortfall-repeat.d.ts.map +1 -1
- package/dist/verify/shortfall-repeat.js +77 -23
- package/dist/verify/shortfall-repeat.js.map +1 -1
- package/dist/verify/shortfall-rulings.d.ts +106 -0
- package/dist/verify/shortfall-rulings.d.ts.map +1 -0
- package/dist/verify/shortfall-rulings.js +118 -0
- package/dist/verify/shortfall-rulings.js.map +1 -0
- package/dist/verify/stall-detectors.d.ts.map +1 -1
- package/dist/verify/stall-detectors.js +10 -4
- package/dist/verify/stall-detectors.js.map +1 -1
- package/dist/verify/verification-attribution-base.d.ts +26 -0
- package/dist/verify/verification-attribution-base.d.ts.map +1 -0
- package/dist/verify/verification-attribution-base.js +127 -0
- package/dist/verify/verification-attribution-base.js.map +1 -0
- package/dist/verify/verification-attribution-deps.d.ts +32 -0
- package/dist/verify/verification-attribution-deps.d.ts.map +1 -0
- package/dist/verify/verification-attribution-deps.js +209 -0
- package/dist/verify/verification-attribution-deps.js.map +1 -0
- package/dist/verify/verification-baseline.d.ts +6 -0
- package/dist/verify/verification-baseline.d.ts.map +1 -1
- package/dist/verify/verification-baseline.js +27 -11
- package/dist/verify/verification-baseline.js.map +1 -1
- package/dist/verify/verification-commit-sharing.d.ts.map +1 -1
- package/dist/verify/verification-commit-sharing.js +30 -8
- package/dist/verify/verification-commit-sharing.js.map +1 -1
- package/dist/verify/verification-config.d.ts.map +1 -1
- package/dist/verify/verification-config.js +2 -0
- package/dist/verify/verification-config.js.map +1 -1
- package/dist/verify/verification-default-on.d.ts +3 -0
- package/dist/verify/verification-default-on.d.ts.map +1 -1
- package/dist/verify/verification-default-on.js +5 -1
- package/dist/verify/verification-default-on.js.map +1 -1
- package/dist/verify/verification-deps-default.d.ts.map +1 -1
- package/dist/verify/verification-deps-default.js +61 -120
- package/dist/verify/verification-deps-default.js.map +1 -1
- package/dist/verify/verification-deps.d.ts +26 -4
- package/dist/verify/verification-deps.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.d.ts +15 -0
- package/dist/verify/verification-deterministic.d.ts.map +1 -1
- package/dist/verify/verification-deterministic.js +1 -12
- package/dist/verify/verification-deterministic.js.map +1 -1
- package/dist/verify/verification-engine.d.ts +9 -6
- package/dist/verify/verification-engine.d.ts.map +1 -1
- package/dist/verify/verification-engine.js +43 -62
- package/dist/verify/verification-engine.js.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts +2 -1
- package/dist/verify/verification-evidence-unavailable-feedback.d.ts.map +1 -1
- package/dist/verify/verification-evidence-unavailable-feedback.js +19 -1
- package/dist/verify/verification-evidence-unavailable-feedback.js.map +1 -1
- package/dist/verify/verification-failure-parser.d.ts +57 -1
- package/dist/verify/verification-failure-parser.d.ts.map +1 -1
- package/dist/verify/verification-failure-parser.js +116 -10
- package/dist/verify/verification-failure-parser.js.map +1 -1
- package/dist/verify/verification-feedback.d.ts +60 -43
- package/dist/verify/verification-feedback.d.ts.map +1 -1
- package/dist/verify/verification-feedback.js +115 -120
- package/dist/verify/verification-feedback.js.map +1 -1
- package/dist/verify/verification-history-reset.d.ts +2 -1
- package/dist/verify/verification-history-reset.d.ts.map +1 -1
- package/dist/verify/verification-history-reset.js +4 -2
- package/dist/verify/verification-history-reset.js.map +1 -1
- package/dist/verify/verification-rework-issue.d.ts +87 -0
- package/dist/verify/verification-rework-issue.d.ts.map +1 -0
- package/dist/verify/verification-rework-issue.js +212 -0
- package/dist/verify/verification-rework-issue.js.map +1 -0
- package/dist/verify/verification-rework-messages.d.ts.map +1 -1
- package/dist/verify/verification-rework-messages.js +10 -0
- package/dist/verify/verification-rework-messages.js.map +1 -1
- package/dist/verify/verify-gate-stall.d.ts +2 -0
- package/dist/verify/verify-gate-stall.d.ts.map +1 -1
- package/dist/verify/verify-gate-stall.js +35 -9
- package/dist/verify/verify-gate-stall.js.map +1 -1
- package/dist/verify/verify-restatement.d.ts.map +1 -1
- package/dist/verify/verify-restatement.js +9 -2
- package/dist/verify/verify-restatement.js.map +1 -1
- package/dist/worktree/capture-attribution-read.d.ts +47 -0
- package/dist/worktree/capture-attribution-read.d.ts.map +1 -0
- package/dist/worktree/capture-attribution-read.js +98 -0
- package/dist/worktree/capture-attribution-read.js.map +1 -0
- package/dist/worktree/capture-attribution.d.ts +26 -0
- package/dist/worktree/capture-attribution.d.ts.map +1 -0
- package/dist/worktree/capture-attribution.js +111 -0
- package/dist/worktree/capture-attribution.js.map +1 -0
- package/dist/worktree/index.d.ts.map +1 -1
- package/dist/worktree/index.js +2 -1
- package/dist/worktree/index.js.map +1 -1
- package/dist/worktree/provision.d.ts.map +1 -1
- package/dist/worktree/provision.js +23 -6
- package/dist/worktree/provision.js.map +1 -1
- package/dist/worktree/safety.d.ts +14 -4
- package/dist/worktree/safety.d.ts.map +1 -1
- package/dist/worktree/safety.js +37 -7
- package/dist/worktree/safety.js.map +1 -1
- package/dist/worktree/scratch-guard.d.ts +53 -2
- package/dist/worktree/scratch-guard.d.ts.map +1 -1
- package/dist/worktree/scratch-guard.js +115 -30
- package/dist/worktree/scratch-guard.js.map +1 -1
- package/dist/worktree/unmerged-capture-escalation.d.ts +52 -0
- package/dist/worktree/unmerged-capture-escalation.d.ts.map +1 -0
- package/dist/worktree/unmerged-capture-escalation.js +64 -0
- package/dist/worktree/unmerged-capture-escalation.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/merge/abandoned-merge-recovery.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
/**
|
|
5
|
+
* Recover a focus worktree left mid-merge by a merge-back nothing is finishing.
|
|
6
|
+
*
|
|
7
|
+
* The observed failure (daemon log 2026-09-17, focus "Team teardown and session
|
|
8
|
+
* reaping leave the agent process running"): a merge-back of integration stopped
|
|
9
|
+
* at 14:21 UTC with 4 unmerged paths and 44 staged files, and nothing owned it
|
|
10
|
+
* afterwards. Every automatic path refuses a dirty focus worktree -- the
|
|
11
|
+
* merge-back loop skipped it as dirty_worktree, and the resolved-conflict retry
|
|
12
|
+
* logged "Spawning fallback resolution agent" 310 times without spawning one,
|
|
13
|
+
* because merging integration back into a tree already mid-merge cannot produce
|
|
14
|
+
* a fresh conflict. The merge_conflict hold on its delivery never cleared, so
|
|
15
|
+
* every review exited held until an operator ran `git merge --abort` by hand.
|
|
16
|
+
*
|
|
17
|
+
* Containment of a failed resolution (git/resolution-restore.ts) only covers a
|
|
18
|
+
* merge-back whose resolver this process is still running. This module covers the
|
|
19
|
+
* rest: a tree whose merge no team, agent session, fallback resolver or in-flight
|
|
20
|
+
* merge-back owns -- residue from a daemon restart mid-resolution, a killed team
|
|
21
|
+
* lead, or an older daemon version. The residue is PRESERVED (named ref + patch,
|
|
22
|
+
* same as a failed resolver run) and the worktree restored to its committed HEAD,
|
|
23
|
+
* so the normal paths (the merge-back follow-up and the gated merge) run again.
|
|
24
|
+
*
|
|
25
|
+
* A tree is recovered only when EVERY owner check says nobody holds it:
|
|
26
|
+
* 1. MERGE_HEAD is present (an unfinished merge -- other dirt is not ours);
|
|
27
|
+
* 2. no writer: the worktree write signal is quiescent except for the dirt
|
|
28
|
+
* itself (no active team, no active session, no recent commit);
|
|
29
|
+
* 3. no merge-back in flight in this process, and none started within
|
|
30
|
+
* ABANDONED_MERGE_GRACE_MS (merge/merge-back-activity.ts);
|
|
31
|
+
* 4. no live fallback resolver process for the branch (spawn/worker-registry.ts).
|
|
32
|
+
*/
|
|
33
|
+
import { preserveAndRestoreFocusWorktree, runGitSync } from '../git/index.js';
|
|
34
|
+
import { getFocusWorktree } from '../focus/focus-worktree-state.js';
|
|
35
|
+
import { listTrackedWorkers } from '../spawn/worker-registry.js';
|
|
36
|
+
import { isWorktreeBeingWritten } from '../worktree/index.js';
|
|
37
|
+
import { isMergeBackInFlight, msSinceMergeBackStarted } from './merge-back-activity.js';
|
|
38
|
+
import { createLogger } from '../shell/log.js';
|
|
39
|
+
const log = createLogger({ module: 'abandoned-merge-recovery' });
|
|
40
|
+
/** How long after this process starts a merge-back its tree is treated as owned even with no resolver yet. */
|
|
41
|
+
export const ABANDONED_MERGE_GRACE_MS = 5 * 60_000;
|
|
42
|
+
export function defaultAbandonedMergeRecoveryDeps() {
|
|
43
|
+
return {
|
|
44
|
+
getFocusWorktree: (focusId) => {
|
|
45
|
+
const info = getFocusWorktree(focusId);
|
|
46
|
+
return info ? { worktreePath: info.worktreePath, branchName: info.branchName } : undefined;
|
|
47
|
+
},
|
|
48
|
+
isWorktreeBeingWritten: (focusId) => isWorktreeBeingWritten(focusId),
|
|
49
|
+
hasMergeHead: (worktreePath) => {
|
|
50
|
+
const r = runGitSync(['rev-parse', '-q', '--verify', 'MERGE_HEAD'], worktreePath);
|
|
51
|
+
return r.success && r.output.length > 0;
|
|
52
|
+
},
|
|
53
|
+
readHead: (worktreePath) => {
|
|
54
|
+
const r = runGitSync(['rev-parse', 'HEAD'], worktreePath);
|
|
55
|
+
return r.success && r.output.length > 0 ? r.output : null;
|
|
56
|
+
},
|
|
57
|
+
isMergeBackInFlight: (worktreePath) => isMergeBackInFlight(worktreePath),
|
|
58
|
+
msSinceMergeBackStarted: (worktreePath) => msSinceMergeBackStarted(worktreePath),
|
|
59
|
+
hasLiveResolver: (branchName) => listTrackedWorkers().some((w) => w.label === `merge-resolution:${branchName}`),
|
|
60
|
+
preserveAndRestore: preserveAndRestoreFocusWorktree,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/** Who, if anyone, still owns the unfinished merge in the worktree; null when nobody does. */
|
|
64
|
+
function mergeOwner(deps, worktree, signal) {
|
|
65
|
+
if (signal.active && signal.reason?.code !== 'dirty_worktree')
|
|
66
|
+
return `worktree is being written (${signal.reason?.code ?? 'unknown'})`;
|
|
67
|
+
if (deps.isMergeBackInFlight(worktree.worktreePath))
|
|
68
|
+
return 'a resolution of this merge-back is in flight';
|
|
69
|
+
const sinceStart = deps.msSinceMergeBackStarted(worktree.worktreePath);
|
|
70
|
+
if (sinceStart !== null && sinceStart < ABANDONED_MERGE_GRACE_MS)
|
|
71
|
+
return `a merge-back started ${Math.round(sinceStart / 1000)}s ago`;
|
|
72
|
+
if (deps.hasLiveResolver(worktree.branchName))
|
|
73
|
+
return 'a fallback resolution agent is running';
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Preserve and undo an unfinished merge in the focus worktree when nothing owns it
|
|
78
|
+
* (see the module header). `signal` is the write signal the caller already read,
|
|
79
|
+
* if any, so the tick does not read it twice.
|
|
80
|
+
*/
|
|
81
|
+
export async function recoverAbandonedMergeBack(focusId, deps = defaultAbandonedMergeRecoveryDeps(), signal) {
|
|
82
|
+
const worktree = deps.getFocusWorktree(focusId);
|
|
83
|
+
if (!worktree || !deps.hasMergeHead(worktree.worktreePath))
|
|
84
|
+
return { kind: 'not_abandoned' };
|
|
85
|
+
const owner = mergeOwner(deps, worktree, signal ?? (await deps.isWorktreeBeingWritten(focusId)));
|
|
86
|
+
if (owner !== null)
|
|
87
|
+
return { kind: 'owned', reason: owner };
|
|
88
|
+
const head = deps.readHead(worktree.worktreePath);
|
|
89
|
+
if (head === null) {
|
|
90
|
+
const reason = 'its committed HEAD is unreadable, so the merge cannot be undone safely';
|
|
91
|
+
log.error(`[abandoned-merge-recovery] Not recovering the abandoned merge in ${worktree.worktreePath}: ${reason}`);
|
|
92
|
+
return { kind: 'restore_failed', reason };
|
|
93
|
+
}
|
|
94
|
+
const restore = deps.preserveAndRestore({ worktreePath: worktree.worktreePath, preMergeHead: head, branchName: worktree.branchName });
|
|
95
|
+
const kept = [restore.preservedRef, restore.patchPath].filter(Boolean).join(', ') || 'nothing (no work to keep)';
|
|
96
|
+
if (!restore.clean) {
|
|
97
|
+
const reason = restore.residue ?? restore.preserveError ?? 'the worktree is still not clean after restore';
|
|
98
|
+
log.error(`[abandoned-merge-recovery] Abandoned merge on ${worktree.branchName} not fully undone (preserved: ${kept}): ${reason}`);
|
|
99
|
+
return { kind: 'restore_failed', reason };
|
|
100
|
+
}
|
|
101
|
+
log.warn(`[abandoned-merge-recovery] Undid an abandoned merge on ${worktree.branchName} that nothing owned; ` +
|
|
102
|
+
`worktree restored to ${head.slice(0, 12)}, partial work preserved at ${kept}`);
|
|
103
|
+
return { kind: 'recovered', restore };
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The merge-back loop's write signal: when the only thing holding the worktree is
|
|
107
|
+
* its dirt and that dirt is an abandoned merge, recover it and read the signal
|
|
108
|
+
* again, so the tick proceeds on the restored tree instead of skipping it forever.
|
|
109
|
+
*/
|
|
110
|
+
export async function isWorktreeBeingWrittenAfterMergeRecovery(focusId, deps = defaultAbandonedMergeRecoveryDeps()) {
|
|
111
|
+
const signal = await deps.isWorktreeBeingWritten(focusId);
|
|
112
|
+
if (signal.reason?.code !== 'dirty_worktree')
|
|
113
|
+
return signal;
|
|
114
|
+
const recovery = await recoverAbandonedMergeBack(focusId, deps, signal);
|
|
115
|
+
return recovery.kind === 'recovered' ? deps.isWorktreeBeingWritten(focusId) : signal;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=abandoned-merge-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abandoned-merge-recovery.js","sourceRoot":"","sources":["../../src/merge/abandoned-merge-recovery.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,wEAAwE;AACxE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,+BAA+B,EAAE,UAAU,EAAiC,MAAM,iBAAiB,CAAC;AAC7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAA4B,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAEjE,8GAA8G;AAC9G,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAG,MAAM,CAAC;AAmBnD,MAAM,UAAU,iCAAiC;IAC/C,OAAO;QACL,gBAAgB,EAAE,CAAC,OAAO,EAAE,EAAE;YAC5B,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,CAAC;QACD,sBAAsB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC;QACpE,YAAY,EAAE,CAAC,YAAY,EAAE,EAAE;YAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,CAAC;YAClF,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,QAAQ,EAAE,CAAC,YAAY,EAAE,EAAE;YACzB,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;YAC1D,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5D,CAAC;QACD,mBAAmB,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,mBAAmB,CAAC,YAAY,CAAC;QACxE,uBAAuB,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,uBAAuB,CAAC,YAAY,CAAC;QAChF,eAAe,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,oBAAoB,UAAU,EAAE,CAAC;QAC/G,kBAAkB,EAAE,+BAA+B;KACpD,CAAC;AACJ,CAAC;AAED,8FAA8F;AAC9F,SAAS,UAAU,CACjB,IAAgC,EAChC,QAAsD,EACtD,MAA2B;IAE3B,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,gBAAgB;QAAE,OAAO,8BAA8B,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,SAAS,GAAG,CAAC;IACxI,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,8CAA8C,CAAC;IAC3G,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACvE,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,GAAG,wBAAwB;QAAE,OAAO,wBAAwB,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;IACtI,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,wCAAwC,CAAC;IAC/F,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAe,EACf,OAAmC,iCAAiC,EAAE,EACtE,MAA4B;IAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IAC7F,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjG,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAE5D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAClD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,wEAAwE,CAAC;QACxF,GAAG,CAAC,KAAK,CAAC,oEAAoE,QAAQ,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC,CAAC;QAClH,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACtI,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC;IACjH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa,IAAI,+CAA+C,CAAC;QAC3G,GAAG,CAAC,KAAK,CAAC,iDAAiD,QAAQ,CAAC,UAAU,iCAAiC,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;QACnI,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC;IACD,GAAG,CAAC,IAAI,CACN,0DAA0D,QAAQ,CAAC,UAAU,uBAAuB;QACpG,wBAAwB,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,+BAA+B,IAAI,EAAE,CAC/E,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,wCAAwC,CAC5D,OAAe,EACf,OAAmC,iCAAiC,EAAE;IAEtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,gBAAgB;QAAE,OAAO,MAAM,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACxE,OAAO,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACvF,CAAC"}
|
|
@@ -9,6 +9,8 @@ import { createEscalation, hasOpenWorktreeDirtyEscalation } from '../queries/esc
|
|
|
9
9
|
import { getMergeConflictDeliveries } from '../queries/deliveries.js';
|
|
10
10
|
import { worktreeHasUncommittedChanges } from '../worktree/index.js';
|
|
11
11
|
import { type BranchMergeGateTarget } from './merge-gate-coverage.js';
|
|
12
|
+
import { type MergeBackConflictDeps } from './merge-back-conflict.js';
|
|
13
|
+
import { type MergeBackAttemptOutcome, type MergeBackFollowUpDeps, type MergeBackFollowUpTarget } from './merge-back-followup.js';
|
|
12
14
|
/**
|
|
13
15
|
* How the merge guard treats a dirty worktree.
|
|
14
16
|
*
|
|
@@ -105,6 +107,23 @@ export declare function isResolverStillAlive(teamState: Pick<FocusTeamState, 'le
|
|
|
105
107
|
* Returns when resolution is detected or timeout expires.
|
|
106
108
|
*/
|
|
107
109
|
export declare function requestTeamLeadResolution(teamState: FocusTeamState, conflictFiles: string[], branchName: string, integrationBranch: string, timeoutMs?: number, isAlive?: (pid: number) => boolean): Promise<MergeConflictResolutionResult>;
|
|
110
|
+
/**
|
|
111
|
+
* The real collaborators of the merge-back conflict handler. The team-lead
|
|
112
|
+
* resolution request and liveness probe are defined here and injected, so
|
|
113
|
+
* merge/merge-back-conflict.ts never imports this module.
|
|
114
|
+
*/
|
|
115
|
+
export declare function defaultMergeBackConflictDeps(): MergeBackConflictDeps;
|
|
116
|
+
/**
|
|
117
|
+
* One follow-up merge-back completion attempt for a focus branch with an open
|
|
118
|
+
* merge_conflict (merge/merge-back-followup.ts drives it from the merge-back
|
|
119
|
+
* loop). It re-runs merge-back; a conflict goes to the contained fallback
|
|
120
|
+
* resolver (escalating budget, bounded, partial work preserved). It completes
|
|
121
|
+
* the merge in the focus worktree only: the merge into integration stays with
|
|
122
|
+
* the gated merge paths.
|
|
123
|
+
*/
|
|
124
|
+
export declare function attemptMergeBackCompletion(config: DaemonConfig, target: MergeBackFollowUpTarget, deps?: MergeBackConflictDeps): Promise<MergeBackAttemptOutcome>;
|
|
125
|
+
/** The real collaborators of the merge-back follow-up (merge/merge-back-followup.ts). */
|
|
126
|
+
export declare function defaultMergeBackFollowUpDeps(): MergeBackFollowUpDeps;
|
|
108
127
|
/**
|
|
109
128
|
* Merge the focus branch to integration.
|
|
110
129
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-merge.d.ts","sourceRoot":"","sources":["../../src/merge/focus-merge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"focus-merge.d.ts","sourceRoot":"","sources":["../../src/merge/focus-merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
// packages/daemon/src/completion/session-hold.test.ts,
|
|
4
4
|
// packages/daemon/src/completion/teardown-merge-gate.test.ts,
|
|
5
5
|
// packages/daemon/src/integration/agent-owned-scoping-integration.test.ts,
|
|
6
|
+
// packages/daemon/src/integration/merge-back-resolver-timeout-regression.test.ts,
|
|
6
7
|
// packages/daemon/src/merge/dirty-worktree-merge-refusal.test.ts,
|
|
7
8
|
// packages/daemon/src/merge/focus-merge-empty-deliveries.test.ts,
|
|
8
9
|
// packages/daemon/src/merge/focus-merge-resolver-liveness.test.ts,
|
|
10
|
+
// packages/daemon/src/merge/merge-back-conflict.test.ts,
|
|
9
11
|
// packages/daemon/src/merge/resolved-conflict-merge-gate.test.ts,
|
|
10
12
|
// packages/daemon/src/prompt-sections/gate-ownership.test.ts
|
|
11
13
|
// PINNED-BY-END
|
|
12
|
-
import { runGitSync } from '../git/index.js';
|
|
14
|
+
import { runGitSync, preserveAndRestoreFocusWorktree } from '../git/index.js';
|
|
13
15
|
import { fetchEffectiveWorkflow } from '../queries/workflows.js';
|
|
14
16
|
import { mergeBackFromIntegration } from '../git/index.js';
|
|
15
17
|
import { mergeToIntegration } from '../git/exec.js';
|
|
@@ -27,10 +29,14 @@ import { spawnResolutionAgent } from '../spawn/lifecycle.js';
|
|
|
27
29
|
import { isProcessAlive } from '../spawn/liveness.js';
|
|
28
30
|
import { getFocusWorktree } from '../focus/focus-worktree-state.js';
|
|
29
31
|
import { worktreeHasUncommittedChanges } from '../worktree/index.js';
|
|
32
|
+
import { recoverAbandonedMergeBack } from './abandoned-merge-recovery.js';
|
|
33
|
+
import { noteMergeBackStarted } from './merge-back-activity.js';
|
|
30
34
|
import { classifyMergeFailure } from './merge-failure-classify.js';
|
|
31
35
|
import { readMergeGateHoldForBranch } from './merge-gate-coverage.js';
|
|
32
36
|
import { NO_HUMAN_ACT } from '../queries/filing-observation.js';
|
|
33
|
-
import { escalateMergeConflict, reportMergeConflictState } from './merge-conflict-escalation.js';
|
|
37
|
+
import { escalateMergeConflict, reportMergeConflictState, fileResolverExhaustedObservation } from './merge-conflict-escalation.js';
|
|
38
|
+
import { handleMergeBackConflict, runContainedFallbackResolution, describeContainment, readWorktreeHead, integrationMergedIntoHead, } from './merge-back-conflict.js';
|
|
39
|
+
import { recordResolverSuccess } from './merge-back-followup.js';
|
|
34
40
|
import { createLogger } from '../shell/log.js';
|
|
35
41
|
import { focusPipelineModelForPass } from '../shell/model-resolution.js';
|
|
36
42
|
const log = createLogger({ module: 'focus-merge' });
|
|
@@ -233,6 +239,74 @@ export async function requestTeamLeadResolution(teamState, conflictFiles, branch
|
|
|
233
239
|
teamState.resolvingMergeConflict = false;
|
|
234
240
|
}
|
|
235
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* The real collaborators of the merge-back conflict handler. The team-lead
|
|
244
|
+
* resolution request and liveness probe are defined here and injected, so
|
|
245
|
+
* merge/merge-back-conflict.ts never imports this module.
|
|
246
|
+
*/
|
|
247
|
+
export function defaultMergeBackConflictDeps() {
|
|
248
|
+
return {
|
|
249
|
+
requestTeamLeadResolution: (teamState, conflictFiles, branchName, integrationBranch) => requestTeamLeadResolution(teamState, conflictFiles, branchName, integrationBranch),
|
|
250
|
+
isResolverStillAlive: (teamState) => isResolverStillAlive(teamState),
|
|
251
|
+
spawnResolutionAgent,
|
|
252
|
+
preserveAndRestore: preserveAndRestoreFocusWorktree,
|
|
253
|
+
escalateMergeConflict,
|
|
254
|
+
reportGitState,
|
|
255
|
+
readHead: readWorktreeHead,
|
|
256
|
+
now: () => Date.now(),
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Merge integration back into a focus worktree only once its committed HEAD is known: a conflict the resolver
|
|
261
|
+
* cannot finish is contained by restoring to that HEAD, so without it nothing is merged. A clean merge-back ends
|
|
262
|
+
* the branch's resolver episode.
|
|
263
|
+
*/
|
|
264
|
+
async function mergeBackWithRecoveryHead(worktreePath, integrationBranch, branchName, readHead = readWorktreeHead) {
|
|
265
|
+
const preMergeHead = readHead(worktreePath);
|
|
266
|
+
if (preMergeHead === null) {
|
|
267
|
+
log.error(`[focus-merge] Merge-back refused for ${branchName}: its committed HEAD is unreadable, so a conflict could not be restored`);
|
|
268
|
+
return { preMergeHead: null, refusal: `Merge-back refused for ${branchName}: the committed focus HEAD could not be read` };
|
|
269
|
+
}
|
|
270
|
+
noteMergeBackStarted(worktreePath);
|
|
271
|
+
const mergeBack = await mergeBackFromIntegration({ worktreePath, integrationBranch });
|
|
272
|
+
if (mergeBack.status === 'clean')
|
|
273
|
+
recordResolverSuccess({ branchName, worktreePath });
|
|
274
|
+
return { preMergeHead, mergeBack };
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* One follow-up merge-back completion attempt for a focus branch with an open
|
|
278
|
+
* merge_conflict (merge/merge-back-followup.ts drives it from the merge-back
|
|
279
|
+
* loop). It re-runs merge-back; a conflict goes to the contained fallback
|
|
280
|
+
* resolver (escalating budget, bounded, partial work preserved). It completes
|
|
281
|
+
* the merge in the focus worktree only: the merge into integration stays with
|
|
282
|
+
* the gated merge paths.
|
|
283
|
+
*/
|
|
284
|
+
export async function attemptMergeBackCompletion(config, target, deps = defaultMergeBackConflictDeps()) {
|
|
285
|
+
const mb = await mergeBackWithRecoveryHead(target.worktreePath, config.integrationBranch, target.branchName, deps.readHead);
|
|
286
|
+
if (mb.preMergeHead === null)
|
|
287
|
+
return { kind: 'error', message: mb.refusal };
|
|
288
|
+
const { preMergeHead, mergeBack } = mb;
|
|
289
|
+
if (mergeBack.status === 'clean')
|
|
290
|
+
return { kind: 'merged' };
|
|
291
|
+
if (mergeBack.status === 'error')
|
|
292
|
+
return { kind: 'error', message: mergeBack.message };
|
|
293
|
+
const result = await runContainedFallbackResolution({
|
|
294
|
+
config, worktreePath: target.worktreePath, branchName: target.branchName, integrationBranch: config.integrationBranch,
|
|
295
|
+
conflictFiles: mergeBack.conflictFiles ?? [], focusDescription: target.focusName,
|
|
296
|
+
model: focusPipelineModelForPass(target.pipelineConfig, 'coding'), focusId: target.focusId, preMergeHead,
|
|
297
|
+
}, deps);
|
|
298
|
+
return result.resolved ? { kind: 'merged' } : { kind: 'failed', error: result.error, restore: result.restore };
|
|
299
|
+
}
|
|
300
|
+
/** The real collaborators of the merge-back follow-up (merge/merge-back-followup.ts). */
|
|
301
|
+
export function defaultMergeBackFollowUpDeps() {
|
|
302
|
+
return {
|
|
303
|
+
attempt: (config, target) => attemptMergeBackCompletion(config, target),
|
|
304
|
+
resolveConflictRecord: (focusId) => resolveOpenWorktreeDirtyEscalations(focusId, [MERGE_CONFLICT_ESCALATION_KIND], 'agent_session', 'Auto-resolved by the daemon: a follow-up resolver completed the merge-back from integration.'),
|
|
305
|
+
integrationMergedIn: (config, target) => integrationMergedIntoHead(target.worktreePath, config.integrationBranch),
|
|
306
|
+
fileExhausted: fileResolverExhaustedObservation,
|
|
307
|
+
now: () => Date.now(),
|
|
308
|
+
};
|
|
309
|
+
}
|
|
236
310
|
/**
|
|
237
311
|
* Merge the focus branch to integration.
|
|
238
312
|
*
|
|
@@ -302,71 +376,18 @@ export async function mergeFocusBranch(config, teamState, sessionId, branchName,
|
|
|
302
376
|
// Merge integration HEAD into the focus branch to surface conflicts early
|
|
303
377
|
const worktreePath = teamState.worktreePath;
|
|
304
378
|
if (worktreePath) {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
379
|
+
// A resolver that cannot finish is contained by restoring to the committed focus HEAD.
|
|
380
|
+
const mb = await mergeBackWithRecoveryHead(worktreePath, config.integrationBranch, branchName);
|
|
381
|
+
if (mb.preMergeHead === null)
|
|
382
|
+
return { mergeSucceeded: false, exitReason: mb.refusal };
|
|
383
|
+
const { preMergeHead, mergeBack: mergeBackResult } = mb;
|
|
309
384
|
if (mergeBackResult.status === 'conflict') {
|
|
310
385
|
const conflictFiles = mergeBackResult.conflictFiles ?? [];
|
|
311
386
|
log.info(`[focus-merge] Merge-back produced conflicts for "${teamState.focusName}": ` +
|
|
312
387
|
`${conflictFiles.join(', ') || 'unknown files'}`);
|
|
313
|
-
|
|
314
|
-
if (
|
|
315
|
-
|
|
316
|
-
if (resolution.resolved) {
|
|
317
|
-
// Agent committed the merge resolution, proceed to integration merge
|
|
318
|
-
log.info(`Conflict resolved by team lead for "${teamState.focusName}", proceeding`);
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
// Team lead could not resolve -- escalate
|
|
322
|
-
await escalateMergeConflict({
|
|
323
|
-
organizationId: teamState.organizationId,
|
|
324
|
-
sessionId,
|
|
325
|
-
deliveryId: representativeDeliveryId,
|
|
326
|
-
deliveryName: teamState.focusName,
|
|
327
|
-
focusId: teamState.focusId,
|
|
328
|
-
branchName,
|
|
329
|
-
integrationBranch: config.integrationBranch,
|
|
330
|
-
mergeError: `Merge-back conflict unresolved: ${resolution.reason ?? 'unknown'}`,
|
|
331
|
-
});
|
|
332
|
-
return { mergeSucceeded: false, exitReason: 'merge_back_conflict_unresolved' };
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
// No active team lead -- spawn a short-lived resolution agent
|
|
337
|
-
log.info(`No active team lead for "${teamState.focusName}", spawning fallback resolution agent`);
|
|
338
|
-
// Report resolving_conflict state for all unmerged deliveries
|
|
339
|
-
for (const deliveryId of teamState.knownDeliveryIds) {
|
|
340
|
-
if (!teamState.mergedDeliveryIds.has(deliveryId)) {
|
|
341
|
-
reportGitState(deliveryId, 'resolving_conflict').catch(err => log.warn(`reportGitState resolving_conflict failed for ${deliveryId}:`, err.message));
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
const fallbackResult = await spawnResolutionAgent({
|
|
345
|
-
config,
|
|
346
|
-
worktreePath,
|
|
347
|
-
branchName,
|
|
348
|
-
integrationBranch: config.integrationBranch,
|
|
349
|
-
conflictFiles,
|
|
350
|
-
focusDescription: teamState.focusName,
|
|
351
|
-
model: teamState.pipelineConfig?.model ?? null,
|
|
352
|
-
focusId: teamState.focusId,
|
|
353
|
-
});
|
|
354
|
-
if (fallbackResult.success) {
|
|
355
|
-
log.info(`Fallback resolution agent resolved conflicts for "${teamState.focusName}", proceeding`);
|
|
356
|
-
}
|
|
357
|
-
else {
|
|
358
|
-
await escalateMergeConflict({
|
|
359
|
-
organizationId: teamState.organizationId,
|
|
360
|
-
sessionId,
|
|
361
|
-
deliveryId: representativeDeliveryId,
|
|
362
|
-
deliveryName: teamState.focusName,
|
|
363
|
-
focusId: teamState.focusId,
|
|
364
|
-
branchName,
|
|
365
|
-
integrationBranch: config.integrationBranch,
|
|
366
|
-
mergeError: `Fallback resolution agent failed: ${fallbackResult.error ?? 'unknown'}`,
|
|
367
|
-
});
|
|
368
|
-
return { mergeSucceeded: false, exitReason: 'merge_back_conflict_unresolved' };
|
|
369
|
-
}
|
|
388
|
+
const conflict = await handleMergeBackConflict({ config, teamState, sessionId, branchName, representativeDeliveryId, worktreePath, preMergeHead, conflictFiles }, defaultMergeBackConflictDeps());
|
|
389
|
+
if (!conflict.resolved) {
|
|
390
|
+
return { mergeSucceeded: false, exitReason: conflict.exitReason };
|
|
370
391
|
}
|
|
371
392
|
}
|
|
372
393
|
if (mergeBackResult.status === 'error') {
|
|
@@ -434,9 +455,8 @@ function resolveMergeConflictEscalations(deliveries) {
|
|
|
434
455
|
for (const focusId of focusIds) {
|
|
435
456
|
resolveOpenWorktreeDirtyEscalations(focusId, [MERGE_CONFLICT_ESCALATION_KIND], 'auto_swept')
|
|
436
457
|
.then((n) => {
|
|
437
|
-
if (n > 0)
|
|
458
|
+
if (n > 0)
|
|
438
459
|
log.info(`[focus-merge] Merge resolved for focus ${focusId}; auto-resolved ${n} merge-conflict escalation(s).`);
|
|
439
|
-
}
|
|
440
460
|
})
|
|
441
461
|
.catch((err) => log.warn(`[focus-merge] Auto-resolve of merge-conflict escalation failed for focus ${focusId}: ${err.message}`));
|
|
442
462
|
}
|
|
@@ -456,6 +476,56 @@ function markConflictRetryMerged(deliveries) {
|
|
|
456
476
|
}
|
|
457
477
|
resolveMergeConflictEscalations(deliveries);
|
|
458
478
|
}
|
|
479
|
+
/**
|
|
480
|
+
* The resolved-conflict retry's fallback: merge integration back into the
|
|
481
|
+
* focus worktree, run the fallback resolution agent with failure containment
|
|
482
|
+
* (a resolver that cannot finish leaves the worktree restored to its committed
|
|
483
|
+
* HEAD, partial work preserved -- merge/merge-back-conflict.ts), and retry the
|
|
484
|
+
* integration merge once it resolves. The open merge_conflict escalation that
|
|
485
|
+
* put these deliveries here stays the record on failure.
|
|
486
|
+
*/
|
|
487
|
+
async function retryViaContainedFallbackResolution(config, branchName, representative, deliveries) {
|
|
488
|
+
const worktreeInfo = representative.focus_id ? getFocusWorktree(representative.focus_id) : null;
|
|
489
|
+
if (!worktreeInfo)
|
|
490
|
+
return;
|
|
491
|
+
// A dirty tree may be a live team's uncommitted work: never merge into it, and never let a failed
|
|
492
|
+
// resolution's restore discard it -- unless it is an abandoned merge nothing owns, which is undone first.
|
|
493
|
+
if (worktreeHasUncommittedChanges(worktreeInfo.worktreePath)
|
|
494
|
+
&& (await recoverAbandonedMergeBack(representative.focus_id ?? '')).kind !== 'recovered') {
|
|
495
|
+
log.info(`[focus-merge] Not spawning a fallback resolution agent for ${branchName}: the focus worktree has uncommitted changes`);
|
|
496
|
+
return;
|
|
497
|
+
}
|
|
498
|
+
log.info(`[focus-merge] Spawning fallback resolution agent for branch ${branchName}`);
|
|
499
|
+
const mb = await mergeBackWithRecoveryHead(worktreeInfo.worktreePath, config.integrationBranch, branchName);
|
|
500
|
+
if (mb.preMergeHead === null || mb.mergeBack.status !== 'conflict')
|
|
501
|
+
return;
|
|
502
|
+
const { preMergeHead, mergeBack: mergeBackResult } = mb;
|
|
503
|
+
const fallback = await runContainedFallbackResolution({
|
|
504
|
+
config,
|
|
505
|
+
worktreePath: worktreeInfo.worktreePath,
|
|
506
|
+
branchName,
|
|
507
|
+
integrationBranch: config.integrationBranch,
|
|
508
|
+
conflictFiles: mergeBackResult.conflictFiles ?? [],
|
|
509
|
+
focusDescription: worktreeInfo.focusName || branchName,
|
|
510
|
+
model: focusPipelineModelForPass(representative.pipeline_config, 'coding'),
|
|
511
|
+
focusId: representative.focus_id ?? null,
|
|
512
|
+
preMergeHead,
|
|
513
|
+
}, defaultMergeBackConflictDeps());
|
|
514
|
+
if (!fallback.resolved) {
|
|
515
|
+
log.warn(`[focus-merge] Fallback resolution failed for branch ${branchName}: ${fallback.error}. ${describeContainment(fallback.restore)}`);
|
|
516
|
+
return;
|
|
517
|
+
}
|
|
518
|
+
const retryResult = await mergeToIntegration({
|
|
519
|
+
config,
|
|
520
|
+
branchName,
|
|
521
|
+
deliveryName: representative.delivery_name,
|
|
522
|
+
deliveryId: representative.delivery_id,
|
|
523
|
+
});
|
|
524
|
+
if (retryResult.success) {
|
|
525
|
+
log.info(`Merge succeeded after fallback resolution for branch ${branchName}`);
|
|
526
|
+
markConflictRetryMerged(deliveries);
|
|
527
|
+
}
|
|
528
|
+
}
|
|
459
529
|
/**
|
|
460
530
|
* Check for deliveries stuck in merge_conflict state and retry the merge.
|
|
461
531
|
*
|
|
@@ -514,40 +584,7 @@ export async function checkResolvedMergeConflicts(config, deps = defaultResolved
|
|
|
514
584
|
log.info(`[focus-merge] Merge retry still failing for branch ${branchName}: ${mergeResult.error ?? 'unknown'}`);
|
|
515
585
|
// Attempt fallback resolution agent if a worktree exists for this focus
|
|
516
586
|
if (representative.focus_id) {
|
|
517
|
-
|
|
518
|
-
if (worktreeInfo) {
|
|
519
|
-
log.info(`[focus-merge] Spawning fallback resolution agent for branch ${branchName}`);
|
|
520
|
-
// Merge integration back into the focus worktree to surface conflicts
|
|
521
|
-
const mergeBackResult = await mergeBackFromIntegration({
|
|
522
|
-
worktreePath: worktreeInfo.worktreePath,
|
|
523
|
-
integrationBranch: config.integrationBranch,
|
|
524
|
-
});
|
|
525
|
-
if (mergeBackResult.status === 'conflict') {
|
|
526
|
-
const fallbackResult = await spawnResolutionAgent({
|
|
527
|
-
config,
|
|
528
|
-
worktreePath: worktreeInfo.worktreePath,
|
|
529
|
-
branchName,
|
|
530
|
-
integrationBranch: config.integrationBranch,
|
|
531
|
-
conflictFiles: mergeBackResult.conflictFiles ?? [],
|
|
532
|
-
focusDescription: worktreeInfo.focusName || branchName,
|
|
533
|
-
model: focusPipelineModelForPass(representative.pipeline_config, 'coding'),
|
|
534
|
-
focusId: representative.focus_id,
|
|
535
|
-
});
|
|
536
|
-
if (fallbackResult.success) {
|
|
537
|
-
// Retry merge after resolution
|
|
538
|
-
const retryResult = await mergeToIntegration({
|
|
539
|
-
config,
|
|
540
|
-
branchName,
|
|
541
|
-
deliveryName: representative.delivery_name,
|
|
542
|
-
deliveryId: representative.delivery_id,
|
|
543
|
-
});
|
|
544
|
-
if (retryResult.success) {
|
|
545
|
-
log.info(`Merge succeeded after fallback resolution for branch ${branchName}`);
|
|
546
|
-
markConflictRetryMerged(deliveries);
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
}
|
|
550
|
-
}
|
|
587
|
+
await retryViaContainedFallbackResolution(config, branchName, representative, deliveries);
|
|
551
588
|
}
|
|
552
589
|
}
|
|
553
590
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-merge.js","sourceRoot":"","sources":["../../src/merge/focus-merge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"focus-merge.js","sourceRoot":"","sources":["../../src/merge/focus-merge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Stamp the start of a merge-back into `worktreePath`. */
|
|
2
|
+
export declare function noteMergeBackStarted(worktreePath: string, now?: number): void;
|
|
3
|
+
/** Run a resolution of `worktreePath` (resolver plus its containment), marked in flight until it settles. */
|
|
4
|
+
export declare function withMergeBackInFlight<T>(worktreePath: string, run: () => Promise<T>): Promise<T>;
|
|
5
|
+
/** Whether a resolution of `worktreePath` is running in this process. */
|
|
6
|
+
export declare function isMergeBackInFlight(worktreePath: string): boolean;
|
|
7
|
+
/** Milliseconds since this process last started a merge-back into `worktreePath`; null when it never did. */
|
|
8
|
+
export declare function msSinceMergeBackStarted(worktreePath: string, now?: number): number | null;
|
|
9
|
+
/** Test-only: forget every recorded merge-back. */
|
|
10
|
+
export declare function __resetMergeBackActivityForTesting(): void;
|
|
11
|
+
//# sourceMappingURL=merge-back-activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-back-activity.d.ts","sourceRoot":"","sources":["../../src/merge/merge-back-activity.ts"],"names":[],"mappings":"AA2BA,2DAA2D;AAC3D,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI,CAEzF;AAED,6GAA6G;AAC7G,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAUtG;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,6GAA6G;AAC7G,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,GAAG,IAAI,CAGrG;AAED,mDAAmD;AACnD,wBAAgB,kCAAkC,IAAI,IAAI,CAGzD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// PINNED-BY-BEGIN (generated by gen:pinned-by -- do not hand-edit; checked by lint:pinned-by)
|
|
2
|
+
// Pinned by: packages/daemon/src/merge/abandoned-merge-recovery.test.ts
|
|
3
|
+
// PINNED-BY-END
|
|
4
|
+
/**
|
|
5
|
+
* In-process record of merge-backs this daemon is running in a focus worktree.
|
|
6
|
+
*
|
|
7
|
+
* A merge-back leaves MERGE_HEAD and conflict markers in the worktree on purpose
|
|
8
|
+
* while a resolver (the team lead or the fallback agent) works on them, and the
|
|
9
|
+
* resolver's own containment restores the tree when it cannot finish. Recovery of
|
|
10
|
+
* an ABANDONED merge (merge/abandoned-merge-recovery.ts) must never touch a tree in
|
|
11
|
+
* that state, so it asks this record first:
|
|
12
|
+
* - in flight: a resolution (team lead or fallback agent, including its
|
|
13
|
+
* containment) is running for the worktree right now;
|
|
14
|
+
* - recently started: a merge-back began within the grace window, covering the
|
|
15
|
+
* short async gap between the merge and its resolver taking the tree.
|
|
16
|
+
*
|
|
17
|
+
* The record is per process and starts empty, so after a daemon restart every
|
|
18
|
+
* leftover merge reads as not owned by this process -- which is exactly the
|
|
19
|
+
* residue recovery exists for. Dependency-free leaf.
|
|
20
|
+
*/
|
|
21
|
+
import { resolve } from 'node:path';
|
|
22
|
+
const inFlight = new Map();
|
|
23
|
+
const lastStartedAt = new Map();
|
|
24
|
+
/** Stamp the start of a merge-back into `worktreePath`. */
|
|
25
|
+
export function noteMergeBackStarted(worktreePath, now = Date.now()) {
|
|
26
|
+
lastStartedAt.set(resolve(worktreePath), now);
|
|
27
|
+
}
|
|
28
|
+
/** Run a resolution of `worktreePath` (resolver plus its containment), marked in flight until it settles. */
|
|
29
|
+
export async function withMergeBackInFlight(worktreePath, run) {
|
|
30
|
+
const key = resolve(worktreePath);
|
|
31
|
+
inFlight.set(key, (inFlight.get(key) ?? 0) + 1);
|
|
32
|
+
try {
|
|
33
|
+
return await run();
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
const left = (inFlight.get(key) ?? 1) - 1;
|
|
37
|
+
if (left > 0)
|
|
38
|
+
inFlight.set(key, left);
|
|
39
|
+
else
|
|
40
|
+
inFlight.delete(key);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** Whether a resolution of `worktreePath` is running in this process. */
|
|
44
|
+
export function isMergeBackInFlight(worktreePath) {
|
|
45
|
+
return inFlight.has(resolve(worktreePath));
|
|
46
|
+
}
|
|
47
|
+
/** Milliseconds since this process last started a merge-back into `worktreePath`; null when it never did. */
|
|
48
|
+
export function msSinceMergeBackStarted(worktreePath, now = Date.now()) {
|
|
49
|
+
const at = lastStartedAt.get(resolve(worktreePath));
|
|
50
|
+
return at === undefined ? null : now - at;
|
|
51
|
+
}
|
|
52
|
+
/** Test-only: forget every recorded merge-back. */
|
|
53
|
+
export function __resetMergeBackActivityForTesting() {
|
|
54
|
+
inFlight.clear();
|
|
55
|
+
lastStartedAt.clear();
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=merge-back-activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-back-activity.js","sourceRoot":"","sources":["../../src/merge/merge-back-activity.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,wEAAwE;AACxE,gBAAgB;AAEhB;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC3C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEhD,2DAA2D;AAC3D,MAAM,UAAU,oBAAoB,CAAC,YAAoB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACjF,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,6GAA6G;AAC7G,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAI,YAAoB,EAAE,GAAqB;IACxF,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,IAAI,GAAG,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;YACjC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,uBAAuB,CAAC,YAAoB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACpF,MAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACpD,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;AAC5C,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,kCAAkC;IAChD,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,aAAa,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
|