anchor.diff:      true = sets:is_disjoint(DownS2, RepairingS2),
       true = sets:is_disjoint(UPIS2, RepairingS2),
   
  +    %% We won't check the checksum of P1, but we will of P2.
  +    P2 = machi_projection:update_checksum(P2),
  +
       %% Hooray, all basic properties of the projection's elements are
       %% not obviously bad.  Now let's check if the UPI+Repairing->UPI
       %% transition is good.
  
positive.code:                      {newprop_epoch,P_newprop#projection_v1.epoch_number},
                       {newprop_author,P_newprop#projection_v1.author_server}
                      ]}),
              put(b10_hack, false),
  
              react_to_env_C100(P_newprop, P_latest, S);
  
  
negative.code:     ?RETURN2(simple_chain_state_transition_is_sane(undefined, UPI1, Repair1,
                                                     undefined, UPI2)).
  
  %% @doc Simple check if a projection transition is sane &amp; safe: we assume
  %% that the caller has checked basic projection data structure contents.
  %%
  %% NOTE: The return value convention is `true' for sane/safe and
  %% `term() /= true' for any unsafe/insane value.
  
  simple_chain_state_transition_is_sane(_Author1, UPI1, Repair1, Author2, UPI2) ->
      {KeepsDels, Orders} = mk(UPI1, Repair1, UPI2),
      NumKeeps = length([x || keep <- KeepsDels]),
      NumOrders = length(Orders),
      NoErrorInOrders = (false == lists:member(error, Orders)),
      OrdersOK = (Orders == lists:sort(Orders)),
      UPI2LengthOK = (length(UPI2) == NumKeeps + NumOrders),
      Answer1 = NoErrorInOrders andalso OrdersOK andalso UPI2LengthOK,
      catch ?REACT({simple, ?LINE,
                    [{sane, answer1,Answer1,
                      author1,_Author1, upi1,UPI1, repair1,Repair1,
                      author2,Author2, upi2,UPI2,
                      keepsdels,KeepsDels, orders,Orders, numKeeps,NumKeeps,
                      numOrders,NumOrders, answer1,Answer1}]}),
      if not Answer1 ->
              ?RETURN2(Answer1);
         true ->
  