Skip to content

ci: run maestro CI on GitHub Actions owned runners; retire Buildkite - #1123

Merged
haasonsaas merged 3 commits into
mainfrom
chore/remove-buildkite
Sep 14, 2026
Merged

haasonsaas merged 3 commits into
mainfrom
chore/remove-buildkite

Conversation

@haasonsaas

@haasonsaas haasonsaas commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Issue

No-Issue: owner retired Buildkite on 2026-09-14 (billing); maestro-ci had no remaining CI until this port

What changed

Port the retired maestro-ci pipeline to GitHub Actions on the org's owned runner labels. Workflow name: maestro-ci with a terminal aggregate job also named maestro-ci (if: always()) fails unless every needed job succeeded or was skipped. Nextest runs as a 4-way hash partition matrix. Coverage, perf, and hosted-orb stay advisory (schedule / workflow_dispatch, continue-on-error). Shell wrappers scripts/run-buildkite-*.sh are scripts/run-ci-*.sh with GitHub Actions env instead of Buildkite. .buildkite/ is deleted.

Screenshots

No-Visual-Change: CI workflow, scripts, and contract tests only; no rendered web surface changed

Verification

  • bash -n scripts/run-ci-tooling.sh scripts/run-ci-coverage.sh scripts/run-ci-jetbrains.sh scripts/run-ci-supply-chain.sh scripts/run-ci-perf.sh scripts/run-nextest-partition.sh scripts/ci-linux-check.sh → bash -n: all ok
  • node --test scripts/check-ci-concurrency.test.mjs → 20 pass, 1 skip (JetBrains stdin test is Linux-only)
  • node --test scripts/check-integration-required-gate.test.mjs → 5 pass
  • node --test scripts/build-profile-contract.test.mjs → 4 pass, 1 skip (internal release workflow)
  • node --test scripts/check-new-deps-supply-chain.test.mjs → 14 pass
  • node --test scripts/generate-protocol-compatibility-manifest.test.mjs → 21 pass, 2 skip (internal GHCR publisher)
  • node --test .github/workflows/release-branch-admission.test.mjs → 2 pass
  • node --test --test-name-pattern='required CI tooling lane|release admission requires' .github/workflows/check-release-workflow-contract.test.mjs → 2 pass
  • actionlint .github/workflows/maestro-ci.yml → no findings (exit 0)
  • node scripts/check-workflow-footguns.mjs → Workflow footgun guardrails passed.
  • git grep -il buildkite → CHANGELOG.md only

Not verified: first live run of .github/workflows/maestro-ci.yml on owned runners.

Risk / rollback

Until this workflow is green, the repo still has no broad required CI (required checks are require-internal-pr and unresolved-review-threads). Revert this commit to restore .buildkite/ if a rollback is needed before the first live run is green.

Provenance

Change-Origin: agent
Agent-Contributor: role=implementation; harness=grok; provider=xai
Human-Edited: false
Human-Reviewed: false

Buildkite step mapping

