Skip to content

ci: run CLI checks on disposable ci-1 workers - #84

Merged
purpshell merged 2 commits into
mainfrom
codex/ci1-cli-20261019
Oct 19, 2026
Merged

purpshell merged 2 commits into
mainfrom
codex/ci1-cli-20261019

Conversation

@purpshell

@purpshell purpshell commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Summary

Move CLI checks from the paused Blacksmith workflow to disposable ci-1 workers managed by the qualified GARM + Incus controller. Preserve the CI/Verify Node 22 names, Node matrix, permissions, npm cache and all three existing commands. The new workflow identity permits PR qualification while old paid workflow 338004193 stays disabled. Use the existing eight-CPU pool to qualify alongside the monorepo general queue without increasing host limits. No paid fallback.

Impact

Impact table

Area Updated / blocked Change or named blocker Paths / evidence
CLI CI and operator documentation Updated Pinned actions, disposable ci1-integration worker, 20-minute deadline, image age/base/input/shape and checksum gate, pre-checkout fork rejection with a failing preserved check .github/workflows/ci1.yml, scripts/verify-ci1-image.py, internal/docs/ci1-runners.md
GitHub qualification Updated Current-head run 39307546365 passed on 76b5130: all 110 files/1,051 assertions, seven admission and three release-evidence tests. All three review threads are resolved and CodeRabbit passed with no actionable comments This PR; coordinated monorepo PR https://github.com/polymorfa/polymorfa/pull/781
First main-branch run Blocked Merged as 90b7bb6 at 2026-10-19T19:13:09Z. First source-triggered main run 39309119171 was queued at initial post-merge inspection; its result remains required No default-branch acceptance claimed yet
Broader fleet and trackers Blocked Public fork runner policy, native/specialist lanes, DevCenter migration and tracker access remain separate No organization-wide completion or tracker synchronization claim

No impact table

Area Why there is no impact Supporting paths or evidence
API, runners/Bartender, Temporal, Admin API and database authority No runtime, schema, authentication, webhook or streaming changes No runtime or migration files changed
SDK and CLI product contracts No methods, commands, flags, defaults, credential handling, dependency or package-lock changes src/, package.json, package-lock.json unchanged
Customer documentation, Help Center, marketing and changelog Only private CI/operator behavior changes; no customer capability ships Internal docs only; no public-doc publication
Feature releases, flags, enrollment, entitlements, billing/PAYG and Usage No product configuration or release authority changes Publication workflow is unchanged and schedule/manual only, with SDK/API acceptance gates
Admin controls, Console/Inspector/Admin UI, onboarding and activation No staff authority, customer state or UI changes Existing private GARM UI; no product app changes
Logs, audit logs, customer analytics and consented tracking Only synthetic CI admission/test results are recorded No runtime event producer changes

Verification

Head 76b51309bb4677f456d60cf6cdf52ea31ee7b13a; source dependency CLI main c21af71f13e68230769d1a2ca17985d143bf6c6e.

  • Unchanged npm ci and npm run verify passed locally with Node 22.23.3: all 110 test files and 1,051 assertions, lint, types, formatting, build, package dry-run and production audit (zero production vulnerabilities). npm's install report includes existing development-dependency advisories; the production-only audit policy is unchanged.
  • All three release-evidence tests passed. Seven admission tests reject wrong architecture/CPU shape, stale/future/naive timestamps, wrong base and changed/missing image definition/tool hashes.
  • Structural comparison preserves the Node 22 matrix, workflow/check names, read-only permissions and all three source commands. Actionlint, zizmor 1.30.1 (existing one suppression), formatting and diff checks pass.
  • Image 505d3336ea46318175907ac2192df5002406731bd2990a344ba2ee98c1c89ab0 has independent host/tool/network, source-triggered API suite, cancellation cleanup, controller restart and reboot proof in monorepo PR 781. CLI GitHub qualification separately passed in 39305060451, job 118239858798, runner garm-swxbceswhgol on ci1-integration. The image gate, all 110 test files/1,051 assertions, three release-evidence tests, build, package and production audit passed. No default-branch result is inferred. The CodeRabbit result while draft was a review skip; no substantive automated review is claimed.

Review findings

Finding Disposition Evidence
Fork skip can satisfy required check (4317612277) Fixed Same Verify Node 22 job now fails before checkout on fork source. Dynamic runner selection keeps that rejection on GitHub-hosted infrastructure; trusted work stays on ci-1. Guard tests cover same-repo PR, push, foreign repo and missing head.
Malformed checksum line can pass (4317612293) Fixed sha256sum --check --strict; a real GNU checksum regression verifies a valid file succeeds and adding a malformed row fails. Reproduced failure before the fix.
Final-image fingerprint binding (4317612299) Already enforced by controller; clarified and verified Both live scale sets pin exact image 505d3336ea46318175907ac2192df5002406731bd2990a344ba2ee98c1c89ab0. Its fingerprint-named Incus alias targets itself. The installed provider wrapper matches the committed source hash and rejects remote names or retargeted aliases. The guest manifest checks contents/age; it is not image attestation.

