Skip to content

Commit a353545

Browse files
committed
agents: the vgem chapter the worst day taught, and the release site nothing exercises
Five facts from the 44.5.0 odyssey, appended to the vm smoke section in its dated voice: the runner image float can drop a kernel module from under a green CI (vgem left modules-extra, every lap dead at qemu's first line with no repo change to blame - the kvm action builds it out of tree now, the WSL trick); existence is not accessibility (an insmod'd node ships 0600 root:root, qemu's scan silently skips the EACCES and reports "no node", and ls passes because ls opens nothing - the gate is the qemu user's access(2)); an anonymous raw.githubusercontent fetch is rate-limited from Actions egress after the expensive steps (the sources vendor into the repo); the release's live ISO step is the one qemu site no pre-tag run exercises, where pins older than a default change strand until a release pays for them (8d823ad); and ssh refuses a world-readable key while BatchMode swallows the refusal, so the stage read "no ssh within 1800s" while the guest sat at its prompt. One correction rides along: the libEGL fact's tail still claimed the Xvfb contract as current, but egl-headless replaced the X server entirely (ab6e736) - the xvfb-run orphan-VM trap stays recorded as history, the contract claim was false.
1 parent 8d823ad commit a353545

1 file changed

Lines changed: 37 additions & 2 deletions

File tree

‎AGENTS.md‎

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,10 @@ road every release ships.
140140
the wrong way to head a GL display: it runs the command as a
141141
child, not exec, so the script's `$!` names the wrapper shell and
142142
every `kill $qemu` orphans the VM. One Xvfb per run, `DISPLAY`
143-
exported, qemu the direct child — that is the contract the smoke's
144-
traps and port reuse already assume.
143+
exported, qemu the direct child — that was the contract until
144+
egl-headless replaced the X server entirely (Oct 05, ab6e736; the
145+
gtk-on-Xvfb pairing killed qemu three ways); the orphan-VM trap
146+
stays recorded for the next host that heads a display.
145147
- The greeter chain's stderr (niri's protocol errors, kuma-greeter's
146148
log lines) goes to VT1 and dies with the greetd session: the
147149
journal never sees why a login screen failed, and "greeter exited
@@ -162,6 +164,39 @@ road every release ships.
162164
`r##"…"##` for anything that quotes. The staging goldens caught it
163165
only after rustfmt and the identity checks were already fixed —
164166
`cargo test` in the container is the gate that actually runs first.
167+
- The runner's ground moves under a green CI, Oct 05: the 20261004
168+
image's kernel (6.17.0-1022-azure) dropped vgem from modules-extra,
169+
and every VM lap after the image update died at qemu's first line
170+
("egl: no drm render node available") with no repo change to blame.
171+
The guest's GL is virgl's, and virgl builds its host context through
172+
a DRM render node a GPU-less runner does not have; the kvm action
173+
builds vgem out of tree against the running kernel's headers when
174+
the module will not load (the WSL trick: one file, seconds, no
175+
reboot).
176+
- Existence is not accessibility, Oct 05: an insmod'd node ships 0600
177+
root:root — devtmpfs's default, and the runner's udev rules do not
178+
widen a faux-bus vgem — while the smoke's qemu runs as the runner
179+
user. qemu's node scan silently skips the EACCES and reports "no
180+
node", and the ls check passed, because ls opens nothing. The node
181+
is chmod'd 666 like /dev/kvm, and the gate is the qemu user's own
182+
access(2).
183+
- An anonymous curl against raw.githubusercontent.com is rate-limited
184+
(HTTP 429) from Actions egress, Oct 05 — the iso lap died on the
185+
third fetch, after the expensive apt steps had already run. Small
186+
frozen upstream sources vendor into the repo (the vgem pair,
187+
torvalds v6.17 verbatim, beside the action): a build step with no
188+
network has no network to lose.
189+
- The release's live ISO step is the one qemu site no pre-tag run
190+
exercises, Oct 05: ci's iso job rides the smoke defaults, and the
191+
rolling channel's publish=false skips the ISO entirely, so display
192+
pins older than a default change strand there until a release pays
193+
for them — the vnc-era pair that bc4f4e1's virgl fix missed, caught
194+
by reading the tag road, not by a run (8d823ad).
195+
- ssh refuses a world-readable private key outright, and BatchMode
196+
swallows the refusal, Oct 05: the stage read "no ssh within 1800s"
197+
while the guest sat at its login prompt, reachable and willing, for
198+
half an hour. The key is 0600 at write and at the use site both, so
199+
an artifact kept by an older binary still works.
165200

166201
## Agent skills
167202

0 commit comments

Comments
 (0)