Use the existing LLM infrastructure to analyze event streams for patterns, anomalies, and correlations that rule-based goals cannot catch.
Why
Simple threshold goals ("build failure rate > 5%") catch known-knowns. LLM analysis catches unknown-unknowns: "these 3 PRs touched the same file and all caused test failures" or "deploy latency correlates with this config change".
Design
Reuses action/llm/client.go from poimen-workflows. ObserverWorkflow batches recent events and periodically calls an LLM activity.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What
Use the existing LLM infrastructure to analyze event streams for patterns, anomalies, and correlations that rule-based goals cannot catch.
Why
Simple threshold goals ("build failure rate > 5%") catch known-knowns. LLM analysis catches unknown-unknowns: "these 3 PRs touched the same file and all caused test failures" or "deploy latency correlates with this config change".
Design
Reuses
action/llm/client.gofrom poimen-workflows. ObserverWorkflow batches recent events and periodically calls an LLM activity.Depends On
Acceptance
LLM Analysis Activity
AnalyzeEventsActivityaccepts batch of events (max 50) + current goal state → returns{patterns: [], confidence: float, suggested_actions: []}Integration with Observer
Tests
go test ./action/observer_analyze_test.go— mocked LLM returns valid pattern → parsed correctlygo test ./action/observer_analyze_test.go— mocked LLM returns garbage → error returned, no panicgo test ./action/observer_analyze_test.go— mocked LLM timeout → retried, then graceful empty resultgo test ./tests/observer_workflow_test.go— 50 events accumulated → analysis triggered → patterns dispatched