Skip to content

feat(image): b22/b15 boot for the job - #352

Merged
rldyourmnd merged 2 commits into
mainfrom
feat/image-boots-for-the-job
Sep 1, 2026
Merged

feat(image): b22/b15 boot for the job#352
rldyourmnd merged 2 commits into
mainfrom
feat/image-boots-for-the-job

Conversation

@rldyourmnd

Copy link
Copy Markdown
Contributor

Recipe wave b22 (standard) / b15 (docker): pinned runner ids 1000:1001 on both images (the gid split failed every warm claim on docker pools until the provider config was patched around it), warm-up only where a hot runtime will be claimed, cloud-init stages only when there is a cloud-config to apply, server units masked. Measured on a live worker: 59 s userspace boot, of which the job needed almost none. Runtime image constants and the estate move with the promotion, not with this merge.

https://claude.ai/code/session_0128syXKxAGCfJGRDxUUNQXp

Measured on a live worker on 2026-09-01: 59 s of userspace boot, of which
the job needed almost none. Four changes to the recipe, one image wave:

- The runner's uid and gid are pinned (1000:1001) on every image. useradd had
  been picking the next free ids, so the docker image ended up with gid 1000
  while the standard image had 1001, and the provider -- which checks the
  owner of every file a worker hands back -- failed every warm claim on a
  docker-capable pool.
- The warm-up (twelve seconds of Runner.Listener warmup) runs only where a
  hot runtime will be claimed: warm-preparing workers, the image smoke, and
  unstamped instances. A one-job worker skips it; its assignment arrives as
  soon as the network is up, and the warm-up only competed with the job.
- cloud-init runs its stages only when there is a cloud-config to apply. A
  direct-JIT one-job worker and a warm worker have none, and the four stages
  cost each boot about eight seconds of CPU -- and a warm worker paid it
  every five seconds, because the unit then failed on the runner service it
  had no reason to expect.
- snapd, plymouth, e2scrub_reap, dpkg-db-backup, logrotate, man-db, motd-news,
  fstrim, the ua timers and sysstat are masked. A one-job worker boots to
  run one job; the smoke now proves they stay masked and that the ids hold.

The aliases advance to b22 and b15; the pinned recipe fingerprint moves with
them. Runtime constants and the estate follow the promotion, not this merge.

Claude-Session: https://claude.ai/code/session_0128syXKxAGCfJGRDxUUNQXp
@rldyourmnd
rldyourmnd enabled auto-merge September 1, 2026 20:46
@rldyourmnd
rldyourmnd merged commit 846679f into main Sep 1, 2026
10 checks passed
@rldyourmnd
rldyourmnd deleted the feat/image-boots-for-the-job branch September 1, 2026 21:21
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