项目文件夹

文件
Asim Aslam 0adb4f0aac loop: hourly Codex dispatch + auto-merge green Codex PRs (#3026)
- continuous-improvement: cadence 12h -> hourly.
- add auto-merge-codex workflow: every 15 min, merge open PRs that are
  codex-labelled AND from a codex/* branch once all checks are green
  (gh pr checks). CI (build/test/lint/harnesses) is the only gate — no
  human involvement. Scoped tightly so nothing else auto-merges.

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-24 14:26:31 +01:00

43 行
1.4 KiB
YAML

name: Auto-merge Codex PRs
# Part of the autonomous improvement loop (internal/docs/CONTINUOUS_IMPROVEMENT.md).
# Merges Codex's PRs once CI is green — no human involvement; CI (build, test,
# golangci-lint, harnesses) is the only gate. Scoped to PRs that are BOTH
# codex-labelled AND from a codex/* branch, so nothing else can auto-merge.
on:
schedule:
- cron: "*/15 * * * *" # sweep every 15 min
workflow_dispatch: {}
permissions:
contents: write
pull-requests: write
concurrency:
group: auto-merge-codex
cancel-in-progress: false
jobs:
merge:
runs-on: ubuntu-latest
steps:
- name: Merge green Codex PRs
env:
GH_TOKEN: ${{ github.token }}
REPO: ${{ github.repository }}
run: |
gh pr list --repo "$REPO" --label codex --state open \
--json number,headRefName \
--jq '.[] | select(.headRefName | startswith("codex/")) | .number' \
| while read -r pr; do
[ -z "$pr" ] && continue
if gh pr checks "$pr" --repo "$REPO" >/dev/null 2>&1; then
echo "Checks green on #$pr — merging."
gh pr merge "$pr" --repo "$REPO" --squash --delete-branch \
|| echo "skip #$pr (not mergeable — conflicts?)"
else
echo "skip #$pr (checks pending/failing)"
fi
done