{
  "artifactClass": "tla-verdict",
  "schemaVersion": "2.2",
  "sources": {
    "hash": "39a3966a0e461493154f081ea814d4ea79b7e8e8bc52f04c607be731f956747e",
    "files": [
      {
        "name": "submission",
        "sha256": "8ef2ceef77d5730adc8f079b0f2195a777cddf763cfd499e8a6a24abe396abed"
      },
      {
        "name": "submission.spec",
        "sha256": "a66cc1246337977bc1d09ea98b87fe9639113ee95d50c2b1bc95b291f266b8ff"
      },
      {
        "name": "intake_handlers_guarded",
        "sha256": "1ebffc317bb692060283a7588e8db5c5060c11e060259e30964156afa9b38db1"
      }
    ]
  },
  "module": "SubmissionGuarded",
  "bound": 8,
  "truncatedOps": 0,
  "interleavingsExplored": 6,
  "uniqueOutcomes": 2,
  "declaredSpecs": [
    {
      "ref": "Agora/Spec/Submission::submission_spec",
      "location": "submission.spec:51:19"
    }
  ],
  "invariants": [
    {
      "invariant": "causal-consistency",
      "verdict": "holds",
      "kind": "built-in",
      "method": "complete-causal-graph",
      "detail": "the complete causal graph over 4 effect operations admits an ordering; schedule exploration remains separately bounded",
      "spec": null,
      "propertyLocation": null,
      "modelBinding": null,
      "counterexample": []
    },
    {
      "invariant": "race-free:submission_state",
      "verdict": "violated",
      "kind": "built-in",
      "method": "bounded-interleavings",
      "detail": "2 valid orderings over 'submission_state' produce differing effect sequences",
      "spec": null,
      "propertyLocation": null,
      "modelBinding": null,
      "counterexample": [
        [
          {
            "index": 0,
            "binding": "advance_to_processing",
            "primitive": "read",
            "stateRef": "submission_state",
            "location": "intake_handlers_guarded:21:12",
            "modelState": null,
            "input": null
          },
          {
            "index": 1,
            "binding": "advance_to_processing",
            "primitive": "write",
            "stateRef": "submission_state",
            "location": "intake_handlers_guarded:23:18",
            "modelState": null,
            "input": null
          },
          {
            "index": 2,
            "binding": "archive_submission",
            "primitive": "read",
            "stateRef": "submission_state",
            "location": "intake_handlers_guarded:27:12",
            "modelState": null,
            "input": null
          },
          {
            "index": 3,
            "binding": "archive_submission",
            "primitive": "write",
            "stateRef": "submission_state",
            "location": "intake_handlers_guarded:29:18",
            "modelState": null,
            "input": null
          }
        ],
        [
          {
            "index": 0,
            "binding": "advance_to_processing",
            "primitive": "read",
            "stateRef": "submission_state",
            "location": "intake_handlers_guarded:21:12",
            "modelState": null,
            "input": null
          },
          {
            "index": 2,
            "binding": "archive_submission",
            "primitive": "read",
            "stateRef": "submission_state",
            "location": "intake_handlers_guarded:27:12",
            "modelState": null,
            "input": null
          },
          {
            "index": 3,
            "binding": "archive_submission",
            "primitive": "write",
            "stateRef": "submission_state",
            "location": "intake_handlers_guarded:29:18",
            "modelState": null,
            "input": null
          },
          {
            "index": 1,
            "binding": "advance_to_processing",
            "primitive": "write",
            "stateRef": "submission_state",
            "location": "intake_handlers_guarded:23:18",
            "modelState": null,
            "input": null
          }
        ]
      ]
    },
    {
      "invariant": "only-legal-steps",
      "verdict": "holds",
      "kind": "declared",
      "method": "bounded-interleavings",
      "detail": "6 interleaving(s) explored, every modeled step satisfied 'only-legal-steps'",
      "spec": "Agora/Spec/Submission::submission_spec",
      "propertyLocation": "submission.spec:51:19",
      "modelBinding": "declared-only",
      "counterexample": []
    },
    {
      "invariant": "terminal-is-final",
      "verdict": "holds",
      "kind": "declared",
      "method": "bounded-interleavings",
      "detail": "6 interleaving(s) explored, every modeled step satisfied 'terminal-is-final'",
      "spec": "Agora/Spec/Submission::submission_spec",
      "propertyLocation": "submission.spec:51:19",
      "modelBinding": "declared-only",
      "counterexample": []
    },
    {
      "invariant": "stale-read:only-legal-steps",
      "verdict": "violated",
      "kind": "declared",
      "method": "bounded-interleavings",
      "detail": "under read-capture semantics (a handler that reads the modeled cell before writing applies its declared step to the value it read, not the value at write time): 'archive_submission' steps the model Processing -> Received",
      "spec": "Agora/Spec/Submission::submission_spec",
      "propertyLocation": "submission.spec:51:19",
      "modelBinding": "declared-only",
      "counterexample": [
        [
          {
            "index": 0,
            "binding": "advance_to_processing",
            "primitive": "read",
            "stateRef": "submission_state",
            "location": "intake_handlers_guarded:21:12",
            "modelState": "Received",
            "input": null
          },
          {
            "index": 2,
            "binding": "archive_submission",
            "primitive": "read",
            "stateRef": "submission_state",
            "location": "intake_handlers_guarded:27:12",
            "modelState": "Received",
            "input": null
          },
          {
            "index": 1,
            "binding": "advance_to_processing",
            "primitive": "write",
            "stateRef": "submission_state",
            "location": "intake_handlers_guarded:23:18",
            "modelState": "Processing",
            "input": null
          },
          {
            "index": 3,
            "binding": "archive_submission",
            "primitive": "write",
            "stateRef": "submission_state",
            "location": "intake_handlers_guarded:29:18",
            "modelState": "Received",
            "input": null
          }
        ]
      ]
    }
  ],
  "specWitness": "---- MODULE SubmissionGuarded ----\nEXTENDS Naturals, Sequences\n\nVARIABLES state, submission_state\n\n\\* submission_state : TyConst(Defined(PackageName(NonEmptyList(Agora, Domain)),TypeName(Constructor(SubmissionState))))\n\nInit ==\n  /\\ state = 0\n  /\\ submission_state = 0\n\nAction_Agora_Intake_Guarded_archive_submission ==\n  /\\ UNCHANGED <<state>> \\* intake_handlers_guarded:27:3\n  /\\ UNCHANGED <<submission_state>> \\* intake_handlers_guarded:27:12\n  /\\ UNCHANGED <<state>> \\* intake_handlers_guarded:30:19\n  /\\ submission_state' \\in Nat \\* intake_handlers_guarded:29:18\n  /\\ UNCHANGED <<state>> \\* intake_handlers_guarded:28:5\n  /\\ UNCHANGED <<state>> \\* intake_handlers_guarded:28:5\n  /\\ UNCHANGED <<state>> \\* intake_handlers_guarded:28:5\n  /\\ UNCHANGED <<state>> \\* intake_handlers_guarded:28:5\n\nAction_Agora_Intake_Guarded_advance_to_processing ==\n  /\\ UNCHANGED <<submission_state>> \\* intake_handlers_guarded:21:12\n  /\\ UNCHANGED <<state>> \\* intake_handlers_guarded:24:19\n  /\\ UNCHANGED <<state>> \\* intake_handlers_guarded:21:3\n  /\\ submission_state' \\in Nat \\* intake_handlers_guarded:23:18\n  /\\ UNCHANGED <<state>> \\* intake_handlers_guarded:22:5\n  /\\ UNCHANGED <<state>> \\* intake_handlers_guarded:22:5\n  /\\ UNCHANGED <<state>> \\* intake_handlers_guarded:22:5\n  /\\ UNCHANGED <<state>> \\* intake_handlers_guarded:22:5\n\nNext ==\n  Action_Agora_Intake_Guarded_archive_submission\n  \\/ Action_Agora_Intake_Guarded_advance_to_processing\n\nSpec ==\n  Init /\\ [][Next]_<<state, submission_state>>\n\n=============================================================================\n\n\\* Inv_only_legal_steps == declared property 'only-legal-steps' of Agora/Spec/Submission::submission_spec, checked natively (see verdict artifact)\n\\* Inv_terminal_is_final == declared property 'terminal-is-final' of Agora/Spec/Submission::submission_spec, checked natively (see verdict artifact)\n"
}