Buildkite step GHA job Runner Command
:lock: Protocol compatibility lock protocol-contracts evalops-internal-arc-light npm ci --ignore-scripts then npm run check:workspace-contract, check:protocol-manifest, check:runtime-passport, check:rust-only-runtime, check:helm-probes, check:hook-dispatch, check:session-transfer, check:hosted-orb-delegation, check:macos-signature
:lint-roller: Contracts, format, and Clippy lint evalops-internal-arc npm run check, node contract tests, npm run lint, advisory-expiry
:test_tube: Full Rust workspace rust-tests (matrix 1..4) evalops-internal-arc scripts/run-nextest-partition.sh N/4; partition 1 also cargo test -p maestro-local-host ci_auth_conformance, cargo test --doc, npm run smoke:tui
:package: Native build and conformance native-release evalops-internal-arc npm run build, npm run smoke:release-native-only, node scripts/run-runtime-conformance.mjs --binary $CARGO_TARGET_DIR/fast-validation/maestro
:docker: Control-plane integration integration evalops-internal-arc docker redis/postgres, cargo test --locked -p maestro-runtime-gateway, cargo test --locked -p maestro-tui --test tools_integration
:repeat: Deterministic scenario replay scenario-replay evalops-internal-arc cargo build --locked -p maestro-scenario, npm run check:scenario-replay-gate
:pipeline: CI configuration contracts ci-contracts evalops-internal-arc-light node --test scripts/check-ci-concurrency.test.mjs, check-rust-only-runtime.mjs, check-hook-dispatch-coverage.mjs
:github: Workflow and shell tooling workflow-tooling evalops-internal-arc-light scripts/run-ci-tooling.sh
:lock: Supply chain supply-chain evalops-internal-arc-light scripts/run-ci-supply-chain.sh
:idea: JetBrains plugin jetbrains-plugin evalops-internal-arc-light scripts/run-ci-jetbrains.sh
(script, not a default pipeline step) linux-check evalops-internal-arc scripts/ci-linux-check.sh
:bar_chart: Coverage (advisory) coverage evalops-internal-arc scripts/run-ci-coverage.sh (schedule / workflow_dispatch, continue-on-error)
:stopwatch: Performance baseline (advisory) perf-baseline evalops-internal-arc scripts/run-ci-perf.sh (schedule / workflow_dispatch, continue-on-error)
:orb: Hosted Orb delegation acceptance hosted-orb-delegation-live evalops-internal-arc-light npm run smoke:hosted-orb-delegation when MAESTRO_HOSTED_ORB_LIVE_SMOKE=1
(required check-run) maestro-ci evalops-internal-arc-light aggregate: fail unless every needed job succeeded or was skipped

Heavy jobs use ${{ vars.MAESTRO_CI_HEAVY_RUNNER || 'evalops-internal-arc' }}; light jobs use ${{ vars.MAESTRO_CI_LIGHT_RUNNER || 'evalops-internal-arc-light' }}.

status: passed
evidence: bash -n on 7 shell scripts (ok); node --test check-ci-concurrency (20 pass, 1 skip), check-integration-required-gate (5 pass), build-profile-contract (4 pass, 1 skip), check-new-deps-supply-chain (14 pass), generate-protocol-compatibility-manifest (21 pass, 2 skip), release-branch-admission (2 pass), check-release-workflow-contract name-pattern (2 pass); actionlint .github/workflows/maestro-ci.yml (exit 0); node scripts/check-workflow-footguns.mjs (passed); git grep -il buildkite (CHANGELOG.md only)

decision: single-purpose
reason: replace the retired maestro-ci pipeline with GitHub Actions on owned runners and drop Buildkite scripts

Follow-up commit

