mirror of
https://github.com/luxfi/consensus.git
synced 2026-09-24 00:26:58 +00:00
The α-of-K finality wedge (node v1.30.65 fix) was a half-finished rename: router.Gossip=11 existed but the node op table (message.ToConsensusOp) never mapped GossipOp to it, so every inbound vote was dropped as "unhandled message op" before reaching the engine. The two op tables could silently diverge with nothing to catch it. Add NumOps as the trailing count of router ops — the one authoritative op-space size. Node-side routing is now asserted (node message/ops_test.go) to be a bijection onto [0, NumOps): a router op added without a node mapping fails the alignment test instead of wedging finality. Additive, append-only; wire values of all existing ops unchanged (NumOps is not a wire op). VerifyWeighted / cert gate untouched.