Block a user
fix(merge-queue): live pre-merge status re-fetch — close within-window snapshot-staleness fail-open (#3210 tail)
fix(merge-queue): fail-closed on empty PUSH_REQUIRED_CONTEXTS + untrustworthy snapshot ts (#3210 tail)
fix(merge-queue): close zero-approval-merge + out-of-roster-REQUEST_CHANGES fail-opens (#3210)
fix(handlers): align MCP-plugin delivery contract with runtime#172 PORT-based delivery
fix(workspace-server): auto-reset orphaned model on runtime change (kill the dual-422 trap)
fix(workspace-server): restart re-provisions with the switched runtime, not the stale config.yaml
fix(canvas): reset model on Runtime change so (runtime, model) pair never 422s + silently rolls back
test(handlers+canvas): coverage for untested helpers and store actions
fix(tests): align test_sop_checklist.py with parse_directives interface
fix(canvas/test): wrap render() in act() for SettingsPanel open-state tests