Surface missing sink implementations instead of silently dropping sends
Context
I misconfigured a sink name in a rule and saw alerts vanish with no warning. The runner logged nothing and carried on, making it hard to spot the wiring mistake.
Problem
In handleEvents, if a rule references a sink missing from the sinks map, we skip delivery when s == nil without any error or log. Misconfigured rules quietly drop events.
Expected behavior
If a rule references a missing sink, we should error (or at least log loudly) instead of silently continuing. Valid configurations should behave exactly as before.
Scope / non-goals
Don’t redesign sink construction; just ensure missing sinks are surfaced clearly.
Acceptance criteria
Hints
handleEvents in internal/engine/runner.go is the likely spot; validation in NewRunner would also work. Add a test in internal/engine/runner_test.go. Run go test ./internal/engine.
Surface missing sink implementations instead of silently dropping sends
Context
I misconfigured a sink name in a rule and saw alerts vanish with no warning. The runner logged nothing and carried on, making it hard to spot the wiring mistake.
Problem
In
handleEvents, if a rule references a sink missing from thesinksmap, we skip delivery whens == nilwithout any error or log. Misconfigured rules quietly drop events.Expected behavior
If a rule references a missing sink, we should error (or at least log loudly) instead of silently continuing. Valid configurations should behave exactly as before.
Scope / non-goals
Don’t redesign sink construction; just ensure missing sinks are surfaced clearly.
Acceptance criteria
Hints
handleEventsininternal/engine/runner.gois the likely spot; validation inNewRunnerwould also work. Add a test ininternal/engine/runner_test.go. Rungo test ./internal/engine.