# Task 016: Final Approval Gate Development description: Implement the final review gate that prevents publishing until the editor has approved the exact draft version, assets, evidence state, metadata, and publishing settings. ## Implementation Details - Backend endpoints: - `POST /api/articles/{article_id}/final-approval` - `POST /api/articles/{article_id}/final-revision-request` - Final approval checklist: - Plan followed. - Evidence reviewed. - No high-risk unsupported claims remain. - SEO metadata approved. - Images/assets approved. - Tables and diagrams approved. - Internal links approved. - Frontmatter fields selected. - Content path selected. - Author selected. - Publishing mode selected. - Approval records: - Actor. - Timestamp. - Exact draft version. - Selected publishing settings. - Revision request returns workflow to `FINAL_REVISION_REQUIRED`. ## Public Interface - Editor sees final review checklist. - Editor cannot approve while hard blockers remain. - Approved article moves to `PUBLISH_DRY_RUN_REQUIRED`. ## Acceptance Criteria - [ ] TDD pre-requirement: before implementation, write one failing behavior test proving high-risk unsupported claims block final approval; proceed one checklist behavior at a time and record evidence in `Result`. - [ ] Final approval requires an exact draft version. - [ ] High-risk unsupported claims block approval. - [ ] Missing required publishing settings block approval. - [ ] Unapproved required assets block approval. - [ ] Approval writes a workflow event with actor, timestamp, draft version, and publishing settings. - [ ] Revision request writes event and moves article to `FINAL_REVISION_REQUIRED`. - [ ] UI shows blockers and completed checklist items. ## Verification - Run final approval API tests. - Run frontend final review tests. - Run smoke flow showing blocked and successful approval paths. ## Result - Status: Pending execution. - TDD plan: To be filled during execution. - Red evidence: To be filled during execution. - Green evidence: To be filled during execution. - Refactor notes: To be filled during execution. - Verification output: To be filled during execution.