main 33a243c

2026-10-12

83e4171fix(dnsfwd): bind the gateway address with IP_FREEBIND GPG Verifiedbrice
35b40b2test(integration): close the probe driver before the container scenario GPG Verifiedbrice
ea0a5eetest(integration): an empty jail/<exec name> directory is not a leftover GPG Verifiedbrice
2bb0741fix(vm): recognise the Firecracker the jailer execs into its chroot GPG Verifiedbrice
ea344adfix(vm): refuse a state directory whose jailed API socket path exceeds sun_path GPG Verifiedbrice
ed21f4ffix(vm): create the jailer chroot base directory GPG Verifiedbrice
e917abeMerge pull request 'feat(runner): executor, host loop and job frames' (#2) from feat/executor into main merge SSH Unverifiedbnema
b0c2e21ci: fetch the private bnema.dev/ermite* modules through the runner's Forgejo route GPG Verifiedbrice
b60a661fix: lowercase the host name in the loopback check; point the orphan cleanup comments to JobExtension.cs:891-939; drop a stale comment in proc.go GPG Verifiedbrice
799f55cfix(host): AppendNow warns when the log offset may be stale after a send cut short (GO-005) GPG Verifiedbrice
ca9abadfix(host): bound the report by ShutdownReport once the runner's shutdown channel is closed, not CompleteDeadline (GO-004) GPG Verifiedbrice
abd0a01fix(executor): write the step script through the RUNNER_TEMP root, exclusively, instead of an absolute path (GO-002) GPG Verifiedbrice
f9fc798fix(executor): chown the file created by createExcl through its open handle, not by name after the close (GO-003) GPG Verifiedbrice
63269d4fix(unit): drop PrivateTmp, ProtectHome, ProtectKernelModules and ProtectKernelLogs, which hide the loop mounts of container mode from Docker; test that the unit sets no option creating a mount namespace (GO-001) GPG Verifiedbrice
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

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