{
  "campaign_id": "a2a-ironclaw-v0.6.3.1-r23",
  "agent_group": "ironclaw",
  "ai_memory_git_ref": "v0.6.3.1",
  "completed_at": "2026-05-02T22:39:09Z",
  "overall_pass": false,
  "scenarios": [
    {
      "agent_group": "ironclaw",
      "expected_per_reader": 20,
      "pass": true,
      "per_agent": {
        "ai:alice": {
          "recall": 20
        },
        "ai:bob": {
          "recall": 20
        },
        "ai:charlie": {
          "recall": 20
        }
      },
      "per_namespace_node4": {
        "scenario1-ai:alice": {
          "count": 10,
          "wrong_agent_id": 0
        },
        "scenario1-ai:bob": {
          "count": 10,
          "wrong_agent_id": 0
        },
        "scenario1-ai:charlie": {
          "count": 10,
          "wrong_agent_id": 0
        }
      },
      "reasons": [],
      "scenario": "1",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "delete_http_code": 200,
      "m1_id": "5fc7bc06-2eef-45ca-92e5-48a0852e1a7e",
      "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-3360f304fd734adc9c0b0f7b5a6d88e3"
    },
    {
      "agent_group": "ironclaw",
      "charlie_sees_link": 1,
      "link_http_code": 201,
      "m1_id": "97e34277-526e-4d50-ad88-27adc2230fa5",
      "m2_id": "94018145-5af9-4b51-929c-9c54cc0f029c",
      "pass": true,
      "reasons": [],
      "relation": "related_to",
      "scenario": "11",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "pass": true,
      "peers_see": {
        "node_2": 1,
        "node_3": 1,
        "node_4": 1
      },
      "reasons": [],
      "register_http_code": 201,
      "registered_agent": "ai:dave-probe-0015aa7f",
      "scenario": "12",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "m1_id": "d74efff1-8f4e-42a2-82e2-8b3366d82338",
      "pass": true,
      "peer_view": {
        "node_1": "vb-916d8c5cee044a3ca176072616cbd77d",
        "node_2": "vb-916d8c5cee044a3ca176072616cbd77d",
        "node_3": "vb-916d8c5cee044a3ca176072616cbd77d",
        "node_4": "vb-916d8c5cee044a3ca176072616cbd77d"
      },
      "reasons": [],
      "scenario": "13",
      "skipped": false,
      "submitted": {
        "v0": "v0-b7591b7a2e644c519daf34d74b91a2bf",
        "vA_alice": "va-32fb7c74c3e94e6099fef8b5b12aa958",
        "vB_bob": "vb-916d8c5cee044a3ca176072616cbd77d"
      },
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "expected_post_recovery": 20,
      "node3_saw": 20,
      "partition_target": "node-3",
      "pass": true,
      "reasons": [],
      "scenario": "14",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "pass": true,
      "reasons": [],
      "scenario": "15",
      "skipped": false,
      "tls_mode": "off",
      "uuid": "ryw-13fd4ec3bb1c4bdea2c20316ab0fc5e4",
      "writer_sees_own_write": 1
    },
    {
      "agent_group": "ironclaw",
      "bob_sees_tier": "long",
      "m1_id": "ec85800f-9f0d-4d72-96c4-50347ea5161d",
      "pass": true,
      "promote_http_code": 200,
      "reasons": [],
      "scenario": "16",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "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": "off"
    },
    {
      "agent_group": "ironclaw",
      "diag_list_alice_present": 1,
      "diag_list_bob_present": 1,
      "diag_node3_embedding_probe": "dawn-walk|1537|BYTES | ridge-strides|1537|BYTES",
      "pass": true,
      "query": "morning outdoor exercise routine",
      "reasons": [],
      "recall_mode": "hybrid",
      "rows_in_recall": 2,
      "scenario": "18",
      "skipped": false,
      "tls_mode": "off",
      "writers": [
        {
          "agent": "ai:alice",
          "marker": "alice-sunrise-f4d07eb4",
          "seen_by_charlie": 1
        },
        {
          "agent": "ai:bob",
          "marker": "bob-daybreak-d80126e9",
          "seen_by_charlie": 1
        }
      ]
    },
    {
      "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-ebb9f79d906549b1801f02d4369dbdbe",
      "agent_group": "ironclaw",
      "handoff_uuid": "h-b188d461ac044c18a625db5e2529f5e5",
      "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": true,
      "payloads": {
        "html": {
          "input_bytes": 66,
          "roundtrip_bytes": 66,
          "write_http": 201
        },
        "oversize": {
          "input_bytes": 1048576,
          "roundtrip_bytes": 0,
          "write_http": 400
        },
        "sql": {
          "input_bytes": 61,
          "roundtrip_bytes": 61,
          "write_http": 201
        },
        "unicode": {
          "input_bytes": 19,
          "roundtrip_bytes": 19,
          "write_http": 201
        }
      },
      "payloads_note": "accept+faithful OR 4xx reject both acceptable for oversize",
      "reasons": [],
      "scenario": "23",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "byzantine_marker": "bz-6d05d6e9ea7d4cd5a9a1f80826481f11",
      "pass": true,
      "reasons": [],
      "scenario": "24",
      "skipped": false,
      "stored_metadata_agent_id": "REJECTED_BY_SERVER",
      "sync_push_http_code": "422",
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "clock_offset_seconds": 300,
      "marker": "ck-dc0214c2ccba4bc095bd4280367e681f",
      "pass": true,
      "reasons": [],
      "scenario": "25",
      "seen_on": {
        "node_1": 1,
        "node_3": 1
      },
      "skipped": false,
      "target_node": "node-3",
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "pass": true,
      "peer_hits": {
        "node_2": 1,
        "node_3": 1
      },
      "reasons": [],
      "scenario": "28",
      "skipped": false,
      "tls_mode": "off",
      "token": "kwsearcha0f86f17f4"
    },
    {
      "agent_group": "ironclaw",
      "archive_http_code": 200,
      "bob_sees_archived": true,
      "m1_id": "5d191cef-c297-408a-b5d8-09cd228f8517",
      "node4_active_rows": 1,
      "pass": true,
      "reasons": [],
      "restore_http_code": 200,
      "scenario": "29",
      "skipped": false,
      "stats_shape_ok": true,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "pass": true,
      "peer_views": {
        "node_1": {
          "_path": "/api/v1/capabilities",
          "approval": {
            "pending_requests": 0
          },
          "compaction": {
            "enabled": false,
            "planned": true,
            "version": "v0.8+"
          },
          "features": {
            "auto_consolidation": false,
            "auto_tagging": false,
            "contradiction_analysis": false,
            "cross_encoder_reranking": false,
            "embedder_loaded": true,
            "hybrid_recall": true,
            "keyword_search": true,
            "memory_reflection": {
              "enabled": false,
              "planned": true,
              "version": "v0.7+"
            },
            "query_expansion": false,
            "recall_mode_active": "hybrid",
            "reranker_active": "off",
            "semantic_search": true
          },
          "hnsw": {
            "evicted_recently": false,
            "evictions_total": 0
          },
          "hooks": {
            "registered_count": 0,
            "webhook_events": [
              "memory_store",
              "memory_promote",
              "memory_delete",
              "memory_link_created",
              "memory_consolidated"
            ]
          },
          "models": {
            "cross_encoder": "none",
            "embedding": "sentence-transformers/all-MiniLM-L6-v2",
            "embedding_dim": 384,
            "llm": "none"
          },
          "permissions": {
            "active_rules": 0,
            "inheritance": "enforced",
            "mode": "advisory"
          },
          "schema_version": "2",
          "tier": "semantic",
          "transcripts": {
            "enabled": false,
            "planned": true,
            "version": "v0.7+"
          },
          "version": "0.6.3+patch.1"
        },
        "node_2": {
          "_path": "/api/v1/capabilities",
          "approval": {
            "pending_requests": 0
          },
          "compaction": {
            "enabled": false,
            "planned": true,
            "version": "v0.8+"
          },
          "features": {
            "auto_consolidation": false,
            "auto_tagging": false,
            "contradiction_analysis": false,
            "cross_encoder_reranking": false,
            "embedder_loaded": true,
            "hybrid_recall": true,
            "keyword_search": true,
            "memory_reflection": {
              "enabled": false,
              "planned": true,
              "version": "v0.7+"
            },
            "query_expansion": false,
            "recall_mode_active": "hybrid",
            "reranker_active": "off",
            "semantic_search": true
          },
          "hnsw": {
            "evicted_recently": false,
            "evictions_total": 0
          },
          "hooks": {
            "registered_count": 0,
            "webhook_events": [
              "memory_store",
              "memory_promote",
              "memory_delete",
              "memory_link_created",
              "memory_consolidated"
            ]
          },
          "models": {
            "cross_encoder": "none",
            "embedding": "sentence-transformers/all-MiniLM-L6-v2",
            "embedding_dim": 384,
            "llm": "none"
          },
          "permissions": {
            "active_rules": 0,
            "inheritance": "enforced",
            "mode": "advisory"
          },
          "schema_version": "2",
          "tier": "semantic",
          "transcripts": {
            "enabled": false,
            "planned": true,
            "version": "v0.7+"
          },
          "version": "0.6.3+patch.1"
        },
        "node_3": {
          "_path": "/api/v1/capabilities",
          "approval": {
            "pending_requests": 0
          },
          "compaction": {
            "enabled": false,
            "planned": true,
            "version": "v0.8+"
          },
          "features": {
            "auto_consolidation": false,
            "auto_tagging": false,
            "contradiction_analysis": false,
            "cross_encoder_reranking": false,
            "embedder_loaded": true,
            "hybrid_recall": true,
            "keyword_search": true,
            "memory_reflection": {
              "enabled": false,
              "planned": true,
              "version": "v0.7+"
            },
            "query_expansion": false,
            "recall_mode_active": "hybrid",
            "reranker_active": "off",
            "semantic_search": true
          },
          "hnsw": {
            "evicted_recently": false,
            "evictions_total": 0
          },
          "hooks": {
            "registered_count": 0,
            "webhook_events": [
              "memory_store",
              "memory_promote",
              "memory_delete",
              "memory_link_created",
              "memory_consolidated"
            ]
          },
          "models": {
            "cross_encoder": "none",
            "embedding": "sentence-transformers/all-MiniLM-L6-v2",
            "embedding_dim": 384,
            "llm": "none"
          },
          "permissions": {
            "active_rules": 0,
            "inheritance": "enforced",
            "mode": "advisory"
          },
          "schema_version": "2",
          "tier": "semantic",
          "transcripts": {
            "enabled": false,
            "planned": true,
            "version": "v0.7+"
          },
          "version": "0.6.3+patch.1"
        },
        "node_4": {
          "_path": "/api/v1/capabilities",
          "approval": {
            "pending_requests": 0
          },
          "compaction": {
            "enabled": false,
            "planned": true,
            "version": "v0.8+"
          },
          "features": {
            "auto_consolidation": false,
            "auto_tagging": false,
            "contradiction_analysis": false,
            "cross_encoder_reranking": false,
            "embedder_loaded": true,
            "hybrid_recall": true,
            "keyword_search": true,
            "memory_reflection": {
              "enabled": false,
              "planned": true,
              "version": "v0.7+"
            },
            "query_expansion": false,
            "recall_mode_active": "hybrid",
            "reranker_active": "off",
            "semantic_search": true
          },
          "hnsw": {
            "evicted_recently": false,
            "evictions_total": 0
          },
          "hooks": {
            "registered_count": 0,
            "webhook_events": [
              "memory_store",
              "memory_promote",
              "memory_delete",
              "memory_link_created",
              "memory_consolidated"
            ]
          },
          "models": {
            "cross_encoder": "none",
            "embedding": "sentence-transformers/all-MiniLM-L6-v2",
            "embedding_dim": 384,
            "llm": "none"
          },
          "permissions": {
            "active_rules": 0,
            "inheritance": "enforced",
            "mode": "advisory"
          },
          "schema_version": "2",
          "tier": "semantic",
          "transcripts": {
            "enabled": false,
            "planned": true,
            "version": "v0.7+"
          },
          "version": "0.6.3+patch.1"
        }
      },
      "reasons": [],
      "scenario": "30",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "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": "off"
    },
    {
      "agent_group": "ironclaw",
      "bob_inbox_count": 1,
      "bob_sees_marker": true,
      "charlie_inbox_count": 0,
      "charlie_sees_marker": false,
      "marker": "inb-92060bc6c7294474978712b4a83b5e02",
      "notify_http_code": 201,
      "pass": true,
      "reasons": [],
      "scenario": "32",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "m1_delivered": 1,
      "namespace": "scenario33-pubsub-41d733",
      "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": "off",
      "unsubscribe_http_code": 200
    },
    {
      "agent_group": "ironclaw",
      "approve_http_code": 200,
      "charlie_sees": {
        "approved": 1,
        "rejected": 0
      },
      "namespace": "scenario34-pending-87b9a4",
      "pass": true,
      "pending_queue_count": 2,
      "reasons": [],
      "reject_http_code": 200,
      "scenario": "34",
      "set_standard_http_code": 201,
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "child_ns": "scenario35-parent-a808a5/child",
      "clear_http_code": 200,
      "get_standard_http_code": 200,
      "parent_ns": "scenario35-parent-a808a5",
      "pass": true,
      "post_clear_has_child_rule": false,
      "reasons": [],
      "scenario": "35",
      "sees_child_rule": true,
      "sees_parent_rule": true,
      "set_child_http_code": 201,
      "set_parent_http_code": 201,
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "pass": true,
      "reasons": [],
      "scenario": "36",
      "session_id": "99df29c8-9649-491d-8bab-563987ce6891",
      "session_tagged_rows_on_bob": 2,
      "skipped": false,
      "start_http_code": 200,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "forward_has_target": true,
      "m1": "6d91bc97-e767-46bf-97ac-df81eec3b31c",
      "m2": "b4a39060-b715-4b80-bda7-09020e1200b4",
      "pass": true,
      "reasons": [],
      "reverse_has_source": true,
      "scenario": "37",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "dst_ns": "scenario38-dst-8a028e",
      "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-8a028e",
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "checkpoint": "2026-05-02T22:32:44+00:00",
      "diag_curl_body_head": "{\"count\":6,\"earliest_updated_at\":\"2026-05-02T22:33:18.418115816+00:00\",\"latest_updated_at\":\"2026-05-02T22:33:23.946911476+00:00\",\"limit\":500,\"memories\":[{\"access_count\":0,\"confidence\":1.0,\"content\":\"marker=delta-0-a435e6b198ec4ea7932bfc92bd7f34f0\",\"created_at\":\"2026-05-02T22:33:18.418115816+00:00\",\"",
      "diag_curl_exit": 0,
      "diag_curl_http_code": 200,
      "diag_curl_stderr": "",
      "diag_earliest_updated_at": "2026-05-02T22:33:18.418115816+00:00",
      "diag_latest_updated_at": "2026-05-02T22:33:23.946911476+00:00",
      "diag_node3_health_reachable": true,
      "diag_updated_since": "2026-05-02T22:32:44+00:00",
      "expected_markers": 6,
      "markers_present": 6,
      "namespace": "scenario39-delta-89c665",
      "pass": true,
      "reasons": [],
      "rows_returned": 6,
      "rows_returned_raw": 6,
      "scenario": "39",
      "skipped": false,
      "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",
      "bulk_http_code": "200",
      "bulk_size": 500,
      "namespace": "scenario40-bulk-1c8e3c",
      "pass": true,
      "per_peer_count": {
        "node_2": 500,
        "node_3": 500,
        "node_4": 500
      },
      "reasons": [],
      "scenario": "40",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "activity_namespace": "scenario41-activity-753df4",
      "agent_group": "ironclaw",
      "pass": true,
      "per_peer": {
        "node_1": {
          "counters_t0": 10,
          "counters_t1": 10,
          "regressed_keys": 0
        },
        "node_2": {
          "counters_t0": 10,
          "counters_t1": 10,
          "regressed_keys": 0
        },
        "node_3": {
          "counters_t0": 7,
          "counters_t1": 7,
          "regressed_keys": 0
        }
      },
      "reasons": [],
      "scenario": "41",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "namespaces": [
        "scenario42-0dda30-0",
        "scenario42-0dda30-1",
        "scenario42-0dda30-2"
      ],
      "pass": true,
      "per_peer": {
        "node_1": {
          "scenario42-0dda30-0": 2,
          "scenario42-0dda30-1": 2,
          "scenario42-0dda30-2": 2
        },
        "node_2": {
          "scenario42-0dda30-0": 2,
          "scenario42-0dda30-1": 2,
          "scenario42-0dda30-2": 2
        },
        "node_3": {
          "scenario42-0dda30-0": 2,
          "scenario42-0dda30-1": 2,
          "scenario42-0dda30-2": 2
        },
        "node_4": {
          "scenario42-0dda30-0": 2,
          "scenario42-0dda30-1": 2,
          "scenario42-0dda30-2": 2
        }
      },
      "reasons": [],
      "scenario": "42",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "consolidate_http_code": 201,
      "consolidated_from_agents": [
        "ai:charlie",
        "ai:bob",
        "ai:alice"
      ],
      "consolidated_id": "7e4f9e1a-5902-4f2b-b607-b899537caaea",
      "pass": true,
      "reasons": [],
      "scenario": "5",
      "skipped": false,
      "tls_mode": "off"
    },
    {
      "agent_group": "ironclaw",
      "alice_id": "3ac2b19e-c11f-4e9b-ae03-677e323e3352",
      "bob_id": "48ae09b9-300d-4f8e-bbfa-3c7d085ac371",
      "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-82267c5c"
    },
    {
      "agent_group": "ironclaw",
      "charlie_view": {
        "agent_id": "ai:alice",
        "content": "v2-51e75e4c30e74de785f176b696439dc1"
      },
      "m1_id": "9d4d5192-1450-4633-9366-54ae2b3c4531",
      "pass": true,
      "put_http_code": 200,
      "reasons": [],
      "scenario": "9",
      "skipped": false,
      "tls_mode": "off",
      "v1_uuid": "v1-74488aa7ab1b447999947b26ec7644a2",
      "v2_uuid": "v2-51e75e4c30e74de785f176b696439dc1"
    },
    {
      "scenario": "S23",
      "pass": true,
      "expected_verdict": "RED",
      "actual_verdict": "RED",
      "expected_red_reason": "Issue #507 — config.toml ~ expansion (closes in Patch 2)",
      "outputs": {
        "tilde_boot_status_per_node": {
          "node-4": "warn",
          "node-2": "warn",
          "node-3": "warn",
          "node-1": "warn"
        },
        "absolute_boot_status_per_node": {
          "node-4": "info",
          "node-2": "info",
          "node-3": "info",
          "node-1": "info"
        },
        "tilde_db_field_per_node": {
          "node-4": "",
          "node-2": "",
          "node-3": "",
          "node-1": ""
        },
        "tilde_db_field_literal_tilde_per_node": {
          "node-4": false,
          "node-2": false,
          "node-3": false,
          "node-1": false
        },
        "tilde_doctor_storage_per_node": {
          "node-4": "error",
          "node-2": "error",
          "node-3": "error",
          "node-1": "error"
        },
        "absolute_doctor_storage_per_node": {
          "node-4": "error",
          "node-2": "error",
          "node-3": "error",
          "node-1": "error"
        },
        "interchange_holds": true
      },
      "reasons": []
    },
    {
      "scenario": "S24",
      "pass": true,
      "expected_verdict": "RED",
      "actual_verdict": "RED",
      "expected_red_reason": "Issue #318 — MCP stdio writes bypass federation fanout (closes in Patch 2)",
      "run_id": "20260502223525-3750",
      "namespace": "test/S24/20260502223525-3750",
      "outputs": {
        "phase1_http_replication_ok": true,
        "phase1_peer_counts": {
          "node-2": 1,
          "node-3": 1,
          "node-4": 1
        },
        "phase2_mcp_replication_per_tool": {
          "memory_store": 0,
          "memory_update": 0,
          "memory_delete": 1,
          "memory_link": 1,
          "memory_promote": 0,
          "memory_consolidate": 1,
          "memory_forget": 0
        },
        "phase2_mcp_replication_per_tool_per_peer": {
          "memory_store": {
            "node-2": 0,
            "node-3": 0,
            "node-4": 0
          },
          "memory_update": {
            "node-2": 0,
            "node-3": 0,
            "node-4": 0
          },
          "memory_delete": {
            "node-2": 1,
            "node-3": 1,
            "node-4": 1
          },
          "memory_link": {
            "node-2": 1,
            "node-3": 1,
            "node-4": 1
          },
          "memory_promote": {
            "node-2": 0,
            "node-3": 0,
            "node-4": 0
          },
          "memory_consolidate": {
            "node-2": 1,
            "node-3": 1,
            "node-4": 1
          },
          "memory_forget": {
            "node-2": 0,
            "node-3": 0,
            "node-4": 0
          }
        },
        "phase2_local_audit_present": false,
        "phase2_local_counts": {
          "memory_store": 0,
          "memory_update": 0,
          "memory_delete": 0,
          "memory_link": 0,
          "memory_promote": 0,
          "memory_consolidate": 0,
          "memory_forget": 0
        },
        "tools_probed": [
          "memory_store",
          "memory_update",
          "memory_delete",
          "memory_link",
          "memory_promote",
          "memory_consolidate",
          "memory_forget"
        ]
      },
      "reasons": [
        "majority-bypass: 3/7 tools leaked (≤ half) — #318 still dominant; partial-fix or instrumentation noise",
        "phase 2 writes not all visible on NODE_A locally — some MCP stdio calls failed; verdict may not reflect #318 cleanly"
      ]
    },
    {
      "scenario": "S25",
      "pass": false,
      "expected_verdict": "GREEN",
      "actual_verdict": "RED",
      "expected_green_reason": "v0.6.3.1 audit substrate enabled; HTTP writes must produce a chained, verifiable trail",
      "run_id": "20260502223713-4027",
      "outputs": {
        "per_node_audit": {
          "node-1": {
            "rc": 2,
            "ok": false,
            "lines": 0,
            "head_hash": ""
          },
          "node-2": {
            "rc": 2,
            "ok": false,
            "lines": 0,
            "head_hash": ""
          },
          "node-3": {
            "rc": 2,
            "ok": false,
            "lines": 0,
            "head_hash": ""
          },
          "node-4": {
            "rc": 2,
            "ok": false,
            "lines": 0,
            "head_hash": ""
          }
        },
        "writes_per_node": 25,
        "total_writes": 100
      },
      "reasons": [
        "node-1 verify rc=2 (expected 0)",
        "node-1 verify ok=false (expected true)",
        "node-1 line_count=0 (expected >=25)",
        "node-1 head_hash empty (expected non-empty)",
        "node-2 verify rc=2 (expected 0)",
        "node-2 verify ok=false (expected true)",
        "node-2 line_count=0 (expected >=25)",
        "node-2 head_hash empty (expected non-empty)",
        "node-3 verify rc=2 (expected 0)",
        "node-3 verify ok=false (expected true)",
        "node-3 line_count=0 (expected >=25)",
        "node-3 head_hash empty (expected non-empty)",
        "node-4 verify rc=2 (expected 0)",
        "node-4 verify ok=false (expected true)",
        "node-4 line_count=0 (expected >=25)",
        "node-4 head_hash empty (expected non-empty)"
      ]
    },
    {
      "scenario": "S26",
      "pass": false,
      "expected_verdict": "GREEN",
      "actual_verdict": "RED",
      "expected_green_reason": "byte-level mutation of audit.jsonl must trigger ai-memory audit verify rc!=0 + ok=false; restore from backup must re-verify clean",
      "run_id": "20260502223734-4110",
      "outputs": {
        "before_tamper": {
          "rc": 2,
          "ok": false,
          "head_hash": "",
          "line_count": 157
        },
        "after_tamper": {
          "rc": 2,
          "ok": false,
          "tamper_detected": false,
          "error_field": "empty-verify-output"
        },
        "after_restore": {
          "rc": 2,
          "ok": false,
          "head_hash": "",
          "line_count": 157
        },
        "tamper_detection_fired": true,
        "restore_succeeded": false,
        "chattr_removed_for_tamper": true,
        "backup_ok": true,
        "remote_errors": [
          "restore-cp-failed"
        ]
      },
      "reasons": [
        "restore did not re-verify clean: rc=2 ok=false (expected rc=0 + ok=true; restore_ok=false)"
      ]
    },
    {
      "scenario": "S27",
      "pass": true,
      "expected_verdict": "GREEN",
      "actual_verdict": "GREEN",
      "expected_green_reason": "OS append-only flag must block non-append writes from root + non-root while permitting legitimate audit-hook appends",
      "run_id": "20260502223735-4148",
      "outputs": {
        "lsattr_flags": "-----a----------------",
        "chattr_supported": true,
        "nonroot_write_blocked": true,
        "root_dd_blocked": true,
        "root_truncate_blocked": true,
        "append_legitimate_worked": true,
        "lines_before": 157,
        "lines_after_append": 158
      },
      "reasons": []
    },
    {
      "scenario": "S28",
      "pass": false,
      "expected_verdict": "GREEN",
      "actual_verdict": "RED",
      "outputs": {
        "update_immutability": true,
        "dedup_preserves": true,
        "sync_preserves": true,
        "import_preserves": false,
        "original_agent_id": "",
        "post_update_agent_id": "ai:alice",
        "consolidated_source_agents": [
          "ai:alice",
          "ai:bob"
        ],
        "node2_synced_agent_id": "ai:alice",
        "imported_agent_id": ""
      },
      "reasons": [
        "step4: imported memory has agent_id='', expected 'ai:alice'"
      ]
    },
    {
      "scenario": "S29",
      "pass": false,
      "expected_verdict": "GREEN",
      "actual_verdict": "UNKNOWN",
      "outputs": {
        "pending_state_correct": false,
        "approve_propagates": false,
        "deny_propagates": false,
        "policy_installed": false,
        "alice_pending_id": "9335036c-1dc1-4764-bc03-70aa5420a042",
        "bob_pending_id": "fb9c37b1-f746-4d80-9e34-5f2e69fa7cf7",
        "approve_status_code": 404,
        "reject_status_code": 404,
        "node2_recall_after_approve_count": 1,
        "node2_pending_after_decisions_count": 0
      },
      "reasons": [
        "step1: namespace policy install failed via both primary (PUT /namespaces/.../policy) and fallback (POST /namespaces/standards) — http_code=404 alt_code=404",
        "step2: pending state not asserted — code=201, body_state='', pending_has=, recall_visible_count=1",
        "step3: approve did not propagate cleanly — node-2 recall_count=1, node-2 pending_has_alice=, approve_code=404",
        "step4: deny did not propagate cleanly — node-2 has_bob_in_recall=true, node-2 pending_has_bob=, reject_code=404"
      ]
    },
    {
      "scenario": "S30",
      "pass": false,
      "expected_verdict": "GREEN",
      "actual_verdict": "RED",
      "outputs": {
        "notify_inbox_roundtrip": false,
        "hmac_verified": false,
        "federation_fanout": false,
        "subscription_id_bob": "",
        "subscription_id_charlie": "",
        "notification_id_bob": "",
        "notification_id_charlie": "",
        "inbox_unread_count_bob": 0,
        "webhook_body_captured": false,
        "webhook_signature_header": "",
        "webhook_recomputed_hmac": "",
        "node3_inbox_count_charlie": 0
      },
      "reasons": [
        "step1: bob's subscription not registered — response head: Failed to deserialize the JSON body into the target type: events: invalid type: sequence, expected a string at line 1 column 84",
        "step3: bob's inbox on node-2 had no matching item after 8s settle (inbox_count=0)",
        "step4: webhook listener captured nothing on node-3:19030 — subscription's webhook may not be honoured by this build",
        "step5: federation fanout did not deliver — charlie's inbox on node-3 had no matching item (count=0)"
      ]
    },
    {
      "scenario": "S31",
      "pass": true,
      "expected_verdict": "NOT_BUILT",
      "actual_verdict": "NOT_BUILT",
      "outputs": {
        "db_header_opaque": false,
        "plain_open_rejected": false,
        "keyed_open_works": false,
        "passphrase_not_in_binary": true,
        "db_path": "/var/lib/ai-memory/a2a.db",
        "db_header_hex": "53514c69746520666f726d6174203300",
        "plain_open_diagnostic": "archived_memories     memories_fts_data     pending_actions     \nentity_aliases        memories_fts_docsize  schema_version      \nmemories              memories_fts_idx      subscriptions       \nmemories_fts          memory_links          sync_state          \nmemories_fts_config   namespace_meta      ",
        "keyed_open_table_names": [],
        "passphrase_source": ""
      },
      "reasons": [
        "SQLCipher not present in this v0.6.3.1 build — DB header is plain SQLite magic and stock sqlite3 reads it. Deviation from user brief flagged."
      ]
    }
  ],
  "reasons": [
    "node-1 head_hash empty (expected non-empty)",
    "node-1 line_count=0 (expected >=25)",
    "node-1 verify ok=false (expected true)",
    "node-1 verify rc=2 (expected 0)",
    "node-2 head_hash empty (expected non-empty)",
    "node-2 line_count=0 (expected >=25)",
    "node-2 verify ok=false (expected true)",
    "node-2 verify rc=2 (expected 0)",
    "node-3 head_hash empty (expected non-empty)",
    "node-3 line_count=0 (expected >=25)",
    "node-3 verify ok=false (expected true)",
    "node-3 verify rc=2 (expected 0)",
    "node-4 head_hash empty (expected non-empty)",
    "node-4 line_count=0 (expected >=25)",
    "node-4 verify ok=false (expected true)",
    "node-4 verify rc=2 (expected 0)",
    "restore did not re-verify clean: rc=2 ok=false (expected rc=0 + ok=true; restore_ok=false)",
    "step1: bob's subscription not registered — response head: Failed to deserialize the JSON body into the target type: events: invalid type: sequence, expected a string at line 1 column 84",
    "step1: namespace policy install failed via both primary (PUT /namespaces/.../policy) and fallback (POST /namespaces/standards) — http_code=404 alt_code=404",
    "step2: pending state not asserted — code=201, body_state='', pending_has=, recall_visible_count=1",
    "step3: approve did not propagate cleanly — node-2 recall_count=1, node-2 pending_has_alice=, approve_code=404",
    "step3: bob's inbox on node-2 had no matching item after 8s settle (inbox_count=0)",
    "step4: deny did not propagate cleanly — node-2 has_bob_in_recall=true, node-2 pending_has_bob=, reject_code=404",
    "step4: imported memory has agent_id='', expected 'ai:alice'",
    "step4: webhook listener captured nothing on node-3:19030 — subscription's webhook may not be honoured by this build",
    "step5: federation fanout did not deliver — charlie's inbox on node-3 had no matching item (count=0)"
  ],
  "meta": {
    "campaign_id": "a2a-ironclaw-v0.6.3.1-r23",
    "agent_group": "ironclaw",
    "ai_memory_git_ref": "v0.6.3.1",
    "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": "161.35.188.35",
          "private_ip": "10.10.0.3"
        },
        {
          "index": 2,
          "role": "agent",
          "agent_id": "ai:bob",
          "public_ip": "167.172.19.250",
          "private_ip": "10.10.0.2"
        },
        {
          "index": 3,
          "role": "agent",
          "agent_id": "ai:charlie",
          "public_ip": "138.197.119.17",
          "private_ip": "10.10.0.4"
        },
        {
          "index": 4,
          "role": "memory-only",
          "agent_id": null,
          "public_ip": "143.198.5.147",
          "private_ip": "10.10.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-05-02T22:21:04Z",
      "ended_at": "2026-05-02T22:35:20Z"
    },
    "ci": {
      "actor": "alphaonedev",
      "workflow_url": "https://github.com/alphaonedev/ai-memory-a2a-v0.6.3.1/actions/runs/25263188963",
      "harness_sha": "e4e00f74e2720d13c3aa97475c12339308090d37",
      "runner_os": "Linux"
    }
  },
  "skipped_reports": []
}
