When op-dispute-mon is configured with multiple rollup RPCs and one is behind, it should use the in-sync node as source of truth, but is detecting it as a disagreement between them.
In this case the two nodes returned:
Node 1: Success, output root matching game
Node 2: err="failed to get L2 block ref with sync status: failed to determine L2BlockRef of height 13676523, could not get payload: not found"
Which resulted in the results array:
t=2025-10-10T10:55:59+1000 lvl=info msg="Got result" node=0 block=13676523 root=0x0000000000000000000000000000000000000000000000000000000000000000 isSafe=false notFound=true err=<nil>
t=2025-10-10T10:55:59+1000 lvl=info msg="Got result" node=1 block=13676523 root=0x7b7d60cdbd5b1a652050684e2b9f383eb014c3a9af3f868422363b21c08a34f2 isSafe=true notFound=false err=<nil>
and it logged the error:
t=2025-10-10T10:55:59+1000 lvl=warn msg="Nodes disagree on output root" l2BlockNum=13676523 firstOutput=0x7b7d60cdbd5b1a652050684e2b9f383eb014c3a9af3f868422363b21c08a34f2 found=1 valid=2
We're treating notFound as a valid result which is correct when the proposal is from a far future block, but incorrect in this case. We probably need to be smarter somehow...
When op-dispute-mon is configured with multiple rollup RPCs and one is behind, it should use the in-sync node as source of truth, but is detecting it as a disagreement between them.
In this case the two nodes returned:
Which resulted in the
resultsarray:and it logged the error:
We're treating
notFoundas a valid result which is correct when the proposal is from a far future block, but incorrect in this case. We probably need to be smarter somehow...