{
  "scenario_name": "latecomer-forward-secrecy/v1",
  "vector_version": "1",
  "conformance_version": "0.9.20",
  "seed": null,
  "scenario": {
    "name": "latecomer-forward-secrecy/v1",
    "spec_version": "2",
    "clients": [
      "alice",
      "bob",
      "carol"
    ],
    "steps": [
      {
        "type": "create_group",
        "creator": "alice",
        "name": "latecomer",
        "invitees": [
          "bob"
        ],
        "required_features": [],
        "pending": "create"
      },
      {
        "type": "acknowledge_outbound",
        "client": "alice",
        "publication": "create",
        "outcome": "accepted"
      },
      {
        "type": "deliver_all"
      },
      {
        "type": "tick",
        "clients": [
          "bob"
        ]
      },
      {
        "type": "clear_events",
        "clients": [
          "alice",
          "bob",
          "carol"
        ]
      },
      {
        "type": "send_app_message",
        "sender": "alice",
        "payload": "latecomer:pre:r1:alice"
      },
      {
        "type": "send_app_message",
        "sender": "bob",
        "payload": "latecomer:pre:r1:bob"
      },
      {
        "type": "deliver_all"
      },
      {
        "type": "tick",
        "clients": [
          "alice",
          "bob"
        ]
      },
      {
        "type": "send_app_message",
        "sender": "alice",
        "payload": "latecomer:pre:r2:alice"
      },
      {
        "type": "send_app_message",
        "sender": "bob",
        "payload": "latecomer:pre:r2:bob"
      },
      {
        "type": "deliver_all"
      },
      {
        "type": "tick",
        "clients": [
          "alice",
          "bob"
        ]
      },
      {
        "type": "invite_members",
        "inviter": "alice",
        "invitees": [
          "carol"
        ],
        "pending": "invite-carol"
      },
      {
        "type": "acknowledge_outbound",
        "client": "alice",
        "publication": "invite-carol",
        "outcome": "accepted"
      },
      {
        "type": "deliver_all"
      },
      {
        "type": "tick",
        "clients": [
          "bob",
          "carol"
        ]
      },
      {
        "type": "send_app_message",
        "sender": "alice",
        "payload": "latecomer:post:r1:alice"
      },
      {
        "type": "send_app_message",
        "sender": "bob",
        "payload": "latecomer:post:r1:bob"
      },
      {
        "type": "send_app_message",
        "sender": "carol",
        "payload": "latecomer:post:r1:carol"
      },
      {
        "type": "deliver_all"
      },
      {
        "type": "tick",
        "clients": [
          "alice",
          "bob",
          "carol"
        ]
      },
      {
        "type": "send_app_message",
        "sender": "alice",
        "payload": "latecomer:post:r2:alice"
      },
      {
        "type": "send_app_message",
        "sender": "bob",
        "payload": "latecomer:post:r2:bob"
      },
      {
        "type": "send_app_message",
        "sender": "carol",
        "payload": "latecomer:post:r2:carol"
      },
      {
        "type": "deliver_all"
      },
      {
        "type": "tick",
        "clients": [
          "alice",
          "bob",
          "carol"
        ]
      },
      {
        "type": "assert",
        "assertion": {
          "mode": "exactly",
          "predicate": {
            "type": "payload_count",
            "client": "carol",
            "payload": "latecomer:pre:r1:alice",
            "count": 0
          }
        }
      },
      {
        "type": "assert",
        "assertion": {
          "mode": "exactly",
          "predicate": {
            "type": "payload_count",
            "client": "carol",
            "payload": "latecomer:pre:r2:bob",
            "count": 0
          }
        }
      },
      {
        "type": "observe_exact",
        "clients": [
          "alice",
          "bob",
          "carol"
        ]
      }
    ]
  },
  "expected_outcomes": [
    {
      "type": "pending_resolution",
      "step_index": 1,
      "client": "alice",
      "pending": "create",
      "resolution": "confirmed"
    },
    {
      "type": "pending_resolution",
      "step_index": 14,
      "client": "alice",
      "pending": "invite-carol",
      "resolution": "confirmed"
    },
    {
      "type": "client_state",
      "client": "alice",
      "epoch": 2,
      "member_count": 3,
      "received_payloads": [
        "latecomer:pre:r1:bob",
        "latecomer:pre:r2:bob",
        "latecomer:post:r1:bob",
        "latecomer:post:r1:carol",
        "latecomer:post:r2:bob",
        "latecomer:post:r2:carol"
      ]
    },
    {
      "type": "client_state",
      "client": "bob",
      "epoch": 2,
      "member_count": 3,
      "received_payloads": [
        "latecomer:pre:r1:alice",
        "latecomer:pre:r2:alice",
        "latecomer:post:r1:alice",
        "latecomer:post:r1:carol",
        "latecomer:post:r2:alice",
        "latecomer:post:r2:carol"
      ]
    },
    {
      "type": "client_state",
      "client": "carol",
      "epoch": 2,
      "member_count": 3,
      "received_payloads": [
        "latecomer:post:r1:alice",
        "latecomer:post:r1:bob",
        "latecomer:post:r2:alice",
        "latecomer:post:r2:bob"
      ]
    },
    {
      "type": "clients_converged",
      "clients": [
        "alice",
        "bob",
        "carol"
      ],
      "epoch": 2,
      "member_count": 3
    },
    {
      "type": "no_pending_work",
      "clients": [
        "alice",
        "bob"
      ]
    }
  ]
}
