{
  "campaign_id": "a2a-ironclaw-v0.6.2-rc.0-v3r1",
  "agent_group": "ironclaw",
  "ai_memory_git_ref": "v0.6.2-rc.0",
  "completed_at": "2026-04-22T01:40:00Z",
  "overall_pass": false,
  "scenarios": [
    {
      "agent_group": "ironclaw",
      "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": "off"
    },
    {
      "agent_group": "ironclaw",
      "delete_http_code": 200,
      "m1_id": "a807c967-e22b-4cd7-b351-b3fcb532159f",
      "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": "off",
      "uuid": "d-4ee271076ce843b189cd4e0288c73b7f"
    },
    {
      "agent_group": "ironclaw",
      "charlie_sees_link": 1,
      "link_http_code": 201,
      "m1_id": "c56e5cd2-d87b-4034-9615-e3f920e70369",
      "m2_id": "4f31452a-2c30-476e-8000-9aea89a87549",
      "pass": true,
      "reasons": [],
      "relation": "related_to",
      "scenario": "11",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "pass": false,
      "peers_see": {
        "node_2": 0,
        "node_3": 0,
        "node_4": 0
      },
      "reason": "register POST returned HTTP 400; node-2 did not see registered agent ai:dave-probe-37518964; node-3 did not see registered agent ai:dave-probe-37518964; node-4 did not see registered agent ai:dave-probe-37518964",
      "reasons": [
        "register POST returned HTTP 400",
        "node-2 did not see registered agent ai:dave-probe-37518964",
        "node-3 did not see registered agent ai:dave-probe-37518964",
        "node-4 did not see registered agent ai:dave-probe-37518964"
      ],
      "register_http_code": 400,
      "registered_agent": "ai:dave-probe-37518964",
      "scenario": "12",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "m1_id": "68b22549-b5cf-4253-a729-8ac3163d2908",
      "pass": true,
      "peer_view": {
        "node_1": "vb-1a20a8214d084ddead984cc11ae3fda1",
        "node_2": "vb-1a20a8214d084ddead984cc11ae3fda1",
        "node_3": "vb-1a20a8214d084ddead984cc11ae3fda1",
        "node_4": "vb-1a20a8214d084ddead984cc11ae3fda1"
      },
      "reasons": [],
      "scenario": "13",
      "skipped": false,
      "submitted": {
        "v0": "v0-341bf387da7945f29212080c754ffa83",
        "vA_alice": "va-f5afa1099f4c4ecfa723e7d8b1d05a8c",
        "vB_bob": "vb-1a20a8214d084ddead984cc11ae3fda1"
      },
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "pass": true,
      "reasons": [],
      "scenario": "15",
      "skipped": false,
      "tls_mode": "off",
      "uuid": "ryw-a44a41a8a9fe4f2498e62a1431fa1f60",
      "writer_sees_own_write": 1
    },
    {
      "agent_group": "ironclaw",
      "bob_sees_tier": "long",
      "m1_id": "3a905006-c7c4-465a-843d-47ac44914215",
      "pass": true,
      "promote_http_code": 200,
      "reasons": [],
      "scenario": "16",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "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": "off"
    },
    {
      "ack_uuid": "a-0c93ee1912904881943cfcb8e292b007",
      "agent_group": "ironclaw",
      "handoff_uuid": "h-9a1ffe31349b4772b359ca3c13dfb592",
      "pass": true,
      "path": "serve-http",
      "per_agent": {
        "ai:alice": {
          "sees_ack": 1
        },
        "ai:bob": {
          "sees_handoff": 1
        }
      },
      "reasons": [],
      "scenario": "2",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "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": "off"
    },
    {
      "agent_group": "ironclaw",
      "pass": null,
      "reason": "NODE2_PRIV / NODE3_PRIV not set — private peer URLs unavailable",
      "scenario": "24",
      "skipped": true,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "m1_delivered": 1,
      "namespace": "scenario33-pubsub-0ed085",
      "ns_in_subs_after": false,
      "ns_in_subs_before": false,
      "pass": false,
      "reason": "subscribe returned HTTP 404; bob's subscription list did not include the subscribed namespace; unsubscribe returned HTTP 404",
      "reasons": [
        "subscribe returned HTTP 404",
        "bob's subscription list did not include the subscribed namespace",
        "unsubscribe returned HTTP 404"
      ],
      "scenario": "33",
      "skipped": false,
      "subscribe_http_code": 404,
      "subscriptions_after_count": 0,
      "subscriptions_before_count": 0,
      "tls_mode": "off",
      "unsubscribe_http_code": 404
    },
    {
      "agent_group": "ironclaw",
      "child_ns": "scenario35-parent-9e6eda/child",
      "clear_http_code": 405,
      "get_standard_http_code": 200,
      "parent_ns": "scenario35-parent-9e6eda",
      "pass": false,
      "post_clear_has_child_rule": false,
      "reason": "set-parent returned HTTP 405; set-child returned HTTP 405; clear-standard returned HTTP 405; parent rule not layered into child's standard view; child rule missing from standard view",
      "reasons": [
        "set-parent returned HTTP 405",
        "set-child returned HTTP 405",
        "clear-standard returned HTTP 405",
        "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": 405,
      "set_parent_http_code": 405,
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "pass": false,
      "reason": "session_start returned HTTP 404",
      "reasons": [
        "session_start returned HTTP 404"
      ],
      "scenario": "36",
      "skipped": false,
      "start_http_code": 404,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "dst_ns": "scenario38-dst-81eb85",
      "expected_rows": 5,
      "export_http_code": 200,
      "import_http_code": 200,
      "markers_preserved": 0,
      "pass": false,
      "reason": "destination count 0 < expected 5; only 0/5 markers preserved",
      "reasons": [
        "destination count 0 < expected 5",
        "only 0/5 markers preserved"
      ],
      "rows_exported": 171,
      "rows_in_destination": 0,
      "scenario": "38",
      "skipped": false,
      "src_ns": "scenario38-src-81eb85",
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "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": "off"
    },
    {
      "agent_group": "ironclaw",
      "consolidate_http_code": 201,
      "consolidated_from_agents": [
        "ai:charlie",
        "ai:bob",
        "ai:alice"
      ],
      "consolidated_id": "e1b88027-2cde-460e-a172-e318ed086599",
      "pass": true,
      "reasons": [],
      "scenario": "5",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "alice_id": "81f6dcf5-c511-45e2-8b26-b3ee790cc325",
      "bob_id": "8fb254b5-830d-4c2f-b35f-a0ff664cc5bc",
      "charlie_sees_both_memories": true,
      "charlie_sees_contradicts_link": true,
      "detect_http_code": 200,
      "pass": true,
      "reasons": [],
      "scenario": "6",
      "skipped": false,
      "tls_mode": "off",
      "topic": "sky-color-199703d5"
    },
    {
      "agent_group": "ironclaw",
      "charlie_view": {
        "agent_id": "ai:alice",
        "content": "v2-73b9c66d40f6436f9627da291f69438e"
      },
      "m1_id": "a099c1ae-9ee6-4865-afdd-b6a03c274df7",
      "pass": true,
      "put_http_code": 200,
      "reasons": [],
      "scenario": "9",
      "skipped": false,
      "tls_mode": "off",
      "v1_uuid": "v1-61424dd3db024db4bb40980a763caac7",
      "v2_uuid": "v2-73b9c66d40f6436f9627da291f69438e"
    }
  ],
  "reasons": [
    "ai:alice recalled 0 < 20 via MCP",
    "ai:bob recalled 0 < 20 via MCP",
    "ai:charlie recalled 0 < 20 via MCP",
    "bob's subscription list did not include the subscribed namespace",
    "child rule missing from standard view",
    "clear-standard returned HTTP 405",
    "cross-cluster identity check failed — see per_ns",
    "destination count 0 < expected 5",
    "node-2 did not see registered agent ai:dave-probe-37518964",
    "node-3 did not see registered agent ai:dave-probe-37518964",
    "node-4 did not see registered agent ai:dave-probe-37518964",
    "only 0/5 markers preserved",
    "parent rule not layered into child's standard view",
    "register POST returned HTTP 400",
    "session_start returned HTTP 404",
    "set-child returned HTTP 405",
    "set-parent returned HTTP 405",
    "subscribe returned HTTP 404",
    "unsubscribe returned HTTP 404"
  ],
  "meta": {
    "campaign_id": "a2a-ironclaw-v0.6.2-rc.0-v3r1",
    "agent_group": "ironclaw",
    "ai_memory_git_ref": "v0.6.2-rc.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": "104.236.6.125",
          "private_ip": "10.251.0.2"
        },
        {
          "index": 2,
          "role": "agent",
          "agent_id": "ai:bob",
          "public_ip": "167.71.177.137",
          "private_ip": "10.251.0.4"
        },
        {
          "index": 3,
          "role": "agent",
          "agent_id": "ai:charlie",
          "public_ip": "167.99.59.68",
          "private_ip": "10.251.0.3"
        },
        {
          "index": 4,
          "role": "memory-only",
          "agent_id": null,
          "public_ip": "167.71.84.158",
          "private_ip": "10.251.0.5"
        }
      ]
    },
    "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-22T01:25:08Z",
      "ended_at": "2026-04-22T01:40:00Z"
    },
    "ci": {
      "actor": "alphaonedev",
      "workflow_url": "https://github.com/alphaonedev/ai-memory-ai2ai-gate/actions/runs/24755138265",
      "harness_sha": "d5942cb467fca3f5b5a0041a52400f6b62954539",
      "runner_os": "Linux"
    }
  },
  "skipped_reports": [
    "scenario-14.json:unparseable",
    "scenario-17.json:unparseable",
    "scenario-18.json:unparseable",
    "scenario-23.json:unparseable",
    "scenario-25.json:unparseable",
    "scenario-28.json:unparseable",
    "scenario-29.json:unparseable",
    "scenario-30.json:unparseable",
    "scenario-31.json:unparseable",
    "scenario-32.json:unparseable",
    "scenario-34.json:unparseable",
    "scenario-37.json:unparseable",
    "scenario-39.json:unparseable",
    "scenario-40.json:unparseable",
    "scenario-41.json:unparseable",
    "scenario-42.json:unparseable"
  ]
}
