anchor.diff:           old_chain_has_no_contracts_in_top_block_state/1,
            new_node_can_mine_on_old_chain_using_old_protocol/1,
            new_node_can_mine_on_old_chain_using_new_protocol/1,
  +         new_node_can_mine_old_spend_tx_without_payload_using_new_protocol/1,
            new_node_can_mine_spend_tx_on_old_chain_using_old_protocol/1,
            new_node_can_mine_spend_tx_on_old_chain_using_new_protocol/1
           ]).
  
positive.code:     [{_, _} = proplists:lookup(db_backup_top_height, SavedCfg),
       {_, _} = proplists:lookup(db_backup_top_hash, SavedCfg)
       | Config];
  init_per_group(upgrade_flow_smoke_test, Config) ->
      {_, TopHeight} = proplists:lookup(db_backup_top_height, Config),
      NewConfig = aest_nodes:ct_setup(Config),
      Ps = protocols(?HEIGHT_OF_NEW_PROTOCOL(TopHeight)),
  
negative.code:      {hard_fork_all_with_tx,
        [sequence],
        [
         {group, old_spend_tx_in_new_protocol_smoke_test},
         %% {group, hard_fork_old_chain_with_tx}, Not applicable as is in 0.12.0 because new node's user API creates only new spend tx.
         {group, hard_fork_new_chain_with_tx}
        ]},
       {old_spend_tx_in_new_protocol_smoke_test,
        [sequence],
        [
         new_node_can_receive_short_old_chain_from_old_node,
         new_node_can_mine_old_spend_tx_without_payload_using_new_protocol
        ]},
       {hard_fork_old_chain_with_tx,
        [sequence],
  