gsxdsm
3b9ff42073
FN-5901: reap stale mission validator runs
Add self-healing recovery for stale mission validator runs left behind after execution ownership disappears.
- add mission-store support to find and reap stale running validator runs, preserving terminal error status and resetting eligible features to needs_fix
- teach the mission execution loop and self-healing maintenance sweep to skip live validations, reap abandoned runs, record audit events, and avoid double-completing runs
- extend regression coverage, mission docs, architecture notes, and add a published-package changeset for the new recovery behavior
Files changed:
.changeset/fn-5901-validator-run-reaper.md | 7 +
AGENTS.md | 1 +
docs/architecture.md | 2 +
docs/missions.md | 26 ++-
packages/core/src/__tests__/mission-store.test.ts | 99 +++++++++
packages/core/src/mission-store.ts | 91 ++++++++
packages/engine/src/__tests__/mission-execution-loop.test.ts | 232 +++++++++++++++++++++
packages/engine/src/__tests__/reliability-interactions/mission-validator-run-reaper.test.ts | 181 ++++++++++++++++
packages/engine/src/mission-execution-loop.ts | 102 +++++++--
packages/engine/src/runtimes/in-process-runtime.ts | 8 +-
packages/engine/src/self-healing.ts | 22 ++
11 files changed, 746 insertions(+), 25 deletions(-)
Fusion-Task-Id: FN-5901
Fusion-Task-Lineage: 87eb2f3f-fc31-4e0a-b0fc-b771f6dc48a3
2026-06-02 15:33:31 -07:00
..
2026-05-23 19:51:36 -07:00
2026-06-02 15:33:31 -07:00
2026-04-28 14:25:56 -07:00
2026-05-06 21:36:31 -07:00
2026-05-19 23:55:58 -07:00
2026-05-06 21:36:31 -07:00
2026-05-14 13:59:10 -07:00
2026-05-15 07:10:36 -07:00
2026-04-08 01:39:15 -07:00
2026-06-02 14:02:36 -07:00
2026-05-10 15:34:58 -07:00
2026-05-11 21:48:26 -07:00
2026-05-16 20:48:00 -07:00
2026-05-13 22:41:29 -07:00
2026-05-02 13:24:37 -07:00
2026-05-18 15:01:20 -07:00
2026-04-09 15:14:19 -07:00
2026-05-17 01:01:52 -07:00
2026-05-17 09:51:10 -07:00
2026-05-03 02:02:25 -07:00
2026-04-15 16:32:16 -07:00
2026-06-01 21:55:10 -07:00
2026-05-14 15:49:55 -07:00
2026-03-25 18:32:10 -04:00
2026-06-01 01:39:59 -07:00
2026-05-31 08:32:01 -07:00
2026-05-13 06:29:35 -07:00
2026-05-23 04:18:55 -07:00
2026-05-20 20:05:08 -07:00
2026-05-27 11:57:21 +02:00
2026-05-27 11:57:21 +02:00
2026-05-27 21:31:12 -07:00
2026-04-24 08:55:02 -07:00
2026-05-14 11:44:21 -07:00
2026-06-02 14:41:41 -07:00
2026-05-19 03:21:16 -07:00
2026-05-19 05:16:37 -07:00
2026-05-12 18:33:13 -07:00
2026-05-03 14:10:11 -07:00
2026-05-19 11:30:54 -07:00
2026-05-18 23:14:27 -07:00
2026-05-23 17:07:14 -07:00
2026-05-18 08:02:21 -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-05-07 15:53:58 -07:00
2026-05-20 14:28:45 -07:00
2026-05-23 04:18:55 -07:00
2026-05-03 02:02:25 -07:00
2026-05-28 22:59:18 -07:00
2026-05-10 08:28:07 -07:00
2026-06-01 08:23: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-05-20 14:29:07 -07:00
2026-05-20 14:29:07 -07:00
2026-06-01 08:23:02 -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-04-24 08:54:25 -07:00
2026-05-29 20:05:14 -07:00
2026-05-17 22:45:29 -07:00
2026-05-05 06:32:33 -07:00
2026-05-09 14:41:58 -07:00
2026-04-19 20:48:14 -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-05-07 00:05:34 -07:00
2026-05-27 18:47:52 +02:00
2026-05-23 04:18:55 -07:00
2026-05-23 04:18:55 -07:00
2026-06-02 15:33:31 -07:00
2026-06-02 14:41:41 -07:00
2026-05-23 03:09:00 -07:00
2026-05-22 00:15:14 -07:00
2026-05-19 11:30:54 -07:00
2026-04-18 12:21:14 -07:00
2026-04-08 14:58:34 -07:00
2026-04-28 14:25:55 -07:00
2026-05-04 23:47:26 -07:00
2026-06-01 23:39:20 -07:00
2026-05-13 20:47:18 -07:00
2026-05-07 02:15:14 -07:00
2026-05-31 20:50:09 -07:00
2026-05-23 18:39:36 -07:00
2026-05-19 17:19:02 -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-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-04-23 23:02:35 -07:00
2026-06-01 21:55:10 -07:00
2026-05-15 10:41:37 -07:00
2026-05-08 14:03:17 -07:00
2026-04-29 12:02:56 -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-01 21:55:10 -07:00
2026-04-08 11:21:18 -07:00
2026-05-20 14:29:07 -07:00
2026-05-15 21:08:04 -07:00
2026-05-21 15:45:48 -07:00
2026-05-19 05:16:37 -07:00
2026-05-11 06:47:43 -07:00
2026-06-01 02:42:36 -07:00
2026-05-17 22:57:15 -07:00
2026-05-18 15:01:20 -07:00
2026-04-29 12:02:56 -07:00
2026-04-25 21:43:38 -07:00
2026-06-01 21:55:10 -07:00
2026-05-31 08:32:01 -07:00
2026-05-31 08:32:01 -07:00
2026-05-31 08:32:01 -07:00
2026-05-16 07:16:05 -07:00