Slicer mutation checks (kill matrix)

Generated by uv run python scripts/mutation_check.py. Each mutant breaks one rule of the slicer or the constraints; the real constraint, slicer, property and cache suites then run and must fail. Baseline = no mutant.

Baseline: exit 0 (120 passed in 8.45s).

Mutant

Rule broken

Result

Failing tests

First failing tests

shift_boundary

C2: slot window is [start, end)

KILLED

31

test_slicer.py :: test_a_different_seed_draws_different_malware
test_slicer.py :: test_a_slots_subsample_is_the_same_in_every_window_that_contains_it
test_slicer.py :: test_a_window_never_spans_a_gap

shuffle_timestamps

C1/C2 against true time

KILLED

15

test_slicer.py :: test_c3_counts_before_and_after_are_logged_per_evaluation_slot
test_slicer.py :: test_gate_uses_malware_kept_at_the_target_ratio
test_slicer.py :: test_manifest_counts_evaluation_rows_whose_vector_was_in_the_training_window

leak_one_sample

C1: training strictly older

KILLED

38

test_slicer.py :: test_a_different_seed_draws_different_malware
test_slicer.py :: test_a_slots_subsample_is_the_same_in_every_window_that_contains_it
test_slicer.py :: test_a_window_never_spans_a_gap

span_gap

windows never span a gap or skipped slot

KILLED

10

test_slicer.py :: test_a_window_never_spans_a_gap
test_slicer.py :: test_manifest_is_written_with_every_run
test_slicer.py :: test_runs_shorter_than_a_window_are_skipped_and_logged

gate_off

failing slots are skipped (size gate)

KILLED

8

test_slicer.py :: test_gate_uses_malware_kept_at_the_target_ratio
test_slicer.py :: test_slot_failing_the_size_gate_is_skipped_logged_and_splits_the_run
test_slicer_cached.py :: test_bodmas_weekly_windows_match_the_oracle_built_from_the_cache

stride_ignored

rolling windows follow the stride

KILLED

2

test_slicer.py :: test_rolling_windows_follow_nT_nE_and_stride
test_slicer_properties.py :: test_slicer_yields_exactly_the_windows_the_protocol_allows

eval_overlaps_train

C1: evaluation slots follow training

KILLED

40

test_slicer.py :: test_a_different_seed_draws_different_malware
test_slicer.py :: test_a_slots_subsample_is_the_same_in_every_window_that_contains_it
test_slicer.py :: test_a_window_never_spans_a_gap

c1_non_strict

C1 is strict

KILLED

2

test_constraints.py :: test_c1_is_strict_equal_timestamps_violate
test_constraints.py :: test_c1_raises_exactly_when_the_newest_training_sample_is_not_older

c2_inclusive_end

C2 window is half-open

KILLED

3

test_constraints.py :: test_c2_raises_exactly_when_a_row_is_outside_or_a_class_is_missing
test_constraints.py :: test_c2_rejects_a_sample_exactly_at_the_window_end
test_constraints.py :: test_c2_rejects_length_mismatch_and_an_empty_window

c3_drop_benign

C3 subsamples malware only

KILLED

32

test_constraints.py :: test_subsample_always_satisfies_check_c3
test_constraints.py :: test_subsample_keeps_everything_when_the_slot_is_already_below_target
test_constraints.py :: test_subsample_reaches_the_target_ratio_by_dropping_malware_only

c3_unseeded

C3 draw is seeded and slot-scoped

KILLED

7

test_constraints.py :: test_a_slot_without_benign_samples_cannot_be_subsampled
test_constraints.py :: test_lower_ratio_selection_is_nested_in_the_higher_ratio_selection
test_constraints.py :: test_subsample_is_deterministic_and_slot_scoped

no_subsampling

C3 reaches the target ratio

KILLED

44

test_constraints.py :: test_a_slot_without_benign_samples_cannot_be_subsampled
test_constraints.py :: test_lower_ratio_selection_is_nested_in_the_higher_ratio_selection
test_constraints.py :: test_ratio_must_lie_strictly_between_zero_and_one[-0.1]

oldest_malware

C3 draw is uniform over the slot

KILLED

11

test_constraints.py :: test_a_slot_without_benign_samples_cannot_be_subsampled
test_constraints.py :: test_subsample_is_deterministic_and_slot_scoped
test_constraints.py :: test_the_malware_draw_is_not_biased_toward_early_or_late_rows[0]

public_ids_are_row_ids

public view is opaque

KILLED

4

test_slicer.py :: test_public_view_carries_only_features_and_opaque_row_ids
test_slicer_review_fixes.py :: test_f1_public_features_follow_their_handles_and_resolve_to_true_rows
test_slicer_review_fixes.py :: test_f1_public_row_order_and_handles_carry_no_class_signal

public_order_stratified

public order ignores y

KILLED

1

test_slicer_review_fixes.py :: test_p2_2_the_public_order_is_independent_of_label_placement

Result: all mutants killed.