Status: IN
The 2PC protocol communicates all outcomes (commits, aborts, lock conflicts, unavailability) via `{"outcome": "committed"|"aborted", "reason": ...}` return dicts; no method raises exceptions
Source: entries/2026/05/29/two-phase-commit-test_2pc.md
return {"tx_id": tx_id, "outcome": "aborted", "votes": votes, "reason": abort_reason}
# no exceptions raised for unavailability or conflicts