test_01_every_base_field_matches_manual_trace (__main__.ContractChecks.test_01_every_base_field_matches_manual_trace) ... ok
test_02_leading_zeroes_and_entities_remain_distinct (__main__.ContractChecks.test_02_leading_zeroes_and_entities_remain_distinct) ... ok
test_03_effective_date_selects_mapping_at_half_open_boundary (__main__.ContractChecks.test_03_effective_date_selects_mapping_at_half_open_boundary) ... ok
test_04_late_receipt_before_extraction_does_not_remove_eligibility (__main__.ContractChecks.test_04_late_receipt_before_extraction_does_not_remove_eligibility) ... ok
test_05_future_effective_exclusion_precedes_semantic_checks (__main__.ContractChecks.test_05_future_effective_exclusion_precedes_semantic_checks) ... ok
test_06_zero_matching_rules_quarantines (__main__.ContractChecks.test_06_zero_matching_rules_quarantines) ... ok
test_07_overlapping_mapping_rules_quarantine_without_first_match_choice (__main__.ContractChecks.test_07_overlapping_mapping_rules_quarantine_without_first_match_choice) ... ok
test_08_ready_requires_active_but_open_allows_dormant (__main__.ContractChecks.test_08_ready_requires_active_but_open_allows_dormant) ... ok
test_09_quarantined_and_missing_parents_have_distinct_reasons (__main__.ContractChecks.test_09_quarantined_and_missing_parents_have_distinct_reasons) ... ok
test_10_semantic_reasons_accumulate_and_do_not_create_detail (__main__.ContractChecks.test_10_semantic_reasons_accumulate_and_do_not_create_detail) ... ok
test_11_empty_zero_negative_and_incomplete_splits_are_rejected (__main__.ContractChecks.test_11_empty_zero_negative_and_incomplete_splits_are_rejected) ... ok
test_12_duplicate_participant_does_not_pass_a_correct_weight_sum (__main__.ContractChecks.test_12_duplicate_participant_does_not_pass_a_correct_weight_sum) ... ok
test_13_unknown_participant_is_not_invented (__main__.ContractChecks.test_13_unknown_participant_is_not_invented) ... ok
test_14_non_integral_split_has_no_implicit_rounding (__main__.ContractChecks.test_14_non_integral_split_has_no_implicit_rounding) ... ok
test_15_zero_and_negative_signed_allocations_preserve_detail (__main__.ContractChecks.test_15_zero_and_negative_signed_allocations_preserve_detail) ... ok
test_16_every_source_has_one_outcome_and_only_migrated_sources_have_detail (__main__.ContractChecks.test_16_every_source_has_one_outcome_and_only_migrated_sources_have_detail) ... ok
test_17_counterexample_preserves_summary_and_count_but_loses_identity (__main__.ContractChecks.test_17_counterexample_preserves_summary_and_count_but_loses_identity) ... ok
test_18_existing_wrong_account_still_fails_relationship (__main__.ContractChecks.test_18_existing_wrong_account_still_fails_relationship) ... ok
test_19_changed_mapping_unit_sign_weight_or_source_fails_exact_reconciliation (__main__.ContractChecks.test_19_changed_mapping_unit_sign_weight_or_source_fails_exact_reconciliation) ... ok
test_20_output_order_is_irrelevant_but_extra_or_missing_rows_are_not (__main__.ContractChecks.test_20_output_order_is_irrelevant_but_extra_or_missing_rows_are_not) ... ok
test_21_malformed_results_fail_without_unhandled_diagnostics (__main__.ContractChecks.test_21_malformed_results_fail_without_unhandled_diagnostics) ... ok
test_22_duplicate_input_identities_fail_validation (__main__.ContractChecks.test_22_duplicate_input_identities_fail_validation) ... ok
test_23_structural_types_dates_and_bounds_fail_explicitly (__main__.ContractChecks.test_23_structural_types_dates_and_bounds_fail_explicitly) ... ok
test_24_empty_extraction_is_valid_and_input_is_never_mutated (__main__.ContractChecks.test_24_empty_extraction_is_valid_and_input_is_never_mutated) ... ok
test_25_cli_runs_from_unrelated_directory_and_reports_expected_failures (__main__.ContractChecks.test_25_cli_runs_from_unrelated_directory_and_reports_expected_failures) ... ok

----------------------------------------------------------------------
Ran 25 tests in 0.304s

OK
