Skip to content

docs(ops): give #2210 the drift-state contract #2878 required - #2891

Merged
stranske merged 4 commits into
mainfrom
closer/followup-2878-durable-tracker-states
Aug 1, 2026
Merged

docs(ops): give #2210 the drift-state contract #2878 required#2891
stranske merged 4 commits into
mainfrom
closer/followup-2878-durable-tracker-states

Conversation

@stranske

@stranske stranske commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Source: Issue #2878

Closes #2878

Automated Status Summary

Scope

scripts/check_consumer_sync_drift.py:420-456 already records pending_sync_prs, but build_report() still sets top-level status to drift; 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

  • Extend scripts/check_consumer_sync_drift.py:358-495 to parse current sync provenance and classify repo-level remediation states.
  • Add desired plan/hash input from scripts/sync_manifest_compiler.py and require an open PR marker/branch to match it before state becomes covered.
  • Change scripts/check_consumer_sync_drift.py:841-860 so converged and fully covered reports exit zero; blocked, untracked_drift, lookup errors, and expired coverage exit non-zero.
  • Update .github/workflows/health-68-consumer-sync-drift.yml to run after Maint 71 and invoke issue mutation only for actionable failure states.
  • Update .github/scripts/consumer_sync_drift_issue_body.js so body/marker/comment output renders the five states and does not append an unchanged covered-state comment.
  • Extend tests/scripts/test_check_consumer_sync_drift.py with current, superseded, blocked, expired, and lookup-error fixtures.
  • Extend .github/scripts/__tests__/consumer-sync-drift-issue-body.test.js with comment-suppression and actionable-state cases.
  • Update docs/ops/CONSUMER_REPO_MAINTENANCE.md and docs/ops/DURABLE_TRACKING_ISSUES.md with the state and SLO contract.

Acceptance criteria

  • python -m pytest tests/scripts/test_check_consumer_sync_drift.py -q and node --test .github/scripts/__tests__/consumer-sync-drift-issue-body.test.js pass.
  • Drift in every affected repo with a current, unexpired generated PR produces top-level status covered and process exit 0.
  • Drift with no current PR, a superseded hash, a deterministic failed check, or an expired lease produces a non-zero exit and exact actionable repo list.
  • Repeated covered-state runs do not add comments to 🔄 Consumer repo drift detected #2210; a changed actionable fingerprint updates the durable tracker once.
  • Deliberate-break gate: temporarily make the PR hash differ from the compiler plan in the covered fixture; tests/scripts/test_check_consumer_sync_drift.py::test_current_sync_pr_covers_drift must fail or change the report to untracked_drift. Restore the fixture before review.

Summary by CodeRabbit

  • Documentation

    • Clarified durable tracker states, including their meanings, exit codes, and tracker-update behavior.
    • Documented that covered drift is expected, silent, and non-actionable.
    • Updated guidance to focus on actionable drift states rather than raw drift counts.
    • Removed references to an obsolete Health 68 cron.
  • Tests

    • Added documentation checks covering all tracker states and current guidance.

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>
Copilot AI review requested due to automatic review settings August 1, 2026 18:56
@cursor

cursor Bot commented Aug 1, 2026

Copy link
Copy Markdown

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.

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 942adc1f-be32-4184-ab61-848214d9719d

📥 Commits

Reviewing files that changed from the base of the PR and between bc7d31d and 2cc24c2.

📒 Files selected for processing (2)
  • docs/ops/DURABLE_TRACKING_ISSUES.md
  • tests/docs/test_durable_tracker_drift_states.py
📝 Walkthrough

Walkthrough

Changes

Durable tracking documentation

Layer / File(s) Summary
Document the drift-state contract
docs/ops/DURABLE_TRACKING_ISSUES.md
Documents Health 68 cadence, the five drift states, tracker-update effects, and actionable red-signal guidance.
Validate documentation against checker behavior
tests/docs/test_durable_tracker_drift_states.py
Adds tests for complete state coverage, removed cron text, required workflow references, and covered-drift wording.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The PR documents the five-state contract and adds regression tests, but it does not implement the checker, workflow, tracker, or fixture changes required by #2878. Implement and test the Health 68 classification, exit-code, workflow, tracker-comment, provenance/hash, and fixture changes, or link this PR to a documentation-only child issue.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the documentation change for issue #2210 and the required drift-state contract.
Out of Scope Changes check ✅ Passed The documentation update and documentation regression tests directly support the state and SLO contract requested in #2878.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch closer/followup-2878-durable-tracker-states

