Files
fusion/packages/dashboard/app/utils
gsxdsm 7763063cbd docs(task-revert): the recorded conversion "blocker" is a correctness boundary, not a cost (#2868)
`findOpenUndoTaskForSource` carries a note saying its conversion is
blocked on **hoisting the flags derivation** in `TaskDetailModal` —
framed as a hook-ordering cost in a 5000-line component, i.e. something
somebody could pay. I went to pay it, and the framing is wrong in a way
that would have produced a **worse defect than the literal**.

## Why hoisting would not unblock it

This function scans the `tasks` list for **other** tasks pointing back
at the source, so the column it classifies belongs to a **neighbour**.
`detailColumnFlags` describes the **modal's own** task — its own FNXC
note says exactly that, and it is guarded by `detailFlagsAreForThisTask`
*precisely because* using it for anything else is wrong.

So supplying it here would answer *"is this neighbour finished?"* with
the modal task's traits. On a project where two workflows reuse a column
id, an open undo task gets classified by a workflow it does not belong
to, and the "Undo task" affordance vanishes or persists wrongly.

**Wrong flags are worse than a stale vocabulary.** The literal is at
least uniformly legacy; this would be wrong *on data*. It is the
flags-for-the-wrong-row shape — the same question I have been applying
all program: *do these flags describe the column of the row this guard
is about?*

## What a correct conversion needs

Per-**neighbour** flags: the caller would have to resolve each
candidate's own workflow, which the modal does not have and should not
fetch mid-render. Until a per-task lane map exists at that call site,
**the literal is the right answer**.

## Why this is worth a PR rather than silence

The previous note is an invitation. Somebody following it would land a
plausible-looking conversion, drop the census count by one, and
introduce a data-dependent bug that only appears on multi-workflow
projects — the exact "conversion that scores as a win" pattern
documented in `docs/solutions/workflow-learnings/`. The census entry
stays and is now labelled as **accurate debt** rather than a missed
conversion.

No behaviour change; comment only. Dashboard app `tsc` clean, `pnpm
lint` clean, `app/utils` suites 59 files / 689 tests green.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-30 16:17:37 -07:00
..