ci: gate fork PRs off internal runners and fix first-run failures (mirror of mono#9080)

Mirror of mono#9080 (25d2821dc0). Every maestro-ci job now skips unless the event is not a pull_request or the head repo is this repository, so fork PRs never land on evalops-internal-arc*. Advisory jobs keep that conjunct plus schedule/workflow_dispatch. Hosted-orb live smoke reads github.event.inputs.hosted_orb_live_smoke || vars.MAESTRO_HOSTED_ORB_LIVE_SMOKE. Linux-check is invoked as bash scripts/ci-linux-check.sh (executable bit set). The public hosted-orb-delegation-acceptance.test.mjs had drifted from mono, so the rejected hunk was applied by hand: the managed hosted-acceptance test now asserts the trusted-head if: and vars.MAESTRO_HOSTED_ORB_LIVE_SMOKE.

Verified: node --test scripts/hosted-orb-delegation-acceptance.test.mjs scripts/check-ci-concurrency.test.mjs → 27 pass, 1 skip; actionlint .github/workflows/maestro-ci.yml → exit 0; bash -n scripts/ci-linux-check.sh → exit 0.

🤖 Generated with Claude Code

https://claude.ai/code/session_014mGdZdLHUANa66S3RGuHMr

Source PR: https://github.com/evalops/mono/pull/9080 (evalops/mono#9080 — products/maestro is the source of truth; this PR is the mirror-side copy of that change)

Also mirrors https://github.com/evalops/mono/pull/9086 (evalops/mono#9086): supply-chain job permissions and hard-gated hosted-orb smoke.

Owner retired Buildkite on 2026-09-14 (billing). The maestro-ci pipeline
is archived, the repo webhook is deleted, and buildkite/maestro-ci was
removed from required checks, so this repository had no broad CI.

Port every former pipeline and advisory step to
.github/workflows/maestro-ci.yml on owned runner labels
(evalops-internal-arc / evalops-internal-arc-light), rename
scripts/run-buildkite-*.sh to scripts/run-ci-*.sh, and delete .buildkite/.

Verified with node --test on the touched contract files, actionlint on
maestro-ci.yml, bash -n on touched shell scripts, and git grep -il
buildkite (CHANGELOG.md only). First live run is not verified.
@haasonsaas
haasonsaas requested review from a team as code owners September 14, 2026 01:58
@haasonsaas
haasonsaas enabled auto-merge (squash) September 14, 2026 01:58
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 14, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-14T03:01:58.091061Z 18bd6d2 New commits
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

This PR changes mirrored Maestro source files in the public repo, but it does not link the matching private source-of-truth PR.

Link the matching evalops/mono source PR (legacy maestro-internal links remain accepted), then re-run the check:

  • https://github.com/evalops/mono/pull/<number>
  • evalops/mono#<number>
  • maestro-internal#<number>

Mirrored files touched:

  • .buildkite/advisory.yml
  • .buildkite/pipeline.yml
  • .buildkite/run-with-mise
  • .config/nextest.toml
  • AGENTS.md
  • packages/jetbrains-plugin/README.md
  • packages/tui-rs/src/config_cli.rs
  • scripts/build-profile-contract.test.mjs
  • scripts/check-buildkite-pipeline.test.mjs
  • scripts/check-ci-concurrency.test.mjs
  • scripts/check-integration-required-gate.test.mjs
  • scripts/check-new-deps-supply-chain.mjs
  • scripts/check-new-deps-supply-chain.test.mjs
  • scripts/ci-linux-check.sh
  • scripts/generate-protocol-compatibility-manifest.test.mjs
  • scripts/hosted-orb-delegation-acceptance.test.mjs
  • scripts/run-ci-coverage.sh
  • scripts/run-ci-jetbrains.sh
  • scripts/run-ci-perf.sh
  • scripts/run-ci-supply-chain.sh
  • scripts/run-ci-tooling.sh
  • scripts/run-nextest-partition.sh

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 3 potential issues.

Devin Review

Comment thread .github/workflows/maestro-ci.yml Outdated
Comment thread .github/workflows/maestro-ci.yml
Comment thread .github/workflows/release.yml

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0c3dc3a46d

ℹ️ 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".

Comment thread .github/workflows/maestro-ci.yml
@haasonsaas haasonsaas closed this Sep 14, 2026
auto-merge was automatically disabled September 14, 2026 02:15

Pull request was closed

@haasonsaas haasonsaas reopened this Sep 14, 2026
…rror of mono#9080)

Fork pull_request events must not run contributor-controlled scripts on
evalops-internal-arc* runners. Mirror mono#9080 (25d2821dc0): gate every
maestro-ci job on trusted head, invoke linux-check with bash, and map
hosted-orb live smoke from workflow_dispatch input or repo vars.

The public hosted-orb-delegation-acceptance.test.mjs had drifted from
mono, so the rejected hunk was applied by hand: the managed acceptance
test now asserts the trusted-head if: and vars.MAESTRO_HOSTED_ORB_LIVE_SMOKE.

Verified with node --test on the two contract files, actionlint on
maestro-ci.yml, and bash -n on ci-linux-check.sh.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 028587137f

ℹ️ 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".

Comment thread .github/workflows/maestro-ci.yml
Comment thread .github/workflows/maestro-ci.yml Outdated
@haasonsaas haasonsaas closed this Sep 14, 2026
@haasonsaas haasonsaas reopened this Sep 14, 2026
…ed-orb smoke a hard gate (mirror of mono#9086)

Source: dx-corp/mono#9086 (products/maestro).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014mGdZdLHUANa66S3RGuHMr
@haasonsaas
haasonsaas merged commit 008bf47 into main Sep 14, 2026
5 of 6 checks passed
@haasonsaas
haasonsaas deleted the chore/remove-buildkite branch September 14, 2026 03:01
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