Comment @coderabbitai help to get the list of available commands.

@stranske stranske added agent:codex Agent-created issues from Codex agents:keepalive Use to initiate keepalive functionality with agents autofix Opt-in automated formatting & lint remediation follow-up labels Aug 1, 2026
@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Runner dispatch state for codex on PR #2891. Do not edit.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.py to 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.

Comment thread tests/docs/test_durable_tracker_drift_states.py
Comment thread docs/ops/DURABLE_TRACKING_ISSUES.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread docs/ops/DURABLE_TRACKING_ISSUES.md Outdated
@stranske

stranske commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

Resolved the three inline findings in 9ac766e5:

  • The state extractor now accepts either quote style and pins the complete five-state checker contract, so a formatting change cannot silently make the coverage set empty.
  • The durable-tracker cadence now names only successful main Merge Sync PRs completions and all qualifying manifest/template/script/tool push surfaces.

Validation: pytest -q tests/docs/test_durable_tracker_drift_states.py (3 passed), python scripts/check_gate_diff_quality.py --base origin/main --head HEAD, Ruff check/format, and git diff --check all pass.

@agents-workflows-bot

Copy link
Copy Markdown
Contributor

🤖 Bot Comment Handler

  • Agent: codex
  • Bot comments to address: 1

The agent has been assigned to this PR to address the bot review comments.

Instructions for agent

  1. Implement suggested fixes that improve the code
  2. Skip suggestions that don't apply (note why in your response)

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>
@stranske

stranske commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

Closer CI recovery — Black format on the drift-state gate

Failure: Lint, Format & YAML Validation / black --check --line-length 100 . on head 9ac766e5 reported tests/docs/test_durable_tracker_drift_states.py would be reformatted (Gate test-quality was already green after the prior push).

Fix: pushed Black --line-length 100 layout for the five-state assertion (assert emitted == {…} multiline). Validation: black --check clean; pytest -q tests/docs/test_durable_tracker_drift_states.py → 3 passed; check_gate_diff_quality.py --base origin/main --head HEAD passed; ruff check clean.

Next: merge once fresh CI is green (threads already 0 unresolved).

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 40dd4e8 and bc7d31d.

📒 Files selected for processing (2)
  • docs/ops/DURABLE_TRACKING_ISSUES.md
  • tests/docs/test_durable_tracker_drift_states.py

Comment thread docs/ops/DURABLE_TRACKING_ISSUES.md Outdated
Comment thread tests/docs/test_durable_tracker_drift_states.py Outdated
Comment thread tests/docs/test_durable_tracker_drift_states.py
Comment thread tests/docs/test_durable_tracker_drift_states.py Outdated
Address CodeRabbit on #2891: include global comparison errors in the
red-signal rule, scope state/cadence/covered assertions to the #2210
section, and require exact table equality so stale rows cannot linger.

Co-authored-by: Cursor <cursoragent@cursor.com>
@stranske

stranske commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

Closer same-lane — CodeRabbit findings on the Black-fixed head

Pushed a follow-up after CodeRabbit completed on bc7d31d4:

  • Red-signal rule now includes global comparison errors (not only per-repo state rows).
  • Tests scope state/cadence/covered assertions to the #2210 section/row and require exact state-set equality.
  • Declined the full build_report() fixture rewrite for this docs follow-up (rationale on the thread); checker runtime coverage already lives with the checker tests.

Validation: pytest -q tests/docs/test_durable_tracker_drift_states.py → 4 passed; Black/ruff/check_gate_diff_quality clean. All four new threads resolved. Merge when fresh CI is green.

@stranske
stranske merged commit d151eec into main Aug 1, 2026
38 checks passed
@stranske
stranske deleted the closer/followup-2878-durable-tracker-states branch August 1, 2026 20:23
@stranske stranske added the verify:compare Compare multiple LLM evaluations label Aug 1, 2026
@github-actions

github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Provider Comparison Report

Provider Summary

Provider Model Verdict Confidence Summary
openai gpt-5.6-terra FAIL 99% The documentation update appears readable and the added documentation test is maintainable, but this PR does not implement the operational drift-state contract described by the acceptance criteria....
anthropic claude-sonnet-5 FAIL 90% This PR is titled as giving issue #2878 'the drift-state contract' but the diff only updates documentation (docs/ops/DURABLE_TRACKING_ISSUES.md) and adds a documentation-focused test file. None of...
📋 Full Provider Details (click to expand)

