# PR4 — Pending uplift close gate (+ SH-114 closability union) ## Summary Blocks marking a work order **Completed** (and future completion-document generation) when closability gaps remain — **SH-114 field gates ∪ pending uplift** (SH-188). - Unifies `wo-closability.ts` / `getClosabilityGaps` with hierarchy: **fields → uplift pending → completion document / photos**. - Field gates: dispatcher, technician, completed date, real WO# (non-SH), service; then PM/Overdue completion doc; Emergency/Reactive ≥1 photo. - Pending uplift via `hasPendingUplift` or `upliftSummary.pendingCount`. - Completed tooltip uses design copy when the **only** gap is pending uplift. - Maps optional `completedDate` on board rows for the Completed Date gate. ## Jira - [SH-188](https://luby-us.atlassian.net/browse/SH-188) — pending uplift close gate - Related: [SH-114](https://luby-us.atlassian.net/browse/SH-114) — closability field matrix (pulled into this branch so sister merges do not wipe gates) ## Comp Doc Generate `CompDocDialog` is **not** mounted on `dev` yet. This PR exports `canGenerateCompDoc(row)` so the completion-doc slice can block generate/open with the same reason string. No UI wiring in this PR. ## Out of scope - Full uplift CRUD (PR3) - Advanced filter facets for uplift - Scheduled-requires-date gate (design P1) - COL_HELP tooltips (P1) ## Test plan - [ ] Row with all fields ok + `hasPendingUplift: true` — Completed disabled; design tooltip about pending uplift. - [ ] Row missing dispatcher / completed date — Completed disabled; `Missing: …` tooltip. - [ ] Row fully closable — Completed selectable. - [ ] `canGenerateCompDoc` blocked when gaps exist. - [ ] Board API `completedDate` / `upliftSummary.pendingCount` map through to the gate. ## Base Branch `feature/wo-uplift-pending-close-gate` from local `dev`. Merge **before** or instead of stacking raw SH-114 alone with an uplift-only closability overwrite.