export interface RotationDecisionTelemetryEvent { readonly occurredAt: number; readonly actorId: string; readonly abilityId: string; readonly targetId: string | null; readonly profileId: string; readonly ruleId: string; readonly reason: string; } type RotationDecisionListener = (event: RotationDecisionTelemetryEvent) => void; const listeners = new Set(); export function subscribeRotationDecisions(listener: RotationDecisionListener): () => void { listeners.add(listener); return () => listeners.delete(listener); } /** Observational only: listeners cannot alter or delay the selected action. */ export function emitRotationDecision(event: RotationDecisionTelemetryEvent): void { for (const listener of listeners) listener(event); }