{
  "campaign_id": "a2a-hermes-v3r20-mtls-release-v0.6.2",
  "agent_group": "hermes",
  "ai_memory_git_ref": "release/v0.6.2",
  "completed_at": "2026-04-23T01:03:03Z",
  "overall_pass": false,
  "scenarios": [
    {
      "agent_group": "hermes",
      "expected_per_reader": 20,
      "pass": false,
      "per_agent": {
        "ai:alice": {
          "recall": 0
        },
        "ai:bob": {
          "recall": 0
        },
        "ai:charlie": {
          "recall": 0
        }
      },
      "per_namespace_node4": {
        "scenario1-ai:alice": {
          "count": 0,
          "wrong_agent_id": 0
        },
        "scenario1-ai:bob": {
          "count": 0,
          "wrong_agent_id": 0
        },
        "scenario1-ai:charlie": {
          "count": 0,
          "wrong_agent_id": 0
        }
      },
      "reason": "ai:alice recalled 0 < 20 via MCP; ai:bob recalled 0 < 20 via MCP; ai:charlie recalled 0 < 20 via MCP; cross-cluster identity check failed — see per_ns",
      "reasons": [
        "ai:alice recalled 0 < 20 via MCP",
        "ai:bob recalled 0 < 20 via MCP",
        "ai:charlie recalled 0 < 20 via MCP",
        "cross-cluster identity check failed — see per_ns"
      ],
      "scenario": "1",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "delete_http_code": 200,
      "m1_id": "895b674a-3a9a-4f16-8025-67b05f87a2e1",
      "pass": true,
      "post_delete_hits": {
        "node-2": 0,
        "node-3": 0,
        "node-4": 0
      },
      "post_delete_still_visible_peers": 0,
      "pre_delete_visible_peers": 3,
      "reasons": [],
      "scenario": "10",
      "skipped": false,
      "tls_mode": "mtls",
      "uuid": "d-dbc35825592848abbad539d9e1bba273"
    },
    {
      "agent_group": "hermes",
      "charlie_sees_link": 1,
      "link_http_code": 201,
      "m1_id": "549d70b8-88bd-47b4-a5cc-e6707e8e81b0",
      "m2_id": "d2cb4874-bd9a-4f75-a872-255c30616b45",
      "pass": true,
      "reasons": [],
      "relation": "related_to",
      "scenario": "11",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "pass": true,
      "peers_see": {
        "node_2": 1,
        "node_3": 1,
        "node_4": 1
      },
      "reasons": [],
      "register_http_code": 201,
      "registered_agent": "ai:dave-probe-17d26fed",
      "scenario": "12",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "m1_id": "083e02b8-40c1-41cf-8d0b-bcd2c235b098",
      "pass": true,
      "peer_view": {
        "node_1": "vb-effa6844fb954293b4910d10c749d534",
        "node_2": "vb-effa6844fb954293b4910d10c749d534",
        "node_3": "vb-effa6844fb954293b4910d10c749d534",
        "node_4": "vb-effa6844fb954293b4910d10c749d534"
      },
      "reasons": [],
      "scenario": "13",
      "skipped": false,
      "submitted": {
        "v0": "v0-dd2a3a5628bb46a1bfd9e6c75582653f",
        "vA_alice": "va-0c2f2307046d40f683b0731961a09108",
        "vB_bob": "vb-effa6844fb954293b4910d10c749d534"
      },
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "expected_post_recovery": 20,
      "node3_saw": 20,
      "partition_target": "node-3",
      "pass": true,
      "reasons": [],
      "scenario": "14",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "pass": true,
      "reasons": [],
      "scenario": "15",
      "skipped": false,
      "tls_mode": "mtls",
      "uuid": "ryw-d2d27ca7e22c4d70a0bcf760d70ab3f1",
      "writer_sees_own_write": 1
    },
    {
      "agent_group": "hermes",
      "bob_sees_tier": "long",
      "m1_id": "48d2f1ed-20f0-412b-b595-20fb7909743a",
      "pass": true,
      "promote_http_code": 200,
      "reasons": [],
      "scenario": "16",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "expected_count": 15,
      "pass": true,
      "per_peer": {
        "node_1": 15,
        "node_2": 15,
        "node_3": 15,
        "node_4": 15
      },
      "reasons": [],
      "scenario": "17",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "pass": false,
      "query": "morning outdoor exercise routine",
      "reason": "semantic query did not surface alice's memory; semantic query did not surface bob's memory",
      "reasons": [
        "semantic query did not surface alice's memory",
        "semantic query did not surface bob's memory"
      ],
      "scenario": "18",
      "skipped": false,
      "tls_mode": "mtls",
      "writers": [
        {
          "agent": "ai:alice",
          "marker": "alice-sunrise-deac2892",
          "seen_by_charlie": 0
        },
        {
          "agent": "ai:bob",
          "marker": "bob-daybreak-489907ab",
          "seen_by_charlie": 0
        }
      ]
    },
    {
      "agent_group": "hermes",
      "expected_per_reader": 20,
      "pass": true,
      "path": "serve-http",
      "per_agent": {
        "ai:alice": {
          "recall": 20
        },
        "ai:bob": {
          "recall": 20
        },
        "ai:charlie": {
          "recall": 20
        }
      },
      "per_namespace_node4": {
        "scenario1b-ai:alice": {
          "count": 10,
          "wrong_agent_id": 0
        },
        "scenario1b-ai:bob": {
          "count": 10,
          "wrong_agent_id": 0
        },
        "scenario1b-ai:charlie": {
          "count": 10,
          "wrong_agent_id": 0
        }
      },
      "reasons": [],
      "scenario": "1b",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "ack_uuid": "a-fa785afe316d415c830480ff953df510",
      "agent_group": "hermes",
      "handoff_uuid": "h-5adf45745d2e4341bbad879f802b7abf",
      "pass": true,
      "path": "serve-http",
      "per_agent": {
        "ai:alice": {
          "sees_ack": 1
        },
        "ai:bob": {
          "sees_handoff": 1
        }
      },
      "reasons": [],
      "scenario": "2",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "marker": "mtls-ae8b64337e4b41b4bd8eb779e05eb0f0",
      "pass": true,
      "peers_see": {
        "node_2": 1,
        "node_3": 1
      },
      "reasons": [],
      "scenario": "20",
      "skipped": false,
      "tls_mode": "mtls",
      "write_http_code": 201
    },
    {
      "agent_group": "hermes",
      "anonymous_probe": {
        "curl_message": "OpenSSL SSL_read: OpenSSL/3.0.13: error:0A00045C:SSL routines::tlsv13 alert certificate required, errno 0",
        "http_code": "curl: (56) OpenSSL SSL_read: OpenSSL/3.0.13: error:0A00045C:SSL routines::tlsv13 alert certificate required, errno 0\n000"
      },
      "namespace_count_after_attempt": 0,
      "pass": true,
      "reasons": [],
      "scenario": "21",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "pass": true,
      "reasons": [],
      "scenario": "22",
      "skipped": false,
      "tests": {
        "body_vs_header_conflict": {
          "acceptable": [
            "ai:body-wins",
            "ai:attacker"
          ],
          "stored_agent_id": "ai:attacker"
        },
        "header_only": {
          "expected": "ai:alice",
          "stored_agent_id": "ai:alice"
        }
      },
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "byzantine_marker": "bz-5948929274a642a8be861b312c616077",
      "pass": true,
      "reasons": [],
      "scenario": "24",
      "skipped": false,
      "stored_metadata_agent_id": "REJECTED_BY_SERVER",
      "sync_push_http_code": "422",
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "clock_offset_seconds": 300,
      "marker": "ck-9a19a398de9b48ff8f98de6d9747e50a",
      "pass": true,
      "reasons": [],
      "scenario": "25",
      "seen_on": {
        "node_1": 1,
        "node_3": 1
      },
      "skipped": false,
      "target_node": "node-3",
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "pass": true,
      "peer_hits": {
        "node_2": 1,
        "node_3": 1
      },
      "reasons": [],
      "scenario": "28",
      "skipped": false,
      "tls_mode": "mtls",
      "token": "kwsearch5aa0700e04"
    },
    {
      "agent_group": "hermes",
      "archive_http_code": 200,
      "bob_sees_archived": true,
      "m1_id": "56a2acdb-b5c5-4704-a5da-98bc6c44f4ea",
      "node4_active_rows": 0,
      "pass": false,
      "reason": "node-4 did not see M1 restored into active set",
      "reasons": [
        "node-4 did not see M1 restored into active set"
      ],
      "restore_http_code": 200,
      "scenario": "29",
      "skipped": false,
      "stats_shape_ok": true,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "pass": true,
      "peer_views": {
        "node_1": {
          "_path": "/api/v1/capabilities",
          "features": {
            "auto_consolidation": false,
            "auto_tagging": false,
            "contradiction_analysis": false,
            "cross_encoder_reranking": false,
            "hybrid_recall": true,
            "keyword_search": true,
            "memory_reflection": false,
            "query_expansion": false,
            "semantic_search": true
          },
          "models": {
            "cross_encoder": "none",
            "embedding": "sentence-transformers/all-MiniLM-L6-v2",
            "embedding_dim": 384,
            "llm": "none"
          },
          "tier": "semantic",
          "version": "0.6.2"
        },
        "node_2": {
          "_path": "/api/v1/capabilities",
          "features": {
            "auto_consolidation": false,
            "auto_tagging": false,
            "contradiction_analysis": false,
            "cross_encoder_reranking": false,
            "hybrid_recall": true,
            "keyword_search": true,
            "memory_reflection": false,
            "query_expansion": false,
            "semantic_search": true
          },
          "models": {
            "cross_encoder": "none",
            "embedding": "sentence-transformers/all-MiniLM-L6-v2",
            "embedding_dim": 384,
            "llm": "none"
          },
          "tier": "semantic",
          "version": "0.6.2"
        },
        "node_3": {
          "_path": "/api/v1/capabilities",
          "features": {
            "auto_consolidation": false,
            "auto_tagging": false,
            "contradiction_analysis": false,
            "cross_encoder_reranking": false,
            "hybrid_recall": true,
            "keyword_search": true,
            "memory_reflection": false,
            "query_expansion": false,
            "semantic_search": true
          },
          "models": {
            "cross_encoder": "none",
            "embedding": "sentence-transformers/all-MiniLM-L6-v2",
            "embedding_dim": 384,
            "llm": "none"
          },
          "tier": "semantic",
          "version": "0.6.2"
        },
        "node_4": {
          "_path": "/api/v1/capabilities",
          "features": {
            "auto_consolidation": false,
            "auto_tagging": false,
            "contradiction_analysis": false,
            "cross_encoder_reranking": false,
            "hybrid_recall": true,
            "keyword_search": true,
            "memory_reflection": false,
            "query_expansion": false,
            "semantic_search": true
          },
          "models": {
            "cross_encoder": "none",
            "embedding": "sentence-transformers/all-MiniLM-L6-v2",
            "embedding_dim": 384,
            "llm": "none"
          },
          "tier": "semantic",
          "version": "0.6.2"
        }
      },
      "reasons": [],
      "scenario": "30",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "expected_live": 2,
      "forget_http_code": 400,
      "gc_http_code": 200,
      "live_markers_per_peer": {
        "node_1": 2,
        "node_2": 2,
        "node_3": 2,
        "node_4": 2
      },
      "pass": true,
      "reasons": [],
      "scenario": "31",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "bob_inbox_count": 0,
      "bob_sees_marker": false,
      "charlie_inbox_count": 0,
      "charlie_sees_marker": false,
      "marker": "inb-1e952791bfc74e1d92ff74d6d7c9e449",
      "notify_http_code": 201,
      "pass": false,
      "reason": "bob's inbox did not deliver alice's notify",
      "reasons": [
        "bob's inbox did not deliver alice's notify"
      ],
      "scenario": "32",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "m1_delivered": 1,
      "namespace": "scenario33-pubsub-ddc4c3",
      "ns_in_subs_after": false,
      "ns_in_subs_before": true,
      "pass": true,
      "reasons": [],
      "scenario": "33",
      "skipped": false,
      "subscribe_http_code": 201,
      "subscriptions_after_count": 0,
      "subscriptions_before_count": 1,
      "tls_mode": "mtls",
      "unsubscribe_http_code": 200
    },
    {
      "agent_group": "hermes",
      "approve_http_code": 403,
      "charlie_sees": {
        "approved": 1,
        "rejected": 1
      },
      "namespace": "scenario34-pending-7fa3f8",
      "pass": false,
      "pending_queue_count": 0,
      "reason": "set-standard returned HTTP 400; approve returned HTTP 403; reject returned HTTP 404; charlie saw rejected row — reject didn't prevent publication",
      "reasons": [
        "set-standard returned HTTP 400",
        "approve returned HTTP 403",
        "reject returned HTTP 404",
        "charlie saw rejected row — reject didn't prevent publication"
      ],
      "reject_http_code": 404,
      "scenario": "34",
      "set_standard_http_code": 400,
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "child_ns": "scenario35-parent-005144/child",
      "clear_http_code": 200,
      "get_standard_http_code": 200,
      "parent_ns": "scenario35-parent-005144",
      "pass": false,
      "post_clear_has_child_rule": false,
      "reason": "parent rule not layered into child's standard view; child rule missing from standard view",
      "reasons": [
        "parent rule not layered into child's standard view",
        "child rule missing from standard view"
      ],
      "scenario": "35",
      "sees_child_rule": false,
      "sees_parent_rule": false,
      "set_child_http_code": 201,
      "set_parent_http_code": 201,
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "pass": true,
      "reasons": [],
      "scenario": "36",
      "session_id": "641e5dc8-a441-45de-810a-91f71ae0f564",
      "session_tagged_rows_on_bob": 2,
      "skipped": false,
      "start_http_code": 200,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "forward_has_target": true,
      "m1": "17964526-7067-4c8a-ae48-415eb8353995",
      "m2": "7705be25-88bf-4e42-8082-6b6a4b679b99",
      "pass": true,
      "reasons": [],
      "reverse_has_source": true,
      "scenario": "37",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "dst_ns": "scenario38-dst-23d4b5",
      "expected_rows": 5,
      "export_http_code": 200,
      "import_http_code": 200,
      "markers_preserved": 5,
      "pass": true,
      "reasons": [],
      "rows_exported": 5,
      "rows_in_destination": 5,
      "scenario": "38",
      "skipped": false,
      "src_ns": "scenario38-src-23d4b5",
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "checkpoint": "2026-04-23T00:59:49+00:00",
      "diag_earliest_updated_at": null,
      "diag_latest_updated_at": null,
      "diag_updated_since": null,
      "expected_markers": 6,
      "markers_present": 0,
      "namespace": "scenario39-delta-11540d",
      "pass": false,
      "reason": "delta returned 0/6 expected markers — delta-sync incomplete",
      "reasons": [
        "delta returned 0/6 expected markers — delta-sync incomplete"
      ],
      "rows_returned": 0,
      "rows_returned_raw": 0,
      "scenario": "39",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "expected_per_agent": 30,
      "pass": true,
      "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": "4",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "bulk_http_code": "200",
      "bulk_size": 500,
      "namespace": "scenario40-bulk-8e49e5",
      "pass": false,
      "per_peer_count": {
        "node_2": 200,
        "node_3": 200,
        "node_4": 200
      },
      "reason": "node-2 saw 200/500 bulk rows after fanout; node-3 saw 200/500 bulk rows after fanout; node-4 saw 200/500 bulk rows after fanout",
      "reasons": [
        "node-2 saw 200/500 bulk rows after fanout",
        "node-3 saw 200/500 bulk rows after fanout",
        "node-4 saw 200/500 bulk rows after fanout"
      ],
      "scenario": "40",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "activity_namespace": "scenario41-activity-bc5206",
      "agent_group": "hermes",
      "pass": true,
      "per_peer": {
        "node_1": {
          "counters_t0": 8,
          "counters_t1": 8,
          "regressed_keys": 0
        },
        "node_2": {
          "counters_t0": 8,
          "counters_t1": 8,
          "regressed_keys": 0
        },
        "node_3": {
          "counters_t0": 7,
          "counters_t1": 7,
          "regressed_keys": 0
        }
      },
      "reasons": [],
      "scenario": "41",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "namespaces": [
        "scenario42-767b53-0",
        "scenario42-767b53-1",
        "scenario42-767b53-2"
      ],
      "pass": true,
      "per_peer": {
        "node_1": {
          "scenario42-767b53-0": 2,
          "scenario42-767b53-1": 2,
          "scenario42-767b53-2": 2
        },
        "node_2": {
          "scenario42-767b53-0": 2,
          "scenario42-767b53-1": 2,
          "scenario42-767b53-2": 2
        },
        "node_3": {
          "scenario42-767b53-0": 2,
          "scenario42-767b53-1": 2,
          "scenario42-767b53-2": 2
        },
        "node_4": {
          "scenario42-767b53-0": 2,
          "scenario42-767b53-1": 2,
          "scenario42-767b53-2": 2
        }
      },
      "reasons": [],
      "scenario": "42",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "consolidate_http_code": 201,
      "consolidated_from_agents": [
        "ai:charlie",
        "ai:bob",
        "ai:alice"
      ],
      "consolidated_id": "7fca7516-7598-432e-a779-3a511b2bedc9",
      "pass": true,
      "reasons": [],
      "scenario": "5",
      "skipped": false,
      "tls_mode": "mtls"
    },
    {
      "agent_group": "hermes",
      "alice_id": "d19bfff9-0071-461a-942d-04800c0f3126",
      "bob_id": "e574f9a7-bccb-447e-8d35-220f5d62bcd5",
      "charlie_sees_both_memories": true,
      "charlie_sees_contradicts_link": true,
      "detect_http_code": 200,
      "pass": true,
      "reasons": [],
      "scenario": "6",
      "skipped": false,
      "tls_mode": "mtls",
      "topic": "sky-color-38dc7132"
    },
    {
      "agent_group": "hermes",
      "charlie_view": {
        "agent_id": "ai:alice",
        "content": "v2-beee4443e5934f1faa6efb192ddc50e7"
      },
      "m1_id": "2de66e8b-196e-4a85-8f34-1f82f5285166",
      "pass": true,
      "put_http_code": 200,
      "reasons": [],
      "scenario": "9",
      "skipped": false,
      "tls_mode": "mtls",
      "v1_uuid": "v1-cd790a8fccf24501a048cdef964824d1",
      "v2_uuid": "v2-beee4443e5934f1faa6efb192ddc50e7"
    }
  ],
  "reasons": [
    "ai:alice recalled 0 < 20 via MCP",
    "ai:bob recalled 0 < 20 via MCP",
    "ai:charlie recalled 0 < 20 via MCP",
    "approve returned HTTP 403",
    "bob's inbox did not deliver alice's notify",
    "charlie saw rejected row — reject didn't prevent publication",
    "child rule missing from standard view",
    "cross-cluster identity check failed — see per_ns",
    "delta returned 0/6 expected markers — delta-sync incomplete",
    "node-2 saw 200/500 bulk rows after fanout",
    "node-3 saw 200/500 bulk rows after fanout",
    "node-4 did not see M1 restored into active set",
    "node-4 saw 200/500 bulk rows after fanout",
    "parent rule not layered into child's standard view",
    "reject returned HTTP 404",
    "semantic query did not surface alice's memory",
    "semantic query did not surface bob's memory",
    "set-standard returned HTTP 400"
  ],
  "meta": {
    "campaign_id": "a2a-hermes-v3r20-mtls-release-v0.6.2",
    "agent_group": "hermes",
    "ai_memory_git_ref": "release/v0.6.2",
    "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": "159.203.95.107",
          "private_ip": "10.11.2.5"
        },
        {
          "index": 2,
          "role": "agent",
          "agent_id": "ai:bob",
          "public_ip": "142.93.65.16",
          "private_ip": "10.11.2.4"
        },
        {
          "index": 3,
          "role": "agent",
          "agent_id": "ai:charlie",
          "public_ip": "104.236.45.124",
          "private_ip": "10.11.2.2"
        },
        {
          "index": 4,
          "role": "memory-only",
          "agent_id": null,
          "public_ip": "174.138.89.74",
          "private_ip": "10.11.2.3"
        }
      ]
    },
    "scenarios_requested": [
      "1",
      "1b",
      "2",
      "4",
      "5",
      "6",
      "9",
      "10",
      "11",
      "12",
      "13",
      "14",
      "15",
      "16",
      "17",
      "18",
      "22",
      "23",
      "24",
      "25",
      "28",
      "29",
      "30",
      "31",
      "32",
      "33",
      "34",
      "35",
      "36",
      "37",
      "38",
      "39",
      "40",
      "41",
      "42"
    ],
    "timing": {
      "started_at": "2026-04-23T00:47:42Z",
      "ended_at": "2026-04-23T01:03:03Z"
    },
    "ci": {
      "actor": "alphaonedev",
      "workflow_url": "https://github.com/alphaonedev/ai-memory-ai2ai-gate/actions/runs/24809649105",
      "harness_sha": "3a21552c4c63b4f1dc6e852d7d8099e4a64b5ea1",
      "runner_os": "Linux"
    }
  },
  "skipped_reports": [
    "scenario-23.json:unparseable"
  ]
}
