{ "_comment": "Gate MLS test vectors — validated by test_mls_vectors.py", "gate_compose_decrypt_round_trip": { "description": "Compose a gate message, decrypt with the same identity, verify plaintext round-trips", "gate_id": "finance", "label": "scribe", "plaintext": "hello mls gate", "expected_format": "mls1", "expected_identity_scope": "persona" }, "gate_compose_decrypt_with_reply_to": { "description": "Compose with reply_to, verify hidden reply_to survives encrypt/decrypt", "gate_id": "finance", "labels": ["sender", "receiver"], "plaintext": "hello hidden thread", "reply_to": "evt-parent-hidden", "expected_identity_scope": "persona" }, "gate_two_persona_cross_decrypt": { "description": "Two personas in same gate can decrypt each other's messages", "gate_id": "intel", "labels": ["alice", "bob"], "messages": [ {"sender": "alice", "plaintext": "message from alice"}, {"sender": "bob", "plaintext": "message from bob"} ] }, "gate_member_add_epoch_advance": { "description": "Adding a member advances the epoch; new member can decrypt post-add messages", "gate_id": "ops", "initial_label": "founder", "added_label": "recruit", "pre_add_plaintext": "before recruit joined", "post_add_plaintext": "after recruit joined" }, "gate_member_remove_epoch_advance": { "description": "Removing a member advances the epoch; removed member cannot decrypt post-remove messages", "gate_id": "ops", "labels": ["keeper", "evicted"], "pre_remove_plaintext": "before eviction", "post_remove_plaintext": "after eviction" }, "gate_rekey_epoch_advance": { "description": "Explicit rekey (without member change) advances epoch", "gate_id": "rotating", "label": "operator", "plaintext_before": "pre-rekey", "plaintext_after": "post-rekey" }, "gate_export_import_state": { "description": "Export gate state snapshot, verify opaque blob contains no plaintext", "gate_id": "finance", "label": "scribe", "plaintext": "opaque export test", "forbidden_in_blob": ["opaque export test", "gate_envelope"] }, "gate_chain_plaintext_stamp": { "description": "Decrypt stamps local plaintext on hashchain; lookup returns it without re-decrypting", "gate_id": "finance", "label": "stamper", "plaintext": "stamp this on chain", "event_id": "evt-stamp-test-001" }, "gate_envelope_policy_recovery": { "description": "When envelope_policy=envelope_recovery, gate_envelope field is populated for cross-node decrypt", "gate_id": "recovery", "label": "sender", "plaintext": "recoverable message" } }