anchor.diff:    web_server = callPackage ./web/server {};
     workbench = buffet.fractals.workbench.nodes.workbench;
     workbench_test = buffet.fractals.workbench.nodes.test;
  -  # STABLE SECTION
  -  # -   do not change names of ports, agents nor subgraphs,
  -  # -   you may add names, but never change, nor remove names
  +
  +  # DRAFT NODES
  +  # -   draft nodes change a lot in tandom with other nodes in their subgraph
  +  # -   there will be change in these nodes
  +  # -   few people are using these nodes so expect breakage
  +
     core_capnp_encode = callPackage ./core/capnp/encode {};
     core_find_node = callPackage ./core/find/node {};
     core_find_edge = callPackage ./core/find/edge {};
  
positive.code:   msg_delay = callPackage ./msg/delay {};
    msg_dispatcher = callPackage ./msg/dispatcher {};
    msg_replace = callPackage ./msg/replace {};
    # DEPRECATED SECTION
    # -   do not change names of ports, agents nor subgraphs.
    # -   keep implemenation functioning
    # -   print a warning message and tell users to use replacement node
  
    # LEGACY SECTION
    # -   do not change names of ports, agents nor subgraphs.
    # -   assert and remove implementation
  };
  
negative.code: let
  callPackage = buffet.pkgs.lib.callPackageWith ( buffet.pkgs // buffet.support // buffet.support.crates-support // buffet );
  # Insert in alphabetical order in relevant section to reduce conflicts
  # This system grows by the slow accretion of nodes.
  # Once a node is declared stable, it is _/forbidden/_ to:
  # * change the node name
  # * change any port name
  # * delete a node, or port
  # * change or delete items in the schema on any port, though additions of schema items are acceptable
  # * backtrack towards the experimental category
  # Once a node becomes stable, all associated schema also become stable.
  # Nodes should function reliably decades from now.
  # Changing names after experimental upgrade is a breaking change, we do not do that here.
  self = rec {
    # RAW NODES
    # -   are incomplete and immature, they may wink into and out of existance
    # -   use at own risk, anything in this section can change at any time.
    # -   You have been warned.
    app_counter_add = callPackage ./app/counter/add {};
    app_counter_card = callPackage ./app/counter/card {};
  