ci: cut Actions burn — concurrency, dual-trigger drop, 3.12-only on PR#45
Conversation
…2-only on PR scottconverse account exhausted the 2,000 free Linux-equivalent Actions minutes for May 2026. Full audit: handoff-to-codex-2026-05-13-civiccast-ci-budget-fixes.md at workspace root. Changes: 1. test.yml + lint.yml — drop `push: branches: [main]`. PR validation was running once during PR + once on post-merge push. Per-PR coverage unchanged; the post-merge re-run was redundant. 2. test.yml + lint.yml — add `concurrency: cancel-in-progress: true`. Stacked pushes on the same PR ref now cancel older runs. 3. test.yml — Python matrix `[3.11, 3.12]` collapses to `[3.12]` on PR. Full matrix preserved on tag pushes via the existing release.yml + provider-drift.yml weekly cron. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c41fbb986c
ℹ️ 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".
| python-version: ["3.11", "3.12"] | ||
| # 3.12 on PR; full matrix on tag releases. Was [3.11, 3.12] on every | ||
| # PR; doubled minutes without catching anything PRs were breaking. | ||
| python-version: ${{ github.event_name == 'pull_request' && fromJson('["3.12"]') || fromJson('["3.11", "3.12"]') }} |
There was a problem hiding this comment.
Restore a reachable 3.11 CI leg
Because this workflow now only has a pull_request trigger, github.event_name is always pull_request here and the fromJson('["3.11", "3.12"]') branch is dead. I checked the referenced release/provider-drift workflows and they both pin Python 3.12, while pyproject.toml still advertises requires-python = ">=3.11" and a Python 3.11 classifier, so 3.11 regressions are no longer exercised anywhere before shipping.
Useful? React with 👍 / 👎.
… gate + W13 risk note Per github-cleanup-2026-05-18 plan.md S3.2 / director-decisions DR-D. - .github/workflows/test.yml: add `push: tags: ['v*']` trigger so the existing matrix else-arm ([3.11, 3.12]) becomes reachable on tag pushes. PR-time stays 3.12-only per PR #45's cost-cut decision. - README + USER-MANUAL + CONTRIBUTING: rolled out byte-identical support claim sentence `Requires Python 3.11 or 3.12.` so the support claim is consistent across all three user-facing docs. - scripts/verify-release.sh: new step 8.5 (tag-CI gate). Queries repos/scottconverse/AgentSuite/commits/<tag-sha>/check-runs via gh CLI; asserts unit-integration-golden (3.11) AND (3.12) both SUCCESS before allowing the release to proceed. Forward-looking; runs only when invoked at tag-push time (TAG_SHA or `git describe --exact-match`). - CHANGELOG: [Unreleased] gains Changed - 2026-05-20 + Known risks (forward-looking) subsection documenting W13 Gemini SDK upper-bound risk (_UnionGenericAlias deprecation, removal in 3.17). - CONTRIBUTING: cross-reference to CHANGELOG Known risks W13 entry added at the end of Test tiers section. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
scottconverse account exhausted the 2,000 free Linux-equivalent Actions minutes for May 2026. AgentSuite was a minor spender (~165 min) but the same dual-trigger + matrix-on-PR patterns are present and should be normalized across the org.
Changes:
test.yml+lint.yml— droppush: branches: [main]. PR validation was running once during PR + once on post-merge push.test.yml+lint.yml— addconcurrency: cancel-in-progress: true.test.yml— Python matrix[3.11, 3.12]→[3.12]on PR. Full matrix preserved on tag pushes viarelease.yml+ the weeklyprovider-drift.ymlcron.release.ymlandprovider-drift.ymlunchanged.Estimated savings
~80–120 Linux-equiv min/mo from this PR.
🤖 Generated with Claude Code