V13-FE-011: finalize search list layout slice #32
Reference in New Issue
Block a user
Delete Branch "docs/wbs-tracker-current-state"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What changed
Validation
Notes
DEBT-026 (high impact): ProposeForReviewHandler + POST /approvals/{id}/propose wires ApprovalWorkflowPolicy.CanProposeForReview, which previously had no Handler/Endpoint calling it. Before this, a proposal created via POST /approvals could never reach Approved/Active through the running application - the maker-checker gate was not completable end-to-end via HTTP. DEBT-025 (medium impact): GetApprovalByIdEndpoint (GET /approvals/{id}) + ApprovalWorkflowSql.GetEvidenceForProposalAsync make evidence attached during approval (PBO/DSR/OOS artifact links) readable via HTTP instead of only by querying model_operations.approval_evidence directly. Both discovered while resolving DEBT-017 earlier the same session. 4 new tests added. dotnet build -c Release clean. Not verified against a live database (no SSH tunnel open in this environment) - see TECH_DEBT_REGISTER.md and WBS_PROGRESS_TRACKER.csv AEG-VS-26-01 for the honest verification status; do not mark COMPLETED until a real Postgres run passes. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>Systematic sweep of every *Handler registered in Program.cs (same method that found DEBT-026/027) found ActivateModelHandler was the last orphan in Features/ApprovalWorkflow/: no POST /approvals/{id}/activate endpoint existed, so an Approved proposal could never reach Active - the entire point of this maker-checker slice. While wiring it up, found the handler's original call would have overwritten the checker's approved_by/approval_notes with the activating SRE's identity (it passed userEmail through UpdateProposalStatusAsync's approvedBy parameter), and never set activated_by/activated_at at all despite those columns existing since migration 0036. Added a dedicated ApprovalWorkflowSql.ActivateProposalAsync that only touches activation-specific columns, and a regression test asserting the checker's approval record survives activation unchanged. Also documents DEBT-029 (discovered, not fixed - genuine cross-cutting scope): LogAuditEventCommandHandler is never called by any other slice, so VS-27's audit trail is empty in production regardless of activity even though its own tests pass. Downgraded AEG-VS-27-01 from COMPLETED to BLOCKED in the tracker to reflect that honestly. dotnet build KArtSell.sln -c Release: clean. Not run against a live database this session. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>