openai

  • Model: gpt-5.6-terra
  • Verdict: FAIL
  • Confidence: 99%
  • Scores:
    • Correctness: 1.0/10
    • Completeness: 1.0/10
    • Quality: 7.0/10
    • Testing: 2.0/10
    • Risks: 3.0/10
  • Summary: The documentation update appears readable and the added documentation test is maintainable, but this PR does not implement the operational drift-state contract described by the acceptance criteria. The required Python logic, workflow behavior, issue-body logic, and behavioral tests are all absent from the diff, leaving the reported observability break unresolved.
  • Concerns:
    • The PR changes only docs/ops/DURABLE_TRACKING_ISSUES.md and adds a documentation-focused test. It does not modify scripts/check_consumer_sync_drift.py, so the required repo-level classification, compiler-plan/hash matching, covered-state determination, actionable-repository reporting, and exit-code behavior are not implemented by this PR.
    • No changes were made to .github/workflows/health-68-consumer-sync-drift.yml; therefore the required scheduling after Maint 71 and conditional durable-issue mutation for actionable states are not addressed.
    • No changes were made to .github/scripts/consumer_sync_drift_issue_body.js; consequently, the required five-state rendering, covered-comment suppression, and changed-actionable-fingerprint behavior are not implemented here.
    • The added test validates documentation text/state definitions rather than executable drift behavior. It does not cover current coverage, superseded hashes, blocked checks, expired leases, lookup errors, exact actionable lists, exit statuses, or durable-issue comment suppression.
    • The deliberate-break acceptance gate cannot be satisfied by this change because the covered fixture and drift-classification implementation were not changed.

