gsxdsm
bab42b40dd
FN-7736: prevent recovery/oversight from resuming approval-blocked tasks
Introduces a canonical awaiting-approval pause reason and predicate so recovery and oversight paths treat approval-blocked tasks as terminal-until-approved instead of eligible for early rebound.
- Add isTaskBlockedOnApproval predicate and canonical "awaiting-approval" pause reason in @fusion/core (store.ts, task-merge.ts, index.ts/index.gate.ts)
- Exclude approval-blocked tasks from paused-scope-decay rebound in self-healing.ts
- Keep the planner overseer withholding oversight for approval-blocked tasks (overseer-human-control-policy.ts)
- Executor and agent-heartbeat now recognize the approval-blocked state and avoid resuming it
- Add regression tests across store-persistence, task-merge, overseer-human-control-policy, paused-scope-decay, and self-healing-paused-abort-recovery
- Update docs/architecture.md with the new approval-hold invariant
- Add changeset fn-7736-approval-hold.md (patch)
Files changed:
.changeset/fn-7736-approval-hold.md | 7 +++
docs/architecture.md | 64 ++++++++++++++++++++--
.../core/src/__tests__/store-persistence.test.ts | 18 ++++++
packages/core/src/__tests__/task-merge.test.ts | 34 ++++++++++++
packages/core/src/index.gate.ts | 2 +
packages/core/src/index.ts | 2 +
packages/core/src/store.ts | 18 +++++-
packages/core/src/task-merge.ts | 34 ++++++++++++
.../executor-approval-gate-suspend.test.ts | 5 +-
.../src/__tests__/heartbeat-executor.test.ts | 5 +-
.../overseer-human-control-policy.test.ts | 44 +++++++++++++++
.../paused-scope-decay.test.ts | 44 +++++++++++++++
.../self-healing-paused-abort-recovery.test.ts | 21 +++++++
packages/engine/src/agent-heartbeat.ts | 8 ++-
packages/engine/src/executor.ts | 13 ++++-
.../engine/src/overseer-human-control-policy.ts | 45 +++++++++++----
packages/engine/src/self-healing.ts | 12 +++-
17 files changed, 351 insertions(+), 25 deletions(-)
Fusion-Task-Id: FN-7736
Fusion-Task-Lineage: 67e05b7f-f621-4f9b-bc01-721ff05d715b
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-09 19:58:06 -07:00
..
2026-07-09 19:58:06 -07:00
2026-07-08 16:27:10 -07:00
2026-07-09 19:58:06 -07:00
2026-07-09 19:58:06 -07:00
2026-07-08 23:39:34 -07:00
2026-07-08 16:27:10 -07:00
2026-07-09 19:58:06 -07:00
2026-07-09 19:58:04 -07:00
2026-07-08 16:27:10 -07:00
2026-07-08 16:27:10 -07:00
2026-06-08 15:19:27 -07:00
2026-07-08 16:27:10 -07:00