freemo
0ca1303927
CI / lint (pull_request) Successful in 23s
CI / quality (pull_request) Successful in 29s
CI / security (pull_request) Successful in 54s
CI / typecheck (pull_request) Successful in 59s
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 25s
CI / integration_tests (pull_request) Successful in 4m33s
CI / benchmark-regression (pull_request) Successful in 22m32s
CI / unit_tests (pull_request) Successful in 30m28s
CI / docker (pull_request) Successful in 39s
CI / coverage (pull_request) Successful in 1h39m42s
CI / lint (push) Successful in 12s
CI / quality (push) Successful in 20s
CI / build (push) Successful in 24s
CI / security (push) Successful in 28s
CI / typecheck (push) Successful in 1m0s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 4m35s
CI / benchmark-publish (push) Successful in 13m36s
CI / coverage (push) Has been cancelled
CI / unit_tests (push) Has been cancelled
CI / docker (push) Has been cancelled
feat(sandbox): add checkpoint and rollback hooks
...
Introduce a lightweight checkpoint/rollback system for sandbox state
during plan execute and apply flows. CheckpointManager snapshots
the sandbox working directory before each phase and can restore it
on failure, giving the execution engine a reliable undo mechanism.
Key changes:
- SandboxCheckpoint model, Checkpointable protocol, and
CheckpointManager in infrastructure/sandbox/checkpoint.py
- PlanExecutor gains optional checkpoint_manager with pre/post
execute hooks and automatic rollback on failure
- PlanApplyService gains optional checkpoint_manager with pre-apply
checkpoint and rollback helper
- 12 BDD scenarios (features/sandbox_checkpoints.feature)
- 5 Robot Framework smoke tests (robot/sandbox_checkpoint_smoke.robot)
- ASV benchmarks for creation, rollback, and listing operations
- Reference documentation in docs/reference/sandbox.md
ISSUES CLOSED : #183
2026-02-27 23:08:55 +00:00
..
2026-02-15 15:19:09 +00:00
2026-02-22 15:02:19 +00:00
2026-02-14 12:16:39 -05:00
2026-02-13 19:01:55 +05:30
2026-02-24 19:12:01 +00:00
2026-02-24 17:57:18 +00:00
2026-02-18 13:06:12 +00:00
2026-02-13 02:42:57 +00:00
2026-02-18 10:45:49 +00:00
2026-02-25 10:30:42 +00:00
2026-02-25 10:30:42 +00:00
2026-02-20 08:48:33 -05:00
2026-02-22 08:31:45 +00:00
2026-02-17 13:46:04 +00:00
2026-02-26 09:10:35 +00:00
2026-02-25 10:01:57 +00:00
2026-02-13 02:42:57 +00:00
2026-02-20 15:57:21 +00:00
2026-02-20 08:50:06 -05:00
2026-02-20 15:57:21 +00:00
2026-02-18 03:27:00 +00:00
2026-02-22 10:19:43 +00:00
2026-02-18 03:27:00 +00:00
2026-02-21 16:27:40 +00:00
2026-02-18 13:06:12 +00:00
2026-02-26 02:47:14 +00:00
2026-02-18 13:06:12 +00:00
2026-02-19 13:46:48 +00:00
2026-02-19 01:35:09 +00:00
2026-02-24 20:11:42 +00:00
2026-02-14 13:51:12 -05:00
2026-02-17 20:01:18 +00:00
2026-02-19 22:44:34 +00:00
2026-02-25 10:05:10 +00:00
2026-02-19 01:35:09 +00:00
2026-02-13 03:43:44 +00:00
2026-02-13 03:43:44 +00:00
2026-02-25 10:48:05 -05:00
2026-02-19 23:48:40 +00:00
2026-02-23 10:44:58 +00:00
2026-02-27 09:47:10 -05:00
2026-02-21 16:32:11 +00:00
2026-02-21 16:32:11 +00:00
2026-02-25 10:05:10 +00:00
2025-11-18 00:10:29 -05:00
2026-02-22 16:40:06 +00:00
2026-02-22 18:47:41 +00:00
2026-02-25 12:08:01 -05:00
2026-02-13 22:25:16 +00:00
2026-02-23 16:38:17 +00:00
2026-02-13 02:42:57 +00:00
2026-02-27 02:33:42 +00:00
2026-02-23 22:19:19 +00:00
2026-02-26 16:13:44 +00:00
2026-02-26 16:13:44 +00:00
2026-02-25 10:04:31 +00:00
2026-02-25 10:02:38 +00:00
2026-02-13 04:32:45 +00:00
2026-02-13 02:42:57 +00:00
2026-02-25 10:05:10 +00:00
2025-11-18 00:10:29 -05:00
2026-02-13 03:43:44 +00:00
2026-02-13 02:42:57 +00:00
2026-02-22 15:02:19 +00:00
2026-02-14 12:16:39 -05:00
2026-02-13 19:01:55 +05:30
2026-02-24 19:12:01 +00:00
2026-02-24 17:57:18 +00:00
2025-12-29 21:25:14 -05:00
2026-02-18 10:45:49 +00:00
2026-02-25 10:30:42 +00:00
2026-02-25 10:30:42 +00:00
2026-02-20 08:48:33 -05:00
2026-02-22 14:18:24 -05:00
2026-02-17 13:46:04 +00:00
2026-02-26 09:10:35 +00:00
2026-02-25 10:01:57 +00:00
2026-02-20 08:50:06 -05:00
2026-02-20 15:57:21 +00:00
2026-02-18 03:27:00 +00:00
2026-02-22 10:19:43 +00:00
2026-02-21 16:27:40 +00:00
2026-02-25 02:55:40 +00:00
2026-02-20 15:57:21 +00:00
2026-02-20 15:57:21 +00:00
2026-02-20 20:34:29 +00:00
2026-02-25 10:48:05 -05:00
2026-02-19 23:48:40 +00:00
2026-02-23 10:44:58 +00:00
2026-02-27 09:47:10 -05:00
2026-02-22 16:40:06 +00:00
2026-02-22 18:47:41 +00:00
2026-02-25 12:08:01 -05:00
2026-02-20 15:57:21 +00:00
2026-02-27 02:33:42 +00:00
2026-02-23 22:19:19 +00:00
2026-02-26 16:13:44 +00:00
2026-02-26 16:13:44 +00:00
2026-02-25 10:04:31 +00:00
2026-02-25 10:02:38 +00:00
2025-12-06 00:23:48 -05:00
2026-02-25 10:05:10 +00:00
2026-02-22 09:23:35 +00:00
2026-02-22 10:15:25 +00:00
2026-02-25 04:49:27 +00:00
2026-02-25 04:50:43 +00:00
2026-02-24 21:55:24 +00:00
2026-02-25 04:51:15 +00:00
2026-02-26 01:13:16 +00:00
2026-02-26 01:26:02 +00:00
2026-02-25 22:06:45 +00:00
2026-02-25 21:46:58 +00:00
2026-02-26 19:27:53 +00:00
2026-02-25 14:17:34 +00:00
2026-02-21 10:19:45 -05:00
2026-02-20 20:34:29 +00:00
2026-02-23 10:45:01 +00:00
2026-02-20 15:57:21 +00:00
2026-02-21 10:22:18 -05:00
2026-02-22 15:13:43 +00:00
2026-02-27 09:47:10 -05:00
2026-02-17 00:37:53 +00:00
2026-02-20 15:57:21 +00:00
2026-02-20 15:57:21 +00:00
2026-02-20 15:57:21 +00:00
2026-02-20 15:57:21 +00:00
2026-02-25 14:00:04 -05:00
2026-02-16 23:56:55 -05:00
2026-02-18 03:27:00 +00:00
2026-02-18 03:27:00 +00:00
2026-02-15 11:04:18 -05:00
2026-02-18 00:10:15 +00:00
2026-02-27 09:47:10 -05:00
2025-12-23 17:12:16 -05:00
2026-02-23 03:11:12 +00:00
2026-02-23 22:20:44 +00:00
2026-02-17 21:07:54 +00:00
2026-02-19 22:00:53 +00:00
2026-02-27 23:08:55 +00:00
2026-02-14 04:01:20 +00:00
2026-02-20 03:31:43 +00:00
2026-02-21 16:32:03 +00:00
2026-02-12 20:19:42 +00:00
2026-02-25 10:05:57 +00:00
2026-02-26 20:33:20 +00:00
2026-02-13 19:24:24 +00:00
2026-02-25 10:06:27 +00:00
2026-02-20 01:10:19 +00:00
2026-02-20 15:57:21 +00:00
2026-02-18 00:10:15 +00:00
2026-02-26 10:57:07 +00:00
2026-02-20 08:50:08 -05:00
2026-02-24 17:57:18 +00:00
2026-02-21 10:18:26 -05:00
2026-02-24 17:57:18 +00:00
2026-02-20 08:50:08 -05:00
2026-02-20 08:50:08 -05:00
2026-02-26 12:29:49 +00:00
2026-02-27 20:09:26 +00:00
2026-02-21 16:30:40 +00:00
2026-02-17 19:58:15 +00:00
2026-02-17 10:13:19 +00:00
2026-02-21 10:18:26 -05:00
2026-02-19 22:07:56 +00:00
2026-02-14 14:03:28 -05:00
2026-02-20 08:49:30 -05:00
2026-02-21 18:11:31 +00:00
2026-02-17 21:14:46 +00:00
2026-02-17 20:28:20 +00:00
2026-02-21 10:23:31 -05:00
2026-02-14 13:46:10 -05:00
2026-02-20 15:57:21 +00:00
2026-02-25 10:03:21 +00:00
2026-02-20 02:54:08 +00:00
2026-02-25 10:03:57 +00:00
2026-02-12 02:47:08 +00:00
2026-02-13 03:43:44 +00:00
2026-02-22 09:23:35 +00:00
2025-11-03 23:36:55 -05:00
2026-02-20 15:57:21 +00:00
2026-02-17 00:38:33 +00:00
2026-02-21 16:32:11 +00:00
2026-02-22 10:15:25 +00:00
2026-02-25 04:49:27 +00:00
2026-02-25 04:50:43 +00:00
2026-02-24 21:55:24 +00:00
2026-02-25 04:51:15 +00:00
2026-02-25 21:26:19 +00:00
2026-02-26 01:26:02 +00:00
2026-02-25 21:51:26 +00:00
2026-02-25 21:46:58 +00:00
2026-02-26 19:27:53 +00:00
2026-02-25 13:17:26 +00:00
2026-02-13 02:42:57 +00:00
2026-02-21 10:19:45 -05:00
2026-02-20 00:28:15 +00:00
2026-02-23 10:45:01 +00:00
2026-02-21 10:18:26 -05:00
2026-02-14 13:42:02 -05:00
2026-02-21 10:22:18 -05:00
2026-02-22 15:13:43 +00:00
2026-02-27 09:47:10 -05:00
2026-02-18 13:06:12 +00:00
2026-02-15 00:12:07 -05:00
2026-02-17 20:25:12 +00:00
2026-02-15 06:16:19 +00:00
2026-02-18 13:06:12 +00:00
2026-02-25 14:00:04 -05:00
2026-02-16 23:56:55 -05:00
2026-02-18 03:27:00 +00:00
2026-02-18 03:27:00 +00:00
2026-02-15 11:04:18 -05:00
2026-02-16 16:46:54 -05:00
2026-02-27 09:47:10 -05:00
2026-02-13 02:42:57 +00:00
2026-02-23 03:11:12 +00:00
2026-02-20 08:48:33 -05:00
2026-02-16 16:46:54 -05:00
2026-02-18 03:27:00 +00:00
2026-02-23 22:20:44 +00:00
2026-02-16 16:46:54 -05:00
2026-02-17 21:07:54 +00:00
2026-02-16 21:35:54 +00:00
2026-02-15 10:44:14 -05:00
2026-02-18 03:27:00 +00:00
2026-02-15 15:19:09 +00:00
2026-02-25 20:04:36 +00:00
2026-02-19 22:00:53 +00:00
2026-02-21 16:32:11 +00:00
2026-02-13 03:43:44 +00:00
2026-02-27 23:08:55 +00:00
2026-02-13 02:42:57 +00:00
2026-02-20 03:31:43 +00:00
2026-02-21 16:32:11 +00:00
2026-02-21 16:32:11 +00:00
2026-02-21 16:32:11 +00:00
2026-02-26 14:30:43 +00:00
2026-02-19 19:23:30 +00:00
2026-02-13 02:42:57 +00:00
2026-02-21 16:32:03 +00:00
2026-02-25 10:05:57 +00:00
2026-02-26 20:33:20 +00:00
2026-02-13 19:24:24 +00:00
2026-02-25 10:07:02 +00:00
2026-02-25 10:06:27 +00:00
2026-02-20 01:10:19 +00:00
2026-02-17 20:33:53 +00:00
2026-02-18 00:10:15 +00:00
2026-02-26 10:57:07 +00:00
2026-02-20 08:50:08 -05:00
2026-02-24 17:57:18 +00:00
2026-02-21 10:18:26 -05:00
2026-02-24 17:57:18 +00:00
2026-02-20 08:50:08 -05:00
2026-02-20 08:50:08 -05:00
2026-02-26 12:29:49 +00:00
2026-02-27 20:09:26 +00:00
2026-02-21 16:30:40 +00:00
2026-02-17 19:58:15 +00:00
2026-02-16 19:52:47 +05:30
2026-02-21 10:18:26 -05:00
2026-02-19 22:07:56 +00:00
2026-02-18 22:59:09 +00:00
2026-02-14 14:03:28 -05:00
2026-02-20 08:49:30 -05:00
2026-02-21 16:30:33 +00:00
2026-02-15 00:12:07 -05:00
2026-02-17 21:14:46 +00:00
2026-02-17 20:28:20 +00:00
2026-02-21 10:23:31 -05:00
2026-02-14 13:46:10 -05:00
2026-02-18 13:06:12 +00:00
2026-02-07 23:02:50 -05:00
2026-02-25 10:03:21 +00:00
2026-02-20 02:54:08 +00:00
2026-02-25 10:03:57 +00:00
2026-02-13 03:43:44 +00:00
2026-02-13 03:43:44 +00:00