anchor.diff:      [
        {all_nodes, [sequence], [{group, two_nodes},
                                 {group, three_nodes},
  +                              {group, semantically_invalid_tx},
                                 {group, one_blocked}]},
        {two_nodes, [sequence],
         [start_first_node,
  
positive.code:     true = ensure_new_tx(N2, NewTx).
  
  ensure_tx_pools_empty(Config) ->
      Ns = [N || {_,N} <- ?config(nodes, Config)],
      retry(
        fun() ->
                Results = lists:map(
                            fun(N) ->
                                    {ok, Pool} = get_pool(N),
                                    ct:log("Pool (~p) = ~p", [N, Pool]),
                                    Pool
                            end, Ns),
                lists:all(fun([]) -> true;
                             (_)  -> false
                          end, Results)
        end, {?LINE, ensure_tx_pools_empty, Ns}).
  
  no_system_metrics_logged(Config) ->
      %% a user config filter is applied in init_per_suite, which turns off
  
negative.code:        mine_on_third,
         restart_third,
         no_system_metrics_logged]},
       {semantically_invalid_tx, [sequence],
        [start_first_node,
         start_second_node,
         ensure_tx_pools_empty,
         tx_first_pays_second_more_it_can_afford,
         mine_on_second,
         ensure_tx_pools_one_tx]},
       {one_blocked, [sequence],
        [start_first_node,
         mine_on_first,
         start_blocked_second]}
      ].
  
  suite() ->
  