Python 3.14.4 SQLite 3.51.3
PASS fee_fact_does_not_post actual=[]
PASS reversal_preserves_original actual=[('T1', 0, 'receivable', 12000), ('T1', 1, 'revenue', -12000)]
PASS reversal_zero_balances actual={'receivable': 0, 'revenue': 0}
PASS discount_is_not_cash_refund actual={'cash': 10000, 'receivable': -2500, 'revenue': -7500}
PASS final_balances_minor actual={'cash': 7500, 'receivable': 0, 'revenue': -7500}
PASS six_balanced_journals actual=6
PASS every_journal_two_legs_zero actual=True
REJECT unbalanced ValueError: unbalanced journal
REJECT cross_currency ValueError: account currency mismatch
REJECT single_entry ValueError: at least two entries
REJECT wrong_fact_amount ValueError: fact amount mismatch
REJECT duplicate_journal IntegrityError: UNIQUE constraint failed: journal.id
REJECT duplicate_reversal IntegrityError: UNIQUE constraint failed: journal.reverses
REJECT overwrite_entry IntegrityError: immutable entry
PASS rejections_preserve_entries actual=[('T1', 0, 'receivable', 12000), ('T1', 1, 'revenue', -12000), ('T1-R', 0, 'receivable', -12000), ('T1-R', 1, 'revenue', 12000), ('T2', 0, 'receivable', 10000), ('T2', 1, 'revenue', -10000), ('T3', 0, 'cash', 10000), ('T3', 1, 'receivable', -10000), ('T4', 0, 'revenue', 2500), ('T4', 1, 'receivable', -2500), ('T5', 0, 'receivable', 2500), ('T5', 1, 'cash', -2500)]
REJECT extra_precision ValueError: fractional minor unit
REJECT long_fraction_not_rounded ValueError: fractional minor unit
REJECT tiny_fraction_not_zero ValueError: fractional minor unit
REJECT nonfinite ValueError: amount outside teaching range
REJECT mid_write_failure RuntimeError: injected storage failure
PASS database_rollback_entries actual=[('T1', 0, 'receivable', 12000), ('T1', 1, 'revenue', -12000), ('T1-R', 0, 'receivable', -12000), ('T1-R', 1, 'revenue', 12000), ('T2', 0, 'receivable', 10000), ('T2', 1, 'revenue', -10000), ('T3', 0, 'cash', 10000), ('T3', 1, 'receivable', -10000), ('T4', 0, 'revenue', 2500), ('T4', 1, 'receivable', -2500), ('T5', 0, 'receivable', 2500), ('T5', 1, 'cash', -2500)]
PASS database_rollback_header actual=0
PASS db_commit_can_be_unbalanced actual=10000
PASS 13: 23 scenarios; accounting_validation != database_atomicity
