Skip to content

ci: trial ubuntu-slim for formatting - #562

Merged
robjtede merged 3 commits into
mainfrom
ci/ubuntu-slim-assessment
Nov 3, 2026
Merged

robjtede merged 3 commits into
mainfrom
ci/ubuntu-slim-assessment

Conversation

@robjtede

@robjtede robjtede commented Nov 3, 2026 •

Copy link
Copy Markdown
Member

Move only Lint / format (no matrix) from blacksmith-2vcpu-ubuntu-2404 to ubuntu-slim. This runs formatters through the existing Nix shell and nightly rustfmt. Tests, permissions, action pins and commands are unchanged.

GitHub documents slim as x64, 1 CPU, 5 GB RAM, 14 GB storage, available to public/private repositories, with a 15-minute job limit and an unprivileged container. Its minimal image includes Bash, Git, curl, Node, Python, jq and zstd; tools for this job are installed explicitly. The pinned Nix installer uses single-user mode with tmpfs disabled; its optional KVM probe tolerates failure. Live compatibility remains to be checked.

Sources: https://docs.github.com/en/actions/reference/runners/github-hosted-runners and https://github.com/actions/runner-images/blob/main/images/ubuntu-slim/ubuntu-slim-Readme.md

Retained: CI build_and_test matrix, Clippy feature powerset and docs compile Rust dependencies; zizmor's pinned action.sh uses docker pull/run; release and asset builds retain their runners, as do Nix-based release comments and Homebrew updates whose custom tooling and external writes are unsuitable for a safe benchmark.

Validation: prettier --check .github/workflows/lint.yml passed (the relevant formatting command from the justfile check recipe). PR CI pending. No deployment or publishing workflow was manually triggered.

Measurements: historical successful Lint / format jobs on blacksmith-2vcpu-ubuntu-2404, no matrix. Execution duration is completed_at minus started_at, excluding queue time. Cache hits/misses not established; Rust setup enables its default cache and Nix uses upstream substitutions. These are not same-code samples and are not GitHub standard-runner samples.

Historical baseline n=3, median 21 seconds. Slim n=0, median and percent change pending. Queue time not measured. Confounders include code, image, network, cache and provider differences. No runtime compatibility failure observed yet because slim has not run. Aim for three successful slim samples; do not treat this historical comparison as causal performance evidence.

Update: the first slim attempt on 26be6f1 failed in Nix installation because USER is unset (USER: unbound variable). The KVM probe also reported missing udevadm but tolerated that error. Job duration was 44 seconds (12:34:23–12:35:07 UTC), excluding queue: https://github.com/x52dev/inspect-cert-chain/actions/runs/41636835886/job/125920047193. This is a failed compatibility sample, not a completed formatting measurement. Successful slim n=0; median and percent change remain unavailable. Cache state unknown. The job log also shows platform-transformed checkout/parallel setup steps, another comparison confounder.

Head 1255945 sets USER from id -un before Nix setup. Prettier workflow validation passed. Hosted validation pending. All other checks on the original head passed; formatting remains mandatory for this assessment regardless of branch protection requirements.

Conflict resolution update: merged current main (5193b35) into the branch, preserving upstream checkout/toolchain updates and background setup steps. Head is now 723a3aa. The net diff remains one runner label plus USER initialization. Prettier passed. The notification for 1255945 represented only a skipped CodeRabbit check; no successful formatting sample was recorded on that head. Slim successful n=0 and performance comparison remain pending. The previously described parallel setup is present in upstream main, not an unexplained runner transformation.

First successful slim sample: Lint / format (no matrix), head 723a3aa, ubuntu-slim, 67 seconds (12:40:11–12:41:18 UTC), result success: https://github.com/x52dev/inspect-cert-chain/actions/runs/41637648878/job/125922797167. Nix fetched dependencies from cache.nixos.org; Rust setup took 43s, formatting itself 1s, Rust cache post-step 14s. Successful slim n=1, median 67s; historical Blacksmith n=3, median 21s; preliminary change = 100*(67/21-1) = +219.05%. This compares different providers/commits/cache conditions, not isolated CPU performance. The failed 44s setup attempt is excluded. All CI checks on this head passed (CodeRabbit skipped). A targeted rerun of format was requested for a second sample; no release workflow was triggered. Queue delay is not included in the duration; job-ready queue time is unavailable.

Second successful sample, same head 723a3aa, ubuntu-slim, Lint/format, no matrix: 55s (12:44:50–12:45:45 UTC), https://github.com/x52dev/inspect-cert-chain/actions/runs/41637648878/job/125924994573 (attempt 2). Successful slim n=2 [67,55], median61s; historical Blacksmith median21s => preliminary +190.48%. Queue excluded. Other attempt-2 lint jobs carry forward original timestamps and are not new samples. CodeRabbit is skipped. No current failure, timeout, infrastructure cancellation or rerun API rejection observed. Earlier USER-unset failure is resolved. Requested the third targeted formatting sample to complete the existing measurement plan.

Final measurement update: third successful Lint/format sample on ubuntu-slim at head 723a3aa: 49 seconds (16:05:45–16:06:34 UTC), https://github.com/x52dev/inspect-cert-chain/actions/runs/41637648878/job/126037657868 (attempt3). All three slim samples used this head: [67,55,49], n=3 median55s. Historical Blacksmith samples [21,26,19], n=3 median21s. Change = 100*(55/21-1) = +161.90%. This is not a same-code comparison or a GitHub standard-runner comparison. Slim sample1 had a Rust cache miss; samples2/3 restored the same Rust cache key. Nix dependencies used binary substitutions. Historical cache state remains unknown. Queue is excluded; precise job-ready queue time unavailable. Failed44s setup attempt remains excluded from performance statistics.

Ready for review: verified overall CI workflow41637649199 and Lint workflow41637648878 (attempt3) both completed successfully on this head, with all executed jobs successful and CodeRabbit skipped. Other lint jobs in attempts2/3 were carried forward, not additional samples. No unresolved failure, timeout or cancellation. Earlier USER-unset failure resolved and verified by three successful slim runs. Marked ready under user authorization; no merge performed.

@robjtede
robjtede marked this pull request as ready for review November 3, 2026 16:09
@coderabbitai

coderabbitai Bot commented Nov 3, 2026

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Walkthrough

The format job now runs on ubuntu-slim instead of blacksmith-2vcpu-ubuntu-2404. It adds a step before checkout that sets USER to the current username in GITHUB_ENV. The remaining formatting steps are unchanged.

Merge Risk: Minimal · up to 723a3

The formatting job moves to ubuntu-slim with USER initialized for Nix setup. No concrete merge-blocking risk is identified in this bounded change.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title clearly and concisely identifies the main change: trialing ubuntu-slim for the formatting job.
Description check Passed The description directly explains the runner change, workflow scope, USER initialization, validation results, and compatibility measurements.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
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

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Share

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.
Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 6efde5aa-820b-4d4c-994c-20b323020c39
Commits

Reviewing files that changed from the base of the PR and between 5193b35 and 723a3aa.

Files selected for processing: 1
  • .github/workflows/lint.yml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

@robjtede
robjtede added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit a3af702 Nov 3, 2026
25 checks passed
@robjtede
robjtede deleted the ci/ubuntu-slim-assessment branch November 3, 2026 16:28
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