feat(ci): add overlay-promotion-bot workflow (#1010 Phase 1) - #1027
Closed
jack-champagne wants to merge 1 commit into
Closed
feat(ci): add overlay-promotion-bot workflow (#1010 Phase 1)#1027jack-champagne wants to merge 1 commit into
jack-champagne wants to merge 1 commit into
Conversation
|
Warning Review limit reachedNext included review available in 32 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: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (1)
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 |
Automates the diff JJ has been generating by hand (#947, #1005, #1006, #1009, #1011): on a schedule (or manual dispatch), run the existing overlay-promotion.mjs --check against the fork's local/amicode tip, and on drift, run --apply on a deterministic review branch and open/update one PR. Deliberately not built: a signed webhook receiver, a GitHub App, compare-and-swap bot-merge authority, or exception-approval automation. JJ's own promotion PRs (#1009, #1011) were merged 6-27 seconds after opening once CI was green — the toil is producing the diff, not reviewing it, so a human (or required status checks) still merges here. Verified locally against a scratch git remote + the real harmoniqs/opencode clone (not just described): - --check against the current in-sync state exits 0, no PR opened - a simulated fork commit drifts --check to exit 1 - --apply on the review branch (created BEFORE --apply, since #1005's main-branch guard would otherwise refuse it) reproduces the correct manifest + overlay diff - re-running --apply after resetting the branch from main is idempotent (same tree each time, safe to force-push) If the app-bundle overlay is retired later (tracked separately, off #1010), this workflow is deleted, not migrated.
jack-champagne
force-pushed
the
feat/overlay-promotion-bot-phase1
branch
from
September 11, 2026 20:48
ef5adb5 to
ad99e0d
Compare
Member
Author
|
Folded into #1025 — combining Phase 0 + Phase 1 into one PR to land today. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 1 of #1010.
Update: originally this depended on #1025 (Phase 0) landing first. JJ's #1012 independently fixed the
vsix-gatebreakage as a bonus alongside an unrelated change, somain's packaging is unblocked already. #1025 is now scoped down to the one remaining bug (overlay_promotion.test.tsfailing on main) and this PR has been rebased on currentmainindependently — both are green standalone, no ordering dependency between them anymore.What this does
Automates the diff JJ has been generating by hand across #947, #1005, #1006, #1009, #1011: on a schedule (every 2h) or manual dispatch, runs the existing
overlay-promotion.mjs --checkagainstharmoniqs/opencode'slocal/amicodetip. On drift, it runs--applyon a deterministicoverlay-promotionbranch and opens (or force-updates) one PR.What this deliberately does NOT do
No signed webhook receiver, no GitHub App, no compare-and-swap bot-merge authority, no exception-approval automation. Looking at JJ's own promotion PRs: #1009 was merged 6 seconds after opening, #1011 was merged 27 seconds after opening — both once CI was green. The actual toil is producing the diff and remembering to run the command, not the review/merge step. So a human (or required status checks, once branch protection is enabled — separately flagged, not yet decided) still merges here, exactly like today.
This is intentionally disposable: if the app-bundle overlay itself is retired later (the direction tracked separately, off this issue), this workflow gets deleted, not migrated.
Verification
Ran the actual logic end-to-end against a scratch git remote and the real
harmoniqs/opencodeclone, not just described:--checkagainst the current in-sync state (fork tip6fa55b660a3, matching the manifest) exits 0 — no PR would be opened.--checkcorrectly flips to exit 1.--applymust run on the review branch, created before the apply call — Enforce overlay provenance for main rebuilds #1005's own "refuse promotion directly on main" guard otherwise refuses the bot's apply, since the job starts checked out onmain. Verified the corrected order runs cleanly and reproduces the exact manifest + overlay diff.overlay-promotionfrommainand reproduces the same tree, so repeated triggers before a human merges are safe to force-push and never diverge.mainpost-BUG: Scrolling in development projects forces back to top upon scrolldown #1012; all CI checks (fast,vsix-gate,app-bundle-gate, etc.) pass.Open follow-up (not in this PR)
Branch protection / required status checks are still off on
main— this bot's PRs get the same protection as any human's today, which is none. Flagged for a separate decision, not blocking this PR.