anchor.diff:          {error, Why} -> {error, Why}
       end.
   
  --spec list(#context{}, tuple()) -> {ok, [binary()]} | {error, _}.
  +-spec list(#context{}, object_rec()) -> {ok, [binary()]} | {error, _}.
   list(#context{reqid = ReqId} = _Ctx, StubRec) ->
       stats_hero:ctime(ReqId, {chef_sql, fetch_object_names},
                         fun() ->
                                 chef_sql:fetch_object_names(StubRec)
                         end).
   
  --spec update(tuple(), #context{}, object_id()) ->
  +-spec update(object_rec(), #context{}, object_id()) ->
                ok | not_found | {conflict, term()} | {error, term()}.
   %% TODO: get rid of cookbook_version special case
   update(#chef_cookbook_version{org_id =OrgId} = Record, #context{reqid = ReqId} = DbContext, ActorId) ->
  
positive.code:               %% delete_fun/0 %% currently not needed anywhere else
                update_fun/0
               ]).
  
  %% -type chef_object_name() :: 'chef_node' |
  %%                             'chef_role'.
  
negative.code:     case stats_hero:ctime(ReqId, {chef_sql, Fun},
                            fun() -> chef_sql:Fun(OrgId, ObjectIdentifier) end) of
          {ok, not_found} -> not_found;
          {ok, Object} -> Object;
          {error, _Why} = Error -> Error
      end;
  fetch_object(#context{}=Ctx, ObjectType, OrgName, ObjectIdentifier) ->
  