Main to prod#123
Conversation
docs: document Workspace.spec.setupCommand in reference.md
Add ExcludePatterns field to the Slack TaskSpawner source. Regex patterns (RE2) reject messages when any pattern matches, enabling negative routing between multiple Slack-triggered TaskSpawners. Leading @-mentions are stripped before matching so patterns target semantic content. Does not apply to slash commands. Co-Authored-By: Claude Opus 4.6 <[email protected]> Co-authored-by: jkahuja <[email protected]>
…ude-patterns feat(api): add excludePatterns to Slack source for negative routing
test(e2e): poll Task phase via WaitForTaskPhase to fix flake
…mmentOn Mark bodyContains as deprecated and add reference rows for its regex replacements (bodyPattern, excludeBodyPatterns) and the related issue_comment scoping field (commentOn). New users following reference.md were silently being steered toward the deprecated field. Co-Authored-By: Claude Opus 4.7 <[email protected]>
docs: document githubWebhook bodyPattern, excludeBodyPatterns, and commentOn
…spawners Add `excludeAuthors: [kelos-bot[bot]]` at the top level of webhook-driven self-development TaskSpawners and remove the now-redundant `kelos-bot[bot]` positive author allowlist entries. Top-level ExcludeAuthors is evaluated before filters and takes precedence over filter-level Author matches, so agent-authored comments containing strings like `/kelos api-review` no longer recursively trigger another spawner. Affects: kelos-workers, kelos-planner, kelos-pr-responder, kelos-reviewer, kelos-api-reviewer. kelos-triage is left unchanged so bot-created issues (e.g. from kelos-self-update) continue to be triaged. kelos-squash-commits already restricts to gjkim42 only.
self-development: prevent kelos-bot from triggering self-development spawners
watchTask returned nil for both Succeeded and Failed phases, so 'kelos run -w' silently exited 0 even when the task failed — breaking CI/CD integration where downstream steps assumed success. Return a non-nil error on TaskPhaseFailed and print a diagnostic hint pointing users at 'kelos logs' and 'kelos get tasks -d' for details. Co-Authored-By: Claude Opus 4.7 <[email protected]>
fix(cli): exit non-zero on failed task in 'run -w'
Greptile SummaryThis PR merges
Confidence Score: 4/5The change is safe to merge; logic is well-tested and the new ExcludePatterns path correctly gates on the positive-match result before applying exclusion. Two minor concerns exist: the stdlib
|
| } | ||
| if err != nil { | ||
| return nil, err | ||
| log.Printf("Invalid regex pattern %q: %v", pattern, err) |
There was a problem hiding this comment.
Stdlib
log inconsistent with controller logging
log.Printf (stdlib) was introduced here, while Kubernetes controllers typically route all structured logging through logr or slog. This call produces timestamped output to stderr without any of the key/value context that the rest of the controller surface uses. If an invalid pattern is stored in a CRD and the controller is running with a structured-log aggregator, this message will likely end up in an unstructured log stream and may be missed by alerting rules.
Prompt To Fix With AI
This is a comment left during a code review.
Path: internal/slack/filter.go
Line: 60
Comment:
**Stdlib `log` inconsistent with controller logging**
`log.Printf` (stdlib) was introduced here, while Kubernetes controllers typically route all structured logging through `logr` or `slog`. This call produces timestamped output to `stderr` without any of the key/value context that the rest of the controller surface uses. If an invalid pattern is stored in a CRD and the controller is running with a structured-log aggregator, this message will likely end up in an unstructured log stream and may be missed by alerting rules.
How can I resolve this? If you propose a fix, please make it concise.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
What type of PR is this?
What this PR does / why we need it:
Which issue(s) this PR is related to:
Special notes for your reviewer:
Does this PR introduce a user-facing change?