test_artifact_tampering_rejected (test_multipart_lab.MultipartTests.test_artifact_tampering_rejected) ... ok
test_baseline_changed_requires_both_rebuilds (test_multipart_lab.MultipartTests.test_baseline_changed_requires_both_rebuilds) ... ok
test_changed_extension_source_requires_rebuild (test_multipart_lab.MultipartTests.test_changed_extension_source_requires_rebuild) ... ok
test_cross_scope_requirement_rejected (test_multipart_lab.MultipartTests.test_cross_scope_requirement_rejected) ... ok
test_duplicate_requirement_for_same_part_rejected (test_multipart_lab.MultipartTests.test_duplicate_requirement_for_same_part_rejected) ... ok
test_duplicate_requirement_identity_rejected (test_multipart_lab.MultipartTests.test_duplicate_requirement_identity_rejected) ... ok
test_fractional_quantity_rejected (test_multipart_lab.MultipartTests.test_fractional_quantity_rejected) ... ok
test_incompatible_unit_rejected (test_multipart_lab.MultipartTests.test_incompatible_unit_rejected) ... ok
test_increased_second_requirement_has_its_own_shortage (test_multipart_lab.MultipartTests.test_increased_second_requirement_has_its_own_shortage) ... ok
test_invalid_rebuild_refuses_previous_successful_outputs (test_multipart_lab.MultipartTests.test_invalid_rebuild_refuses_previous_successful_outputs) ... ok
test_long_baseline_id_migrates_with_bounded_stable_line_id (test_multipart_lab.MultipartTests.test_long_baseline_id_migrates_with_bounded_stable_line_id) ... ok
test_migration_preserves_ids_lineage_and_baseline (test_multipart_lab.MultipartTests.test_migration_preserves_ids_lineage_and_baseline) ... ok
test_missing_second_part_snapshot_is_not_zero_stock (test_multipart_lab.MultipartTests.test_missing_second_part_snapshot_is_not_zero_stock) ... ok
test_multiple_depots_require_selection (test_multipart_lab.MultipartTests.test_multiple_depots_require_selection) ... ok
test_query_preserves_other_scope (test_multipart_lab.MultipartTests.test_query_preserves_other_scope) ... ok
test_shapes_reject_legacy_fields_and_bad_line_type (test_multipart_lab.MultipartTests.test_shapes_reject_legacy_fields_and_bad_line_type) ... ok
test_sources_resolve_for_both_requirements (test_multipart_lab.MultipartTests.test_sources_resolve_for_both_requirements) ... ok
test_stale_second_part_blocks_whole_order (test_multipart_lab.MultipartTests.test_stale_second_part_blocks_whole_order) ... ok
test_two_independent_part_results (test_multipart_lab.MultipartTests.test_two_independent_part_results) ... ok
test_unit_count_mismatch_rejected (test_multipart_lab.MultipartTests.test_unit_count_mismatch_rejected) ... ok

----------------------------------------------------------------------
Ran 20 tests in 12.500s

OK
