Scheduled drift detection: weekly gates + monthly notebooks re-run against fresh resolves - #1143
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
🚧 Files skipped from review as they are similar to previous changes (3)
📝 WalkthroughWalkthroughThe CI setup actions now install dependencies unconditionally. Notebook checks support four-way sharding. Slow tests and notebook checks support reusable workflow calls. A scheduled Drift workflow runs checks and reports failures through GitHub issues. ChangesCI workflow orchestration
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant DriftWorkflow
participant ReusableChecks
participant ResultReporter
participant GitHubIssues
DriftWorkflow->>ReusableChecks: run configured CI checks
ReusableChecks-->>ResultReporter: return job results
ResultReporter->>GitHubIssues: close, comment on, or create drift issue
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 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/setup-env-notebooks/action.yml:
- Around line 29-30: Update the stale-guard explanation comments at
.github/setup-env-notebooks/action.yml lines 29-30 and
.github/setup-env/action.yml lines 29-30 to state that the nonexistent cache
step/output reference evaluated false and skipped dependency installation,
rather than claiming it evaluated true. No workflow logic changes are needed.
In @.github/workflows/drift.yml:
- Around line 53-56: Add a job-level concurrency configuration to the report job
that uses a stable repository-specific group and sets cancel-in-progress to
false, ensuring concurrent drift issue lookup-and-create runs queue and execute
serially.
- Around line 75-93: Update the gate-result evaluation loop in the drift
workflow so the issue-closing branch runs only when every gate result is
success, not merely when FAILED_JOBS is empty. Treat cancelled results as
non-success and preserve any existing drift issue; retain the current failure
reporting and force_fail behavior.
🪄 Autofix
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: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 5139c8e9-df07-4f74-aa50-fbb9b7a827dc
📒 Files selected for processing (5)
.github/setup-env-notebooks/action.yml.github/setup-env/action.yml.github/workflows/check_notebooks.yml.github/workflows/drift.yml.github/workflows/run_slow_tests.yml
|
Status and merge-order note. The three red Pushed since opening, from the review of the sibling drift workflows in ssm-simulators#318 and LANfactory#107 — the same report-job logic is shared across all five repos, so a bug found in one applied here too:
This PR must not merge before #1142 without an update: that PR removes the |
- new drift.yml: weekly lint/fast/slow + monthly notebooks re-run the existing gates via workflow_call against a fresh dependency resolve of unchanged main (no lockfile is committed, so this is the upstream/ toolchain drift detector); failures file ONE deduped drift-labeled issue, green runs close it; force_fail dispatch input rehearses the issue path - run_slow_tests.yml + check_notebooks.yml gain workflow_call triggers - check_notebooks.yml: SKIP_NOTEBOOKS entries fixed to full find paths (the two workshop notebooks executed for months while listed as skipped: bare filenames never matched) and the run is split into a 4-way shard matrix with fail-fast off, so no shard can hit the 6-hour job limit and a drift run reports the full blast radius - drift fast job clears the PR-oriented pytest addopts (--exitfirst, --reruns) via test_args for honest triage output - setup-env composite actions: remove the dead cache-hit guards (no step with id 'cache' exists; the condition always evaluated true)
…o report Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1996f76 to
b1bc75e
Compare
|
Correcting my earlier comment: this does not need to wait for #1142. I overstated it there, so to be precise about what the interaction actually is. Today this PR is correct and self-consistent. Rebased onto main at The #1142 interaction is a one-way, time-shifted obligation, not a merge dependency:
I looked at whether I could make this workflow immune to the ordering so no follow-up is needed at all. The clean version would be to drop
Both of those objections disappear once #1142 lands, since it removes the batching and the Worth knowing about the failure mode if the follow-up is ever missed: the weekly run would fail as a workflow configuration error, which files no issue — silent. The freshness budgets are the backstop: |
Part of the ecosystem self-healing rollout (spine PR lnccbrown/HSSMSpine#35 is the aggregation layer).
drift.yml: weekly (lint + fast + slow) and monthly (notebooks) scheduled re-runs of the existing gates viaworkflow_call, against a fresh PyPI resolve of unchanged main — with no committed lockfile this is the detector for upstream/toolchain releases breaking us (ruff 0.16 and pyrefly both did, silently, last month)drift-labeled issue; green runs close it;force_faildispatch input rehearses the pathrun_slow_tests.yml/check_notebooks.ymlgainworkflow_call:--exitfirst/--rerunsaddopts; deadcache-hitguards removed from the setup-env composite actions🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Improvements