test_active_release_cannot_rewrite_rollback_history (test_workflow.WorkflowTest.test_active_release_cannot_rewrite_rollback_history) ... ok
test_batch_limit_preserves_incumbent (test_workflow.WorkflowTest.test_batch_limit_preserves_incumbent) ... ok
test_boolean_is_not_a_numeric_feature (test_workflow.WorkflowTest.test_boolean_is_not_a_numeric_feature) ... ok
test_canary_evaluation_overlap_rejected (test_workflow.WorkflowTest.test_canary_evaluation_overlap_rejected) ... ok
test_canary_training_overlap_rejected (test_workflow.WorkflowTest.test_canary_training_overlap_rejected) ... ok
test_changed_baseline_requires_new_canary (test_workflow.WorkflowTest.test_changed_baseline_requires_new_canary) ... ok
test_corrupt_active_bundle_fails_closed (test_workflow.WorkflowTest.test_corrupt_active_bundle_fails_closed) ... ok
test_corrupt_rollback_target_preserves_working_active_release (test_workflow.WorkflowTest.test_corrupt_rollback_target_preserves_working_active_release) ... ok
test_deterministic_fitting_and_concrete_receipt (test_workflow.WorkflowTest.test_deterministic_fitting_and_concrete_receipt) ... ok
test_duplicate_sample_ids_rejected (test_workflow.WorkflowTest.test_duplicate_sample_ids_rejected) ... ok
test_empty_canary_is_not_healthy_or_quality_evaluable (test_workflow.WorkflowTest.test_empty_canary_is_not_healthy_or_quality_evaluable) ... ok
test_expected_numeric_failure_is_audited_and_invalidates_old_pass (test_workflow.WorkflowTest.test_expected_numeric_failure_is_audited_and_invalidates_old_pass) ... ok
test_extra_feature_is_not_silently_ignored (test_workflow.WorkflowTest.test_extra_feature_is_not_silently_ignored) ... ok
test_failed_audit_write_rolls_back_state_transition (test_workflow.WorkflowTest.test_failed_audit_write_rolls_back_state_transition) ... ok
test_failed_load_preserves_incumbent (test_workflow.WorkflowTest.test_failed_load_preserves_incumbent) ... ok
test_happy_candidate_changes_model_features_and_config (test_workflow.WorkflowTest.test_happy_candidate_changes_model_features_and_config) ... ok
test_huge_integer_is_rejected_without_an_unhandled_overflow (test_workflow.WorkflowTest.test_huge_integer_is_rejected_without_an_unhandled_overflow) ... ok
test_incompatible_candidate_preserves_incumbent (test_workflow.WorkflowTest.test_incompatible_candidate_preserves_incumbent) ... ok
test_input_shift_without_labels_is_not_proven_quality_loss (test_workflow.WorkflowTest.test_input_shift_without_labels_is_not_proven_quality_loss) ... ok
test_integrity_is_rechecked_between_canary_and_promotion (test_workflow.WorkflowTest.test_integrity_is_rechecked_between_canary_and_promotion) ... ok
test_invalid_release_path_is_rejected (test_workflow.WorkflowTest.test_invalid_release_path_is_rejected) ... ok
test_labeled_bad_model_is_healthy_but_quality_fails (test_workflow.WorkflowTest.test_labeled_bad_model_is_healthy_but_quality_fails) ... ok
test_large_finite_inputs_use_a_finite_mean_and_invalidate_old_pass (test_workflow.WorkflowTest.test_large_finite_inputs_use_a_finite_mean_and_invalidate_old_pass) ... ok
test_missing_labels_are_unknown_and_cannot_promote (test_workflow.WorkflowTest.test_missing_labels_are_unknown_and_cannot_promote) ... ok
test_missing_rollback_target_preserves_working_active_release (test_workflow.WorkflowTest.test_missing_rollback_target_preserves_working_active_release) ... ok
test_new_bad_canary_supersedes_old_pass (test_workflow.WorkflowTest.test_new_bad_canary_supersedes_old_pass) ... ok
test_no_previous_release_is_rejected (test_workflow.WorkflowTest.test_no_previous_release_is_rejected) ... ok
test_nonfinite_canary_rejected_without_state_change (test_workflow.WorkflowTest.test_nonfinite_canary_rejected_without_state_change) ... ok
test_numeric_strings_are_not_silently_coerced (test_workflow.WorkflowTest.test_numeric_strings_are_not_silently_coerced) ... ok
test_partial_labels_do_not_silently_shrink_denominator (test_workflow.WorkflowTest.test_partial_labels_do_not_silently_shrink_denominator) ... ok
test_prediction_error_keeps_full_count_and_quality_unknown (test_workflow.WorkflowTest.test_prediction_error_keeps_full_count_and_quality_unknown) ... ok
test_registration_is_idempotent_not_mutable (test_workflow.WorkflowTest.test_registration_is_idempotent_not_mutable) ... ok
test_registration_retry_recovers_missing_audit_once (test_workflow.WorkflowTest.test_registration_retry_recovers_missing_audit_once) ... ok
test_rejected_canary_also_invalidates_old_pass (test_workflow.WorkflowTest.test_rejected_canary_also_invalidates_old_pass) ... ok
test_release_binds_all_artifact_and_lineage_hashes (test_workflow.WorkflowTest.test_release_binds_all_artifact_and_lineage_hashes) ... ok
test_role_values_and_ids_are_separate (test_workflow.WorkflowTest.test_role_values_and_ids_are_separate) ... ok
test_rollback_replays_held_out_fixture_before_switch (test_workflow.WorkflowTest.test_rollback_replays_held_out_fixture_before_switch) ... ok
test_rollback_restores_complete_tuple_and_boundary_behavior (test_workflow.WorkflowTest.test_rollback_restores_complete_tuple_and_boundary_behavior) ... ok
test_shift_with_correct_labels_can_pass_quality (test_workflow.WorkflowTest.test_shift_with_correct_labels_can_pass_quality) ... ok
test_small_sample_keeps_health_separate_from_sample_gate (test_workflow.WorkflowTest.test_small_sample_keeps_health_separate_from_sample_gate) ... ok
test_stable_mean_does_not_overflow_on_finite_values (test_workflow.WorkflowTest.test_stable_mean_does_not_overflow_on_finite_values) ... ok
test_state_and_audit_recover_after_reopen (test_workflow.WorkflowTest.test_state_and_audit_recover_after_reopen) ... ok
test_training_evaluation_overlap_rejected (test_workflow.WorkflowTest.test_training_evaluation_overlap_rejected) ... ok
test_training_receipt_mismatch_rejected (test_workflow.WorkflowTest.test_training_receipt_mismatch_rejected) ... ok
test_unapproved_rollback_target_is_rejected (test_workflow.WorkflowTest.test_unapproved_rollback_target_is_rejected) ... ok
test_unexpected_failure_leaves_ineligible_pending_attempt (test_workflow.WorkflowTest.test_unexpected_failure_leaves_ineligible_pending_attempt) ... ok
test_unknown_report_cannot_promote (test_workflow.WorkflowTest.test_unknown_report_cannot_promote) ... ok
test_wrong_canary_role_rejected (test_workflow.WorkflowTest.test_wrong_canary_role_rejected) ... ok

----------------------------------------------------------------------
Ran 48 tests in 0.190s

OK
