radiate: origins every n1, step by delay, stop when full, dark wave outward, ensure strip off at end, run once alternating: use n1 as ON width and n2 as OFF width; phase via self.step pulse: attack (n1), hold (delay), decay (n2); stop at end tests: add specto sweep (n1_sequence) and radiate demo; include n index per message; use nested {name:{...}} schema; support iterations/repeat-delay