@@ -223,28 +223,16 @@ def start(self, binding_id: str, operation_id: str, brief: dict,
223223 raise ValueError ("delegation cannot depend on itself" )
224224 path = self .path (operation_id )
225225 with exclusive_file_lock (path .with_suffix (".dispatch" )):
226- if path .exists ():
227- source_id = "peer:" + _hash ([self .goal_id , self .agent_id , operation_id ])
228- request_id = _hash ([source_id , {"goal_id" : self .goal_id , "agent_id" : binding ["agent_id" ]}])
229- identity = {"binding" : binding , "request_id" : request_id , "operation_id" : operation_id }
230- entry = _entry (self .root , self .goal_id , binding ["agent_id" ], request_id )
231- expected_entry = {
232- "request_id" : request_id ,
233- "goal_id" : self .goal_id ,
234- "agent_id" : binding ["agent_id" ],
235- "source_id" : source_id ,
236- "source_agent_id" : self .agent_id ,
237- "parent_request_id" : parent_request_id ,
238- "brief" : brief ,
239- }
240- if (_read (path ).get ("identity" ) != identity
241- or any (entry .get (key ) != value for key , value in expected_entry .items ())):
226+ exists = path .exists ()
227+ if not exists :
228+ delegation_results .require_dependencies (self , binding , brief )
229+ delivered = request (self .root , self .registry , self .goal_id , self .agent_id ,
230+ binding ["agent_id" ], operation_id , brief , parent_request_id )
231+ identity = {"binding" : binding , "request_id" : delivered ["request_id" ], "operation_id" : operation_id }
232+ if exists :
233+ if _read (path ).get ("identity" ) != identity :
242234 raise ValueError ("delegation operation identity conflict" )
243235 else :
244- delegation_results .require_dependencies (self , binding , brief )
245- delivered = request (self .root , self .registry , self .goal_id , self .agent_id ,
246- binding ["agent_id" ], operation_id , brief , parent_request_id )
247- identity = {"binding" : binding , "request_id" : delivered ["request_id" ], "operation_id" : operation_id }
248236 _write (path , {"identity" : identity , "status" : "prepared" , "created_at" : time .time ()})
249237 self ._spawn (operation_id )
250238 return self .read (operation_id )
0 commit comments