mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-10-25 19:03:14 +01:00
CommandBus queues typed, panel-signed (`cmd`) commands per node in cluster_commands: FIFO by seq, dedupe_key for desired state, expiry, pruned by cron:cluster. New ops: `commands` (long-poll after the node's high-water, held up to 20 s; frozen while quarantined) and `ack` (own commands only; raises cluster_nodes.cmd_seq). For nodes with the COMMANDS flow on (toggled on Cluster Nodes), ClusterRoute sends NodeRpc::request() as a signed node.rpc and waits for its ack, and NodeRpc::broadcast() / SignalDispatcher::kill() queue commands; other nodes and every LB keep the legacy transport. On the node, `console.php cluster:exec` checks a command again against the panel key the agent pinned and runs node.rpc through the legacy /api handlers (InternalApiController::runCommand, NodeRpc::ACTIONS only) or conn.kill_worker. Root actions stay on the signals table for now. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DcNdxHieZuUh3EnMUKt7zf