pub(super) fn mixing_blocked_by_spec(n_active: usize, any_spec: bool) -> bool {
any_spec && n_active == 1
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn without_speculation_mixing_is_never_blocked() {
for n in 0..40usize {
assert!(!mixing_blocked_by_spec(n, false), "n={n}");
}
}
#[test]
fn the_c1_rule_blocks_exactly_one_active_sequence() {
assert!(!mixing_blocked_by_spec(0, true));
assert!(mixing_blocked_by_spec(1, true));
for n in 2..40usize {
assert!(!mixing_blocked_by_spec(n, true), "n={n}");
}
}
#[test]
fn divergence_from_the_real_dispatch_gate_is_exactly_two_through_the_cap() {
if std::env::var_os("METRALE_NO_MTP_K_LADDER").is_some() {
return;
}
let cap = metrale_model_layers::speculative::mtp_max_seqs();
let dispatch_would_run = |n: usize| n >= 1 && n <= cap;
let diverges: Vec<usize> = (0..cap + 8)
.filter(|&n| dispatch_would_run(n) != mixing_blocked_by_spec(n, true))
.collect();
let expected: Vec<usize> = (2..=cap).collect();
assert_eq!(
diverges, expected,
"the widths where mixing is allowed but a spec step would have run \
are no longer 2..={cap}; re-read this module's doc before changing it"
);
assert!(
cap >= 32,
"dispatch cap fell to {cap}; divergence range shrank"
);
}
}