Skip to content

ci(upstream-sync): merge a sync only after gate.yml passes on it - #36

Merged
AlexNegrescu26 merged 7 commits into
mainfrom
ci/gate-before-sync-merge
Oct 31, 2026
Merged

AlexNegrescu26 merged 7 commits into
mainfrom
ci/gate-before-sync-merge

Conversation

@AlexNegrescu26

Copy link
Copy Markdown
Collaborator

Why

The sync workflow opened its PR and squash-merged it in the same step, after check-port.sh alone. PRs #19 and #32 landed 3 to 4 seconds after they opened, and no gate.yml run checked either one. The smoke also pinned an omp six releases old, and some scripts and suites had no CI step.

What changed

  • gate.yml takes a workflow_call input ref. upstream-sync now runs three jobs. sync builds, pushes, and opens the PR. gate calls gate.yml on the sync commit. merge needs both to pass and the PR head to still match the gated commit.
  • gate.yml syntax-checks every tracked *.sh, runs bun test ./extensions, and adds a statechart job on Node 22.
  • The smoke pins omp v18.14.1. Bun moves to 1.4.4 and actions/checkout to v7. PORTING.md describes the new sync gate and moves two re-confirmed omp versions to 18.14.1.

Scope

  • The gate checks the sync commit, not the squash result. If main moves while the gate runs, the merged tree is not gated.
  • The statechart job skips the 67 cases that need TLC and runs no typecheck.
  • The smoke script is unchanged.

Tradeoffs

  • The statechart job runs the package's own npm test and installs the fast-check pin from its package.json. A second copy of the command and the version in the workflow would drift from the package.

Blast Radius

Only CI changes. A clean sync now waits for the full gate.yml before it merges. A red gate leaves the PR open, and later syncs stop at the open-PR guard until someone resolves it.

Verification

  • actionlint 1.7.12 on both workflows: no errors. A copy with a wrong input name and a wrong output name fails with three errors, so the lint checks the call contract.
  • npm install --no-package-lock and npm test in a scratch copy of the statechart skill: 334 tests, 267 pass, 67 skip, 0 fail, 53 s.
  • sha256sum --check on the downloaded v18.14.1 asset: OK. With that binary on PATH, smoke-plugin.mjs passed with 60/60 skills, and test-worktree-audit.sh with OMP_AUDIT_LIVE_REQUIRED=1 passed.
  • bash omp-port/check-port.sh: PASS. bun test ./extensions: 15 pass. The new loop parsed all 7 tracked shell scripts.
  • Not run: the workflow_call path and the merge job. A workflow_dispatch of upstream-sync with no sync PR open would run them, and on success it merges into main.

The smoke pinned omp v18.12.6, six releases behind. The v18.14.1 digest
matches the release asset and the sha256 of the downloaded file.
actions/checkout@v4 runs on Node.js 20, and every job warned about it.
…t suite

The syntax step read only omp-port/*.sh, and the extension step named two
test files, so a new script or extension test was never checked. The
statechart suite had no CI step at all. It runs on Node 22 through the
package's own test script and the fast-check pin in its package.json.
The sync job opened the PR and squash-merged it in one step, after
check-port.sh alone. PRs #19 and #32 landed 3 to 4 seconds after they
opened, and no gate.yml run checked either one.

gate.yml now takes a workflow_call ref. upstream-sync splits into sync,
gate, and merge jobs. The gate job calls gate.yml on the sync commit,
and the merge job needs both earlier jobs to pass and the PR head to
still match that commit. PORTING.md drops the claim that a token-opened
PR starts no pull_request run.
The builtin tool probe on the v18.14.1 release asset lists wait and no
hub. `omp read omp://approval-mode.md` on that binary still states the
three approval facts. The 18.12.2 and 18.1.13 lines keep their versions
because their probes did not run again.
@AlexNegrescu26
AlexNegrescu26 merged commit 3533066 into main Oct 31, 2026
3 checks passed
@AlexNegrescu26
AlexNegrescu26 deleted the ci/gate-before-sync-merge branch October 31, 2026 19:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant