anchor.diff:  calc_projection(S, RelativeToServer) ->
       calc_projection(S, RelativeToServer, []).
   
  -calc_projection(#ch_mgr{proj=LastProj, runenv=RunEnv} = S,
  +calc_projection(#ch_mgr{proj=LastProj, consistency_mode=CMode,
  +                        runenv=RunEnv} = S,
                   RelativeToServer, AllHosed) ->
       Dbg = [],
       OldThreshold = proplists:get_value(old_threshold, RunEnv),
       NoPartitionThreshold = proplists:get_value(no_partition_threshold, RunEnv),
  -    calc_projection(OldThreshold, NoPartitionThreshold, LastProj,
  -                    RelativeToServer, AllHosed, Dbg, S).
  -
  -%% OldThreshold: Percent chance of using the old/previous network partition list
  -%% NoPartitionThreshold: If the network partition changes, what percent chance
  -%%                       that there are no partitions at all?
  +    if CMode == ap_mode ->
  +            calc_projection2(LastProj, RelativeToServer, AllHosed, Dbg, S);
  +       CMode == cp_mode ->
  +            #projection_v1{epoch_number=OldEpochNum,
  +                           members_dict=MembersDict,
  +                           all_members=AllMembers,
  +                           witnesses=OldWitness_list,
  +                           upi=OldUPI_list,
  +                           repairing=OldRepairing_list
  +                          } = LastProj,
  +            UPI_length_ok_p =
  +                length(OldUPI_list) >= full_majority_size(AllMembers),
  +            case {OldEpochNum, UPI_length_ok_p} of
  +                {0, _} ->
  +                    calc_projection2(LastProj, RelativeToServer, AllHosed,
  +                                     Dbg, S);
  +                {_, true} ->
  +                    calc_projection2(LastProj, RelativeToServer, AllHosed,
  +                                     Dbg, S);
  +                {_, false} ->
  +                    case make_zerf(LastProj, S) of
  +                        Zerf when is_record(Zerf, projection_v1) ->
  +                            calc_projection2(Zerf, RelativeToServer, AllHosed,
  +                                             Dbg, S);
  +                        Zerf ->
  +                            {{{yo_todo_incomplete_fix_me_cp_mode, OldEpochNum, OldUPI_list, Zerf}}}
  +                    end
  +            end
  +    end.
  +
   %% AllHosed: FLUs that we must treat as if they are down, e.g., we are
   %%           in a flapping situation and wish to ignore FLUs that we
   %%           believe are bad-behaving causes of our flapping.
   
  -calc_projection(_OldThreshold, _NoPartitionThreshold, LastProj,
  -                RelativeToServer, AllHosed, Dbg,
  -                #ch_mgr{name=MyName,
  -                        proj=CurrentProj,
  -                        consistency_mode=CMode,
  -                        runenv=RunEnv1,
  -                        repair_final_status=RepairFS}=S) ->
  +calc_projection2(LastProj, RelativeToServer, AllHosed, Dbg,
  +                 #ch_mgr{name=MyName,
  +                         proj=CurrentProj,
  +                         consistency_mode=CMode,
  +                         runenv=RunEnv1,
  +                         repair_final_status=RepairFS}=S) ->
       #projection_v1{epoch_number=OldEpochNum,
                      members_dict=MembersDict,
                      witnesses=OldWitness_list,
  
positive.code:     %% counter values of 0 & 1.
      %%
      put(react, []),
      if S#ch_mgr.sane_transitions > 3 ->         % TODO review this constant
              %% ?V("Skr,~w,", [S#ch_mgr.name]),
              react_to_env_A10(S#ch_mgr{not_sanes=orddict:new()});
         true ->
              %% ?V("Sk,~w,~w,", [S#ch_mgr.name, S#ch_mgr.sane_transitions]),
              react_to_env_A10(S)
      end.
  
  react_to_env_A10(S) ->
  
negative.code:     P = machi_projection:new(MyName, MembersDict, Down_list, UPI_list, [], []),
      machi_projection:update_checksum(P#projection_v1{witnesses=Witness_list}).
  
  make_all_projection(MyName, All_list, Witness_list, MembersDict) ->
      Down_list = [],
      UPI_list = All_list,
      P = machi_projection:new(MyName, MembersDict, Down_list, UPI_list, [], []),
      machi_projection:update_checksum(P#projection_v1{witnesses=Witness_list}).
  
  get_my_private_proj_boot_info(MgrOpts, DefaultDict, DefaultProj) ->
      get_my_proj_boot_info(MgrOpts, DefaultDict, DefaultProj, private).
  
  