gsxdsm
39368f4bb8
FN-8694: add content-addressed validation memoization
...
Memoizes mission validation inputs and bounds repeat failures.
- Persist validator input fingerprints and atomically admit validation runs.
- Reuse unchanged static passes while enforcing per-fingerprint failure budgets.
- Add migration coverage, execution-loop tests, and operator documentation.
Files changed:
.changeset/fn-8694-validation-memoization.md | 7 +
docs/missions.md | 6 +
docs/storage.md | 6 +
.../__tests__/postgres/mission-store.pg.test.ts | 40 +++-
packages/core/src/async-mission-store-queries.ts | 24 ++-
packages/core/src/async-mission-store.ts | 65 +++++-
packages/core/src/mission-store.ts | 10 +-
packages/core/src/mission-types.ts | 19 ++
.../0042_fn_8694_validator_input_fingerprint.sql | 9 +
packages/core/src/postgres/schema-applier.ts | 13 +-
packages/core/src/postgres/schema/project.ts | 5 +
.../src/__tests__/mission-execution-loop.test.ts | 72 ++++++-
packages/engine/src/mission-execution-loop.ts | 217 +++++++++++++++++----
13 files changed, 443 insertions(+), 50 deletions(-)
Fusion-Task-Id: FN-8694
Fusion-Task-Lineage: 92a790d5-f2fc-4e71-b9ee-8334ff38b20d
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai >
2026-08-01 12:40:24 -07:00
..
2026-07-30 03:10:35 -07:00
2026-07-24 22:32:39 -07:00
2026-07-26 15:38:05 -07:00
2026-07-30 17:40:30 -07:00
2026-07-29 10:01:14 -07:00
2026-07-25 22:52:53 -07:00
2026-07-31 21:42:24 -07:00
2026-07-30 23:41:14 -07:00
2026-08-01 11:03:04 -07:00
2026-07-30 14:48:00 -07:00
2026-07-29 00:05:29 -07:00
2026-07-28 23:23:13 -07:00
2026-07-28 16:28:00 -07:00
2026-07-27 21:09:51 -07:00
2026-07-28 18:52:31 -07:00
2026-07-26 23:13:21 -07:00
2026-07-30 15:46:16 -07:00
2026-07-29 22:41:17 -07:00
2026-07-30 21:51:09 -07:00
2026-07-31 00:52:50 -07:00
2026-07-30 22:46:19 -07:00
2026-07-30 06:51:25 -07:00
2026-07-30 23:29:56 -07:00
2026-07-25 08:45:52 -07:00
2026-07-31 00:30:26 -07:00
2026-07-30 23:54:35 -07:00
2026-07-26 15:36:33 -07:00
2026-04-25 09:09:31 -07:00
2026-07-30 16:20:38 -07:00
2026-07-31 06:46:19 -07:00
2026-07-29 22:39:14 -07:00
2026-07-25 23:03:11 -07:00
2026-07-26 22:38:58 -07:00
2026-07-31 17:54:00 -07:00
2026-07-26 23:47:49 -07:00
2026-07-26 07:34:50 -07:00
2026-07-29 09:15:28 -07:00
2026-07-31 01:41:13 -07:00
2026-07-25 09:27:26 -07:00
2026-07-31 10:49:57 -07:00
2026-07-29 10:15:42 -07:00
2026-07-30 12:25:00 -07:00
2026-07-26 09:42:24 -07:00
2026-07-26 10:23:00 -07:00
2026-07-31 05:29:53 -07:00
2026-07-25 23:44:56 -07:00
2026-07-29 22:39:14 -07:00
2026-07-30 00:52:55 -07:00
2026-07-30 12:02:41 -07:00
2026-07-30 00:52:55 -07:00
2026-07-30 19:59:03 -07:00
2026-07-30 12:02:41 -07:00
2026-07-26 08:48:36 -07:00
2026-07-31 23:33:47 -07:00
2026-07-24 22:16:11 -07:00
2026-07-30 22:06:24 -07:00
2026-07-31 22:07:05 -07:00
2026-07-30 21:50:47 -07:00
2026-07-25 09:07:09 -07:00
2026-07-26 17:23:48 -07:00
2026-07-29 09:04:51 -07:00
2026-07-26 17:18:43 -07:00
2026-07-31 21:21:28 -07:00
2026-07-30 02:05:27 -07:00
2026-07-24 00:35:34 -07:00
2026-07-24 11:15:43 -07:00
2026-07-24 18:09:32 -07:00
2026-07-24 18:43:29 -07:00
2026-07-24 19:06:14 -07:00
2026-07-24 19:20:16 -07:00
2026-07-24 23:31:11 -07:00
2026-07-24 23:57:49 -07:00
2026-07-25 02:17:31 -07:00
2026-07-25 02:51:28 -07:00
2026-07-25 05:15:02 -07:00
2026-07-25 00:54:46 -07:00
2026-07-25 08:21:00 -07:00
2026-07-25 05:48:35 -07:00
2026-07-26 00:46:07 -07:00
2026-07-26 08:35:04 -07:00
2026-07-26 09:06:41 -07:00
2026-07-26 08:42:46 -07:00
2026-07-26 09:40:37 -07:00
2026-07-26 12:12:35 -07:00
2026-07-26 12:01:19 -07:00
2026-07-26 12:51:39 -07:00
2026-07-26 14:37:35 -07:00
2026-07-26 18:35:10 -07:00
2026-07-26 13:05:23 -07:00
2026-07-26 15:42:53 -07:00
2026-07-26 14:42:06 -07:00
2026-07-26 16:16:27 -07:00
2026-07-26 19:52:32 -07:00
2026-07-26 18:35:10 -07:00
2026-07-26 19:52:32 -07:00
2026-07-26 19:45:47 -07:00
2026-07-26 19:18:53 -07:00
2026-07-31 14:58:53 -07:00
2026-07-31 13:56:55 -07:00
2026-07-31 13:43:28 -07:00
2026-07-31 14:04:15 -07:00
2026-07-31 14:26:58 -07:00
2026-07-31 14:23:24 -07:00
2026-07-31 15:47:58 -07:00
2026-07-31 18:34:58 -07:00
2026-07-31 18:03:13 -07:00
2026-07-31 16:52:09 -07:00
2026-07-31 17:27:43 -07:00
2026-07-31 17:13:53 -07:00
2026-07-31 20:39:37 -07:00
2026-07-31 19:20:16 -07:00
2026-07-31 21:56:30 -07:00
2026-08-01 01:07:59 -07:00
2026-08-01 08:20:29 -07:00
2026-07-31 22:19:32 -07:00
2026-07-31 22:38:52 -07:00
2026-07-31 23:08:51 -07:00
2026-08-01 02:05:03 -07:00
2026-07-31 22:03:15 -07:00
2026-08-01 04:03:26 -07:00
2026-08-01 02:47:25 -07:00
2026-08-01 00:10:04 -07:00
2026-08-01 01:15:10 -07:00
2026-08-01 01:28:38 -07:00
2026-08-01 03:45:59 -07:00
2026-08-01 03:19:00 -07:00
2026-08-01 04:24:05 -07:00
2026-08-01 06:09:04 -07:00
2026-08-01 06:09:04 -07:00
2026-08-01 04:08:57 -07:00
2026-08-01 08:58:49 -07:00
2026-08-01 09:18:49 -07:00
2026-08-01 10:03:28 -07:00
2026-08-01 12:40:24 -07:00
2026-08-01 09:32:37 -07:00
2026-08-01 09:53:36 -07:00
2026-08-01 09:24:18 -07:00
2026-08-01 12:33:35 -07:00
2026-07-29 22:52:30 -07:00
2026-07-31 15:14:30 -07:00
2026-07-30 21:50:58 -07:00
2026-07-30 06:24:57 -07:00
2026-07-30 15:04:43 -07:00
2026-07-30 15:24:33 -07:00
2026-07-30 12:55:38 -07:00
2026-07-30 15:02:11 -07:00
2026-07-30 15:08:01 -07:00
2026-07-25 09:14:11 -07:00
2026-07-31 18:53:38 -07:00
2026-07-30 20:30:18 -07:00
2026-07-25 20:01:50 -07:00
2026-07-30 16:53:12 -07:00
2026-07-31 00:33:13 -07:00
2026-07-31 01:03:24 -07:00
2026-07-31 01:55:08 -07:00
2026-07-24 22:32:49 -07:00
2026-07-31 17:50:33 -07:00
2026-07-30 15:49:07 -07:00
2026-07-29 22:39:14 -07:00
2026-07-30 19:07:09 -07:00
2026-08-01 01:22:20 -07:00
2026-07-30 00:52:55 -07:00
2026-07-30 21:50:32 -07:00
2026-07-30 15:08:01 -07:00
2026-07-31 18:13:32 -07:00
2026-07-30 14:26:11 -07:00
2026-07-29 23:06:55 -07:00
2026-07-30 21:35:23 -07:00
2026-07-25 20:02:20 -07:00
2026-07-24 18:54:27 -07:00
2026-07-25 21:57:15 -07:00
2026-07-26 11:17:52 -07:00
2026-07-31 12:54:58 -07:00
2026-07-31 10:47:15 -07:00
2026-07-30 14:03:29 -07:00
2026-07-30 13:04:58 -07:00
2026-07-31 15:59:18 -07:00
2026-07-31 01:08:54 -07:00
2026-07-31 20:33:34 -07:00
2026-07-26 20:33:25 -07:00
2026-07-30 17:43:43 -07:00
2026-07-31 16:12:49 -07:00
2026-07-24 18:49:19 -07:00
2026-07-29 00:04:28 -07:00
2026-07-30 13:54:53 -07:00
2026-07-31 23:53:38 -07:00
2026-07-27 21:39:21 -07:00
2026-07-25 20:46:07 -07:00
2026-07-26 23:42:46 -07:00
2026-07-25 13:55:54 -07:00
2026-07-31 00:50:07 -07:00
2026-07-30 15:16:24 -07:00
2026-07-31 18:39:40 -07:00
2026-07-25 15:20:17 -07:00
2026-07-28 11:36:20 -07:00
2026-07-31 13:44:25 -07:00
2026-07-24 22:17:39 -07:00
2026-07-25 10:02:02 -07:00
2026-07-26 09:26:13 -07:00
2026-07-31 01:14:13 -07:00
2026-07-30 12:06:14 -07:00
2026-08-01 00:55:04 -07:00
2026-07-30 16:50:00 -07:00
2026-07-23 22:53:04 -07:00
2026-07-25 20:02:14 -07:00
2026-07-30 13:01:54 -07:00
2026-07-31 18:19:17 -07:00
2026-07-26 17:48:46 -07:00
2026-07-24 22:32:30 -07:00
2026-07-25 09:52:18 -07:00
2026-08-01 01:00:57 -07:00
2026-07-24 00:46:44 -07:00
2026-07-26 08:56:58 -07:00
2026-06-24 19:25:51 -07:00
2026-07-30 00:20:31 -07:00
2026-07-31 15:08:20 -07:00
2026-07-30 17:59:34 -07:00
2026-07-30 15:57:51 -07:00
2026-07-29 22:39:14 -07:00
2026-07-26 10:53:04 -07:00
2026-07-25 23:24:10 -07:00
2026-07-26 07:33:37 -07:00
2026-07-30 00:31:03 -07:00
2026-07-30 00:52:55 -07:00
2026-07-30 21:45:17 -07:00
2026-07-29 22:40:15 -07:00
2026-07-29 22:39:33 -07:00
2026-07-26 02:28:04 -07:00
2026-07-26 02:04:40 -07:00
2026-07-30 17:39:59 -07:00
2026-07-26 12:29:54 -07:00
2026-07-29 00:05:29 -07:00
2026-07-29 00:05:04 -07:00
2026-07-30 03:10:35 -07:00
2026-07-31 05:41:16 -07:00
2026-07-30 00:52:55 -07:00
2026-07-31 01:46:56 -07:00
2026-07-30 12:12:33 -07:00
2026-07-30 19:40:57 -07:00
2026-07-31 03:48:44 -07:00
2026-07-30 15:38:10 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 18:26:06 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 23:13:34 -07:00
2026-07-30 17:22:41 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 18:16:14 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-30 19:40:57 -07:00
2026-07-25 14:59:53 -07:00
2026-07-25 20:18:45 -07:00
2026-07-25 11:21:11 -07:00
2026-07-31 18:43:37 -07:00
2026-07-29 23:34:41 -07:00
2026-07-28 17:15:29 -07:00
2026-07-31 02:08:49 -07:00
2026-07-30 22:25:24 -07:00
2026-07-26 07:59:42 -07:00
2026-08-01 00:32:25 -07:00
2026-07-30 23:13:34 -07:00
2026-07-25 09:05:41 -07:00
2026-07-31 21:25:40 -07:00
2026-07-26 00:00:19 -07:00
2026-07-31 22:51:07 -07:00
2026-07-26 13:15:36 -07:00
2026-07-26 13:15:36 -07:00
2026-07-31 04:47:09 -07:00
2026-07-26 13:15:36 -07:00
2026-07-29 23:27:32 -07:00
2026-08-01 01:15:10 -07:00
2026-07-31 00:47:14 -07:00
2026-07-30 23:51:50 -07:00
2026-07-31 00:02:50 -07:00
2026-07-31 00:36:09 -07:00
2026-07-31 00:13:43 -07:00
2026-07-30 16:09:14 -07:00
2026-07-23 23:51:12 -07:00
2026-07-30 19:07:09 -07:00
2026-07-30 13:15:04 -07:00
2026-07-26 14:49:17 -07:00
2026-07-30 21:50:37 -07:00
2026-07-30 13:58:02 -07:00
2026-07-26 17:33:35 -07:00
2026-07-31 18:08:50 -07:00
2026-07-26 07:23:44 -07:00
2026-07-26 08:56:58 -07:00
2026-07-28 15:45:47 -07:00
2026-07-28 17:35:07 -07:00
2026-07-29 20:30:54 -07:00
2026-07-29 20:59:06 -07:00
2026-07-28 22:19:28 -07:00
2026-07-29 09:54:39 -07:00
2026-07-29 19:03:10 -07:00
2026-07-27 21:48:08 -07:00
2026-07-28 17:35:14 -07:00
2026-07-28 23:23:07 -07:00
2026-07-28 22:19:42 -07:00
2026-07-30 00:13:58 -07:00
2026-07-28 15:45:40 -07:00
2026-07-28 23:23:25 -07:00
2026-07-30 00:37:08 -07:00
2026-07-29 09:04:58 -07:00
2026-07-28 23:23:00 -07:00
2026-07-30 02:19:32 -07:00
2026-07-29 21:34:31 -07:00
2026-07-29 21:21:04 -07:00
2026-07-28 18:52:46 -07:00
2026-07-28 19:09:06 -07:00
2026-07-29 10:54:35 -07:00
2026-07-30 02:50:30 -07:00
2026-07-26 22:34:18 -07:00
2026-07-30 17:40:48 -07:00
2026-07-27 13:30:13 -07:00
2026-07-27 21:39:21 -07:00
2026-07-31 16:40:41 -07:00