pub fn canonical_assignment(n: usize) -> boolExpand description
THE GATE — the one decision “does this batch get the canonical
depth→slot assignment?”. Both seams ask this and nothing else:
mtp_dcut::plan (which decides order AND assignment) and mtp_step
(permutation only), each passing the FULL batch width so the two can
never disagree — plan gates on batchable.len(), and a chunked
dispatch must use that same width, not the chunk’s.
n is the batch width in SEQUENCES. All logic lives in
canonical_assignment_at; this is only the env binding (SBIO).