{"id":"2pc-result-dict-not-exceptions","text":"The 2PC protocol communicates all outcomes (commits, aborts, lock conflicts, unavailability) via `{\"outcome\": \"committed\"|\"aborted\", \"reason\": ...}` return dicts; no method raises exceptions","truth_value":"IN","source":"entries/2026/05/29/two-phase-commit-test_2pc.md","source_url":"","source_hash":"","justifications":[],"dependents":[],"metadata":{"example":"return {\"tx_id\": tx_id, \"outcome\": \"aborted\", \"votes\": votes, \"reason\": abort_reason}\n# no exceptions raised for unavailability or conflicts"},"explanation":{"steps":[{"node":"2pc-result-dict-not-exceptions","truth_value":"IN","reason":"premise"}]}}