Normalize current state before eliminating read projections
A read projection is not by itself evidence of a bad schema. When a query filters, sorts, and counts over values folded from append-only history, the system pays that fold cost either on every read or once at write time. For high-cardinality lists and queues, separate authoritative current workflow state, immutable evidence and events, and replaceable query acceleration.
Make current stage, selected evidence heads, requirement satisfaction, context, and terminal decisions explicit typed state. Then list queries can join bounded current-state rows, page, and only afterward hydrate evidence. A minimal projection may still be justified for cross-table substring search or global last-activity ordering; a zero-projection claim often hides materialization in a view, aggregate, or cache. Write-time state must update transactionally with the command, while replay and audit remain in the evidence store.