ouroboros-network
                                
                                 ouroboros-network copied to clipboard
                                
                                    ouroboros-network copied to clipboard
                            
                            
                            
                        `progresses towards established target (from below)` test failure for big ledger peers
      progresses towards established target (from below):     FAIL (509.01s)
          *** Failed! Falsified (after 85 tests and 390 shrinks):
          GovernorMockEnvironment {peerGraph = PeerGraph [(PeerAddr 18,[],GovernorScripts {peerShareScript = Script (Nothing :| []), peerSharingScript = Script (PeerSharingDisabled :| []), connectionScript = Script ((Noop,NoDelay) :| [])}),(PeerAddr 21,[],GovernorScripts {peerShareScript = Script (Nothing :| []), peerSharingScript = Script (PeerSharingDisabled :| []), connectionScript = Script ((ToCooling,NoDelay) :| [(Noop,NoDelay)])})], localRootPeers = fromGroups [(HotValency {getHotValency = 1},WarmValency {getWarmValency = 1},fromList [(PeerAddr 21,DoAdvertisePeer)])], publicRootPeers = fromList [(PeerAddr 18,(DoAdvertisePeer,IsNotLedgerPeer))], bigLedgerPeers = fromList [PeerAddr 18], targets = Script ((PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay) :| [(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 1, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},ShortDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 1, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 1, targetNumberOfEstablishedBigLedgerPeers = 1, targetNumberOfActiveBigLedgerPeers = 0},NoDelay)]), pickKnownPeersForPeerShare = Script (PickFirst :| []), pickColdPeersToPromote = Script (PickFirst :| []), pickWarmPeersToPromote = Script (PickFirst :| []), pickHotPeersToDemote = Script (PickFirst :| []), pickWarmPeersToDemote = Script (PickFirst :| []), pickColdPeersToForget = Script (PickFirst :| []), peerSharing = PeerSharingEnabled}
          
          Signal key: (target, known big ledger peers, established big ledger peers, recent failures, opportunities, ignored too long)
          Last 20 signal values:
          Time 35990s   : (1,fromList [PeerAddr 18],fromList [PeerAddr 18],fromList [],fromList [],fromList [])
          Time 35990s   : (1,fromList [PeerAddr 18],fromList [],fromList [],fromList [PeerAddr 18],fromList [])
          Time 35991s   : (1,fromList [PeerAddr 18],fromList [PeerAddr 18],fromList [],fromList [],fromList [])
          Time 35991s   : (1,fromList [PeerAddr 18],fromList [],fromList [],fromList [PeerAddr 18],fromList [])
          Time 35992s   : (1,fromList [PeerAddr 18],fromList [PeerAddr 18],fromList [],fromList [],fromList [])
          Time 35992s   : (1,fromList [PeerAddr 18],fromList [],fromList [],fromList [PeerAddr 18],fromList [])
          Time 35993s   : (1,fromList [PeerAddr 18],fromList [PeerAddr 18],fromList [],fromList [],fromList [])
          Time 35993s   : (1,fromList [PeerAddr 18],fromList [],fromList [],fromList [PeerAddr 18],fromList [])
          Time 35994s   : (1,fromList [PeerAddr 18],fromList [PeerAddr 18],fromList [],fromList [],fromList [])
          Time 35994s   : (1,fromList [PeerAddr 18],fromList [],fromList [],fromList [PeerAddr 18],fromList [])
          Time 35995s   : (1,fromList [PeerAddr 18],fromList [PeerAddr 18],fromList [],fromList [],fromList [])
          Time 35995s   : (1,fromList [PeerAddr 18],fromList [],fromList [],fromList [PeerAddr 18],fromList [])
          Time 35996s   : (1,fromList [PeerAddr 18],fromList [PeerAddr 18],fromList [],fromList [],fromList [])
          Time 35996s   : (1,fromList [PeerAddr 18],fromList [],fromList [],fromList [PeerAddr 18],fromList [])
          Time 35997s   : (1,fromList [PeerAddr 18],fromList [PeerAddr 18],fromList [],fromList [],fromList [])
          Time 35997s   : (1,fromList [PeerAddr 18],fromList [],fromList [],fromList [PeerAddr 18],fromList [])
          Time 35998s   : (1,fromList [PeerAddr 18],fromList [PeerAddr 18],fromList [],fromList [],fromList [])
          Time 35998s   : (1,fromList [PeerAddr 18],fromList [],fromList [],fromList [PeerAddr 18],fromList [])
          Time 35999s   : (1,fromList [PeerAddr 18],fromList [PeerAddr 18],fromList [],fromList [],fromList [])
          Time 35999s   : (1,fromList [PeerAddr 18],fromList [],fromList [],fromList [PeerAddr 18],fromList [])
          
          Property violated at: Time 36009s
          Invalid signal value:
          (1,fromList [PeerAddr 18],fromList [],fromList [],fromList [PeerAddr 18],fromList [PeerAddr 18])
          
          Use --quickcheck-replay=316097 to reproduce.
          Use -p '/big ledger peers.progresses towards established target (from below)/' to rerun this test only.
          ```
Another similar failure:
        progresses towards established target (from below):     FAIL (782.23s)
          *** Failed! Falsified (after 49 tests and 530 shrinks):
          GovernorMockEnvironment {peerGraph = PeerGraph [(PeerAddr 2,[PeerAddr 13],GovernorScripts {peerShareScript = Script (Nothing :| [Nothing,Just ([PeerAddr 13],PeerShareTimeQuick)]), peerSharingScript = Script (PeerSharingDisabled :| [PeerSharingEnabled]), connectionScript = Script ((ToCold,NoDelay) :| [(Noop,NoDelay)])}),(PeerAddr 9,[],GovernorScripts {peerShareScript = Script (Nothing :| []), peerSharingScript = Script (PeerSharingDisabled :| []), connectionScript = Script ((Noop,NoDelay) :| [])}),(PeerAddr 13,[],GovernorScripts {peerShareScript = Script (Nothing :| []), peerSharingScript = Script (PeerSharingDisabled :| []), connectionScript = Script ((ToCold,NoDelay) :| [(ToCooling,NoDelay),(Noop,NoDelay)])})], localRootPeers = fromGroups [], publicRootPeers = fromList [(PeerAddr 2,(DoAdvertisePeer,IsLedgerPeer)),(PeerAddr 9,(DoAdvertisePeer,IsNotLedgerPeer))], bigLedgerPeers = fromList [PeerAddr 9], targets = Script ((PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay) :| [(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 1, targetNumberOfKnownPeers = 2, targetNumberOfEstablishedPeers = 1, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 1, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},LongDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 2, targetNumberOfEstablishedPeers = 1, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},LongDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 2, targetNumberOfEstablishedPeers = 2, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},LongDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 1, targetNumberOfEstablishedBigLedgerPeers = 1, targetNumberOfActiveBigLedgerPeers = 0},NoDelay)]), pickKnownPeersForPeerShare = Script (PickFirst :| []), pickColdPeersToPromote = Script (PickFirst :| []), pickWarmPeersToPromote = Script (PickFirst :| []), pickHotPeersToDemote = Script (PickFirst :| []), pickWarmPeersToDemote = Script (PickFirst :| []), pickColdPeersToForget = Script (PickFirst :| []), peerSharing = PeerSharingEnabled}
          
          Signal key: (target, known big ledger peers, established big ledger peers, recent failures, opportunities, ignored too long)
          Last 20 signal values:
          Time 35990s   : (1,fromList [PeerAddr 9],fromList [PeerAddr 9],fromList [],fromList [],fromList [])
          Time 35990s   : (1,fromList [PeerAddr 9],fromList [],fromList [],fromList [PeerAddr 9],fromList [])
          Time 35991s   : (1,fromList [PeerAddr 9],fromList [PeerAddr 9],fromList [],fromList [],fromList [])
          Time 35991s   : (1,fromList [PeerAddr 9],fromList [],fromList [],fromList [PeerAddr 9],fromList [])
          Time 35992s   : (1,fromList [PeerAddr 9],fromList [PeerAddr 9],fromList [],fromList [],fromList [])
          Time 35992s   : (1,fromList [PeerAddr 9],fromList [],fromList [],fromList [PeerAddr 9],fromList [])
          Time 35993s   : (1,fromList [PeerAddr 9],fromList [PeerAddr 9],fromList [],fromList [],fromList [])
          Time 35993s   : (1,fromList [PeerAddr 9],fromList [],fromList [],fromList [PeerAddr 9],fromList [])
          Time 35994s   : (1,fromList [PeerAddr 9],fromList [PeerAddr 9],fromList [],fromList [],fromList [])
          Time 35994s   : (1,fromList [PeerAddr 9],fromList [],fromList [],fromList [PeerAddr 9],fromList [])
          Time 35995s   : (1,fromList [PeerAddr 9],fromList [PeerAddr 9],fromList [],fromList [],fromList [])
          Time 35995s   : (1,fromList [PeerAddr 9],fromList [],fromList [],fromList [PeerAddr 9],fromList [])
          Time 35996s   : (1,fromList [PeerAddr 9],fromList [PeerAddr 9],fromList [],fromList [],fromList [])
          Time 35996s   : (1,fromList [PeerAddr 9],fromList [],fromList [],fromList [PeerAddr 9],fromList [])
          Time 35997s   : (1,fromList [PeerAddr 9],fromList [PeerAddr 9],fromList [],fromList [],fromList [])
          Time 35997s   : (1,fromList [PeerAddr 9],fromList [],fromList [],fromList [PeerAddr 9],fromList [])
          Time 35998s   : (1,fromList [PeerAddr 9],fromList [PeerAddr 9],fromList [],fromList [],fromList [])
          Time 35998s   : (1,fromList [PeerAddr 9],fromList [],fromList [],fromList [PeerAddr 9],fromList [])
          Time 35999s   : (1,fromList [PeerAddr 9],fromList [PeerAddr 9],fromList [],fromList [],fromList [])
          Time 35999s   : (1,fromList [PeerAddr 9],fromList [],fromList [],fromList [PeerAddr 9],fromList [])
          
          Property violated at: Time 36009s
          Invalid signal value:
          (1,fromList [PeerAddr 9],fromList [],fromList [],fromList [PeerAddr 9],fromList [PeerAddr 9])
          
          Use --quickcheck-replay=816426 to reproduce.
          Use -p '/big ledger peers.progresses towards established target (from below)/' to rerun this test only.
I bisected that:
7b092d2a580b31d485ab2e11769139b0c77f5859 is the first bad commit
commit 7b092d2a580b31d485ab2e11769139b0c77f5859
Author: Armando Santos <[email protected]>
Date:   Fri Oct 13 15:54:22 2023 +0100
    Move cooling peers cache to PeerSelectionState
    
    Add no assertion failure to testnet test suite
    
    Fix livelock test and peer seleection dodgy trace test
 .../src/Ouroboros/Network/InboundGovernor.hs       |   8 +-
 ouroboros-network/CHANGELOG.md                     |   2 +-
 .../Test/Ouroboros/Network/PeerSelection.hs        |  54 +++++++++--
 .../Test/Ouroboros/Network/Testnet.hs              | 105 +++++++++++++++++++--
 .../Ouroboros/Network/PeerSelection/Governor.hs    |  24 ++---
 .../Network/PeerSelection/Governor/ActivePeers.hs  |  19 +++-
 .../PeerSelection/Governor/EstablishedPeers.hs     |  42 ++++++---
 .../Network/PeerSelection/Governor/KnownPeers.hs   |   2 +
 .../Network/PeerSelection/Governor/Monitor.hs      |  67 +++++++------
 .../Network/PeerSelection/Governor/Types.hs        |  11 +++
 10 files changed, 251 insertions(+), 83 deletions(-)
This counter example fails on this commit:
prop_x = prop_governor_target_established_big_ledger_peers_below
   GovernorMockEnvironment {peerGraph = PeerGraph [(PeerAddr 2,[PeerAddr 13],GovernorScripts {peerShareScript = Script (Nothing :| [Nothing,Just ([PeerAddr 13],PeerShareTimeQuick)]), peerSharingScript = Script (PeerSharingDisabled :| [PeerSharingEnabled]), connectionScript = Script ((ToCold,NoDelay) :| [(Noop,NoDelay)])}),(PeerAddr 9,[],GovernorScripts {peerShareScript = Script (Nothing :| []), peerSharingScript = Script (PeerSharingDisabled :| []), connectionScript = Script ((Noop,NoDelay) :| [])}),(PeerAddr 13,[],GovernorScripts {peerShareScript = Script (Nothing :| []), peerSharingScript = Script (PeerSharingDisabled :| []), connectionScript = Script ((ToCold,NoDelay) :| [(ToCooling,NoDelay),(Noop,NoDelay)])})], localRootPeers = LocalRootPeers.fromGroups [], publicRootPeers = Map.fromList [(PeerAddr 2,(DoAdvertisePeer,IsLedgerPeer)),(PeerAddr 9,(DoAdvertisePeer,IsNotLedgerPeer))], bigLedgerPeers = Set.fromList [PeerAddr 9], targets = Script ((PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay) :| [(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},NoDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 1, targetNumberOfKnownPeers = 2, targetNumberOfEstablishedPeers = 1, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 1, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},LongDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 2, targetNumberOfEstablishedPeers = 1, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},LongDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 2, targetNumberOfEstablishedPeers = 2, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 0, targetNumberOfEstablishedBigLedgerPeers = 0, targetNumberOfActiveBigLedgerPeers = 0},LongDelay),(PeerSelectionTargets {targetNumberOfRootPeers = 0, targetNumberOfKnownPeers = 0, targetNumberOfEstablishedPeers = 0, targetNumberOfActivePeers = 0, targetNumberOfKnownBigLedgerPeers = 1, targetNumberOfEstablishedBigLedgerPeers = 1, targetNumberOfActiveBigLedgerPeers = 0},NoDelay)]), pickKnownPeersForPeerShare = Script (PickFirst :| []), pickColdPeersToPromote = Script (PickFirst :| []), pickWarmPeersToPromote = Script (PickFirst :| []), pickHotPeersToDemote = Script (PickFirst :| []), pickWarmPeersToDemote = Script (PickFirst :| []), pickColdPeersToForget = Script (PickFirst :| []), peerSharing = PeerSharingEnabled}
There's a compilation error in in Testnet, which is can be ignored by using undefined.
It could be that because of the renaming of types back and forth, I didn't really get the first commit that introduced the problem.
I worked with this counter example on this commit 7b092d2a580b31d485ab2e11769139b0c77f5859:
prop_x = prop_governor_target_established_big_ledger_peers_below
   GovernorMockEnvironment {
       peerGraph = PeerGraph
         [
         (PeerAddr 2
          ,[]
          ,GovernorScripts {peerShareScript   = Script (Just ([PeerAddr 13],PeerShareTimeQuick) :| []),
                            peerSharingScript = Script (PeerSharingDisabled :| [PeerSharingEnabled]),
                            connectionScript  = Script ((ToCold,NoDelay)    :| [(Noop,NoDelay)])}
          ),
          (PeerAddr 9
          ,[]
          ,GovernorScripts {peerShareScript = Script (Nothing :| []),
                            peerSharingScript = Script (PeerSharingDisabled :| []),
                            connectionScript = Script ((Noop,NoDelay) :| [])}),
          (PeerAddr 13
          ,[]
          ,GovernorScripts {peerShareScript = Script (Nothing :| []),
                            peerSharingScript = Script (PeerSharingDisabled :| []),
                            connectionScript = Script ((ToCooling,NoDelay) :| [(ToCold,NoDelay), (Noop,NoDelay)])})] ,
       localRootPeers  = LocalRootPeers.fromGroups [],
       publicRootPeers = Map.fromList [(PeerAddr 2,(DoAdvertisePeer,IsLedgerPeer)),
                                       (PeerAddr 9,(DoAdvertisePeer,IsNotLedgerPeer))
                                      ],
       bigLedgerPeers  = Set.fromList [PeerAddr 9],
       targets = Script ((PeerSelectionTargets {targetNumberOfRootPeers = 0,
                                                targetNumberOfKnownPeers = 0,
                                                targetNumberOfEstablishedPeers = 0,
                                                targetNumberOfActivePeers = 0,
                                                targetNumberOfKnownBigLedgerPeers = 0,
                                                targetNumberOfEstablishedBigLedgerPeers = 0,
                                                targetNumberOfActiveBigLedgerPeers = 0},NoDelay) :|
                        [ (PeerSelectionTargets {targetNumberOfRootPeers = 1,
                                                targetNumberOfKnownPeers = 2,
                                                targetNumberOfEstablishedPeers = 1,
                                                targetNumberOfActivePeers = 0,
                                                targetNumberOfKnownBigLedgerPeers = 1,
                                                targetNumberOfEstablishedBigLedgerPeers = 0,
                                                targetNumberOfActiveBigLedgerPeers = 0},LongDelay),
                          (PeerSelectionTargets {targetNumberOfRootPeers = 0,
                                                 targetNumberOfKnownPeers = 2,
                                                 targetNumberOfEstablishedPeers = 1,
                                                 targetNumberOfActivePeers = 0,
                                                 targetNumberOfKnownBigLedgerPeers = 0,
                                                 targetNumberOfEstablishedBigLedgerPeers = 0,
                                                 targetNumberOfActiveBigLedgerPeers = 0},LongDelay),
                          (PeerSelectionTargets {targetNumberOfRootPeers = 0,
                                                 targetNumberOfKnownPeers = 2,
                                                 targetNumberOfEstablishedPeers = 2,
                                                 targetNumberOfActivePeers = 0,
                                                 targetNumberOfKnownBigLedgerPeers = 0,
                                                 targetNumberOfEstablishedBigLedgerPeers = 0,
                                                 targetNumberOfActiveBigLedgerPeers = 0},LongDelay),
                          (PeerSelectionTargets {targetNumberOfRootPeers = 0,
                                                 targetNumberOfKnownPeers = 0,
                                                 targetNumberOfEstablishedPeers = 0,
                                                 targetNumberOfActivePeers = 0,
                                                 targetNumberOfKnownBigLedgerPeers = 1,
                                                 targetNumberOfEstablishedBigLedgerPeers = 1,
                                                 targetNumberOfActiveBigLedgerPeers = 0},NoDelay)
                        ]),
       pickKnownPeersForPeerShare = Script (PickFirst :| []),
       pickColdPeersToPromote     = Script (PickFirst :| []),
       pickWarmPeersToPromote     = Script (PickFirst :| []),
       pickHotPeersToDemote       = Script (PickFirst :| []),
       pickWarmPeersToDemote      = Script (PickFirst :| []),
       pickColdPeersToForget      = Script (PickFirst :| []),
       peerSharing                = PeerSharingEnabled
     }
I pushed this to coot/issue-4741 branch.
I think this strike again but for ledger peers (rather than big ledger peers): https://ci.iog.io/build/2799577/nixlog/1 on #4796.