anchor.diff:  -export([running/2, running/3, joining/2, joining/3, leaving/2, leaving/3]).
   
   %% API
  --export([add_node/1, join/2, leave/0, leave/1, shun/1, log_joined/0]).
  +-export([join/2, leave/0, leave/1, shun/1, log_joined/0]).
   
   -export([alert_key/1]).
   
  
positive.code: %%
  
  %% Called on a node in the cluster to add us to its nodes_wanted
  add_node(Node) ->
      Fun = fun(X) ->
                    lists:usort([Node | X])
            end,
      ns_config:update_key(nodes_wanted, Fun),
      ns_config:set({node, Node, membership}, inactiveAdded),
      ns_mnesia:add_node(Node),
      error_logger:info_msg("~p:add_node: successfully added ~p to cluster.~n",
                            [?MODULE, Node]),
      ok.
  
  
  join(RemoteNode, NewCookie) ->
      ns_log:log(?MODULE, ?NODE_JOIN_REQUEST, "Node join request on ~s to ~s",
                 [node(), RemoteNode]),
  
negative.code: running({join, RemoteNode, NewCookie}, State) ->
      ns_log:log(?MODULE, 0002, "Node ~p is joining cluster via node ~p.",
                 [node(), RemoteNode]),
      mnesia:stop(),
      mnesia:delete_schema([node()]),
      BlackSpot = make_ref(),
      MyNode = node(),
      ns_config:update(fun ({directory,_} = X) -> X;
  