docs(ops): give #2210 the drift-state contract #2878 required - #2891
Conversation
The #2878 task list named both ops docs; only CONSUMER_REPO_MAINTENANCE.md was updated, so the durable-tracker page still advertised a daily 05:10 cron Health 68 no longer has, still said the tracker refreshes whenever drift is detected, and still listed a raw drift count as a red signal. After #2878 covered drift exits zero and appends nothing, so that guidance pointed readers at exactly the false alarm the issue set out to remove. Adds the five-state table with exit codes and tracker reach, the two reader consequences (drift alone is not red; a quiet tracker is not a dead workflow), and a test pinning the doc to the states the checker emits. Co-authored-by: Cursor <cursoragent@cursor.com>
|
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: 53 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 (2)
📝 WalkthroughWalkthroughChangesDurable tracking documentation
Estimated code review effort: 2 (Simple) | ~10 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
Runner dispatch state for codex on PR #2891. Do not edit. |
There was a problem hiding this comment.
Pull request overview
This PR tightens the operational contract for durable tracker #2210 by updating docs/ops/DURABLE_TRACKING_ISSUES.md to reflect the post-#2878 Health 68 drift-state semantics (including “covered is silent”), and adds a docs-oriented pytest gate to keep the documentation aligned with what the drift checker can emit.
Changes:
- Update the #2210 durable tracker row + narrative to document actionable vs silent drift states and the new run cadence.
- Add
tests/docs/test_durable_tracker_drift_states.pyto enforce that the tracker doc lists every per-repo drift state and doesn’t promise a removed cron.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| tests/docs/test_durable_tracker_drift_states.py | Adds pytest gates to keep #2210 tracker documentation aligned with Health 68 behavior and emitted drift states. |
| docs/ops/DURABLE_TRACKING_ISSUES.md | Updates #2210 tracker cadence and documents the actionable/silent drift-state contract introduced by #2878. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 68e3948d0b
ℹ️ 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".
|
Resolved the three inline findings in
Validation: |
🤖 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. |
CI Lint/Format failed because the five-state assertion was still one-lined; match Black's --line-length 100 layout so the job passes. Co-authored-by: Cursor <cursoragent@cursor.com>
Closer CI recovery — Black format on the drift-state gateFailure: Fix: pushed Black Next: merge once fresh CI is green (threads already 0 unresolved). |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 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 `@docs/ops/DURABLE_TRACKING_ISSUES.md`:
- Around line 105-107: Update the red-signal rule in DURABLE_TRACKING_ISSUES.md
to explicitly treat non-empty sync_remediation["global_errors"] from
build_report() as an actionable red signal, alongside parse errors and
qualifying repository states. Clarify that global comparison failures need not
appear as a repository state row.
In `@tests/docs/test_durable_tracker_drift_states.py`:
- Around line 52-59: Update test_tracker_doc_states_that_covered_drift_is_silent
to extract and validate the scoped `#2210` covered-state paragraph or table row in
TRACKER_DOC rather than checking isolated words. Assert within that block that
covered drift exits zero, remains silent, and does not modify or append to the
tracker, while preserving the existing documentation anchor check.
- Around line 43-50: Strengthen
test_tracker_doc_does_not_promise_a_cron_health_68_no_longer_has by extracting
the `#2210` tracker row and asserting it contains the complete Health 68 trigger
contract: Merge Sync PRs on successful main-branch runs triggered by qualifying
pushes, while rejecting any cron or daily schedule wording. Keep the existing
workflow schedule check and ensure assertions are scoped to that row rather than
the entire document.
- Around line 21-40: Replace the source-regex approach in _per_repo_states and
the hard-coded “converged” value with runtime fixtures that exercise
build_report or build_remediation_states and collect every state the checker
actually emits. Parse documented states only from the `#2210` table in
TRACKER_DOC, then assert exact equality between emitted and documented state
sets so missing and stale rows both fail the gate.
🪄 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: 907bc7a3-c7ba-4fc5-b374-7951d9478046
📒 Files selected for processing (2)
docs/ops/DURABLE_TRACKING_ISSUES.mdtests/docs/test_durable_tracker_drift_states.py
Closer same-lane — CodeRabbit findings on the Black-fixed headPushed a follow-up after CodeRabbit completed on
Validation: |
Provider Comparison ReportProvider Summary
📋 Full Provider Details (click to expand)openai
anthropic
Agreement
Disagreement
Unique Insights
🔍 LangSmith Traces |
Closer disposition — verifier FAIL is a false positive for this follow-up PRVerdict: do not reopen #2878; no additional implementation follow-up from this report. Why the dual-provider FAIL is wrong for #2891:
Checked: provider comparison comment 5153274517 (openai+anthropic FAIL), #2878 timeline ( Next agent action: none for #2878/#2891. Continue closer discovery on remaining open agent PRs. |
Closes #2878
Automated Status Summary
Scope
scripts/check_consumer_sync_drift.py:420-456already recordspending_sync_prs, butbuild_report()still sets top-level status todrift;main()then returns 1 for every non-converged state (scripts/check_consumer_sync_drift.py:841-860). The workflow runs on source pushes and at 05:10 UTC (.github/workflows/health-68-consumer-sync-drift.yml:6-17), before the 05:30 janitor, and comments on the durable issue for every failure (health-68-consumer-sync-drift.yml:81-201). Live evidence showed 249 runs with zero successes in 49 days and 223 comments on #2210. This is a current observability break: expected, covered propagation is reported as failure.Context for Agent
Related Issues/PRs
Tasks
scripts/check_consumer_sync_drift.py:358-495to parse current sync provenance and classify repo-level remediation states.scripts/sync_manifest_compiler.pyand require an open PR marker/branch to match it before state becomescovered.scripts/check_consumer_sync_drift.py:841-860soconvergedand fullycoveredreports exit zero;blocked,untracked_drift, lookup errors, and expired coverage exit non-zero..github/workflows/health-68-consumer-sync-drift.ymlto run after Maint 71 and invoke issue mutation only for actionable failure states..github/scripts/consumer_sync_drift_issue_body.jsso body/marker/comment output renders the five states and does not append an unchanged covered-state comment.tests/scripts/test_check_consumer_sync_drift.pywith current, superseded, blocked, expired, and lookup-error fixtures..github/scripts/__tests__/consumer-sync-drift-issue-body.test.jswith comment-suppression and actionable-state cases.docs/ops/CONSUMER_REPO_MAINTENANCE.mdanddocs/ops/DURABLE_TRACKING_ISSUES.mdwith the state and SLO contract.Acceptance criteria
python -m pytest tests/scripts/test_check_consumer_sync_drift.py -qandnode --test .github/scripts/__tests__/consumer-sync-drift-issue-body.test.jspass.coveredand process exit 0.coveredfixture;tests/scripts/test_check_consumer_sync_drift.py::test_current_sync_pr_covers_driftmust fail or change the report tountracked_drift. Restore the fixture before review.Summary by CodeRabbit
Documentation
Tests