# Task: Enforce basic approval modes ## Feature `docs/FEATURES/approval-workflow.md` ## Goal Apply workspace approval mode configuration to the existing single-step approval request flow. ## Scope - Prevent approval requests when workspace approval mode is `None`. - Keep the current approval request endpoints as the one-step compatibility flow for `Optional` and `Required`. - Block manual moves to `Approved` or `Scheduled` for `Required` workspaces until an approval request has an approved decision. - Leave `Optional` approval non-blocking. - Apply the saved "schedule posts automatically on approval" option when a final approval decision is recorded. ## Constraints - Do not implement workflow recalculation in this task. - Do not implement multi-level step configuration in this task. - Do not implement locking behavior, reminder jobs, comments, mentions, reopening, or magic links in this task. - Do not replace the existing approval request data model in this task. ## Done When - [x] Approval mode `None` does not create approval requests. - [x] Approval mode `Optional` allows manual approval/scheduling without approval decisions. - [x] Approval mode `Required` blocks manual approval/scheduling until a completed approval decision exists. - [x] Approved decisions move content to `Scheduled` when auto-scheduling is enabled and the content item has a planned publish date. - [x] Backend tests pass. ## Validation Commands ```bash dotnet build backend/Socialize.slnx dotnet test backend/Socialize.slnx ```