# RUN — PE sign-off close-review (review cách-làm + điều chỉnh trước implement+deploy)

- **folder:** `2026-07-12-S112-pe-signoff-close-review` · session S112 · lead Opus 4.8 MAX
- **command:** `/fable-clone review kỹ lại cách làm và điều chỉnh` (anh-directed) → sau đó fan-out Opus implement + deploy
- **mode:** HMW RUN-TRACE · engine fable-clone review-ensemble (3 reviewer lanes) · model=opus
- **base:** investigation `wf_fd8f2bfe-9f6` + 6 decision anh Kiệt chốt
- **spec:** `spec-pe-signoff-implement-12-07-2026.md`

## taskList
| Stage | Role | Lane | Lens |
|---|---|---|---|
| Review | reviewer | L1 | State-machine (A1 pointer · EDGE-5 lock · no-stuck · 5-state) |
| Review | reviewer | L2 | Security/governance (EDGE-5 kín · câu-2 no-CEO-skip · finalize) |
| Review | reviewer | L3 | Schema/history (câu-5 cơ-chế a/b/c · no-migrate · 1-nút+history) |

## deliverable
Validated plan + điều-chỉnh + file:line + test-list + DEPLOY-risk + GO/NO-GO → em synthesize → fan-out implement → reviewer → deploy.

## synthesis — GO-WITH-ADJUSTMENTS (wf_7df56b89-7bb, 2/3 lane; L3 #53-garble, L1 phủ scope history)

- **A1 (L1+L2 confirm correct+safe):** đổi `:592` k→`minOwn=drafterSlots.Min` · `:595` `Where o<minOwn` · dead-code ownSlot-UPSERT · `:645-680` replace advance → **pointer DỪNG tại minOwn** (xóa advance-Bước-2 + terminal-DaDuyet-on-submit). Không kẹt, không vỡ 5-state. Non-contiguous RESOLVED (anh Kiệt: follow-workflow). ⚠️ phải sửa ĐỒNG THỜI advance+bypassedOrders+k (không thì kẹt/mất chữ ký).
- **EDGE-5 (L2 REFINE spec):** guard đặt ĐỈNH-method `SVC:53` (sau `fromPhase=`, trước `:57`): `if fromPhase∈{DaDuyet,TuChoi} throw ConflictException`. Chặn CẢ 5 đường ra incl **admin-override :290** (spec per-branch BỎ SÓT). KHÔNG đụng `:321` (phục vụ system/cron).
- **🔴 A1 MỞ CEO-skip MỚI (L2 catch):** creator-level + `AllowApproverFinalize` + tick finalize (FE:203) → `ApproveV2Async:867` Phase=DaDuyet **bỏ CEO**. KHÔNG pre-existing cho multi-step-CEO (invest framing imprecise). Vs Decision-2 (chỉ nói duyệt-cấp, không nói finalize-bỏ-CEO) → **likely NGOÀI-Ý → owner oQ1**. Fix hẹp: guard self-FINALIZE `SVC:867+:805` (actor==Drafter→warn/throw), ≠ B2-đã-bác.
- **History (L1; L3 failed):** MVP = log comment-cũ→`PurchaseEvaluationChangelog` TRƯỚC overwrite (0 migration); MUST endpoint/command RIÊNG, **KHÔNG route TransitionAsync** (rủi-ro advance-pointer).
- **Bonus (L1):** A1 đóng latent price-gap (solo-drafter final → ép chọn ApprovedPrice).
- **Test:** rewrite `PeSubmitGuardAndBypassTests` + thêm terminal-lock (incl `Transition_FromDaDuyet_AdminApprove_Throws`).

**3 owner-decision CHẶN fan-out:** oQ1 CEO-skip · oQ2 admin-edit-on-DaDuyet scope · oQ3 confirm mất admin-escape-hatch. Harvest pending @closeout.
