FN-7743: detect and recover stalled in-progress executor tasks in overseer
Fix the planner overseer's executor-stage stall detection so hung in-progress tasks get unstuck instead of being reported as progressing forever.
- Add configurable stuck-detection: the executor-stage overseer observation now emits signal: "stuck" once an in-progress task has been inactive past a new plannerOverseerExecutorStuckAfterMs threshold, feeding the existing decidePlannerRecovery -> bounded inject_guidance recovery path.
- Register the new plannerOverseerExecutorStuckAfterMs setting in builtin-workflow-settings.ts and export it via core index.ts/index.gate.ts.
- Preserve human-control withholds (user-paused / approval-blocked / autoMerge-off) taking precedence over stuck detection.
- Add/extend tests covering planner-overseer, planner-recovery-controller, planner-recovery, and builtin-workflow-settings-triage.
- Document the new setting in docs/architecture.md and docs/settings-reference.md.
- Add changeset fn-7743-overseer-executor-stall.md (patch).
Files changed:
.changeset/fn-7743-overseer-executor-stall.md | 7 +
docs/architecture.md | 31 +++++
docs/settings-reference.md | 3 +-
.../builtin-workflow-settings-triage.test.ts | 22 ++++
.../core/src/__tests__/planner-recovery.test.ts | 12 ++
packages/core/src/builtin-workflow-settings.ts | 26 ++++
packages/core/src/index.gate.ts | 1 +
packages/core/src/index.ts | 1 +
.../engine/src/__tests__/planner-overseer.test.ts | 146 +++++++++++++++++++++
.../__tests__/planner-recovery-controller.test.ts | 52 +++++++-
packages/engine/src/planner-overseer.ts | 88 ++++++++++++-
packages/engine/src/project-engine.ts | 11 +-
12 files changed, 391 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-7743
Fusion-Task-Lineage: 791852a2-5b77-48de-955a-1b3916616dfa
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>