gsxdsm
efbbc45eb0
U12: the LAST triage guard — Plan was offered on executing cards named triage ( #2664 )
...
The final `column === "triage"` in production source, and it was a live
defect rather than dead vocabulary.
## The defect
`isPreExecutionHoldColumn` ORed the legacy id with the traits
**unconditionally**:
```ts
return column === "triage" || flags?.intake === true || flags?.hold === true;
```
That is not a fallback. A resolved column merely *named* `triage`
answered true even when its own traits said work was underway — so the
context menu offered **Plan**, which re-plans, on a card that is already
executing.
Now flags-first, with the id as the documented no-metadata answer.
## Why the file's earlier conversion missed it
Every existing case in `TaskContextMenu.test.tsx` passes a column with
**no flags**, or with `hold`/`intake` set. All of them agree under both
forms, so the suite could not distinguish them. Nothing exercised a
column whose **name and traits disagree**, which is the only shape that
separates an OR from a fallback.
Three new cases cover it. Revert check: restoring the OR form fails the
first one — Plan reappears on a mid-flight card.
## The asymmetry is preserved, and now tested
The degraded set stays `{triage}` **alone**, deliberately not the
`{todo, triage}` used by `isPreImplementationColumnRole`. That helper
drives the preserve-progress prompt, where a flagless `todo` *should*
prompt because losing steps is unrecoverable. This drives Plan, where a
flagless `todo` must **not** offer to re-plan a card that may already be
planned. The file documented that difference; nothing asserted it. Now a
test does.
## On reaching zero honestly
The surviving literal is marked `DELIBERATE-LITERAL`. It is the degraded
answer, not an unconverted guard — there is no trait to read when
`flags` is `undefined`, which happens during first paint and for a card
in a column its workflow no longer declares. Deleting it would silently
withdraw Plan from exactly the stranded cards that most need
re-planning.
So **`triage → 0` means "no unconverted guards remain", not "the string
is gone"**, and I would rather say that than move a number by deleting a
fallback.
| branch | triage |
|---|---:|
| `origin/main` | 5 |
| this PR | **4** |
| #2655 (flag resolution, removes 4 in `moves.ts`) | 1 → **0** combined
|
I found it with the census's own AST classifier rather than grep — my
grep of the same tree returned only comment prose and would have had me
report the bar as met while a real defect sat in
`TaskContextMenu.tsx:179`.
## Verification
`pnpm lint` clean. `pnpm test:gate` green (10 / 158 / 487 / 71). `pnpm
check:lifecycle-columns` exits 0 with the baseline re-recorded in this
PR (column 769 → 768, deliberate 12 → 13). `tsc -p tsconfig.app.json`
clean. `TaskContextMenu.test.tsx` 18/18.
Depends on nothing; stacks cleanly with #2655 and #2661 .
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-30 00:37:08 -07:00
..
2026-07-16 16:01:29 -07:00
2026-07-16 12:36:03 -07:00
2026-06-17 17:57:19 -07:00
2026-07-26 14:37:35 -07:00
2026-07-26 17:42:39 -07:00
2026-07-26 11:17:52 -07:00
2026-07-17 23:53:50 -07:00
2026-07-23 14:32:58 -07:00
2026-07-12 17:54:21 -07:00
2026-07-26 19:52:32 -07:00
2026-07-11 17:16:49 -07:00
2026-07-26 20:04:33 -07:00
2026-07-26 19:52:32 -07:00
2026-07-12 19:18:25 -07:00
2026-07-23 14:32:58 -07:00
2026-07-12 17:54:21 -07:00
2026-06-03 17:14:42 -07:00
2026-07-17 01:01:53 -07:00
2026-06-25 19:51:21 -07:00
2026-07-18 16:23:02 -07:00
2026-06-25 19:51:21 -07:00
2026-07-04 10:42:21 -07:00
2026-06-25 19:51:21 -07:00
2026-05-30 14:20:12 -07:00
2026-07-26 18:57:02 -07:00
2026-07-12 19:18:25 -07:00
2026-07-09 19:58:07 -07:00
2026-07-23 21:19:33 -07:00
2026-07-26 19:18:53 -07:00
2026-07-26 19:18:53 -07:00
2026-06-27 19:37:39 -07:00
2026-07-26 18:00:07 -07:00
2026-07-26 11:17:52 -07:00
2026-07-12 12:10:38 -07:00
2026-07-18 02:05:35 -07:00
2026-07-24 22:32:39 -07:00
2026-07-09 19:58:03 -07:00
2026-07-14 15:54:44 -07:00
2026-07-25 06:22:23 -07:00
2026-06-21 13:25:40 -07:00
2026-07-16 16:01:29 -07:00
2026-06-04 04:32:46 -07:00
2026-07-25 06:22:23 -07:00
2026-07-28 15:45:40 -07:00
2026-07-28 15:45:40 -07:00
2026-06-08 13:32:58 -07:00
2026-07-28 23:23:07 -07:00
2026-07-02 13:07:16 -07:00
2026-07-26 14:37:35 -07:00
2026-07-10 18:14:09 -07:00
2026-07-06 19:03:06 -07:00
2026-07-12 22:49:51 -07:00
2026-07-24 00:35:34 -07:00
2026-07-24 00:09:44 -07:00
2026-07-23 22:13:25 -07:00
2026-07-12 23:02:46 -07:00
2026-06-27 15:56:42 -07:00
2026-06-05 02:38:38 -07:00
2026-07-12 20:19:36 -07:00
2026-07-16 16:01:29 -07:00
2026-07-12 20:19:36 -07:00
2026-07-20 00:42:15 -07:00
2026-07-24 23:31:11 -07:00
2026-07-23 21:58:21 -07:00
2026-07-12 20:19:36 -07:00
2026-07-24 00:09:44 -07:00
2026-07-12 20:19:36 -07:00
2026-07-23 18:15:03 -07:00
2026-07-20 00:42:15 -07:00
2026-07-22 18:46:46 -07:00
2026-07-25 06:22:23 -07:00
2026-07-12 20:54:10 -07:00
2026-07-22 18:46:46 -07:00
2026-07-12 23:24:03 -07:00
2026-07-12 20:19:36 -07:00
2026-07-24 23:02:16 -07:00
2026-07-10 08:21:52 -07:00
2026-07-12 20:00:50 -07:00
2026-07-24 00:35:34 -07:00
2026-07-17 23:53:50 -07:00
2026-07-30 00:13:58 -07:00
2026-07-29 22:37:43 -07:00
2026-07-18 20:30:42 -07:00
2026-07-25 05:48:35 -07:00
2026-07-17 00:29:48 -07:00
2026-07-26 17:42:39 -07:00
2026-07-16 02:07:43 -07:00
2026-06-25 16:11:45 -07:00
2026-07-26 19:52:32 -07:00
2026-07-08 23:39:33 -07:00
2026-07-18 19:04:07 -07:00
2026-06-30 01:23:09 -07:00
2026-06-27 20:27:09 -07:00
2026-06-02 14:14:24 -07:00
2026-07-19 18:59:28 -07:00
2026-07-17 20:09:56 -07:00
2026-07-18 18:04:26 -07:00
2026-06-23 16:47:38 -07:00
2026-06-23 11:26:51 -07:00
2026-07-17 23:51:55 -07:00
2026-07-12 12:49:37 -07:00
2026-07-12 18:13:33 -07:00
2026-07-22 08:30:12 -07:00
2026-06-22 23:42:45 -07:00
2026-07-22 00:30:34 -07:00
2026-07-07 08:27:26 -07:00
2026-07-28 23:23:13 -07:00
2026-06-25 08:35:44 -07:00
2026-07-26 18:00:07 -07:00
2026-07-08 23:39:34 -07:00
2026-07-26 18:00:07 -07:00
2026-07-12 12:49:37 -07:00
2026-05-22 20:20:42 -07:00
2026-07-26 19:52:32 -07:00
2026-07-26 15:42:53 -07:00
2026-07-26 14:37:35 -07:00
2026-07-26 12:51:39 -07:00
2026-07-22 23:04:33 -07:00
2026-07-06 19:03:06 -07:00
2026-06-27 23:47:21 -07:00
2026-07-18 12:32:07 -07:00
2026-07-26 20:04:33 -07:00
2026-06-03 22:35:28 -07:00
2026-07-02 12:34:35 -07:00
2026-07-26 14:37:35 -07:00
2026-06-27 20:02:33 -07:00
2026-06-30 21:59:03 -07:00
2026-07-01 23:15:12 -07:00
2026-07-09 19:58:03 -07:00
2026-07-26 14:37:35 -07:00
2026-06-23 00:20:55 -07:00
2026-07-26 18:00:07 -07:00
2026-07-19 18:00:47 -07:00
2026-07-01 23:15:12 -07:00
2026-07-09 19:58:07 -07:00
2026-07-25 05:15:02 -07:00
2026-07-11 20:32:56 -07:00
2026-06-30 12:21:25 -07:00
2026-06-03 13:02:23 -07:00
2026-07-26 22:34:18 -07:00
2026-07-19 18:00:47 -07:00
2026-07-26 11:17:52 -07:00
2026-07-29 09:04:58 -07:00
2026-07-26 09:50:44 -07:00
2026-06-21 03:53:43 -07:00
2026-07-15 15:30:55 -07:00
2026-07-26 14:49:17 -07:00
2026-07-18 19:45:08 -07:00
2026-07-26 17:23:48 -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-26 18:00:07 -07:00
2026-07-11 17:16:49 -07:00
2026-05-23 13:06:48 -07:00
2026-07-18 20:30:42 -07:00
2026-07-25 05:15:02 -07:00
2026-07-26 18:57:02 -07:00
2026-07-17 20:09:56 -07:00
2026-07-26 18:00:07 -07:00
2026-07-25 06:22:23 -07:00
2026-07-18 09:41:25 -07:00
2026-07-26 18:00:07 -07:00
2026-06-16 15:08:24 -07:00
2026-06-22 18:21:06 -07:00
2026-06-27 20:27:09 -07:00
2026-07-26 18:00:07 -07:00
2026-06-25 08:35:44 -07:00
2026-05-22 20:20:42 -07:00
2026-07-20 23:28:49 -07:00
2026-07-25 06:22:23 -07:00
2026-06-17 03:12:16 -07:00
2026-06-29 23:31:52 -07:00
2026-07-26 19:52:32 -07:00
2026-07-26 18:57:02 -07:00
2026-07-26 14:37:35 -07:00
2026-07-16 21:07:06 -07:00
2026-07-16 21:07:06 -07:00
2026-06-21 09:00:40 -07:00
2026-07-03 21:47:00 -07:00
2026-07-18 19:36:57 -07:00
2026-07-19 15:45:45 -07:00
2026-07-26 18:00:07 -07:00
2026-07-10 00:48:14 -07:00
2026-07-26 18:00:07 -07:00
2026-07-26 18:35:10 -07:00
2026-07-05 11:31:48 -07:00
2026-07-26 17:42:39 -07:00
2026-05-22 20:20:42 -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-10 17:20:17 -07:00
2026-07-26 18:57:02 -07:00
2026-06-22 04:39:35 -07:00
2026-06-27 23:25:19 -07:00
2026-06-28 20:11:43 -07:00
2026-07-04 21:28:17 -07:00
2026-07-05 11:31:44 -07:00
2026-07-26 17:18:43 -07:00
2026-07-25 10:02:02 -07:00
2026-07-14 18:47:53 -07:00
2026-07-25 06:22:23 -07:00
2026-07-26 18:00:07 -07:00
2026-07-20 09:16:12 -07:00
2026-07-25 10:02:02 -07:00
2026-06-09 04:27:53 -07:00
2026-07-02 18:06:00 -07:00
2026-07-22 20:55:27 -07:00
2026-07-22 20:55:27 -07:00
2026-06-28 12:10:10 -07:00
2026-06-22 04:39:35 -07:00
2026-05-22 20:20:42 -07:00
2026-06-27 23:42:11 -07:00
2026-07-25 06:22:23 -07:00
2026-06-27 19:54:22 -07:00
2026-06-02 08:49:25 -07:00
2026-06-07 23:03:38 -07:00
2026-06-27 19:54:22 -07:00
2026-07-22 17:29:20 -07:00
2026-05-28 23:31:03 -07:00
2026-05-28 19:50:53 -07:00
2026-06-27 23:37:24 -07:00
2026-07-25 06:22:23 -07:00
2026-06-22 15:23:43 -07:00
2026-07-26 17:42:39 -07:00
2026-07-17 23:53:50 -07:00
2026-07-25 06:22:23 -07:00
2026-07-25 06:22:23 -07:00
2026-06-21 09:00:40 -07:00
2026-07-26 18:35:10 -07:00
2026-07-07 23:35:05 -07:00
2026-07-12 19:43:41 -07:00
2026-07-08 12:47:13 -04:00
2026-07-26 14:37:35 -07:00
2026-07-12 19:43:41 -07:00
2026-07-12 19:43:41 -07:00
2026-07-26 17:42:39 -07:00
2026-06-22 11:36:20 -07:00
2026-07-12 17:54:21 -07:00
2026-07-11 19:31:50 -07:00
2026-07-17 14:25:30 -07:00
2026-07-12 13:22:05 -07:00
2026-07-23 23:51:12 -07:00
2026-07-28 23:23:13 -07:00
2026-05-22 20:20:42 -07:00
2026-07-28 18:52:31 -07:00
2026-07-28 23:23:13 -07:00
2026-07-28 18:52:31 -07:00
2026-07-22 15:25:20 -07:00
2026-07-26 14:37:35 -07:00
2026-07-28 23:23:13 -07:00
2026-07-26 18:00:07 -07:00
2026-06-27 09:28:29 -07:00
2026-07-26 18:00:07 -07:00
2026-07-28 23:23:13 -07:00
2026-07-15 00:29:24 -07:00
2026-07-28 23:23:13 -07:00
2026-07-28 18:52:31 -07:00
2026-07-10 23:21:37 -07:00
2026-07-26 18:00:07 -07:00
2026-07-28 23:23:13 -07:00
2026-07-10 17:20:17 -07:00
2026-07-03 21:45:21 -07:00
2026-07-18 00:08:56 -07:00
2026-07-10 17:20:17 -07:00
2026-07-25 06:22:23 -07:00
2026-06-21 16:13:54 -07:00
2026-07-10 16:13:39 -07:00
2026-07-23 13:38:41 -07:00
2026-06-22 15:23:43 -07:00
2026-06-25 19:35:47 -07:00
2026-07-14 12:41:10 -07:00
2026-07-10 07:40:22 -07:00
2026-07-21 23:09:30 -07:00
2026-07-14 08:23:11 -07:00
2026-07-12 17:54:21 -07:00
2026-06-20 01:52:26 -07:00
2026-07-16 16:01:29 -07:00
2026-06-20 04:51:57 -07:00
2026-07-26 17:42:39 -07:00
2026-07-16 16:01:29 -07:00
2026-07-26 08:42:46 -07:00
2026-07-26 23:42:46 -07:00
2026-07-16 16:01:29 -07:00
2026-07-26 09:06:41 -07:00
2026-07-16 16:01:29 -07:00
2026-07-16 16:01:29 -07:00
2026-07-24 11:15:43 -07:00
2026-07-18 13:50:58 -07:00
2026-07-30 00:13:58 -07:00
2026-07-29 10:26:21 -07:00
2026-06-24 23:32:52 -07:00
2026-07-22 00:30:34 -07:00
2026-07-30 00:37:08 -07:00
2026-07-11 18:07:00 -07:00
2026-07-26 18:00:07 -07:00
2026-07-05 12:38:01 -07:00
2026-07-26 18:00:07 -07:00
2026-05-22 20:20:42 -07:00
2026-05-23 20:44:01 -07:00
2026-07-26 22:36:09 -07:00
2026-06-25 08:34:44 -07:00
2026-06-25 08:34:44 -07:00
2026-06-11 22:11:44 -07:00
2026-07-26 19:45:47 -07:00
2026-07-22 00:43:04 -07:00
2026-07-15 11:14:17 -07:00
2026-07-08 22:30:29 -07:00
2026-06-30 14:58:07 -07:00
2026-07-02 11:38:34 -07:00
2026-07-22 01:00:07 -07:00
2026-07-18 13:45:44 -07:00
2026-07-23 22:13:25 -07:00
2026-07-23 22:13:25 -07:00
2026-07-23 22:13:25 -07:00
2026-05-26 17:19:34 -07:00
2026-07-12 23:37:54 -07:00
2026-07-23 00:38:18 -07:00
2026-07-27 21:48:08 -07:00
2026-07-26 20:04:33 -07:00
2026-07-17 01:17:22 -07:00
2026-07-23 23:51:29 -07:00
2026-07-18 12:26:03 -07:00
2026-06-05 01:16:13 -07:00
2026-07-21 23:09:30 -07:00
2026-07-26 11:47:04 -07:00
2026-07-29 10:26:21 -07:00
2026-07-11 20:46:05 -07:00
2026-07-22 08:30:12 -07:00
2026-06-04 16:16:50 -07:00
2026-07-25 05:15:02 -07:00
2026-07-20 01:00:37 -07:00
2026-07-18 13:09:38 -07:00
2026-07-30 00:13:58 -07:00
2026-07-09 21:40:58 -07:00
2026-07-22 22:20:03 -07:00
2026-07-19 19:02:21 -07:00
2026-07-26 11:17:52 -07:00
2026-06-21 22:43:34 -07:00
2026-07-26 11:17:52 -07:00
2026-07-26 18:35:10 -07:00
2026-07-26 11:17:52 -07:00
2026-05-22 00:15:14 -07:00
2026-07-25 06:22:23 -07:00
2026-07-21 23:03:35 -07:00
2026-07-12 12:33:29 -07:00
2026-07-12 12:52:30 -07:00
2026-07-26 17:42:39 -07:00
2026-07-26 22:34:18 -07:00
2026-07-25 22:52:53 -07:00
2026-07-22 17:29:20 -07:00
2026-07-16 08:23:19 -07:00
2026-07-23 00:00:45 -07:00
2026-07-26 18:57:02 -07:00
2026-07-25 05:15:02 -07:00
2026-07-20 00:54:01 -07:00
2026-07-07 08:27:26 -07:00
2026-07-05 11:31:48 -07:00
2026-07-11 18:06:22 -07:00
2026-07-02 11:38:30 -07:00
2026-06-28 09:09:03 -07:00
2026-07-28 23:23:00 -07:00
2026-06-17 14:52:56 -07:00
2026-07-11 18:06:22 -07:00
2026-07-26 17:42:39 -07:00
2026-07-22 22:37:51 -07:00
2026-07-11 23:08:36 -07:00
2026-07-11 18:06:22 -07:00
2026-07-25 06:22:23 -07:00
2026-07-25 06:22:23 -07:00
2026-07-22 00:30:34 -07:00
2026-06-09 08:14:16 -07:00
2026-07-29 00:05:29 -07:00
2026-07-15 10:36:10 -07:00
2026-07-25 06:22:23 -07:00
2026-06-21 21:07:20 -07:00