ci(promote): finpilot main → stable 2026-09-14 - #342
github-actions[bot] wants to merge 1 commit into
Conversation
4ff908a to
4f0fa19
Compare
hanthor
left a comment
There was a problem hiding this comment.
The gate section is honest about what it did not check, and the auto-approver is not unblocking this PR
Two things a reviewer should see before merging a 108-commit promotion.
1. The E2E leg of the release gate did not run
From the gate section in the description:
| Check | Status |
|---|---|
| Digest resolution | ✅ passed |
| Cosign signatures | ✅ passed |
| E2E | ⏭️ skipped — "E2E check disabled by caller" |
That is accurate and expected — promote-main-to-stable.yml on main currently passes run_e2e: false, with a comment saying so. But it means the release/ready label on this PR attests to digest resolution and signature verification only. No test has been run against the image being promoted to production. #329 is the open PR that would change this. Merging is a judgement call; just do not read release/ready as "tested".
2. The required checks are stuck at action_required, and the workflow meant to fix that is not fixing it
mergeable_state is unstable. The reason is visible in the workflow-run history for this head:
Unit Tests, run_number 53, head_sha 4f0fa19 (this PR's head)
event: pull_request
status: completed
conclusion: action_required
created_at: 2026-09-10T22:23:16Z
updated_at: 2026-09-10T22:23:16Z <-- never touched again
Same for the two earlier heads of this PR (4ff908a, 5412d9c): all three action_required, all three with updated_at == created_at, meaning nothing ever approved them.
This is precisely the condition approve-trusted-promotion-runs.yml was merged to handle (#335, landed 2026-09-08 in 88fb7a1 — two days before the run above was created). Its filters look right on paper for this run: head_repository.full_name == repo ✅, head_branch matches ^auto/promote-(main-to-stable|testing-to-main)$ ✅, actor.login == "github-actions[bot]" ✅, triggering_actor.login == "github-actions[bot]" ✅. Yet the run is still unapproved a day later, on a */15 * * * * schedule.
So one of these is true and somebody should determine which:
- The scheduled workflow is not running at all (worth checking its own run history).
gh api "repos/${REPO}/actions/runs?status=action_required"is not returning these runs. Note these runs reportstatus: "completed"withconclusion: "action_required"— if the API'sstatusfilter is matching on thestatusfield rather than folding inconclusion, the--jqselector never sees them and the job cheerfully prints "No pending trusted promotion runs to approve" and exits 0. That failure mode is silent by construction.- The approve call is 403ing and being swallowed by the
::warning::branch.
Either way, the auto-approver is reporting success while the checks it exists to unblock stay blocked, which is worse than it failing loudly. Worth a follow-up issue against #308/#335.
Unrelated but relevant to this queue
The same action_required wall is blocking five other open PRs (#349, #350, #351, #353, #355) — all fork PRs with total_count: 0 check runs. Those need manual "approve and run" from a maintainer; they are not covered by the trusted-promotion-branch filter and never will be, since they are not on auto/promote-*.
Generated by Claude Code
4f0fa19 to
3d02610
Compare
636d0b9 to
5a102b7
Compare
5a102b7 to
053f0d5
Compare
🦕 Finpilot testing → stable · 2026-09-14
Release checklist
✅ All checks passed
Variants being promoted
finpilot:testingChanges since last stable
121 commits ahead of stable · Compare main…testing ↗
Recent commits (showing last 20)
be4b0ebdf6fd96dd3b1fd7c3995cf297208e9661a1b3d0ab41bcdf13830e41d2cff4191db684bf64a6459a5504cb840f27fe328d4e365158bef946b7ed95b4c0a096de006d09Follow this repository's branch-protection requirements before merging. Force:
gh pr merge <pr-number> --repo projectbluefin/finpilot --merge --adminDesktop Screenshot
Caution
Auto-merge scheduled for Tuesday 04:00 UTC (bluefin/dakota) / Thursday 04:00 UTC (bluefin-lts).
To block this release: add the
do-not-mergelabel to this PR before that time.Remove the label when the issue is resolved -- the next weekly window will pick it up automatically.