{
    "initial": "draft",
    "release": "R47",
    "schema": "antichrist.cx.standing-recovery-portability-state-machine.v1",
    "states": [
        "draft",
        "authorized",
        "presented",
        "accepted",
        "accepted_with_scope_limit",
        "partial_federation",
        "recipient_refused",
        "presentation_revoked",
        "expired_without_use"
    ],
    "terminal": [
        "accepted",
        "accepted_with_scope_limit",
        "partial_federation",
        "recipient_refused",
        "presentation_revoked",
        "expired_without_use"
    ],
    "transitions": [
        {
            "from": "draft",
            "requires": [
                "human_owner",
                "lineage_complete",
                "minimum_necessary"
            ],
            "to": "authorized"
        },
        {
            "from": "authorized",
            "requires": [
                "recipient_binding",
                "purpose_binding",
                "expiry",
                "revocation"
            ],
            "to": "presented"
        },
        {
            "from": "presented",
            "requires": [
                "recipient_acknowledgment"
            ],
            "to": "accepted"
        },
        {
            "from": "presented",
            "requires": [
                "scope_limit"
            ],
            "to": "accepted_with_scope_limit"
        },
        {
            "from": "presented",
            "requires": [
                "uncovered_participant_disclosed"
            ],
            "to": "partial_federation"
        },
        {
            "from": "presented",
            "requires": [
                "equivalent_human_review",
                "non_retaliation"
            ],
            "to": "recipient_refused"
        },
        {
            "from": "authorized",
            "requires": [
                "revocation_owner"
            ],
            "to": "presentation_revoked"
        },
        {
            "from": "presented",
            "requires": [
                "revocation_owner"
            ],
            "to": "presentation_revoked"
        },
        {
            "from": "authorized",
            "requires": [
                "expiry",
                "non_retention"
            ],
            "to": "expired_without_use"
        },
        {
            "from": "presented",
            "requires": [
                "expiry",
                "non_retention"
            ],
            "to": "expired_without_use"
        }
    ]
}