anthropic

  • Model: claude-sonnet-5
  • Verdict: FAIL
  • Confidence: 90%
  • Scores:
    • Correctness: 2.0/10
    • Completeness: 1.0/10
    • Quality: 5.0/10
    • Testing: 2.0/10
    • Risks: 6.0/10
  • Summary: This PR is titled as giving issue [Dependency/Sync] Make Health 68 distinguish covered drift from actionable drift #2878 'the drift-state contract' but the diff only updates documentation (docs/ops/DURABLE_TRACKING_ISSUES.md) and adds a documentation-focused test file. None of the required functional changes to scripts/check_consumer_sync_drift.py, the health-68 workflow, or the issue-body JS script are present, and none of the specifically-named test additions (e.g., test_current_sync_pr_covers_drift, comment-suppression tests in the JS test suite) exist. The acceptance criteria center on actual runtime behavior (exit codes, status classification, comment suppression, deliberate-break gate) that cannot be satisfied by documentation alone. This PR appears to be, at most, a partial/preparatory step (documenting the target contract) rather than an implementation of the required fix, so it does not meet the stated acceptance criteria for issue [Dependency/Sync] Make Health 68 distinguish covered drift from actionable drift #2878/PR docs(ops): give #2210 the drift-state contract #2878 required #2891.
  • Concerns:
    • The PR only modifies docs/ops/DURABLE_TRACKING_ISSUES.md and adds a new documentation-only test file (tests/docs/test_durable_tracker_drift_states.py). None of the functional code changes required by the tasks are present: scripts/check_consumer_sync_drift.py is untouched, .github/workflows/health-68-consumer-sync-drift.yml is untouched, and .github/scripts/consumer_sync_drift_issue_body.js is untouched.
    • Acceptance criteria explicitly require: (1) drift with a current unexpired generated PR to yield top-level status 'covered' and exit 0, (2) drift with no PR/superseded hash/failed check/expired lease to yield non-zero exit with actionable repo list, (3) suppression of repeated comments for covered state with fingerprint-based updates, and (4) a deliberate-break test named test_current_sync_pr_covers_drift in tests/scripts/test_check_consumer_sync_drift.py. None of these exist in the diff — the referenced test does not appear to exist at all in this PR.
    • tests/scripts/test_check_consumer_sync_drift.py and .github/scripts/tests/consumer-sync-drift-issue-body.test.js — both explicitly required to be extended per the tasks and acceptance criteria — are not modified in this PR.
    • The PR essentially documents the intended contract/states but does not implement or verify the actual behavior change (exit codes, status classification, comment suppression) that the underlying issue ([Dependency/Sync] Make Health 68 distinguish covered drift from actionable drift #2878) was created to fix. The core observability break described in the PR scope (249 failed runs, 223 spurious comments) is not addressed by code in this diff.
    • Given the CI checks that ran (pr-00-gate, pr-11-ci-smoke, selftest-ci) are generic repository checks and do not appear to specifically validate the drift-script behavior changes described in the acceptance criteria, a green CI does not substitute for the missing functional implementation.

Agreement

  • Verdict: FAIL (all providers)
  • Correctness: scores within 1 point (avg 1.5/10, range 1.0-2.0)
  • Completeness: scores within 1 point (avg 1.0/10, range 1.0-1.0)
  • Testing: scores within 1 point (avg 2.0/10, range 2.0-2.0)

Disagreement

Dimension openai anthropic
Quality 7.0/10 5.0/10
Risks 3.0/10 6.0/10

Unique Insights

  • openai: The PR changes only docs/ops/DURABLE_TRACKING_ISSUES.md and adds a documentation-focused test. It does not modify scripts/check_consumer_sync_drift.py, so the required repo-level classification, compiler-plan/hash matching, covered-state determination, actionable-repository reporting, and exit-code behavior are not implemented by this PR.; No changes were made to .github/workflows/health-68-consumer-sync-drift.yml; therefore the required scheduling after Maint 71 and conditional durable-issue mutation for actionable states are not addressed.; No changes were made to .github/scripts/consumer_sync_drift_issue_body.js; consequently, the required five-state rendering, covered-comment suppression, and changed-actionable-fingerprint behavior are not implemented here.; The added test validates documentation text/state definitions rather than executable drift behavior. It does not cover current coverage, superseded hashes, blocked checks, expired leases, lookup errors, exact actionable lists, exit statuses, or durable-issue comment suppression.; The deliberate-break acceptance gate cannot be satisfied by this change because the covered fixture and drift-classification implementation were not changed.
  • anthropic: The PR only modifies docs/ops/DURABLE_TRACKING_ISSUES.md and adds a new documentation-only test file (tests/docs/test_durable_tracker_drift_states.py). None of the functional code changes required by the tasks are present: scripts/check_consumer_sync_drift.py is untouched, .github/workflows/health-68-consumer-sync-drift.yml is untouched, and .github/scripts/consumer_sync_drift_issue_body.js is untouched.; Acceptance criteria explicitly require: (1) drift with a current unexpired generated PR to yield top-level status 'covered' and exit 0, (2) drift with no PR/superseded hash/failed check/expired lease to yield non-zero exit with actionable repo list, (3) suppression of repeated comments for covered state with fingerprint-based updates, and (4) a deliberate-break test named test_current_sync_pr_covers_drift in tests/scripts/test_check_consumer_sync_drift.py. None of these exist in the diff — the referenced test does not appear to exist at all in this PR.; tests/scripts/test_check_consumer_sync_drift.py and .github/scripts/tests/consumer-sync-drift-issue-body.test.js — both explicitly required to be extended per the tasks and acceptance criteria — are not modified in this PR.; The PR essentially documents the intended contract/states but does not implement or verify the actual behavior change (exit codes, status classification, comment suppression) that the underlying issue ([Dependency/Sync] Make Health 68 distinguish covered drift from actionable drift #2878) was created to fix. The core observability break described in the PR scope (249 failed runs, 223 spurious comments) is not addressed by code in this diff.; Given the CI checks that ran (pr-00-gate, pr-11-ci-smoke, selftest-ci) are generic repository checks and do not appear to specifically validate the drift-script behavior changes described in the acceptance criteria, a green CI does not substitute for the missing functional implementation.

🔍 LangSmith Traces

@stranske

stranske commented Aug 1, 2026

Copy link
Copy Markdown
Owner Author

Closer disposition — verifier FAIL is a false positive for this follow-up PR

Verdict: 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 (closedBy #2885), #2891 file set (docs + docs test only), scripts/check_consumer_sync_drift.py present on main.

Next agent action: none for #2878/#2891. Continue closer discovery on remaining open agent PRs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent:codex Agent-created issues from Codex agents:keepalive Use to initiate keepalive functionality with agents autofix Opt-in automated formatting & lint remediation follow-up verify:compare Compare multiple LLM evaluations

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Dependency/Sync] Make Health 68 distinguish covered drift from actionable drift

3 participants