[codex] Track pending GitHub check suites#3019
Open
Chener wants to merge 1 commit into
Open
Conversation
|
Someone is attempting to deploy a commit to the IndexLabs Team on Vercel. A member of the Team first needs to authorize it. |
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
check_suitewebhook deliveries instead of dropping them.Why
The PR/CI sidebar already had a pending display path, but the webhook handler only stored
completedcheck suites. That meant Multica could show passed/failed CI after completion, but not an actively queued or running CI state from GitHub.Agent-assisted follow-up layer
This PR keeps the deterministic status data in Multica's backend: PR open/draft/merged/closed state, mergeability, and CI pending/passed/failed should be synchronized cheaply and reliably without waking an agent for every GitHub event.
The agent route is still useful, but it should sit above the structured sync layer and only fire when human-readable interpretation is needed, for example failed/cancelled CI, merge conflicts, or review feedback that needs a concise issue comment. That follow-up layer should be deduped/throttled by PR + head SHA + reason so repeated webhook deliveries do not spam comments or agent runs.
In short: backend sync is the source of truth for status; agents are for explaining actionable exceptions in plain language.
Deployment / Configuration
Deployments still need the existing GitHub App webhook setup with
GITHUB_WEBHOOK_SECRETconfigured. The GitHub App should subscribe tocheck_suiteevents in addition to pull request events so queued/in-progress/completed suite deliveries reach/api/webhooks/github.Validation
go test ./internal/handler -run TestWebhook_CheckSuite_PendingEventAggregatesgo test ./internal/handler -run TestWebhook_CheckSuite_AggregatesAcrossAppsgo test ./internal/handler -run TestWebhook_CheckSuite_OldHeadIgnoredgo test ./internal/handlergo test ./pkg/agent -run TestOpencodeBackendAnchorsDirAndPWD -count=1go test ./pkg/agent -run TestOpencodeBackendQuestionDenySurvivesUserConfig -count=1go test ./pkg/agent -run TestKiroBackendInvokesACPWithTrustAllTools -count=1go test ./pkg/agent -run TestCodexExecuteSemanticInactivityAllowsContinuousDeltaProgress -count=1go test ./pkg/agent -run TestCodexExecuteSemanticInactivityAllowsContinuousMessages -count=1go test ./pkg/agent -run TestCodexExecuteTimesOutWhenTurnStopsAfterToolResult -count=1git diff --checkgo test ./...was also attempted. It still fails inserver/internal/daemon/repocacheatTestCreateWorktreeInstallsCoAuthoredByHookbecause the test commit message lacks the expected Co-authored-by trailer; that failure is unrelated to this webhook change and reproduces when run directly.