gsxdsm
9cfb40e137
FN-7863: add bounded execute-node self-requeue loop guard
...
Bounds the execute->pause-abort->todo dispatch loop so a task can no longer requeue forever with no visible signal or terminal state.
- Track a progress-anchored `executeRequeueLoopCount`/`executeRequeueLoopSignature` pair on the task row (current step + step statuses) so slow no-progress requeue cycles are counted independently of the scheduler's wall-clock `dispatchStormCount` guard.
- Warn visibly in the task log at `EXECUTE_REQUEUE_LOOP_VISIBLE_THRESHOLD` (3) and terminalize non-paused, non-terminal tasks at `MAX_EXECUTE_REQUEUE_LOOP_CYCLES` (6) with `status:"failed"` and an `EXECUTION_DISPATCH_LOOP_EXHAUSTED:` error, preserving worktree/branch/step progress.
- Emit a new `task:execution-dispatch-loop-terminalized` run-audit mutation type with ids/counts/outcomes-only metadata.
- Reset the loop counters on real progress, manual retry, forward moves (in-review/done/archived), and unpause, in both the executor and scheduler.
- Add DB migration 142 (`executeRequeueLoopCount`, `executeRequeueLoopSignature` columns) plus store read/write/reset plumbing.
- Add reliability-interactions coverage for the new loop guard and extend store-persistence tests for the new columns.
- Document the new behavior in AGENTS.md and docs/architecture.md.
Files changed:
AGENTS.md | 1 +
docs/architecture.md | 2 +
packages/core/src/__tests__/store-persistence.test.ts | 45 +++++
packages/core/src/db.ts | 17 +-
packages/core/src/manual-retry-reset.ts | 1 +
packages/core/src/store.ts | 22 ++-
packages/core/src/types.ts | 11 ++
.../execute-requeue-loop-guard.test.ts | 188 +++++++++++++++
packages/engine/src/executor.ts | 67 +++++++-
packages/engine/src/run-audit.ts | 2 +
packages/engine/src/scheduler.ts | 8 +-
11 files changed, 355 insertions(+), 9 deletions(-)
Fusion-Task-Id: FN-7863
Fusion-Task-Lineage: db40507f-5851-435e-8854-c1ed695b4154
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-07-12 11:56:54 -07:00
..
2026-06-18 01:45:18 -07:00
2026-07-12 11:56:54 -07:00
2026-04-28 14:25:56 -07:00
2026-07-09 23:43:15 -07:00
2026-06-30 13:30:28 -07:00
2026-05-06 21:36:31 -07:00
2026-06-07 18:51:46 -07:00
2026-05-06 21:36:31 -07:00
2026-06-03 01:10:18 -07:00
2026-07-04 10:42:21 -07:00
2026-05-14 13:59:10 -07:00
2026-07-09 19:58:05 -07:00
2026-04-08 01:39:15 -07:00
2026-07-10 23:42:10 -07:00
2026-05-10 15:34:58 -07:00
2026-07-12 10:04:29 -07:00
2026-07-12 10:04:29 -07:00
2026-06-27 19:37:39 -07:00
2026-06-02 18:46:33 -07:00
2026-06-12 13:12:55 -07:00
2026-07-01 16:19:03 -07:00
2026-04-09 15:14:19 -07:00
2026-05-17 01:01:52 -07:00
2026-07-08 01:29:56 -07:00
2026-06-27 20:09:52 -07:00
2026-06-26 02:45:29 -07:00
2026-06-21 13:32:19 -07:00
2026-06-27 09:28:29 -07:00
2026-05-14 15:49:55 -07:00
2026-06-07 20:43:44 -07:00
2026-03-25 18:32:10 -04:00
2026-06-03 13:51:13 -07:00
2026-06-03 09:23:44 -07:00
2026-07-05 11:31:48 -07:00
2026-06-29 14:00:32 -07:00
2026-06-29 18:41:43 -07:00
2026-07-04 00:12:39 -07:00
2026-07-05 16:58:42 -07:00
2026-07-01 16:43:08 -07:00
2026-06-29 11:07:11 -07:00
2026-06-29 12:23:20 -07:00
2026-06-30 13:12:27 -07:00
2026-06-29 12:23:20 -07:00
2026-07-05 16:58:42 -07:00
2026-07-05 16:58:42 -07:00
2026-06-30 12:25:43 -07:00
2026-06-08 23:38:32 -07:00
2026-06-26 00:26:03 -07:00
2026-06-29 11:24:41 -07:00
2026-07-10 11:26:16 -07:00
2026-07-05 11:31:48 -07:00
2026-05-13 06:29:35 -07:00
2026-06-26 18:19:41 -07:00
2026-06-24 23:51:52 -07:00
2026-07-10 08:00:34 -07:00
2026-07-10 08:00:34 -07:00
2026-06-04 22:52:20 -07:00
2026-06-04 22:52:20 -07:00
2026-06-05 00:57:49 -07:00
2026-06-05 13:59:50 -07:00
2026-06-15 19:44:10 -07:00
2026-05-27 21:31:12 -07:00
2026-04-24 08:55:02 -07:00
2026-06-29 12:40:00 -07:00
2026-07-12 11:56:54 -07:00
2026-07-12 10:04:29 -07:00
2026-05-19 03:21:16 -07:00
2026-06-26 14:55:01 -07:00
2026-05-12 18:33:13 -07:00
2026-05-03 14:10:11 -07:00
2026-06-04 08:00:33 -07:00
2026-05-18 23:14:27 -07:00
2026-07-08 00:23:32 -07:00
2026-05-18 08:02:21 -07:00
2026-06-27 12:20:42 -07:00
2026-04-23 23:02:36 -07:00
2026-05-05 13:42:39 -07:00
2026-05-06 11:09:05 -07:00
2026-05-08 12:05:46 -07:00
2026-05-14 05:35:12 -07:00
2026-05-06 13:38:23 -07:00
2026-05-29 10:23:59 -07:00
2026-05-14 00:58:44 -07:00
2026-05-14 00:12:03 -07:00
2026-06-26 08:40:59 -07:00
2026-05-20 14:28:45 -07:00
2026-06-25 05:08:04 -07:00
2026-05-23 04:18:55 -07:00
2026-05-03 02:02:25 -07:00
2026-06-12 09:24:02 -07:00
2026-07-09 19:58:05 -07:00
2026-05-28 22:59:18 -07:00
2026-07-03 21:45:21 -07:00
2026-06-24 09:02:02 -07:00
2026-06-21 09:00:40 -07:00
2026-05-10 08:28:07 -07:00
2026-07-02 19:01:09 -07:00
2026-07-02 12:34:35 -07:00
2026-07-02 11:38:34 -07:00
2026-06-25 23:17:02 -07:00
2026-05-30 22:53:24 -07:00
2026-05-28 10:32:16 -07:00
2026-05-28 10:32:16 -07:00
2026-07-09 21:36:14 -07:00
2026-06-28 16:51:49 -07:00
2026-06-17 04:51:31 -07:00
2026-05-20 14:29:07 -07:00
2026-07-12 10:04:29 -07:00
2026-07-12 11:52:24 -07:00
2026-05-03 02:36:07 -07:00
2026-05-18 14:46:20 -07:00
2026-05-04 23:47:26 -07:00
2026-06-27 21:39:40 -07:00
2026-04-24 08:54:25 -07:00
2026-07-12 11:56:54 -07:00
2026-05-17 22:45:29 -07:00
2026-06-25 21:01:15 -07:00
2026-06-26 11:56:12 -07:00
2026-07-11 17:16:49 -07:00
2026-05-09 14:41:58 -07:00
2026-06-26 16:14:44 -07:00
2026-05-05 06:32:33 -07:00
2026-05-11 17:46:42 -07:00
2026-05-03 15:13:08 -07:00
2026-05-10 19:13:05 -07:00
2026-07-04 12:32:09 -07:00
2026-06-27 09:28:29 -07:00
2026-05-23 04:18:55 -07:00
2026-05-23 04:18:55 -07:00
2026-07-11 17:04:22 -07:00
2026-06-11 23:22:07 -07:00
2026-05-23 03:09:00 -07:00
2026-07-11 23:10:58 -07:00
2026-07-10 02:21:01 -07:00
2026-06-15 19:57:20 -07:00
2026-06-11 20:53:01 -07:00
2026-06-14 15:29:35 -07:00
2026-06-25 03:44:22 -07:00
2026-06-15 02:29:08 -07:00
2026-06-13 02:54:57 -07:00
2026-04-18 12:21:14 -07:00
2026-04-08 14:58:34 -07:00
2026-07-07 22:06:20 -07:00
2026-06-13 23:20:06 -07:00
2026-07-09 23:12:02 -07:00
2026-07-04 19:29:47 +00:00
2026-07-09 19:58:05 -07:00
2026-07-05 11:31:46 -07:00
2026-07-04 13:51:09 -07:00
2026-07-04 21:28:17 -07:00
2026-07-04 21:28:17 -07:00
2026-07-04 21:28:16 -07:00
2026-07-11 22:16:48 -07:00
2026-06-19 16:47:33 -07:00
2026-06-04 01:43:26 -07:00
2026-07-12 11:52:24 -07:00
2026-07-10 07:46:52 -07:00
2026-05-07 02:15:14 -07:00
2026-07-12 11:52:24 -07:00
2026-07-12 11:11:50 -07:00
2026-07-10 07:46:52 -07:00
2026-06-15 19:44:17 -07:00
2026-05-19 17:19:02 -07:00
2026-06-30 10:30:57 -07:00
2026-05-23 04:18:55 -07:00
2026-05-14 13:59:10 -07:00
2026-05-19 17:27:20 -07:00
2026-05-15 07:45:49 -07:00
2026-06-05 03:56:29 -07:00
2026-04-19 20:48:13 -07:00
2026-05-12 17:04:32 -07:00
2026-05-04 22:17:10 -07:00
2026-05-13 06:29:36 -07:00
2026-05-14 15:25:08 -07:00
2026-05-15 12:51:41 -07:00
2026-05-03 02:02:25 -07:00
2026-04-16 23:07:40 -07:00
2026-05-19 17:19:02 -07:00
2026-05-15 12:02:44 -07:00
2026-05-15 22:56:31 -07:00
2026-05-15 12:02:44 -07:00
2026-05-17 00:21:12 -07:00
2026-05-16 21:00:48 -07:00
2026-05-17 23:29:20 -07:00
2026-05-17 12:58:01 -07:00
2026-05-17 07:26:21 -07:00
2026-06-05 01:53:42 -07:00
2026-07-11 18:07:00 -07:00
2026-06-25 21:01:15 -07:00
2026-05-08 14:03:17 -07:00
2026-06-26 00:28:31 -07:00
2026-07-12 11:15:52 -07:00
2026-07-10 23:57:59 -07:00
2026-04-29 07:58:58 -07:00
2026-05-20 14:29:07 -07:00
2026-05-20 14:29:07 -07:00
2026-05-13 06:29:34 -07:00
2026-06-30 07:31:59 -07:00
2026-07-12 11:56:54 -07:00
2026-06-21 13:32:19 -07:00
2026-06-04 08:00:33 -07:00
2026-05-15 21:08:04 -07:00
2026-06-04 13:19:55 -07:00
2026-06-28 01:43:08 -07:00
2026-05-19 05:16:37 -07:00
2026-06-19 06:51:57 -07:00
2026-06-18 03:24:57 -07:00
2026-07-09 19:58:08 -07:00
2026-06-24 10:45:21 -07:00
2026-06-17 04:51:31 -07:00
2026-05-18 15:01:20 -07:00
2026-07-10 08:33:42 -07:00
2026-04-29 12:02:56 -07:00
2026-04-25 21:43:38 -07:00
2026-07-04 19:29:47 +00:00
2026-06-17 21:45:50 -07:00
2026-06-04 02:13:48 -07:00
2026-06-04 00:19:57 -07:00
2026-06-04 00:19:58 -07:00
2026-06-04 00:19:58 -07:00
2026-07-12 11:56:54 -07:00
2026-07-02 11:38:34 -07:00
2026-06-03 13:48:02 -07:00
2026-07-10 08:33:42 -07:00
2026-06-08 23:38:32 -07:00
2026-06-23 08:21:10 -07:00
2026-06-24 23:32:52 -07:00
2026-06-30 12:21:25 -07:00
2026-06-07 21:19:10 -07:00
2026-06-07 20:43:44 -07:00
2026-06-29 02:08:08 -07:00
2026-07-05 11:31:48 -07:00
2026-07-10 01:49:15 -07:00
2026-07-01 16:43:08 -07:00
2026-06-29 12:47:21 -07:00
2026-06-04 02:13:48 -07:00
2026-06-21 21:23:41 -07:00
2026-06-04 12:03:29 -07:00
2026-07-04 12:32:09 -07:00
2026-06-04 22:12:38 -07:00
2026-07-09 19:58:05 -07:00
2026-07-10 01:49:15 -07:00
2026-06-04 00:41:12 -07:00
2026-05-16 07:16:05 -07:00
2026-06-13 21:17:20 -07:00