Module: Legion::Alerts

Defined in:
lib/legion/alerts.rb

Defined Under Namespace

Classes: AlertRule, Engine

Constant Summary collapse

DEFAULT_RULES =
[
  { name: 'consent_violation', event_pattern: 'governance.consent_violation', severity: 'critical',
    channels: %w[events log], cooldown_seconds: 300 },
  { name: 'extinction_trigger', event_pattern: 'extinction.*', severity: 'critical',
    channels: %w[events log], cooldown_seconds: 0 },
  { name: 'error_spike', event_pattern: 'runner.failure',
    condition: { count_threshold: 10, window_seconds: 60 }, severity: 'warning',
    channels: %w[events log], cooldown_seconds: 300 },
  { name: 'budget_exceeded', event_pattern: 'finops.budget_exceeded', severity: 'warning',
    channels: %w[events log], cooldown_seconds: 3600 },
  { name: 'safety_action_burst', event_pattern: 'ingress.received',
    condition: { count_threshold: 100, window_seconds: 60 }, severity: 'warning',
    channels: %w[events log], cooldown_seconds: 300 },
  { name: 'safety_scope_escalation_spike', event_pattern: 'rbac.deny',
    condition: { count_threshold: 5, window_seconds: 300 }, severity: 'critical',
    channels: %w[events log], cooldown_seconds: 300 },
  { name: 'safety_probe_detected', event_pattern: 'privatecore.probe_detected', severity: 'critical',
    channels: %w[events log], cooldown_seconds: 0 },
  { name: 'safety_confidence_collapse', event_pattern: 'synapse.confidence_update',
    condition: { count_threshold: 3, window_seconds: 300 }, severity: 'warning',
    channels: %w[events log], cooldown_seconds: 300 }
].freeze

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.engineObject (readonly)

Returns the value of attribute engine.



109
110
111
# File 'lib/legion/alerts.rb', line 109

def engine
  @engine
end

Class Method Details

.reset!Object



111
112
113
# File 'lib/legion/alerts.rb', line 111

def reset!
  @engine = nil
end

.setupObject



102
103
104
105
106
107
# File 'lib/legion/alerts.rb', line 102

def setup
  rules = load_rules
  @engine = Engine.new(rules: rules)
  register_listener
  Legion::Logging.debug "Alerts: #{rules.size} rules loaded" if defined?(Legion::Logging)
end