v0.4.4 edcdd4c

2026-10-12

3f47b6ddocs: leave UMask out of the unit and say why (G5) GPG Verifiedbrice
01928f4docs: systemd unit with hardening and the list of what is absent, register with systemd-run and stdin, logs under journald, stop budget (G5, G6) GPG Verifiedbrice
198b1d9ci: build the runner statically (G10) GPG Verifiedbrice
ee276afrefactor(host): split run and execute into acknowledge, startStopTimers, report, startSandbox, drive and outcomeOf (G2) GPG Verifiedbrice
c5b1e6drefactor(executor,guest): split execute into prepareFileCommands, scriptInputs, printHeader, scriptCommand, processEnv and startProcess; serve into waitForRun and runStub (G2) GPG Verifiedbrice
610fdc0refactor(container): rename the rootless option UnsafeAllowRootlessForTests and test that production never sets it (G4) GPG Verifiedbrice
8ec9ad2test: wait for the ready line or the first frame instead of sleeping (G8) GPG Verifiedbrice
3530513fix(guest): a missing step user fails the job instead of running the steps as root (m4) GPG Verifiedbrice
320711bfix(host): a shutdown ends the wait for the acknowledgement and the report fits a bounded budget (M5); private state directory (m7); goroutines end with their job (m8) GPG Verifiedbrice
495cf95fix(host): never follow redirects and refuse plain http except loopback (M1); read the register token from stdin or the environment before the flag (m5) GPG Verifiedbrice
508a002fix(host): retry CompleteJob once as a failure when the server refuses the result (M4); structured logs with the job's fields instead of Logf (G1) GPG Verifiedbrice
af4d447fix(host): do not trust the guest's step numbers and lines (M3); resync to the server's line count (m6); one AppendLog validator for the host tests (G3) GPG Verifiedbrice
a21f495fix(host): enforce the job timeout from the receipt of the job and send the remaining time to the executor (M6, m1) GPG Verifiedbrice
fd7cbe1fix(executor): signal the shell like the official runner (m2), bound a line without end (m3), read ACTIONS_ALLOW_* from the step environment (G7) GPG Verifiedbrice
8c00265fix(executor): never follow links in the directory of the steps: file commands, event.json and scripts go through an os.Root with O_NOFOLLOW GPG Verifiedbrice
366ab07refactor(executor): restore a comment lost in the split GPG Verifiedbrice
760ddf2refactor(executor): split steps.go into job.go, step.go and exec_step.go (pure move) GPG Verifiedbrice
96d8ce3docs(readme): service installation, image requirements, job limits, end-to-end tests GPG Verifiedbrice
012b708test(e2e): chain test of corpus jobs: fake RunnerService, host loop, container sandbox, executor, recordings GPG Verifiedbrice
dddf7abbuild(image): a python command for shell: python; contrib: systemd unit GPG Verifiedbrice
35d0c10test(integration): run a job through the executor in a micro-VM GPG Verifiedbrice
1e4636ctest(e2e): run jobs through the real image in a container: runner user, ownership, PATH/ENV files, cancel and orphan cleanup GPG Verifiedbrice
b70b211feat(host): register and run subcommands, README, lint fixes GPG Verifiedbrice
5d5c671test(host): fake RunnerService tests for polling, acknowledgement, cancel, log retries, completion and shutdown; job outputs checked by the executor GPG Verifiedbrice
7d17a05feat(host): the host loop: register, fetch jobs, run them in sandboxes, report logs, steps and results GPG Verifiedbrice
90f106afeat(guest): run jobs with the executor as the runner user; the stub stays for runs without a job GPG Verifiedbrice
aa5a961feat(execstream): carry a job and its steps, logs and result on the frame stream GPG Verifiedbrice
e0de5detest(executor): run corpus workflows through the executor and compare with the github.com recordings; stdout/stderr batching like ProcessInvoker GPG Verifiedbrice
9b7473eMerge pull request 'feat(sandbox): micro-VM and container job sandboxes' (#1) from feat/sandbox into main merge SSH Unverifiedbnema
41c9e28feat(executor): run the run steps of a job: contexts, conditions, env, file commands, workflow commands, cancellation GPG Verifiedbrice
ac7c7b5feat(executor): build the job contexts and the default GITHUB_* and RUNNER_* environment GPG Verifiedbrice
e582440feat(executor): port the shell selection, script files and command line of run steps GPG Verifiedbrice
3470aadfeat(executor): port the file commands (GITHUB_ENV, OUTPUT, PATH, STATE, STEP_SUMMARY) GPG Verifiedbrice
ca0f9b5test(sandbox): find VMMs by id in the integration audit, emergency reap on failure, separate namespaces for the firewall test GPG Verifiedbrice
6be4205chore(build): consistent image tag, exact kernel option matching, e2fsprogs check, CI proto drift check; docs for the new limits, host lock and ip_forward GPG Verifiedbrice
146655afix(sandbox/container): host lock, deny-privileged and per-job warning, pids and swap limits, loop-mounted scratch disk, keep policy while the container may run, abortable boot, ErrLeaked GPG Verifiedbrice
2f75a56fix(sandbox/vm): jailer cgroup v2 limits and PID namespace, rate limiters, keep network while the VMM may run, abortable boot, reap by --id, Lchown/fchown GPG Verifiedbrice
1905b39feat(sandbox): host-wide lock, ErrLeaked/ErrBusy, boot gate, ID and Isolation, free-space warning, new limits in config GPG Verifiedbrice
8784b11fix(guest): escalate cancellation SIGINT/SIGTERM/SIGKILL, stream through frame writers, forward init signals; cancel channel in Drive GPG Verifiedbrice
af04fdcfix(dnsfwd): bound TCP connections and in-flight queries per listener, absolute TCP deadline, drop saturated UDP GPG Verifiedbrice
a706491fix(netpolicy): check guest traffic before conntrack accepts, close gateway DNS to other interfaces, block more special-use ranges GPG Verifiedbrice
b5ce612docs(readme): document sandboxes, configuration and integration tests GPG Verifiedbrice
ea1f07etest(sandbox): add opt-in VM and container integration tests GPG Verifiedbrice
d928a74feat(runner): add the init, exec and sandbox-check subcommands GPG Verifiedbrice
ecb0362feat(sandbox/container): add the Docker container driver with label-based reaping GPG Verifiedbrice
82488a8feat(sandbox/vm): add the Firecracker micro-VM driver with jailer, TAP and crash reaping GPG Verifiedbrice
d85c6abfeat(guest): add init (guest PID 1) and the stub executor GPG Verifiedbrice
a743879feat(sandbox): add the Sandbox and Driver interfaces, config and isolation selection GPG Verifiedbrice
4f2d9a2feat(dnsfwd): add a UDP and TCP DNS forwarder for sandbox gateways GPG Verifiedbrice
2e4b251feat(netpolicy): generate and apply the nftables policy of job sandboxes GPG Verifiedbrice

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 4

Tags 11

↑↓ moveenter openesc close