anchor.diff:           to_resolve         = {[], []}                               :: {ToSend::rr_resolve:kvv_list(), ToReq::[?RT:key()]}
            }).
   -type state() :: #rr_recon_state{}.
  +
  +% Optimum for reducing P1E for the two parts: key and version comparison (factor B for the latter)
  +-define(TRIVIAL_B, 0.5).
  +% Optimum for reducing P1E for the two parts: bloom and trivial RC (factor B for the latter)
  +-define(BLOOM_B, 0.5809402158035948). % 2*math:log(2) / (1+2*math:log(2))
   
   % keep in sync with check_node/2
   -define(recon_ok,                       1). % match
  
positive.code:     %       the non-initiator is created!) - use our own parameters
      ?DBG_ASSERT(not intervals:is_empty(I)),
      MaxItems = length(DBItems),
      % FPR is a single comparison's failure probability
      % * assume the other node executes MaxItems number of checks, too
      % * assume the worst case, e.g. the other node has only items not in BF and
      %   we need to account for the false positive probability
      FP = 1 - math:pow(1 - 0.5 * get_p1e(), 1 / erlang:max(MaxItems, 1)),
      BF0 = bloom:new_fpr(MaxItems, FP),
      BF = bloom:add_list(BF0, DBItems),
      #bloom_recon_struct{interval = I, reconPid = comm:this(), bloom = BF};
  
negative.code:            if FullDiffSize > 0 ->
                    % start resolve similar to a trivial recon but using the full diff!
                    % (as if non-initiator in trivial recon)
                    % NOTE: reduce P1E for the two parts here (bloom and trivial RC)
                    {BuildTime, {DBChunk, SigSize, VSize}} =
                        util:tc(fun() ->
                                        compress_kv_list_p1e(
                                          NewKVList, FullDiffSize,
                                          bloom:item_count(BF), ?BLOOM_B * get_p1e())
                                end),
                    
                    send(DestReconPid,
  