alice writes M1 on node-1 M1 id=886d802c-99cc-46b3-87eb-787999423b55 settle 5s for pre-archive replication alice archives M1 via DELETE /api/v1/memories/{id} (soft-delete → archive) archive returned HTTP 405 settle 5s for archive propagation bob queries /api/v1/archive on node-2 bob sees M1 in archive: False charlie restores M1 via /api/v1/archive/{id}/restore on node-3 Traceback (most recent call last): File "/home/runner/work/ai-memory-ai2ai-gate/ai-memory-ai2ai-gate/scripts/scenarios/29_archive_lifecycle.py", line 106, in main() File "/home/runner/work/ai-memory-ai2ai-gate/ai-memory-ai2ai-gate/scripts/scenarios/29_archive_lifecycle.py", line 58, in main _, restore_doc = h.http_on( ^^^^^^^^^^ File "/home/runner/work/ai-memory-ai2ai-gate/ai-memory-ai2ai-gate/scripts/a2a_harness.py", line 136, in http_on result = self.ssh_exec(node_ip, remote_cmd, timeout=timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/runner/work/ai-memory-ai2ai-gate/ai-memory-ai2ai-gate/scripts/a2a_harness.py", line 78, in ssh_exec return subprocess.run( ^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/subprocess.py", line 550, in run stdout, stderr = process.communicate(input, timeout=timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/subprocess.py", line 1209, in communicate stdout, stderr = self._communicate(input, endtime, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/subprocess.py", line 2116, in _communicate self._check_timeout(endtime, orig_timeout, stdout, stderr) File "/usr/lib/python3.12/subprocess.py", line 1253, in _check_timeout raise TimeoutExpired( subprocess.TimeoutExpired: Command '['ssh', '-o', 'StrictHostKeyChecking=no', '-o', 'ConnectTimeout=10', '-o', 'ServerAliveInterval=5', 'root@167.99.59.68', "curl -sS -X POST http://127.0.0.1:9077/api/v1/archive/886d802c-99cc-46b3-87eb-787999423b55/restore -H 'Content-Type: application/json' -H 'X-Agent-Id: ai:charlie' -w '\n__HTTP__%{http_code}'"]' timed out after 30 seconds