gsxdsm
a8dae03fdb
fleet(dashboard): taskRevert 2 → 0 — the recorded blocker named the wrong variable ( #3129 )
...
The largest remaining census cluster. Deferred twice, with a blocker
that turns out to be false **in the same component where its
counter-example already lives**.
## What the earlier notes got right
`detailColumnFlags` describes the **modal's own task**, and the column
classified here belongs to a **neighbour**. Supplying it would answer
*"is this neighbour finished?"* with a different row's traits — wrong on
data, not merely stale on vocabulary. That reasoning stands and I kept
it.
An earlier pass also converted this, left the parameter unsupplied, and
**reverted it** — correctly. An unsupplied optional parameter is
strictly worse than the literal: the guard is gone, the census counts a
conversion, and the behaviour is the legacy fallback forever. That rule
is why the wiring ships in this same commit.
## What the conclusion got wrong
> "A correct conversion needs per-**neighbour** flags — which the modal
does not have and should not fetch mid-render."
`columnFlagsByTaskId` is a per-task map. It is **already a prop** of
`TaskDetailModal` (declared :367, destructured :727), and the call site
at :992 sits **below** that destructure.
And `TaskDetailModal` already uses it exactly this way, for the
near-duplicate canonical:
```ts
columnFlagsByTaskId?.get(nearDuplicateCanonical.id)
```
…under a note observing that *its* blocker had been *"asserted from the
shape of the problem rather than tested against what was in scope."*
Same assertion, one function over. So the supplier the earlier note went
looking for exists, is per-neighbour, and needs no fetch.
## What it fixes
This lookup skips **finished** candidates so a done/archived prior undo
attempt never renders as an active "Undo task" link. On a board that
renames those lanes it matched neither — a finished undo task kept
rendering as open, which is precisely the stale affordance the
function's own header says it exists to prevent.
## Census
| | before | after |
|---|---|---|
| `taskRevert.ts` | 2 | **0** |
| repo backlog | 17 | **15** |
## Measured
- 4 new cases; `taskRevert.test.ts` **11/11 pass**.
- **MUTATION**: restoring the literal pair fails the renamed case.
- **The negative is load-bearing.** The map is fail-soft, so a candidate
it does not cover must still be treated as **open**, not skipped. A
conversion that skipped unknown candidates would *hide live undo links*
— failing in the direction nobody reports.
- A **control** pins that an unwired caller (no flags at all) still
skips the legacy ids, so the optional parameter cannot regress default
boards.
- `TaskDetailModal` suites — **31 files / 664 tests pass**.
- `tsc --noEmit -p tsconfig.app.json` clean; census `--strict`,
`check-lane-wiring`, `check-fnxc-future-dates` clean.
## Pattern worth noting
This is the fourth deferral this session whose stated blocker had
dissolved or misidentified itself, and the second where the
counter-example was already in the same file. The common shape: a note
records *why* something is blocked, is accurate when written, and is
never re-checked — so the block outlives its cause. Re-reading them cost
minutes each and returned two real conversions.
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-31 05:58:44 -07:00
..
2026-07-31 01:55:08 -07:00
2026-07-14 08:23:11 -07:00
2026-07-30 22:25:13 -07:00
2026-07-31 01:30:47 -07:00
2026-07-05 11:31:48 -07:00
2026-07-30 21:50:47 -07:00
2026-06-19 04:27:01 -07:00
2026-07-08 15:24:01 -07:00
2026-07-16 12:36:03 -07:00
2026-07-09 19:58:07 -07:00
2026-07-16 12:36:03 -07:00
2026-07-30 21:58:23 -07:00
2026-07-30 22:46:08 -07:00
2026-07-30 23:24:33 -07:00
2026-07-26 20:04:33 -07:00
2026-07-12 17:54:21 -07:00
2026-07-26 18:57:02 -07:00
2026-06-03 17:14:42 -07:00
2026-07-26 18:57:02 -07:00
2026-07-26 18:57:02 -07:00
2026-07-04 10:42:21 -07:00
2026-07-29 22:39:14 -07:00
2026-06-25 08:34:44 -07:00
2026-06-03 19:06:53 -07:00
2026-07-26 18:57:02 -07:00
2026-07-23 13:38:41 -07:00
2026-07-09 19:58:07 -07:00
2026-06-20 05:04:25 -07:00
2026-06-03 20:52:44 -07:00
2026-06-19 04:27:01 -07:00
2026-06-17 21:37:18 -07:00
2026-06-20 05:04:25 -07:00
2026-06-20 05:04:25 -07:00
2026-07-26 19:18:53 -07:00
2026-07-26 19:18:53 -07:00
2026-06-27 17:11:13 -07:00
2026-06-03 19:06:53 -07:00
2026-07-31 00:13:43 -07:00
2026-06-03 19:06:53 -07:00
2026-06-21 23:07:55 -07:00
2026-07-18 04:44:53 -07:00
2026-07-18 02:05:35 -07:00
2026-06-29 15:34:06 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-22 16:21:03 -07:00
2026-07-30 23:41:14 -07:00
2026-06-08 13:32:58 -07:00
2026-07-02 13:07:16 -07:00
2026-07-02 13:07:16 -07:00
2026-06-03 19:06:53 -07:00
2026-07-30 21:58:23 -07:00
2026-07-10 18:14:09 -07:00
2026-07-06 19:03:06 -07:00
2026-07-06 19:03:06 -07:00
2026-07-24 00:35:34 -07:00
2026-07-24 23:02:16 -07:00
2026-07-30 02:38:58 -07:00
2026-06-15 12:43:08 -07:00
2026-06-19 04:27:01 -07:00
2026-07-02 23:49:43 -07:00
2026-06-19 04:27:01 -07:00
2026-07-12 17:54:21 -07:00
2026-06-05 02:38:38 -07:00
2026-07-31 00:30:26 -07:00
2026-06-21 03:53:43 -07:00
2026-07-18 20:30:42 -07:00
2026-07-25 05:15:02 -07:00
2026-06-03 01:08:09 -07:00
2026-07-17 00:29:48 -07:00
2026-07-30 22:46:08 -07:00
2026-07-16 02:07:43 -07:00
2026-07-16 02:07:43 -07:00
2026-07-26 19:52:32 -07:00
2026-07-26 19:52:32 -07:00
2026-07-16 04:15:18 -07:00
2026-07-08 23:39:33 -07:00
2026-07-23 13:38:41 -07:00
2026-07-17 00:48:36 -07:00
2026-06-03 20:52:44 -07:00
2026-07-08 13:09:10 -07:00
2026-07-08 13:09:10 -07:00
2026-06-19 04:27:01 -07:00
2026-07-02 23:53:26 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:48:40 -07:00
2026-07-19 18:59:28 -07:00
2026-07-17 20:09:56 -07:00
2026-07-17 20:09:56 -07:00
2026-07-18 18:04:26 -07:00
2026-06-25 14:37:52 -07:00
2026-07-30 21:50:47 -07:00
2026-06-19 04:27:01 -07:00
2026-07-18 00:33:14 -07:00
2026-07-26 18:57:02 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-26 00:43:55 -07:00
2026-07-12 12:49:37 -07:00
2026-06-28 21:10:28 -07:00
2026-07-30 21:50:47 -07:00
2026-07-11 22:43:34 -07:00
2026-07-30 12:46:12 -07:00
2026-06-03 20:52:44 -07:00
2026-06-22 23:42:45 -07:00
2026-06-22 23:42:45 -07:00
2026-07-30 12:46:12 -07:00
2026-07-15 18:43:37 -07:00
2026-07-28 23:23:13 -07:00
2026-06-25 08:35:44 -07:00
2026-06-25 08:35:44 -07:00
2026-06-20 23:57:37 -07:00
2026-06-21 02:15:24 -07:00
2026-06-19 01:33:13 -07:00
2026-06-20 05:04:25 -07:00
2026-06-22 11:47:52 -07:00
2026-07-18 20:30:42 -07:00
2026-07-17 14:25:30 -07:00
2026-07-30 23:41:14 -07:00
2026-07-26 18:57:02 -07:00
2026-07-08 23:39:34 -07:00
2026-07-02 13:44:41 -07:00
2026-07-16 01:19:43 -07:00
2026-07-12 12:49:37 -07:00
2026-06-25 08:34:44 -07:00
2026-06-03 19:06:53 -07:00
2026-07-26 20:04:33 -07:00
2026-07-30 02:38:58 -07:00
2026-07-22 23:04:33 -07:00
2026-07-06 19:03:06 -07:00
2026-07-06 19:03:06 -07:00
2026-06-27 23:47:21 -07:00
2026-06-22 03:57:10 -07:00
2026-07-26 19:52:32 -07:00
2026-07-26 19:52:32 -07:00
2026-07-26 13:05:23 -07:00
2026-06-03 22:35:28 -07:00
2026-06-20 05:04:25 -07:00
2026-07-02 11:38:34 -07:00
2026-07-30 21:58:23 -07:00
2026-06-27 20:02:33 -07:00
2026-07-18 20:30:42 -07:00
2026-07-01 07:33:56 -07:00
2026-07-16 04:15:18 -07:00
2026-07-09 19:58:03 -07:00
2026-06-19 04:27:01 -07:00
2026-07-30 22:46:08 -07:00
2026-07-08 09:47:19 -07:00
2026-07-30 02:38:58 -07:00
2026-07-01 07:33:56 -07:00
2026-07-07 22:04:53 -07:00
2026-07-16 04:58:03 -07:00
2026-07-22 18:46:46 -07:00
2026-07-25 05:15:02 -07:00
2026-07-11 20:32:56 -07:00
2026-07-18 20:30:42 -07:00
2026-06-25 08:34:44 -07:00
2026-06-20 05:04:25 -07:00
2026-07-30 21:50:47 -07:00
2026-07-30 21:50:47 -07:00
2026-07-24 22:16:11 -07:00
2026-07-31 01:55:08 -07:00
2026-06-19 04:27:01 -07:00
2026-06-03 17:33:16 -07:00
2026-06-22 23:58:38 -07:00
2026-07-26 22:34:18 -07:00
2026-07-26 09:50:44 -07:00
2026-07-31 01:55:08 -07:00
2026-06-03 20:52:44 -07:00
2026-06-21 03:53:43 -07:00
2026-06-21 03:53:43 -07:00
2026-07-12 17:54:21 -07:00
2026-07-20 09:41:02 -07:00
2026-06-22 11:15:46 -07:00
2026-07-30 03:10:35 -07:00
2026-07-26 18:35:10 -07:00
2026-07-18 19:45:08 -07:00
2026-07-20 09:41:02 -07:00
2026-07-18 03:48:38 -07:00
2026-07-18 03:48:38 -07:00
2026-07-26 11:17:52 -07:00
2026-06-22 11:15:46 -07:00
2026-07-11 17:16:49 -07:00
2026-07-11 17:16:49 -07:00
2026-06-19 04:27:01 -07:00
2026-06-03 20:52:44 -07:00
2026-07-30 12:46:12 -07:00
2026-06-22 11:08:25 -07:00
2026-07-13 19:07:58 -07:00
2026-07-18 20:30:42 -07:00
2026-07-18 20:30:42 -07:00
2026-07-25 05:15:02 -07:00
2026-07-25 05:15:02 -07:00
2026-07-17 20:09:56 -07:00
2026-07-17 20:09:56 -07:00
2026-07-26 18:57:02 -07:00
2026-07-30 21:35:23 -07:00
2026-06-25 16:31:10 -07:00
2026-07-23 21:59:55 -07:00
2026-07-23 13:21:10 -07:00
2026-07-30 21:35:23 -07:00
2026-07-16 11:07:57 -07:00
2026-07-25 23:12:41 -07:00
2026-06-19 04:27:01 -07:00
2026-06-17 03:12:16 -07:00
2026-06-22 04:39:35 -07:00
2026-07-17 23:51:55 -07:00
2026-07-30 21:58:23 -07:00
2026-07-16 21:07:06 -07:00
2026-07-16 21:07:06 -07:00
2026-07-03 21:47:00 -07:00
2026-07-03 21:47:00 -07:00
2026-07-26 18:57:02 -07:00
2026-07-18 19:36:57 -07:00
2026-07-18 19:36:57 -07:00
2026-07-18 18:11:02 -07:00
2026-07-19 15:45:45 -07:00
2026-06-22 23:58:38 -07:00
2026-07-14 08:23:11 -07:00
2026-07-26 18:35:10 -07:00
2026-07-26 18:35:10 -07:00
2026-06-03 20:52:44 -07:00
2026-07-30 22:46:08 -07:00
2026-06-03 19:06:53 -07:00
2026-06-25 08:34:44 -07:00
2026-07-13 19:07:58 -07:00
2026-07-14 17:18:06 -07:00
2026-07-20 22:58:22 -07:00
2026-07-16 04:15:18 -07:00
2026-07-14 08:18:52 -07:00
2026-06-19 04:27:01 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 19:06:53 -07:00
2026-07-07 22:04:53 -07:00
2026-07-30 12:46:12 -07:00
2026-07-07 22:04:53 -07:00
2026-07-22 18:46:46 -07:00
2026-07-30 02:38:58 -07:00
2026-06-21 03:53:43 -07:00
2026-07-04 21:28:17 -07:00
2026-07-05 11:31:44 -07:00
2026-07-26 14:37:35 -07:00
2026-07-30 21:58:23 -07:00
2026-07-01 07:33:56 -07:00
2026-07-07 22:04:53 -07:00
2026-07-22 20:55:27 -07:00
2026-06-28 12:10:10 -07:00
2026-07-15 20:28:11 -07:00
2026-06-19 04:27:01 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 01:08:09 -07:00
2026-06-17 21:37:18 -07:00
2026-06-28 01:17:22 -07:00
2026-07-16 01:19:43 -07:00
2026-06-03 19:06:53 -07:00
2026-07-25 23:12:41 -07:00
2026-06-27 19:54:22 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 20:52:44 -07:00
2026-07-25 23:12:41 -07:00
2026-06-22 18:21:06 -07:00
2026-07-30 21:50:47 -07:00
2026-06-20 21:23:17 -07:00
2026-07-22 17:29:20 -07:00
2026-06-27 23:37:24 -07:00
2026-07-30 12:46:12 -07:00
2026-06-27 23:08:10 -07:00
2026-06-27 23:08:10 -07:00
2026-06-22 15:23:43 -07:00
2026-06-22 15:23:43 -07:00
2026-07-24 22:32:30 -07:00
2026-07-30 02:38:58 -07:00
2026-07-16 03:46:55 -07:00
2026-07-09 08:17:52 -07:00
2026-07-20 09:46:22 -07:00
2026-07-19 17:39:43 -07:00
2026-07-19 16:44:40 -07:00
2026-07-19 20:42:05 -07:00
2026-07-30 12:46:12 -07:00
2026-06-22 03:34:16 -07:00
2026-07-18 16:18:15 -07:00
2026-07-26 18:35:10 -07:00
2026-07-03 00:12:10 -07:00
2026-07-26 18:35:10 -07:00
2026-06-26 02:45:29 -07:00
2026-07-30 03:10:35 -07:00
2026-07-30 12:46:12 -07:00
2026-06-03 19:06:53 -07:00
2026-07-16 16:01:29 -07:00
2026-06-20 05:04:25 -07:00
2026-07-30 21:58:23 -07:00
2026-07-30 03:10:35 -07:00
2026-07-30 03:10:35 -07:00
2026-07-26 14:37:35 -07:00
2026-07-30 22:46:08 -07:00
2026-06-22 19:48:50 -07:00
2026-07-12 17:54:21 -07:00
2026-07-11 19:31:50 -07:00
2026-07-10 18:09:58 -07:00
2026-07-17 14:25:30 -07:00
2026-07-17 14:25:30 -07:00
2026-07-12 13:22:05 -07:00
2026-07-30 21:50:47 -07:00
2026-07-26 14:37:35 -07:00
2026-07-30 21:58:23 -07:00
2026-07-15 22:00:27 -07:00
2026-06-03 19:06:53 -07:00
2026-07-15 22:00:27 -07:00
2026-06-21 03:53:43 -07:00
2026-07-10 17:20:17 -07:00
2026-07-03 21:45:21 -07:00
2026-07-03 21:45:21 -07:00
2026-07-10 17:20:17 -07:00
2026-07-26 18:57:02 -07:00
2026-07-10 17:20:17 -07:00
2026-06-30 10:26:23 -07:00
2026-06-30 10:26:23 -07:00
2026-06-21 16:13:54 -07:00
2026-07-10 16:13:39 -07:00
2026-07-10 16:13:39 -07:00
2026-07-23 13:38:41 -07:00
2026-07-23 13:38:41 -07:00
2026-06-26 13:51:32 -07:00
2026-06-25 19:35:47 -07:00
2026-07-01 00:28:25 -07:00
2026-06-03 20:52:44 -07:00
2026-07-13 19:07:58 -07:00
2026-07-14 12:41:10 -07:00
2026-07-25 05:15:02 -07:00
2026-07-12 17:54:21 -07:00
2026-06-20 01:52:26 -07:00
2026-06-21 03:53:43 -07:00
2026-06-03 19:06:53 -07:00
2026-07-26 18:57:02 -07:00
2026-07-26 20:33:25 -07:00
2026-07-31 00:47:14 -07:00
2026-07-02 11:38:34 -07:00
2026-06-24 23:32:52 -07:00
2026-07-30 12:46:12 -07:00
2026-07-26 11:17:52 -07:00
2026-07-30 21:50:47 -07:00
2026-07-25 05:15:02 -07:00
2026-06-30 01:57:09 -07:00
2026-07-30 12:46:12 -07:00
2026-07-11 22:16:48 -07:00
2026-07-11 18:07:00 -07:00
2026-07-30 21:50:47 -07:00
2026-07-31 05:58:44 -07:00
2026-06-21 23:07:55 -07:00
2026-07-22 08:30:12 -07:00
2026-06-19 04:27:01 -07:00
2026-06-04 16:16:50 -07:00
2026-07-25 05:15:02 -07:00
2026-06-03 19:48:40 -07:00
2026-07-15 00:27:59 -07:00
2026-07-20 01:00:37 -07:00
2026-07-30 12:46:12 -07:00
2026-07-08 09:19:42 -07:00
2026-07-30 08:06:04 -07:00
2026-07-30 08:06:04 -07:00
2026-07-30 12:46:12 -07:00
2026-07-22 22:20:03 -07:00
2026-07-30 12:46:12 -07:00
2026-07-18 18:38:47 -07:00
2026-07-19 19:02:21 -07:00
2026-06-25 14:37:52 -07:00
2026-06-21 22:43:34 -07:00
2026-07-26 18:35:10 -07:00
2026-07-30 21:50:47 -07:00
2026-06-03 19:06:53 -07:00
2026-07-21 23:03:35 -07:00
2026-07-21 23:03:35 -07:00
2026-07-21 18:33:22 -07:00
2026-07-21 18:33:22 -07:00
2026-07-17 00:00:46 -07:00
2026-07-12 12:52:30 -07:00
2026-07-12 12:52:30 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-07-16 13:29:25 -07:00
2026-07-25 22:52:53 -07:00
2026-06-22 03:34:15 -07:00
2026-07-22 17:29:20 -07:00
2026-07-31 01:14:13 -07:00
2026-06-22 18:21:06 -07:00
2026-06-22 03:34:15 -07:00
2026-07-20 00:54:01 -07:00
2026-07-20 00:54:01 -07:00
2026-07-11 18:06:22 -07:00
2026-07-22 22:37:51 -07:00
2026-07-11 18:06:22 -07:00
2026-06-29 23:41:51 -07:00
2026-06-28 09:09:03 -07:00
2026-06-28 09:09:03 -07:00
2026-07-29 00:05:29 -07:00
2026-07-11 18:06:22 -07:00
2026-07-26 14:37:35 -07:00
2026-07-30 22:46:08 -07:00
2026-07-22 22:37:51 -07:00
2026-06-19 05:31:47 -07:00
2026-06-04 12:44:43 -07:00
2026-06-30 12:21:25 -07:00
2026-06-30 12:21:25 -07:00
2026-07-23 22:13:25 -07:00
2026-07-26 11:17:52 -07:00
2026-06-28 09:09:03 -07:00
2026-06-25 20:28:38 -07:00
2026-06-28 09:09:03 -07:00
2026-07-30 12:46:12 -07:00
2026-06-09 09:16:59 -07:00
2026-06-20 10:35:40 -07:00
2026-07-15 22:00:27 -07:00
2026-07-16 18:36:50 -07:00
2026-07-18 04:44:53 -07:00
2026-07-11 18:06:22 -07:00
2026-07-15 10:36:10 -07:00
2026-06-30 12:21:25 -07:00
2026-06-30 12:21:25 -07:00
2026-06-19 04:27:01 -07:00
2026-06-03 19:06:53 -07:00
2026-06-21 21:07:20 -07:00
2026-07-30 12:46:12 -07:00
2026-06-03 19:06:53 -07:00