M4-012: In ChatGateway.handleMessage(), call routingEngine.resolve() before creating a new agent session when no explicit provider/model is supplied. The routing decision's provider/model are passed to AgentService.createSession(). M4-007: Add sticky per-session /model override via ChatGateway.setModelOverride(). When active, the routing engine is bypassed entirely. CommandExecutorService handleModel() is updated to set/clear the override. /model clear resets to automatic routing. /model with no args shows the current override or usage hint. M4-008: Include routingDecision in the session:info socket event. Add RoutingDecisionInfo to SessionInfoPayload in @mosaic/types. useSocket() tracks the routing decision in state and the BottomBar TUI component displays a "Routed: <model> (<reason>)" line when a routing decision is present. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>