Repository navigation
ci(migrations): run the chain on a schedule, so a break nobody committed still lands (#17490) - #17516
Conversation
…ted still lands (#17490)
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Warning Review limit reachedNext included review available in 2 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Repository: mrveiss/AutoBot-AI/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (1)
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: mrveiss/AutoBot-AI/.coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe migration gate adds a daily schedule and manual dispatch. The migration test job runs for either event regardless of the path filter. Dependency installation is constrained by ChangesMigration gate
Priority: ➖ Normal Merge Risk: ⚪ Minimal · up to The daily and manual triggers are configured to run migration tests even without migration-path changes. No merge-blocking issue was found. Architecture SummaryArchitecture risk: 🔵 Low · up to The changed surface does not map to a changed system, dependency edge, entrypoint, or external dependency. Changed systems: None identified. Architecture concerns Review detailsBefore / after behavior
🚥 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 |
✅ SSOT Configuration Compliance: Passing🎉 No new hardcoded values of either class — Known backlog in |
Thinking Path
#17490's remaining criterion. Its version-pin half landed in
62041b574c; this closes the other one — the blind spot that let the break reachmainin the first place.The issue's own framing of that blind spot was wrong, and the correction matters for the fix. It says the gate is path-filtered so "the chain is only exercised by PRs that touch migrations".
migration-gate.yml:44has nopull_request.pathsfilter, and the comment at:37-43says so explicitly — the gate runs on every PR. What skips is the matrix, viaif: needs.changes.outputs.migrations != 'false'at:92.That makes the real gap narrower and sharper: every trigger is diff-driven, so a break whose cause is not a commit is invisible to all of them. #17490 was exactly that — SQLAlchemy 2.1.0 was published, an unpinned install took it, and no diff in this repository caused the failure. The
pushcoverage the issue suggests adding would not have caught it either, because a scheduled release elsewhere touches no path here. Only a schedule does.What Changed
.github/workflows/migration-gate.yml:schedule: '40 4 * * *'— offset from the 02:00 cron cluster (coverage.yml,branch-cleanup.yml) so a Postgres service container is not competing with them.workflow_dispatch— confirm a fix without pushing a path-touching commit.migration-testsnow runs whengithub.event_nameisscheduleorworkflow_dispatch, ignoring the path filter. A scheduled run has no diff to filter on, so gating it would rebuild the blind spot it exists to close.Verification
yaml.safe_loadparses; triggers confirmed asmerge_group, pull_request, push, schedule, workflow_dispatch.migration-testsif:expression confirmed to carry both event-name clauses.[pre-push OK] pytest: all relevant tests pass. Recording how, because it is reusable: the hook calls barepython3, which is 3.10.12 here with unsatisfied dependency floors, and it timed out at 186s across three attempts. Running it asPATH="$HOME/.venv-python-suite/bin:$PATH" git pushuses the CI-parity interpreter (3.14.6, pytest 9.1.1) and the same selection completes inside the budget. NeitherAUTOBOT_PREPUSH_ALLOW_TIMEOUT=1nor--no-verifywas used.Consequence for #17409, which I will correct there: my reported 218s was measured on 3.10 with 104 floors unsatisfied, not on a CI-equivalent runtime. It is a measurement of a degraded environment, and the coefficient analysis built on it needs re-deriving against the parity venv.
Single-issue rationale
A CI-trigger change shares no file and no reviewer surface with any open code PR, so it cannot ride with one. It does not close #17490 — the issue also tracks the version-pin work already merged, and closing is the merger's call once both halves are verified against
main.Refs #17490
Refs #17439
Model Used
Claude Opus 5 (1M context)
Summary by CodeRabbit