pub fn roster_len(family: AttractorFamily) -> usizeExpand description
How many entries a family’s roster holds — what [particles] tuple_to is
validated against at load (ADR-0093).
pub because the boundary check lives in preset/schema.rs, which is where
a structural key belongs: an index past the end should be a load error naming
the roster’s size, not a silent clamp onto a figure the author did not ask
for.