Since #43 landed, script/cibuild is the sneak/prompts template: it runs script/bootstrap, then script/check, then the image build. The Gitea runner has Docker and git but no Go, and script/bootstrap cannot install Go there:
Its apt path runs apt-get install without ever running apt-get update, so on a fresh Debian or Ubuntu host (or a runner image) the package lists are empty and every install fails. In a clean ubuntu:24.04 container, script/bootstrap stops with E: Unable to locate package git.
script/fmt-check needs gofmt, and script/bootstrap runs go mod download, both on the host.
The CI run of the issue 38 branch failed within seconds, and next carries the same script/cibuild, so its run fails too: next cannot pass Gitea CI as it stands.
Work, on a branch cut from next, PR to next:
script/bootstrap installs Go at the exact version the Dockerfile's Go image carries, from the official release archive at https://go.dev/dl/, checked against a sha256 written in the script, whenever the installed go reports a different version or there is none. That is the form REPO_POLICIES.md gives for pinned tools: compare versions, never test presence. The scripts that need go or gofmt find the installed one even though bootstrap cannot change their caller's PATH, the way the template's script/fmt and script/fmt-check find node.
The apt path runs apt-get update once before its first install.
No sudo prompt and no interactive step; a non-root developer machine keeps working.
If #45 (prettier, also edits script/bootstrap) has landed when you rebase, keep its node and yarn steps.
Definition of done
On a fresh clone, script/bootstrap and then script/check pass inside a clean ubuntu:24.04 container that has only git and the Docker CLI added (the host's Docker socket mounted), and script/cibuild passes on the host.
The Gitea CI run of the PR branch passes.
make check passes.
Model: opus-5-5
Since https://git.eeqj.de/sneak/keyfunc/pulls/43 landed, `script/cibuild` is the `sneak/prompts` template: it runs `script/bootstrap`, then `script/check`, then the image build. The Gitea runner has Docker and git but no Go, and `script/bootstrap` cannot install Go there:
- Its apt path runs `apt-get install` without ever running `apt-get update`, so on a fresh Debian or Ubuntu host (or a runner image) the package lists are empty and every install fails. In a clean `ubuntu:24.04` container, `script/bootstrap` stops with `E: Unable to locate package git`.
- `script/fmt-check` needs `gofmt`, and `script/bootstrap` runs `go mod download`, both on the host.
The CI run of the issue 38 branch failed within seconds, and `next` carries the same `script/cibuild`, so its run fails too: `next` cannot pass Gitea CI as it stands.
Work, on a branch cut from `next`, PR to `next`:
- `script/bootstrap` installs Go at the exact version the `Dockerfile`'s Go image carries, from the official release archive at `https://go.dev/dl/`, checked against a sha256 written in the script, whenever the installed `go` reports a different version or there is none. That is the form `REPO_POLICIES.md` gives for pinned tools: compare versions, never test presence. The scripts that need `go` or `gofmt` find the installed one even though bootstrap cannot change their caller's `PATH`, the way the template's `script/fmt` and `script/fmt-check` find node.
- The apt path runs `apt-get update` once before its first install.
- No `sudo` prompt and no interactive step; a non-root developer machine keeps working.
- If https://git.eeqj.de/sneak/keyfunc/pulls/45 (prettier, also edits `script/bootstrap`) has landed when you rebase, keep its node and yarn steps.
## Definition of done
- On a fresh clone, `script/bootstrap` and then `script/check` pass inside a clean `ubuntu:24.04` container that has only `git` and the Docker CLI added (the host's Docker socket mounted), and `script/cibuild` passes on the host.
- The Gitea CI run of the PR branch passes.
- `make check` passes.
Model: opus-5-5
Labelled critical: next fails its Gitea CI run, because script/cibuild now bootstraps Go on the runner and script/bootstrap cannot install it there, so next cannot be shown green for a merge to main.
Model: opus-5-5
Labelled critical: `next` fails its Gitea CI run, because `script/cibuild` now bootstraps Go on the runner and `script/bootstrap` cannot install it there, so `next` cannot be shown green for a merge to `main`.
Model: opus-5-5
Built in #47: script/bootstrap installs the Dockerfile's Go (1.26.8) from go.dev, checked against a sha256 in the script, into ~/.local/go whenever the go on PATH reports another version. The scripts and the Makefile that need Go put that directory first on their PATH, and the apt path runs apt-get update before its first install.
Unverified: the Gitea CI run of the branch did not start within an hour of the push; it is still queued.
Model: opus-5-5
Built in https://git.eeqj.de/sneak/keyfunc/pulls/47: `script/bootstrap` installs the `Dockerfile`'s Go (`1.26.8`) from go.dev, checked against a sha256 in the script, into `~/.local/go` whenever the `go` on `PATH` reports another version. The scripts and the `Makefile` that need Go put that directory first on their `PATH`, and the apt path runs `apt-get update` before its first install.
Unverified: the Gitea CI run of the branch did not start within an hour of the push; it is still queued.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Since #43 landed,
script/cibuildis thesneak/promptstemplate: it runsscript/bootstrap, thenscript/check, then the image build. The Gitea runner has Docker and git but no Go, andscript/bootstrapcannot install Go there:apt-get installwithout ever runningapt-get update, so on a fresh Debian or Ubuntu host (or a runner image) the package lists are empty and every install fails. In a cleanubuntu:24.04container,script/bootstrapstops withE: Unable to locate package git.script/fmt-checkneedsgofmt, andscript/bootstraprunsgo mod download, both on the host.The CI run of the issue 38 branch failed within seconds, and
nextcarries the samescript/cibuild, so its run fails too:nextcannot pass Gitea CI as it stands.Work, on a branch cut from
next, PR tonext:script/bootstrapinstalls Go at the exact version theDockerfile's Go image carries, from the official release archive athttps://go.dev/dl/, checked against a sha256 written in the script, whenever the installedgoreports a different version or there is none. That is the formREPO_POLICIES.mdgives for pinned tools: compare versions, never test presence. The scripts that needgoorgofmtfind the installed one even though bootstrap cannot change their caller'sPATH, the way the template'sscript/fmtandscript/fmt-checkfind node.apt-get updateonce before its first install.sudoprompt and no interactive step; a non-root developer machine keeps working.script/bootstrap) has landed when you rebase, keep its node and yarn steps.Definition of done
script/bootstrapand thenscript/checkpass inside a cleanubuntu:24.04container that has onlygitand the Docker CLI added (the host's Docker socket mounted), andscript/cibuildpasses on the host.make checkpasses.Model: opus-5-5
Labelled critical:
nextfails its Gitea CI run, becausescript/cibuildnow bootstraps Go on the runner andscript/bootstrapcannot install it there, sonextcannot be shown green for a merge tomain.Model: opus-5-5
Built in #47:
script/bootstrapinstalls theDockerfile's Go (1.26.8) from go.dev, checked against a sha256 in the script, into~/.local/gowhenever thegoonPATHreports another version. The scripts and theMakefilethat need Go put that directory first on theirPATH, and the apt path runsapt-get updatebefore its first install.Unverified: the Gitea CI run of the branch did not start within an hour of the push; it is still queued.
Model: opus-5-5