{
  "schema": 1,
  "sqlstate": "25000",
  "condition_name": "invalid_transaction_state",
  "sources": [
    {
      "id": "src.errcodes.18.6",
      "kind": "upstream_source",
      "source_role": "condition_definition",
      "tag": "REL_18_6",
      "commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
      "path": "src/backend/utils/errcodes.txt",
      "sha256": "6e8de346643ba84aa3c9c6a73360acfc7b2dfb89162c06c08ce9bf5bcd5bbcba",
      "url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/utils/errcodes.txt"
    },
    {
      "id": "src.calls.REL_18_6",
      "kind": "local_artifact",
      "source_role": "source_call_scan",
      "sha256": "9ee8a0e81d8f0825c5c1ae45583439859a26e602bdd4ce2f2a62aa278867ccbf"
    },
    {
      "id": "src.xact.18.6",
      "kind": "upstream_source",
      "source_role": "source_path",
      "tag": "REL_18_6",
      "commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
      "path": "src/backend/access/transam/xact.c",
      "sha256": "75b012c0b047d1dc905a30975c244beec366e45eac0dbf109fd21bcd611a8e39",
      "url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/access/transam/xact.c#L4385-L4387"
    },
    {
      "id": "src.utility.18.6",
      "kind": "upstream_source",
      "source_role": "source_path",
      "tag": "REL_18_6",
      "commit": "724edf9bde9d356724ad384a2e196edc3c9f80f7",
      "path": "src/backend/tcop/utility.c",
      "sha256": "7aae5d07628b6debf8456d1d4ea96f28912232192e56ea25773b4c4b61235a00",
      "url": "https://github.com/postgres/postgres/blob/724edf9bde9d356724ad384a2e196edc3c9f80f7/src/backend/tcop/utility.c#L425-L429"
    }
  ],
  "claims": [
    {
      "id": "identity",
      "statement": "25000 is invalid_transaction_state, the broad Class 25 condition.",
      "sources": [
        "src.errcodes.18.6"
      ],
      "method": "Read the fixed condition row and macro.",
      "limits": "It is a family-level state; active transactions, failed transactions, and parallel-operation restrictions have separate codes."
    },
    {
      "id": "core-paths",
      "statement": "The locked PostgreSQL 18.6 source uses 25000 for internal parallel-operation guards such as defining savepoints or executing a utility during parallel operation.",
      "sources": [
        "src.xact.18.6",
        "src.utility.18.6",
        "src.calls.REL_18_6"
      ],
      "method": "Trace the fixed report groups and exact messages.",
      "limits": "These guards depend on executor/parallel-worker state that a normal safe SQL session cannot establish directly."
    },
    {
      "id": "boundary",
      "statement": "The batch does not claim a natural SQL reproduction for 25000. Use 25001 for an active transaction blocking a utility and 25P02 for a failed transaction; do not replace this boundary with RAISE.",
      "sources": [
        "src.errcodes.18.6",
        "src.calls.REL_18_6"
      ],
      "method": "Compare the class mapping and exhaustive resolved-call scan.",
      "limits": "Extensions or future code can add paths; this is a core 18.6 source boundary, not a universal impossibility theorem."
    }
  ],
  "messages": [
    {
      "id": "parallel-savepoint",
      "sqlstate": "25000",
      "primary_template": "cannot define savepoints during a parallel operation",
      "severity_source": "ERROR",
      "sources": [
        "src.xact.18.6"
      ],
      "limits": "The template is guarded by internal parallel-operation state and is not a user-facing active-transaction diagnostic."
    },
    {
      "id": "parallel-utility",
      "sqlstate": "25000",
      "primary_template": "cannot execute %s during a parallel operation",
      "severity_source": "ERROR",
      "sources": [
        "src.utility.18.6"
      ],
      "limits": "The %s substitution is the utility command name."
    }
  ],
  "usage_evidence": [
    {
      "scope": "core-source-boundary",
      "status": "source_path_confirmed",
      "evidence_ids": [
        "identity",
        "core-paths",
        "boundary"
      ]
    }
  ],
  "runtime": []
}
