gsxdsm
d09a856941
test(engine): pin the FN-5256 liveness guard on a renamed board (the sweep that clears a live task's worktree) ( #3132 )
...
Top item from the verified coverage map on #3115 .
`reconcileTaskWorktreeMetadata` had **three** uncovered resolvers — the
most of any sweep in the file — and it is the one that nulls
`worktree`/`branch`/`sessionFile` on a live row.
## Why this sweep first
Its own header names FN-5256: the incident where clearing worktree
metadata yanked a checkout out from under a running shell. The guard
that prevents it is `scopeOverrideMergeActiveSafe`, and that guard is
exactly what the wip/review resolvers feed.
The existing guard test uses `column: "in-progress"` — **the literal**.
So blinding `worktreeReconcileWipColumns` back to `["in-progress"]`
leaves all 825 self-healing tests green. The guard is converted; nothing
in the suite could tell.
On a renamed board the pre-conversion form matched nothing,
`scopeOverrideMergeActiveSafe` became true for a card an executor was
actively running, and the sweep cleared its metadata.
## The case
The renamed twin of the existing FN-5256 test: a `scopeOverride` task
live in a **renamed wip lane** keeps its metadata. Same shape, same
assertions, different vocabulary — which is the whole point, since the
original passes either way.
**Measured:** 414 pass; blinding `worktreeReconcileWipColumns` to the
legacy id fails **exactly this test**.
## Remaining from the map
25 uncovered resolvers left. Next by risk: `reclaimStaleActiveBranches`
(deletes branches) and `reconcileInReviewBranchRebind` (rebinds branches
of live cards) — both need a git-shelling harness, so they are slower to
pin than this one was. Then the two `reconcileDependencyBlockingLeases`
resolvers.
I will keep working down that list. The map is on #3115 with verified
names; anyone can pick an entry and check it the same way — blind one
resolver, run `vitest run src/__tests__/self-healing`, and if it stays
green that conversion has nothing behind it.
## Verification
`self-healing.test.ts` **414 passed** · `pnpm test:gate` 13 + 161 + 487
+ 71 · lint — green.
2026-07-31 05:49:59 -07:00
..
2026-07-31 05:49:59 -07:00
2026-07-30 12:25:00 -07:00
2026-07-30 11:28:54 -07:00
2026-07-29 20:59:06 -07:00
2026-07-13 19:07:58 -07:00
2026-07-30 05:18:19 -07:00
2026-07-31 05:09:36 -07:00
2026-06-29 04:12:13 -07:00
2026-07-30 12:25:00 -07:00
2026-07-24 22:32:49 -07:00
2026-07-20 10:13:57 -07:00
2026-07-31 03:37:18 -07:00
2026-07-30 21:50:37 -07:00
2026-06-13 04:54:59 -07:00
2026-06-04 22:53:02 -07:00
2026-07-20 16:08:00 -07:00
2026-07-26 09:26:13 -07:00
2026-07-30 21:51:09 -07:00
2026-07-30 11:06:20 -07:00
2026-07-16 00:01:17 -07:00
2026-07-21 23:09:30 -07:00
2026-07-30 21:50:37 -07:00
2026-07-10 07:46:52 -07:00
2026-07-22 13:43:55 -07:00
2026-07-30 11:28:54 -07:00
2026-07-26 16:16:27 -07:00
2026-07-26 10:15:18 -07:00
2026-07-26 16:16:27 -07:00
2026-07-30 21:51:09 -07:00
2026-06-30 12:56:03 -07:00
2026-07-03 22:04:45 -07:00
2026-07-16 17:05:29 -07:00
2026-07-26 23:47:49 -07:00
2026-07-29 10:01:14 -07:00
2026-06-07 20:43:44 -07:00
2026-07-31 05:09:23 -07:00
2026-05-21 12:49:50 -07:00
2026-07-31 03:51:43 -07:00
2026-06-22 03:04:21 -07:00
2026-07-30 21:50:37 -07:00
2026-05-23 00:03:12 -07:00
2026-07-16 13:48:00 -07:00
2026-06-15 12:34:44 -07:00
2026-06-26 16:14:44 -07:00
2026-06-15 02:30:41 -07:00
2026-06-04 16:16:50 -07:00
2026-07-30 08:24:50 -07:00
2026-07-30 03:10:35 -07:00
2026-07-21 17:14:30 -07:00
2026-06-01 08:23:02 -07:00
2026-07-22 08:53:31 -07:00
2026-07-21 17:08:44 -07:00
2026-07-31 03:31:03 -07:00
2026-07-30 10:35:31 -07:00
2026-07-14 22:16:16 -07:00
2026-07-31 04:29:21 -07:00
2026-07-31 05:15:38 -07:00
2026-07-13 19:07:58 -07:00
2026-07-15 12:54:16 -07:00
2026-07-30 21:51:09 -07:00
2026-07-26 12:01:19 -07:00
2026-05-29 07:11:00 -07:00
2026-07-14 17:02:47 -07:00
2026-07-30 10:47:44 -07:00
2026-07-13 19:07:58 -07:00
2026-07-27 21:39:21 -07:00
2026-07-18 01:23:31 -07:00
2026-07-28 18:52:39 -07:00
2026-07-30 21:51:09 -07:00
2026-07-02 13:07:16 -07:00
2026-07-23 10:31:22 -07:00
2026-07-23 10:31:22 -07:00
2026-06-26 11:56:12 -07:00
2026-07-22 15:25:20 -07:00
2026-07-14 08:18:52 -07:00
2026-07-26 09:50:43 -07:00
2026-06-26 00:57:32 -07:00
2026-07-15 22:43:24 -07:00
2026-07-30 22:05:04 -07:00
2026-07-15 10:06:32 -07:00
2026-07-27 13:30:13 -07:00
2026-07-21 17:08:17 -07:00
2026-06-25 20:12:20 -07:00
2026-07-30 22:05:04 -07:00
2026-05-28 15:04:41 -07:00
2026-07-16 15:42:22 -07:00
2026-05-26 21:57:31 -07:00
2026-07-26 10:15:18 -07:00
2026-07-18 14:42:59 -07:00
2026-07-16 00:01:17 -07:00
2026-07-15 14:44:35 -07:00
2026-07-19 16:00:28 -07:00
2026-07-15 14:44:35 -07:00
2026-07-30 11:28:54 -07:00
2026-07-30 11:28:54 -07:00
2026-07-16 00:01:17 -07:00
2026-07-11 22:16:48 -07:00
2026-07-30 11:28:54 -07:00
2026-07-26 10:15:18 -07:00
2026-07-31 03:37:18 -07:00
2026-07-27 14:28:53 -07:00
2026-07-29 21:20:09 -07:00
2026-07-30 10:47:44 -07:00
2026-07-30 00:52:55 -07:00
2026-07-19 22:43:13 -07:00
2026-06-13 16:16:52 -07:00
2026-06-19 23:50:37 +00:00
2026-07-21 17:14:30 -07:00
2026-07-26 10:15:18 -07:00
2026-07-14 20:27:35 -07:00
2026-07-14 20:27:35 -07:00
2026-07-14 20:27:35 -07:00
2026-07-09 19:58:06 -07:00
2026-07-16 21:42:44 -07:00
2026-07-14 20:27:35 -07:00
2026-07-14 20:27:35 -07:00
2026-07-26 08:26:20 -07:00
2026-07-30 21:50:37 -07:00
2026-07-30 21:50:37 -07:00
2026-07-25 20:46:07 -07:00
2026-07-27 21:39:21 -07:00
2026-07-30 00:00:46 -07:00
2026-07-04 21:28:16 -07:00
2026-07-31 03:34:27 -07:00
2026-07-21 23:32:18 -07:00
2026-06-04 12:44:43 -07:00
2026-07-30 21:50:37 -07:00
2026-06-04 07:34:02 -07:00
2026-06-07 21:19:10 -07:00
2026-07-14 12:41:10 -07:00
2026-07-30 12:06:14 -07:00
2026-07-17 17:28:09 -07:00
2026-07-13 19:07:58 -07:00
2026-07-16 21:07:06 -07:00
2026-07-13 19:07:58 -07:00
2026-07-23 21:43:58 -07:00
2026-07-28 18:52:39 -07:00
2026-07-30 22:06:24 -07:00
2026-07-28 18:52:39 -07:00
2026-07-28 18:52:39 -07:00
2026-06-11 21:00:23 -07:00
2026-07-22 14:42:04 -07:00
2026-07-21 17:14:30 -07:00
2026-07-26 12:01:19 -07:00
2026-07-21 17:08:44 -07:00
2026-07-21 17:08:44 -07:00
2026-07-27 17:37:20 -07:00
2026-07-31 02:39:45 -07:00
2026-07-24 23:57:49 -07:00
2026-07-21 17:06:26 -07:00
2026-07-13 19:07:58 -07:00
2026-07-13 19:07:58 -07:00
2026-07-31 03:34:27 -07:00
2026-07-15 20:53:05 -07:00
2026-07-21 17:08:44 -07:00
2026-07-01 16:38:27 -07:00
2026-07-22 08:53:31 -07:00
2026-07-30 03:10:35 -07:00
2026-07-26 08:26:20 -07:00
2026-07-30 11:28:54 -07:00
2026-07-26 15:36:33 -07:00
2026-07-30 17:39:59 -07:00
2026-07-26 16:16:27 -07:00
2026-07-31 05:41:16 -07:00
2026-07-16 00:01:17 -07:00
2026-07-16 00:01:17 -07:00
2026-07-27 20:15:46 -07:00
2026-07-16 15:42:22 -07:00
2026-07-16 15:42:22 -07:00
2026-07-31 05:15:14 -07:00
2026-07-26 08:20:37 -07:00
2026-07-19 15:38:31 -07:00
2026-07-29 23:10:11 -07:00
2026-05-23 14:26:57 -07:00
2026-07-29 21:20:09 -07:00
2026-07-30 13:55:10 -07:00
2026-06-04 14:01:55 -07:00
2026-07-29 09:54:39 -07:00
2026-07-25 23:44:56 -07:00
2026-05-31 23:24:53 -07:00
2026-07-29 23:34:30 -07:00
2026-07-30 23:13:34 -07:00
2026-07-30 15:08:01 -07:00
2026-07-30 09:28:27 -07:00
2026-07-30 08:24:50 -07:00
2026-07-16 01:52:10 -07:00
2026-05-28 21:23:48 -07:00
2026-07-29 23:10:11 -07:00
2026-07-25 14:59:53 -07:00
2026-07-25 14:59:53 -07:00
2026-07-15 20:14:25 -07:00
2026-07-31 05:35:28 -07:00
2026-07-17 17:28:36 -07:00
2026-07-30 08:31:47 -07:00
2026-07-15 08:44:11 -07:00
2026-07-26 09:50:43 -07:00
2026-07-27 15:05:05 -07:00
2026-07-27 13:30:13 -07:00
2026-06-29 10:32:51 -07:00
2026-07-01 00:51:01 -07:00
2026-07-27 13:30:13 -07:00
2026-06-04 07:34:02 -07:00
2026-07-26 23:42:46 -07:00
2026-07-26 10:15:18 -07:00
2026-06-25 22:33:08 -07:00
2026-07-26 12:29:54 -07:00
2026-06-11 08:43:27 -07:00
2026-07-15 15:34:43 -07:00
2026-07-30 17:39:59 -07:00
2026-07-01 00:51:01 -07:00
2026-07-01 00:51:01 -07:00
2026-07-01 00:51:01 -07:00
2026-07-01 00:51:01 -07:00
2026-06-30 00:09:36 -07:00
2026-07-21 17:06:26 -07:00
2026-07-19 22:07:55 -07:00
2026-07-19 22:07:55 -07:00
2026-07-07 10:25:11 -07:00
2026-06-21 23:02:46 -07:00
2026-07-19 17:05:05 -07:00
2026-07-16 13:48:00 -07:00
2026-06-25 08:34:44 -07:00
2026-07-14 22:16:16 -07:00
2026-07-30 21:35:23 -07:00
2026-06-04 13:04:15 -07:00
2026-06-12 12:49:34 -07:00
2026-07-19 23:47:53 -07:00
2026-07-30 11:28:54 -07:00
2026-05-23 15:13:17 -07:00
2026-07-13 19:07:58 -07:00