fix(sync): close #2881 verifier CONCERNS gaps - #2900
Conversation
Add shared-source-failure classification, exception lifecycle observability, three-run/deliberate-break fingerprint proofs, and document the remote handoff schema so the Maint 71/82 contract matches #2881 acceptance.
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 15 minutes Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (4)
📝 WalkthroughWalkthroughThe campaign now records exception lifecycle counts and stable identity behavior. Generated PR classification now distinguishes shared-source failures from repository-local failures. Workflow and operations documentation describe the expanded delivery scope and normalized handoff contract. ChangesCampaign reconciliation
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related issues
Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/scripts/sync_pr_merge_contract.js:
- Around line 189-195: Update SHARED_SOURCE_CHECK_RE and
isSharedSourceFailedCheck so shared-source failures are identified only by
explicit centrally owned check names or an explicit shared-source marker, not
generic words such as “workflow” or “template.” Preserve repo-local check
handling, and add a negative test covering a name like “workflow integration
tests” or another local check containing those terms.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 57558530-369a-485f-8a93-99ecfb83d341
📒 Files selected for processing (6)
.github/scripts/__tests__/sync_dependency_campaign.test.js.github/scripts/__tests__/sync_pr_merge_contract.test.js.github/scripts/sync_dependency_campaign.js.github/scripts/sync_pr_merge_contract.js.github/workflows/maint-71-merge-sync-prs.ymldocs/ops/SYNC_DEPENDENCY_CAMPAIGN.md
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a3eda8e4b8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const SHARED_SOURCE_CHECK_RE = | ||
| /\b(gate(?:\s*\/\s*gate)?|health(?:\s*\d+)?|workflow|template|consumer\s*sync|sync\s*templates?)\b/i; |
There was a problem hiding this comment.
Derive failure ownership from the failing Gate leg
When a consumer's own tests fail under the required Gate / gate context, this regex classifies the failure as shared-source solely because the aggregate check name contains Gate. The consumer Gate inspected in templates/consumer-repo/.github/workflows/pr-00-gate.yml aggregates Python CI, docs, script tests, issue consistency, test quality, and ledger validation into that generic status, so a repository-local test failure is handed to source with repair-shared-source-and-redeliver instead of the repo-local repair lane. Use the failing Gate leg or another causal signal rather than the aggregate context name.
Useful? React with 👍 / 👎.
🤖 Bot Comment Handler
The agent has been assigned to this PR to address the bot review comments. Instructions for agent
The bot comment handler workflow has prepared context in the artifacts. |
There was a problem hiding this comment.
Pull request overview
This PR closes the remaining acceptance gaps called out by verifier CONCERNS on the generated-PR reconciliation + sync dependency campaign surfaces (Issue #2881), tightening the merge/close disposition contract and improving durable campaign observability.
Changes:
- Extend generated PR classification to distinguish
shared-source-failurevsrepo-local-failure, including check-run heuristics and test coverage. - Add per-run exception lifecycle observability (
new/unchanged/resolved/re_opened) to the dependency campaign state + rendered summaries. - Document the
workflows-generated-delivery-handoff/v1schema and add campaign tests proving deduplication across repeated observations (including a deliberate-break case).
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| docs/ops/SYNC_DEPENDENCY_CAMPAIGN.md | Documents the remote delivery handoff schema and clarifies responsibilities for Maint 71 vs Maint 82. |
| .github/workflows/maint-71-merge-sync-prs.yml | Updates workflow safety header comment to reflect trusted generated delivery PR lanes. |
| .github/scripts/sync_pr_merge_contract.js | Adds shared-source failure classification plumbing and check-name heuristic for failure scope. |
| .github/scripts/sync_dependency_campaign.js | Tracks and reports per-run exception lifecycle counts in campaign state + markdown bodies. |
| .github/scripts/tests/sync_pr_merge_contract.test.js | Adds coverage for shared-source vs repo-local failure dispositions. |
| .github/scripts/tests/sync_dependency_campaign.test.js | Adds coverage for deduplication across repeated runs and deliberate-break timestamp-in-id behavior, plus lifecycle counting. |
|
Addressed all three current review findings in 28ba8a0. Shared-source classification now requires a narrow centrally owned identity or explicit marker; aggregate Gate failures remain repo-local without causal leg evidence; and a rediscovered stale exception is restored to the claimable queue. Focused merge-contract and campaign suites: 52 passed. |
Provider Comparison ReportProvider Summary
📋 Full Provider Details (click to expand)openai
anthropic
Agreement
Disagreement
Unique Insights
🔍 LangSmith Traces |
Closes #2881
Summary
Bounded follow-up after merged #2899 received durable
verify:compareCONCERNS (Provider Comparison Report 5154432709). Closer audited current main and landed the remaining acceptance gaps:shared-source-failureto the 8-way generated-PR disposition contract (Gate/workflow/template failures vs repo-local).new/unchanged/resolved/re_opened).updated_at.workflows-generated-delivery-handoff/v1field schema + local-watcher operator follow-up indocs/ops/SYNC_DEPENDENCY_CAMPAIGN.md.sync_pr_merge_contract.test.js.Test plan
node --test .github/scripts/__tests__/sync_pr_merge_contract.test.js .github/scripts/__tests__/sync_dependency_campaign.test.js(52 passed)pytest tests/workflows/test_maint82_sync_campaign_contract.py(6 passed)Automated Status Summary
Scope
Generated PR ownership is split across overlapping controllers. Maint 71 filters only
sync/workflows-heads today (.github/workflows/maint-71-merge-sync-prs.yml:284), while Maint 82 and.github/scripts/sync_dependency_campaign.js:493-530separately decide which exceptions are claimable by Codex. Dev-tool-sync PRs therefore follow a different merge path, and unchanged exception state can continue to produce automation work.This is a current efficiency defect: repeated observation of the same blocker consumes agent runs without changing repository state. One repository-owned reconciliation contract should decide merge/close disposition, and agent handoff should occur only when the exception fingerprint changes.
Tasks
.github/workflows/maint-71-merge-sync-prs.ymlto reconcile bothsync/workflows-anddeps/sync-dev-versions-PRs through the same contract..github/scripts/sync_pr_merge_contract.js: current, awaiting-checks, review-blocked, repo-local-failure, shared-source-failure, superseded, expired, and owner-decision..github/workflows/maint-82-sync-dependency-auto-pilot.ymlconsume those records and own durable campaign state rather than recomputing merge disposition independently..github/scripts/sync_dependency_campaign.jsto include only state that should trigger new work; preserveupdated_at, claim generation, and lease history.campaign:needs-local-codexonly for new or materially changed actionable exception fingerprints, and remove it after terminal disposition or successful claim completion.docs/ops/SYNC_DEPENDENCY_CAMPAIGN.md; mark local watcher changes as an operator follow-up, not repository implementation.Acceptance criteria
.github/scripts/__tests__/sync_dependency_campaign.test.jsproves the same exception observed on three consecutive runs creates one claim generation and one agent handoff..github/scripts/__tests__/sync_pr_merge_contract.test.jsapplies identical merge/review/check rules to sync and dev-tool-sync fixtures.updated_at, verify the campaign test detects duplicate handoffs, then revert and verify it passes.python scripts/dev_check.py --action testand workflow validation successfully.Summary by CodeRabbit
New Features
Bug Fixes
Documentation