Sixteenth resolver from the coverage map on #3115.
`completedReviewColumns` reads the **dependents** resting in review when
a blocker completes. No case in this file put a dependent in a renamed
review lane, so blinding it left all 13 tests green.
## What the literal costs
A dependent sitting in review is never read, so its `blockedBy` is never
cleared when the blocker finishes. **It stays blocked by work that is
already done** — the most visible form of this class, because the board
simply stops moving.
## Measured
14 pass; blinding `completedReviewColumns` fails exactly this case.
## Note for anyone continuing the map
`completedHoldColumns` in this same sweep measured as **already
covered**, so only the review bucket was owed. Three buckets, three
resolvers, covered independently — the same per-resolver granularity
that found the missing halves in #3138 and #3186, where my own earlier
tests pinned one resolver of a pair and I had recorded the sweep as
done.
**16 of 26 pinned** across 15 merged PRs.
## Verification
`self-healing-completion-fanout` **14 passed** · `pnpm test:gate` full
pass · lint — green.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Bug Fixes**
* Fixed task completion reconciliation for workflows with renamed lanes.
* Dependent tasks in review lanes are now correctly unblocked when their
blocker moves to a custom completion lane.
* **Tests**
* Added regression coverage for custom workflow lane configurations.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->