gsxdsm
d5fa8654f7
fix(review): Phase A workspace hardening — tool errors, activeWorktrees, non-fatal acquire
...
ce-code-review (5 personas) on Phase A. No P0; the workspace-root-removal path
was ruled out and the contract changes verified additive. Applied:
P1: fn_acquire_repo_worktree now catches WorkspaceRepoAcquireBusyError (and
generic failures) and returns a sanitized retryable isError instead of an
uncaught throw into the agent loop; runContext is forwarded so audit/log keep
attribution. Per-repo acquired worktree paths are now registered into the
executor's activeWorktrees Set (via an onAcquired callback) — previously the Set
only held the browse-only root, making the U1 per-repo liveness invariant hollow.
Post-acquire identity-guard install and base-SHA capture are now non-fatal
(log-and-continue): a hook/branch failure no longer strands the on-disk worktree
(the worktree is usable without the guard; an undefined baseCommitSha is already
an accepted state).
P2: the KTD3 settings-strip also strips settings.baseBranch (resolveFromSettings
falls back integrationBranch → baseBranch, so a shared baseBranch leaked); the
workspaceWorktrees write re-reads the task fresh before merging to avoid a
sibling-repo clobber on sequential acquires (store-level atomic merge deferred to
Phase B); the busy-path logging is wrapped so it can't mask the busy error; the
TaskCard memo compares key-sets not counts; the stuck-kill no-op for workspace
tasks is now logged; the exclusivity check-then-act synchrony is documented.
Residuals (Phase B): per-repo worktree teardown, orphan-scan coverage, reaper
dedup, store-level atomic merge.
Gate green: typecheck, lint, build, test:gate (649+58), affected (25 + TaskCard 251).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-21 21:33:56 -07:00
..
2026-06-21 21:33:56 -07:00
2026-05-23 02:29:38 -07:00
2026-06-15 02:30:41 -07:00
2026-05-31 13:50:23 -07:00
2026-05-20 15:54:44 -07:00
2026-05-29 20:05:14 -07:00
2026-06-09 12:50:26 -07:00
2026-05-28 21:23:48 -07:00
2026-05-21 12:04:58 -07:00
2026-05-19 17:19:02 -07:00
2026-05-23 22:09:25 -03:00
2026-06-19 20:03:24 -07:00
2026-06-13 11:39:37 -07:00
2026-06-13 04:54:59 -07:00
2026-05-01 05:04:05 -07:00
2026-06-04 22:53:02 -07:00
2026-06-21 21:17:08 -07:00
2026-05-08 20:30:40 -07:00
2026-06-03 17:14:42 -07:00
2026-06-19 21:46:00 -07:00
2026-05-13 23:41:35 -07:00
2026-06-16 05:56:11 -07:00
2026-05-13 23:41:35 -07:00
2026-04-29 20:27:04 -07:00
2026-06-20 22:47:39 -07:00
2026-05-05 06:32:33 -07:00
2026-06-11 20:44:52 -07:00
2026-06-21 21:33:56 -07:00
2026-06-03 13:51:13 -07:00
2026-06-13 23:20:06 -07:00
2026-05-19 07:45:12 -07:00
2026-06-07 20:43:44 -07:00
2026-05-21 12:49:50 -07:00
2026-05-18 12:31:21 -07:00
2026-06-21 21:17:08 -07:00
2026-05-20 08:23:40 -07:00
2026-05-23 00:03:12 -07:00
2026-06-09 15:21:39 -07:00
2026-06-15 12:34:44 -07:00
2026-06-15 02:30:41 -07:00
2026-06-15 02:30:41 -07:00
2026-06-04 16:16:50 -07:00
2026-06-13 21:23:39 -07:00
2026-05-03 11:06:27 -07:00
2026-06-17 21:12:53 -07:00
2026-06-01 08:23:02 -07:00
2026-05-19 03:21:18 -07:00
2026-04-28 14:25:55 -07:00
2026-06-04 22:37:51 -07:00
2026-06-07 23:03:38 -07:00
2026-05-19 22:50:39 -07:00
2026-05-14 19:26:58 -07:00
2026-05-13 12:30:45 -07:00
2026-05-19 19:28:05 -07:00
2026-05-29 10:23:59 -07:00
2026-05-06 19:55:55 -07:00
2026-06-21 21:33:56 -07:00
2026-05-14 00:58:44 -07:00
2026-05-03 23:08:05 -07:00
2026-06-07 18:51:46 -07:00
2026-05-30 22:53:24 -07:00
2026-05-29 07:11:00 -07:00
2026-06-03 15:32:29 -07:00
2026-04-30 00:20:51 -07:00
2026-06-03 17:57:00 -07:00
2026-05-14 04:32:42 -07:00
2026-05-14 04:32:43 -07:00
2026-06-09 08:02:56 -07:00
2026-05-26 21:57:31 -07:00
2026-05-16 17:31:09 -07:00
2026-06-21 19:19:55 -07:00
2026-05-21 12:04:58 -07:00
2026-06-19 01:56:52 -07:00
2026-06-05 20:05:29 -07:00
2026-06-13 21:09:12 -07:00
2026-06-18 06:41:22 -07:00
2026-06-21 19:19:55 -07:00
2026-05-13 20:20:26 -07:00
2026-05-28 15:04:41 -07:00
2026-05-26 21:57:31 -07:00
2026-05-12 18:26:58 -07:00
2026-06-11 20:27:29 -07:00
2026-05-23 09:59:50 -07:00
2026-05-12 09:06:54 -07:00
2026-05-28 13:02:30 -07:00
2026-05-21 16:30:31 -07:00
2026-05-12 17:04:33 -07:00
2026-06-21 19:19:55 -07:00
2026-05-16 23:45:17 -07:00
2026-06-03 17:14:42 -07:00
2026-06-13 16:16:52 -07:00
2026-05-30 09:43:02 -07:00
2026-06-13 16:16:52 -07:00
2026-06-19 23:50:37 +00:00
2026-05-07 23:21:05 -07:00
2026-05-10 19:13:05 -07:00
2026-05-16 17:31:09 -07:00
2026-06-09 12:50:26 -07:00
2026-05-10 19:13:05 -07:00
2026-05-08 13:43:38 -07:00
2026-06-21 14:30:04 +05:30
2026-06-04 12:44:43 -07:00
2026-06-07 21:19:10 -07:00
2026-06-04 07:34:02 -07:00
2026-06-07 21:19:10 -07:00
2026-05-19 19:28:05 -07:00
2026-04-23 14:11:04 -07:00
2026-04-23 14:11:04 -07:00
2026-06-15 19:44:17 -07:00
2026-06-05 20:05:29 -07:00
2026-06-05 22:49:39 -07:00
2026-06-05 20:20:25 -07:00
2026-06-21 03:32:53 -07:00
2026-06-21 20:29:46 -07:00
2026-05-29 20:05:14 -07:00
2026-06-05 23:06:46 -07:00
2026-06-11 21:00:23 -07:00
2026-06-04 22:53:02 -07:00
2026-04-23 23:02:35 -07:00
2026-05-13 21:52:40 -07:00
2026-06-12 15:57:12 -07:00
2026-05-04 13:17:57 -07:00
2026-05-26 23:41:28 -07:00
2026-05-14 22:16:44 -07:00
2026-06-07 23:03:38 -07:00
2026-06-17 19:52:20 -07:00
2026-05-17 02:08:01 -07:00
2026-05-21 00:17:33 -07:00
2026-05-15 16:38:45 -07:00
2026-04-15 16:32:16 -07:00
2026-06-21 21:17:08 -07:00
2026-06-21 10:50:48 -07:00
2026-06-08 19:13:14 -07:00
2026-05-28 21:23:48 -07:00
2026-06-14 19:26:55 -07:00
2026-05-19 14:22:11 -07:00
2026-06-20 15:11:22 -07:00
2026-05-03 01:15:56 -05:00
2026-06-19 16:47:34 -07:00
2026-04-27 08:33:03 -07:00
2026-06-09 15:50:53 -07:00
2026-05-23 14:26:57 -07:00
2026-05-30 21:53:00 -07:00
2026-05-14 05:55:16 -07:00
2026-06-04 14:01:55 -07:00
2026-06-17 19:52:20 -07:00
2026-06-19 16:47:34 -07:00
2026-05-31 23:24:53 -07:00
2026-06-18 00:39:01 -07:00
2026-05-14 05:35:34 -07:00
2026-05-12 17:24:44 -07:00
2026-05-14 08:24:01 -07:00
2026-05-28 21:23:48 -07:00
2026-05-28 21:23:48 -07:00
2026-06-17 15:11:55 -07:00
2026-06-12 06:49:29 -07:00
2026-05-18 00:53:23 -07:00
2026-06-16 15:08:24 -07:00
2026-06-18 03:24:57 -07:00
2026-06-09 03:53:34 -07:00
2026-04-23 23:02:35 -07:00
2026-05-19 19:28:05 -07:00
2026-06-19 23:50:37 +00:00
2026-05-08 18:59:08 -07:00
2026-06-08 22:02:26 -07:00
2026-06-04 07:34:02 -07:00
2026-06-19 16:47:33 -07:00
2026-06-09 09:00:46 -07:00
2026-06-08 00:19:50 -07:00
2026-06-09 01:57:16 -07:00
2026-06-11 08:43:27 -07:00
2026-06-11 08:43:27 -07:00
2026-05-31 08:32:01 -07:00
2026-05-28 21:23:48 -07:00
2026-06-17 14:52:56 -07:00
2026-06-11 08:43:28 -07:00
2026-06-09 20:44:45 -07:00
2026-06-21 21:33:56 -07:00
2026-06-12 15:51:50 -07:00
2026-06-21 09:00:40 -07:00
2026-05-18 01:50:22 -07:00
2026-05-22 22:43:26 -07:00
2026-06-04 13:04:15 -07:00
2026-06-12 12:49:34 -07:00
2026-06-20 12:46:34 -07:00
2026-05-18 11:01:32 -07:00
2026-05-23 15:13:17 -07:00
2026-05-16 20:54:33 -07:00
2026-05-18 15:51:01 -07:00
2026-05-15 22:18:09 -07:00
2026-05-20 15:54:44 -07:00