{
  "campaign_id": "a2a-hermes-v0.6.0-r14",
  "agent_group": "hermes",
  "ai_memory_git_ref": "v0.6.0",
  "completed_at": "2026-04-21T02:56:30Z",
  "overall_pass": false,
  "scenarios": [
    {
      "scenario": "10",
      "pass": false,
      "agent_group": "hermes",
      "m1_id": "3ac9d19f-c921-484f-bfc7-a6b203594820",
      "uuid": "e8078d3b-9f1c-4c8d-9506-c0231ba82a62",
      "delete_http_code": "200",
      "pre_delete_visible_peers": 3,
      "post_delete_still_visible_peers": 3,
      "reasons": [
        "3/3 peers still see M1 after delete — tombstone not propagated"
      ]
    },
    {
      "scenario": "11",
      "pass": false,
      "agent_group": "hermes",
      "m1_id": "27bac32c-9a46-4770-b68d-15f19bad393d",
      "m2_id": "a4c1fa9c-fd0d-4345-b8ac-d892924be426",
      "relation": "related_to",
      "link_http_code": "404",
      "charlie_sees_link": 0,
      "reasons": [
        "link POST returned HTTP 404 — endpoint may not exist in this ai-memory version",
        "charlie could not see M1->M2 link after settle"
      ]
    },
    {
      "scenario": "13",
      "pass": false,
      "agent_group": "hermes",
      "m1_id": "2b58b0f7-0d7f-425e-9685-52e2e83957a0",
      "submitted": {
        "v0": "8c2af31f-427f-4b8b-92e3-671ec11a4c9c",
        "vA_alice": "11835b27-bb8c-4614-841f-e927accc847f",
        "vB_bob": "8c67014c-b589-47f7-90f5-362d5af8b178"
      },
      "peer_view": {
        "node_1": "(none)",
        "node_2": "(none)",
        "node_3": "(none)",
        "node_4": "(none)"
      },
      "reasons": [
        "winning content is not one of the submitted PATCH values: got \"(none)\""
      ]
    },
    {
      "scenario": "14",
      "pass": false,
      "agent_group": "hermes",
      "partition_target": "node-3",
      "expected_post_recovery": 20,
      "node3_saw": 2,
      "reasons": [
        "node-3 only saw 2/20 writes after partition recovery — catchup failed or W=2 wasn't satisfied during outage"
      ]
    },
    {
      "scenario": "15",
      "pass": true,
      "agent_group": "hermes",
      "uuid": "52f404cc-35d5-4148-94eb-7f9f9dd48cb3",
      "writer_sees_own_write": 1,
      "reasons": []
    },
    {
      "scenario": "16",
      "pass": false,
      "agent_group": "hermes",
      "m1_id": "bf433251-c3c3-4efc-8576-62dc38d0a99c",
      "promote_http_code": "200",
      "bob_sees_tier": "(missing)",
      "reasons": [
        "bob sees tier=\"(missing)\", expected \"long\""
      ]
    },
    {
      "scenario": "17",
      "pass": false,
      "agent_group": "hermes",
      "expected_count": 15,
      "per_peer": {
        "node_1": 5,
        "node_2": 5,
        "node_3": 5,
        "node_4": 5
      },
      "reasons": [
        "node-1 count=5 != expected 15",
        "node-2 count=5 != expected 15",
        "node-3 count=5 != expected 15",
        "node-4 count=5 != expected 15"
      ]
    },
    {
      "scenario": "18",
      "pass": false,
      "agent_group": "hermes",
      "query": "morning outdoor exercise routine",
      "writers": [
        {
          "agent": "ai:alice",
          "marker": "alice-sunrise-7d4b72be-017f-42d4-aff9-7f58975394d0",
          "seen_by_charlie": 0
        },
        {
          "agent": "ai:bob",
          "marker": "bob-daybreak-c918391a-8539-45ad-b5ca-0fa13d972838",
          "seen_by_charlie": 0
        }
      ],
      "reasons": [
        "semantic query did not surface alice's memory",
        "semantic query did not surface bob's memory"
      ]
    },
    {
      "scenario": "1b",
      "pass": true,
      "agent_group": "hermes",
      "path": "serve-http",
      "expected_per_reader": 20,
      "per_agent": {
        "ai:alice": {
          "recall": 20
        },
        "ai:bob": {
          "recall": 20
        },
        "ai:charlie": {
          "recall": 20
        }
      },
      "reasons": []
    },
    {
      "scenario": "2",
      "pass": true,
      "agent_group": "hermes",
      "path": "serve-http",
      "per_agent": {
        "ai:bob": {
          "sees_handoff": 1
        },
        "ai:alice": {
          "sees_ack": 1
        }
      },
      "handoff_uuid": "0336ff7c-dd35-4e4c-b69b-3671def65e6a",
      "ack_uuid": "eca0b1a5-4233-49f6-8fae-6c7792d8deb4",
      "reasons": []
    },
    {
      "scenario": "4",
      "pass": true,
      "agent_group": "hermes",
      "expected_per_agent": 30,
      "per_agent": {
        "ai:alice": {
          "count": 30,
          "wrong_agent_id": 0
        },
        "ai:bob": {
          "count": 30,
          "wrong_agent_id": 0
        },
        "ai:charlie": {
          "count": 30,
          "wrong_agent_id": 0
        }
      },
      "reasons": []
    },
    {
      "scenario": "5",
      "pass": false,
      "agent_group": "hermes",
      "consolidated_id": "",
      "consolidate_http_code": "405",
      "consolidated_from_agents": "",
      "reasons": [
        "consolidate endpoint returned HTTP 405 — may not exist in this ai-memory version",
        "consolidate did not return a new memory id"
      ]
    },
    {
      "scenario": "6",
      "pass": false,
      "agent_group": "hermes",
      "topic": "sky-color-0e2fdf4c",
      "alice_id": "2be31495-67c1-4d76-b691-a3ce44210c94",
      "bob_id": "2be31495-67c1-4d76-b691-a3ce44210c94",
      "detect_http_code": "404",
      "charlie_sees_both_memories": 0,
      "charlie_sees_contradicts_link": 0,
      "reasons": [
        "detect_contradiction endpoint returned HTTP 404 — may not exist in this ai-memory version",
        "response did not include both memories",
        "response did not include a contradicts relation"
      ]
    },
    {
      "scenario": "9",
      "pass": false,
      "agent_group": "hermes",
      "m1_id": "a529116a-8f3d-4a64-9117-6a80dbf6ff7a",
      "v1_uuid": "b444df51-0306-460d-ab52-1b038ec03618",
      "v2_uuid": "601ba75b-2873-4b81-ac9d-aab507640133",
      "patch_http_code": "405",
      "charlie_view": {
        "content": "",
        "agent_id": ""
      },
      "reasons": [
        "charlie expected content=601ba75b-2873-4b81-ac9d-aab507640133 got \"\" (update didn't propagate or PATCH unsupported)",
        "metadata.agent_id changed from ai:alice to \"\" — Task 1.2 immutability breach"
      ]
    }
  ],
  "reasons": [
    "3/3 peers still see M1 after delete — tombstone not propagated",
    "bob sees tier=\"(missing)\", expected \"long\"",
    "charlie could not see M1->M2 link after settle",
    "charlie expected content=601ba75b-2873-4b81-ac9d-aab507640133 got \"\" (update didn't propagate or PATCH unsupported)",
    "consolidate did not return a new memory id",
    "consolidate endpoint returned HTTP 405 — may not exist in this ai-memory version",
    "detect_contradiction endpoint returned HTTP 404 — may not exist in this ai-memory version",
    "link POST returned HTTP 404 — endpoint may not exist in this ai-memory version",
    "metadata.agent_id changed from ai:alice to \"\" — Task 1.2 immutability breach",
    "node-1 count=5 != expected 15",
    "node-2 count=5 != expected 15",
    "node-3 count=5 != expected 15",
    "node-3 only saw 2/20 writes after partition recovery — catchup failed or W=2 wasn't satisfied during outage",
    "node-4 count=5 != expected 15",
    "response did not include a contradicts relation",
    "response did not include both memories",
    "semantic query did not surface alice's memory",
    "semantic query did not surface bob's memory",
    "winning content is not one of the submitted PATCH values: got \"(none)\""
  ],
  "meta": {
    "campaign_id": "a2a-hermes-v0.6.0-r14",
    "agent_group": "hermes",
    "ai_memory_git_ref": "v0.6.0",
    "infra": {
      "provider": "digitalocean",
      "region": "nyc3",
      "droplet_size": "s-2vcpu-4gb",
      "topology": "4-node federation mesh (W=2/N=4)",
      "nodes": [
        {
          "index": 1,
          "role": "agent",
          "agent_id": "ai:alice",
          "public_ip": "157.245.219.205",
          "private_ip": "10.252.0.5"
        },
        {
          "index": 2,
          "role": "agent",
          "agent_id": "ai:bob",
          "public_ip": "167.172.234.175",
          "private_ip": "10.252.0.2"
        },
        {
          "index": 3,
          "role": "agent",
          "agent_id": "ai:charlie",
          "public_ip": "68.183.145.110",
          "private_ip": "10.252.0.4"
        },
        {
          "index": 4,
          "role": "memory-only",
          "agent_id": null,
          "public_ip": "167.71.181.168",
          "private_ip": "10.252.0.3"
        }
      ]
    },
    "scenarios_requested": [
      "1",
      "1b",
      "2",
      "4",
      "5",
      "6",
      "9",
      "10",
      "11",
      "12",
      "13",
      "14",
      "15",
      "16",
      "17",
      "18"
    ],
    "timing": {
      "started_at": "2026-04-21T02:46:37Z",
      "ended_at": "2026-04-21T02:56:30Z"
    },
    "ci": {
      "actor": "alphaonedev",
      "workflow_url": "https://github.com/alphaonedev/ai-memory-ai2ai-gate/actions/runs/24701083213",
      "harness_sha": "922fd981e627d1a70287eebc6556afd62944bacf",
      "runner_os": "Linux"
    }
  },
  "skipped_reports": [
    "scenario-1.json:unparseable",
    "scenario-12.json:unparseable"
  ]
}
