12-entry charclass_map (str, *fn(rune) bool) + bracket [:class:] recognition (compile) + charset_class_item predicate dispatch (exec), porting ref/hare/regex/regex.ha:74-87/190-204/726-733. Table-driven tests cover all 12 classes (±), negation, composition, and the "No character class after '[:'" error path. cstage-only (C-first per the speed pivot); wwstage byte-id twin owed in the batch-converge phase.