Controller readback receipt. Seven local boundary tests, actionlint, zizmor, formatting and diff checks pass. No image, pool, host budget, product runtime, package dependency or lockfile changed. Current-head GitHub qualification passed in 39307546365 on 76b5130. All steps succeeded, including the seven admission tests, all 110 source test files/1,051 assertions, zero production vulnerabilities and three release-evidence tests. The worker garm-tqxuipxwbdqi was absent from both GARM and Incus after completion. CodeRabbit cleared the current head; all three review threads were resolved before the exact-head merge.

Session provenance and UI evidence

  • Collaborator purpshell; Codex/gpt-6.1-sol; T3 thread 8ad9e447-6fd5-4fc5-8e96-189326af2c28; existing registration https://github.com/polymorfa/polymorfa/pull/511 reused.
  • Sanitized manual checkpoint, evidence commit 76b51309bb4677f456d60cf6cdf52ea31ee7b13a. Visible instructions and selected outcomes only; excludes private keys, credentials, raw logs, attachments, authentication screens and hidden reasoning. No automatic capture claim.
  • No product UI change or screenshot requirement. No automated review requested.

Rollout and rollback

Confirmed migration plan. CLI operator record.

Qualify this exact source on ci-1, inspect checks/reviews/conflicts, merge the CI-only change and verify its first main-branch run. The dedicated App is already installed on this private repository; no new permissions or secrets are added. Host bounds remain two VMs and 12 CPUs/48 GiB aggregate; each job receives a fresh VM. Fork source never checks out or runs on ci-1. A fork-originated request uses a GitHub-hosted runner only for the failing pre-checkout guard, so the preserved Verify Node 22 check cannot pass through a successful skip. Trusted source always uses ci-1.

Do not enable old paid workflow 338004193 as an automatic fallback. Drain/rebuild or choose a previously qualified image on failure, then requalify. Publishing retains its existing schedule/manual and exact SDK/API acceptance gates; merging this CI change does not publish a package. No product deploy or package publication is authorized. Staging admission is fenced separately and PR 744 stays held.

@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Team
  • Run ID: 301f0b99-ab03-4e3f-85c8-44b7b14b48c9
📥 Commits

Reviewing files that changed from the base of the PR and between 2cf1188 and 76b5130.

📒 Files selected for processing: 5
  • .github/workflows/ci1.yml
  • internal/agent-sessions/ci1-cli-20261019.md
  • internal/docs/ci1-qualified-pool.json
  • internal/docs/ci1-runners.md
  • scripts/ci1_image_test.py
🚧 Files skipped from review as they are similar to previous changes: 1
  • internal/agent-sessions/ci1-cli-20261019.md

Included review availability: This review used your included allowance. 4 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 8 reviews per hour.

📝 Walkthrough

The pull request adds CI image validation and tests, configures a new verification workflow on the ci1-integration runner, removes the prior workflow, and documents runner qualification and migration status.

Changes: CI runner migration

Layer / File(s) Summary
CI image validation and tests
scripts/verify-ci1-image.py, scripts/ci1_image_test.py
The validator checks runner architecture, CPU count, image build time, base fingerprint, and input hashes. Tests cover valid and invalid image manifests, workflow checksum parsing, and trusted-source guard outcomes.
Workflow and runner configuration
.github/workflows/ci1.yml, .github/workflows/ci.yml, .github/actionlint.yaml
The new workflow verifies the image before dependency installation and runs repository checks on ci1-integration. It rejects fork pull requests before checkout. The prior workflow is removed, and actionlint selects the new runner label.
Runner documentation and migration record
internal/docs/ci1-runners.md, internal/docs/ci1-qualified-pool.json, internal/agent-sessions/ci1-cli-20261019.md
The records describe runner and image requirements, image pins, local validation results, pending GitHub CI acceptance, and publication and deployment boundaries.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 76b51

No actionable issue remains before merge. The first main-branch run is still needed to confirm the runner cutover.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 10 functions across 2 files. (4 skipped: 4… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: moving CLI checks to disposable ci-1 workers.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 10 functions across 2 files. (4 skipped: 4 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

  • Fix all pre-merge checks with AI
✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@purpshell
purpshell marked this pull request as ready for review October 19, 2026 18:51
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 19, 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-10-19T18:54:50.408002Z 2cf1188 Draft marked ready
🔒 Security Review ✅ Completed 2026-10-19T18:55:33.079813Z 2cf1188 Draft marked ready
ℹ️ 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.

@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: 2cf118826d

ℹ️ 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/ci1.yml Outdated
Comment thread .github/workflows/ci1.yml Outdated
Comment thread scripts/verify-ci1-image.py
@purpshell
purpshell merged commit 90b7bb6 into main Oct 19, 2026
2 checks passed
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