Merge dev to main#155
Merged
zbigniewsobiecki merged 1 commit intomainfrom Feb 12, 2026
Merged
Conversation
…orage scoping (#154) GitHub doesn't allow the same user to review their own PR. CASCADE uses a single GITHUB_TOKEN for everything — creating PRs (implementation agent) and reviewing them (review agent). This adds a separate reviewer PAT per project so the review agent operates as a different GitHub user. Uses Node.js AsyncLocalStorage to transparently scope a different Octokit instance to the review agent's async context. The existing getClient() function is the single chokepoint — modifying it to check AsyncLocalStorage first means zero changes to any gadget files and zero changes to the githubClient API surface. Changes: - Add optional `reviewerTokenEnv` field to project config schema - Add AsyncLocalStorage-based `withGitHubToken()` for scoped GitHub clients - Add `getReviewerUser()` with caching for resolving reviewer identity - Wrap review agent lifecycle in reviewer scope when configured - Extend `isSelfAuthored()` and check-suite-success trigger to recognize reviewer identity (prevents infinite loops and duplicate reviews) - Review agent now posts initial "reviewing" comment and includes UpdatePRComment gadget for updating it with review summary - Enable reviewer token for niu and car-dealership projects Graceful fallback: no reviewerTokenEnv → existing behavior unchanged; env var not set → logs warning, uses main token; API failure → returns null, triggers don't filter (safe default). Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
8 tasks
zbigniewsobiecki
added a commit
that referenced
this pull request
Apr 29, 2026
…ason (#1235) PR zbigniewsobiecki/ucho#155 had a CI failure that should have triggered respond-to-ci. The webhook arrived; cascade-router logged "No trigger matched for event" and bailed. The trigger DID match — something inside the handler self-skipped, but the persisted webhook log flattened the reason into the same generic string used when no matcher matches at all. Debugging that required trawling cascade-router process logs. Three coordinated fixes: A) Diagnostic upgrade. Extend TriggerResult with `skipReason: { handler, message }`. Handlers can return a structured skip instead of bare null; the registry returns the structured skip up the stack (terminating dispatch, not iterating further). webhook-processor.ts surfaces `Trigger ${handler} skipped: ${message}` in decisionReason. Bare `return null` keeps the legacy "try-next-handler" semantic for backward compatibility. Converted every return-null site in check-suite-failure.ts and pr-conflict-detected.ts to structured skips with specific messages (PR # included, attempt counts spelled out, base branches named). B) Stop swallowing persona-resolution failures in `GitHubAdapter.resolvePersonaCached`. The bare `catch {}` made every downstream gate that depends on personaIdentities silently skip without any signal. Now logs ERROR + Sentry-captures under tag `persona_identity_resolution_failed`. C) Widen the "PR author must be implementer persona" gate in both check-suite-failure.ts and pr-conflict-detected.ts to use the existing `isCascadeBot()` helper, matching either the implementer OR reviewer persona. The narrow check would have silently dropped any future PR authored by the reviewer persona; pr-comment-mention.ts and review-requested.ts already had the broader semantic. For PR #155 specifically: aaight IS the implementer for ucho, so the gate-widening (C) doesn't change the outcome — but with (A) shipped, any re-run will report the actual reason in the dashboard webhook log. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Routine dev → main merge.
🤖 Generated with Claude Code