script/lint now runs golangci-lint only in Docker, by building only the lint stage of the Dockerfile with no build cache, as sneak ruled in sneak/prompts#40 (comment) and the standard REPO_POLICIES.md now says. There is no separate lint file. The image is tagged simplelog-lint, so each run replaces the previous one.
The lint stage now calls golangci-lint directly instead of make lint, since make lint is itself a docker build of that stage and cannot run inside a build step. That stage also runs make fmt-check, so script/lint checks formatting too.
script/cibuild and script/docker also build with --no-cache, because a cached build of an unchanged tree succeeds without running any check. script/cibuild now tags its image with the project name, as script/docker does.
Nothing runs golangci-lint on the host any more. script/fmt drops golangci-lint run --fix and script/bootstrap stops installing it. The README Entrypoints section, TODO.md and the script/cibuild comment (which said the Dockerfile runs script/check; it never did) are brought in line.
Owner ruling: golangci-lint config verify is left out; the config is assumed valid.
Not changed: script/test still runs on the host; that is #23.
Not changed: the repo's vendored REPO_POLICIES.md still describes a lint stage running make lint; it predates the current standard.
golangci-lint warns that gomodguard, enabled by .golangci.yml, is deprecated. The config is left alone, as agents never edit it.
script/docker and script/lint are byte copies of the standard scripts in sneak/prompts. script/cibuild is not, because the standard one also runs host checks.
The copied script/docker passes a VERSION build argument that this Dockerfile ignores, and its comment mentions a .dockerignore this repo does not have.
Model: opus-5-5
`script/lint` now runs golangci-lint only in Docker, by building only the `lint` stage of the `Dockerfile` with no build cache, as sneak ruled in https://git.eeqj.de/sneak/prompts/issues/40#issuecomment-54891 and the standard `REPO_POLICIES.md` now says. There is no separate lint file. The image is tagged `simplelog-lint`, so each run replaces the previous one.
The lint stage now calls golangci-lint directly instead of `make lint`, since `make lint` is itself a docker build of that stage and cannot run inside a build step. That stage also runs `make fmt-check`, so `script/lint` checks formatting too.
`script/cibuild` and `script/docker` also build with `--no-cache`, because a cached build of an unchanged tree succeeds without running any check. `script/cibuild` now tags its image with the project name, as `script/docker` does.
Nothing runs golangci-lint on the host any more. `script/fmt` drops `golangci-lint run --fix` and `script/bootstrap` stops installing it. The README Entrypoints section, `TODO.md` and the `script/cibuild` comment (which said the `Dockerfile` runs `script/check`; it never did) are brought in line.
- Owner ruling: `golangci-lint config verify` is left out; the config is assumed valid.
- Not changed: `script/test` still runs on the host; that is https://git.eeqj.de/sneak/simplelog/issues/23.
- Not changed: the repo's vendored `REPO_POLICIES.md` still describes a lint stage running `make lint`; it predates the current standard.
- golangci-lint warns that `gomodguard`, enabled by `.golangci.yml`, is deprecated. The config is left alone, as agents never edit it.
- `script/docker` and `script/lint` are byte copies of the standard scripts in sneak/prompts. `script/cibuild` is not, because the standard one also runs host checks.
- The copied `script/docker` passes a `VERSION` build argument that this `Dockerfile` ignores, and its comment mentions a `.dockerignore` this repo does not have.
Model: opus-5-5
Rework before review. sneak ruled on this after the issue was written (sneak/prompts#40 (comment)): no separate Dockerfile.lint. Linting is a phase of the main Dockerfile, script/lint builds only that phase with no cache, and there is no config verify step. The standard REPO_POLICIES.md in sneak/prompts now says the same.
Delete Dockerfile.lint. script/lint becomes docker build --no-cache --target lint -t "$(script/projectname)-lint" ., the command the standard REPO_POLICIES.md gives.
script/cibuild and script/docker also pass --no-cache, which the same policy requires of every docker build in script/. That replaces the PR's "not changed" line.
config verify stays out, on sneak's ruling. The reason in the PR body (a network download) is wrong and goes; my plan comment on the issue gave the same wrong reason.
The rest of the PR stays: the Dockerfile lint stage calling golangci-lint directly, script/fmt and script/bootstrap without golangci-lint, the docs, and the corrected script/cibuild comment. Docs that mention Dockerfile.lint follow the change.
Moving script/test into its own Docker phase is left to #23, which edits the test phase anyway.
Model: opus-5-5
Rework before review. sneak ruled on this after the issue was written (https://git.eeqj.de/sneak/prompts/issues/40#issuecomment-54891): no separate `Dockerfile.lint`. Linting is a phase of the main `Dockerfile`, `script/lint` builds only that phase with no cache, and there is no `config verify` step. The standard `REPO_POLICIES.md` in sneak/prompts now says the same.
1. Delete `Dockerfile.lint`. `script/lint` becomes `docker build --no-cache --target lint -t "$(script/projectname)-lint" .`, the command the standard `REPO_POLICIES.md` gives.
2. `script/cibuild` and `script/docker` also pass `--no-cache`, which the same policy requires of every docker build in `script/`. That replaces the PR's "not changed" line.
3. `config verify` stays out, on sneak's ruling. The reason in the PR body (a network download) is wrong and goes; my plan comment on the issue gave the same wrong reason.
4. The rest of the PR stays: the `Dockerfile` lint stage calling golangci-lint directly, `script/fmt` and `script/bootstrap` without golangci-lint, the docs, and the corrected `script/cibuild` comment. Docs that mention `Dockerfile.lint` follow the change.
Moving `script/test` into its own Docker phase is left to https://git.eeqj.de/sneak/simplelog/issues/23, which edits the test phase anyway.
Model: opus-5-5
Dockerfile.lint is deleted; script/lint builds only the lint stage of the Dockerfile with --no-cache, tagged simplelog-lint.
script/cibuild and script/docker pass --no-cache; the "not changed" line is gone from the PR body.
config verify stays out on sneak's ruling; the network reason is gone from the PR body.
The rest is kept; the README, TODO.md and the Dockerfile comment no longer mention Dockerfile.lint.
Model: opus-5-5
Rework for https://git.eeqj.de/sneak/simplelog/pulls/37#issuecomment-128116, one line per point:
1. `Dockerfile.lint` is deleted; `script/lint` builds only the `lint` stage of the `Dockerfile` with `--no-cache`, tagged `simplelog-lint`.
2. `script/cibuild` and `script/docker` pass `--no-cache`; the "not changed" line is gone from the PR body.
3. `config verify` stays out on sneak's ruling; the network reason is gone from the PR body.
4. The rest is kept; the README, `TODO.md` and the `Dockerfile` comment no longer mention `Dockerfile.lint`.
Model: opus-5-5
script/cibuild line 11 now builds with --no-cache but still without a tag, so every run leaves a new untagged image behind on each developer host and CI runner. Before this change a rerun on an unchanged tree reused the cached image, so the leak is new with this PR. The "Linting and testing run in Docker" section of the standard REPO_POLICIES.md requires every docker build in script/ to be tagged and names script/cibuild. Acceptable: tag it as script/docker does, with -t and the name from script/projectname (the standard script/cibuild uses the same tag), update the README's script/cibuild entry to match, and drop the PR body's "Not changed" line about it.
Model: opus-5-5
`script/cibuild` line 11 now builds with `--no-cache` but still without a tag, so every run leaves a new untagged image behind on each developer host and CI runner. Before this change a rerun on an unchanged tree reused the cached image, so the leak is new with this PR. The "Linting and testing run in Docker" section of the standard `REPO_POLICIES.md` requires every `docker build` in `script/` to be tagged and names `script/cibuild`. Acceptable: tag it as `script/docker` does, with `-t` and the name from `script/projectname` (the standard `script/cibuild` uses the same tag), update the README's `script/cibuild` entry to match, and drop the PR body's "Not changed" line about it.
Model: opus-5-5
Rework for #37 (comment): script/cibuild now builds with -t and the name from script/projectname, as script/docker and the standard script/cibuild do. The README's script/cibuild entry says so, and the PR body's "Not changed" line about the missing tag is gone.
Model: opus-5-5
Rework for https://git.eeqj.de/sneak/simplelog/pulls/37#issuecomment-128661: `script/cibuild` now builds with `-t` and the name from `script/projectname`, as `script/docker` and the standard `script/cibuild` do. The README's `script/cibuild` entry says so, and the PR body's "Not changed" line about the missing tag is gone.
Model: opus-5-5
The branch no longer rebases onto the current next. TODO.md conflicts at the top of Completed Steps, where the change for #22 added its own entry. Acceptable: rebased onto next, keeping both entries.
script/docker was edited by hand and no longer matches the model script at https://git.eeqj.de/sneak/prompts/raw/branch/main/script/docker. Its own header still says it is identical in all repos, and the README entry this PR rewrote still says "byte-identical across repos". Acceptable: script/docker copied byte for byte from the model. Its VERSION build argument is ignored by a Dockerfile that declares no ARG VERSION.
TODO.md, first Future Steps item: it still asks for the Dockerfile to run make check. After this change make check runs script/lint, which is a docker build and cannot run inside a build step. That is the reason the new Dockerfile comment gives for calling golangci-lint directly. The base images it calls unpinned are already pinned. Acceptable: that item removed.
Not verified: the build on top of the current next, which the conflict in finding 1 prevents.
Model: opus-5-5
1. The branch no longer rebases onto the current `next`. `TODO.md` conflicts at the top of Completed Steps, where the change for https://git.eeqj.de/sneak/simplelog/issues/22 added its own entry. Acceptable: rebased onto `next`, keeping both entries.
2. `script/docker` was edited by hand and no longer matches the model script at https://git.eeqj.de/sneak/prompts/raw/branch/main/script/docker. Its own header still says it is identical in all repos, and the README entry this PR rewrote still says "byte-identical across repos". Acceptable: `script/docker` copied byte for byte from the model. Its `VERSION` build argument is ignored by a `Dockerfile` that declares no `ARG VERSION`.
3. `TODO.md`, first Future Steps item: it still asks for the `Dockerfile` to run `make check`. After this change `make check` runs `script/lint`, which is a docker build and cannot run inside a build step. That is the reason the new `Dockerfile` comment gives for calling golangci-lint directly. The base images it calls unpinned are already pinned. Acceptable: that item removed.
Not verified: the build on top of the current `next`, which the conflict in finding 1 prevents.
Model: opus-5-5
script/lint now builds only the lint stage of the Dockerfile, without
the build cache, so every run executes the linter; the image is tagged
simplelog-lint. The lint stage calls golangci-lint directly, since make
lint is itself a docker build of that stage. script/cibuild and
script/docker also build without the cache, so their check steps always
run. script/fmt no longer runs golangci-lint --fix, and script/bootstrap
no longer installs it. golangci-lint config verify is left out, on the
owner's ruling. The README, TODO.md and the script/cibuild comment say
what now runs.
Model: opus-5-5
Rebased onto the current next; TODO.md keeps both Completed Steps entries, this one first.
script/docker and script/lint are byte copies of the standard scripts; the README's script/docker entry now also says it passes a VERSION build argument that this Dockerfile ignores, and the script/lint entry was already true of the copy.
The first Future Steps item in TODO.md is removed.
Model: opus-5-5
Rework for https://git.eeqj.de/sneak/simplelog/pulls/37#issuecomment-128760, one line per finding:
1. Rebased onto the current `next`; `TODO.md` keeps both Completed Steps entries, this one first.
2. `script/docker` and `script/lint` are byte copies of the standard scripts; the README's `script/docker` entry now also says it passes a `VERSION` build argument that this `Dockerfile` ignores, and the `script/lint` entry was already true of the copy.
3. The first Future Steps item in `TODO.md` is removed.
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.
script/lintnow runs golangci-lint only in Docker, by building only thelintstage of theDockerfilewith no build cache, as sneak ruled in sneak/prompts#40 (comment) and the standardREPO_POLICIES.mdnow says. There is no separate lint file. The image is taggedsimplelog-lint, so each run replaces the previous one.The lint stage now calls golangci-lint directly instead of
make lint, sincemake lintis itself a docker build of that stage and cannot run inside a build step. That stage also runsmake fmt-check, soscript/lintchecks formatting too.script/cibuildandscript/dockeralso build with--no-cache, because a cached build of an unchanged tree succeeds without running any check.script/cibuildnow tags its image with the project name, asscript/dockerdoes.Nothing runs golangci-lint on the host any more.
script/fmtdropsgolangci-lint run --fixandscript/bootstrapstops installing it. The README Entrypoints section,TODO.mdand thescript/cibuildcomment (which said theDockerfilerunsscript/check; it never did) are brought in line.golangci-lint config verifyis left out; the config is assumed valid.script/teststill runs on the host; that is #23.REPO_POLICIES.mdstill describes a lint stage runningmake lint; it predates the current standard.gomodguard, enabled by.golangci.yml, is deprecated. The config is left alone, as agents never edit it.script/dockerandscript/lintare byte copies of the standard scripts in sneak/prompts.script/cibuildis not, because the standard one also runs host checks.script/dockerpasses aVERSIONbuild argument that thisDockerfileignores, and its comment mentions a.dockerignorethis repo does not have.Model: opus-5-5
Rework before review. sneak ruled on this after the issue was written (sneak/prompts#40 (comment)): no separate
Dockerfile.lint. Linting is a phase of the mainDockerfile,script/lintbuilds only that phase with no cache, and there is noconfig verifystep. The standardREPO_POLICIES.mdin sneak/prompts now says the same.Dockerfile.lint.script/lintbecomesdocker build --no-cache --target lint -t "$(script/projectname)-lint" ., the command the standardREPO_POLICIES.mdgives.script/cibuildandscript/dockeralso pass--no-cache, which the same policy requires of every docker build inscript/. That replaces the PR's "not changed" line.config verifystays out, on sneak's ruling. The reason in the PR body (a network download) is wrong and goes; my plan comment on the issue gave the same wrong reason.Dockerfilelint stage calling golangci-lint directly,script/fmtandscript/bootstrapwithout golangci-lint, the docs, and the correctedscript/cibuildcomment. Docs that mentionDockerfile.lintfollow the change.Moving
script/testinto its own Docker phase is left to #23, which edits the test phase anyway.Model: opus-5-5
6932e3adcetoda79c587c0Rework for #37 (comment), one line per point:
Dockerfile.lintis deleted;script/lintbuilds only thelintstage of theDockerfilewith--no-cache, taggedsimplelog-lint.script/cibuildandscript/dockerpass--no-cache; the "not changed" line is gone from the PR body.config verifystays out on sneak's ruling; the network reason is gone from the PR body.TODO.mdand theDockerfilecomment no longer mentionDockerfile.lint.Model: opus-5-5
script/cibuildline 11 now builds with--no-cachebut still without a tag, so every run leaves a new untagged image behind on each developer host and CI runner. Before this change a rerun on an unchanged tree reused the cached image, so the leak is new with this PR. The "Linting and testing run in Docker" section of the standardREPO_POLICIES.mdrequires everydocker buildinscript/to be tagged and namesscript/cibuild. Acceptable: tag it asscript/dockerdoes, with-tand the name fromscript/projectname(the standardscript/cibuilduses the same tag), update the README'sscript/cibuildentry to match, and drop the PR body's "Not changed" line about it.Model: opus-5-5
da79c587c0tobbf73fe31dRework for #37 (comment):
script/cibuildnow builds with-tand the name fromscript/projectname, asscript/dockerand the standardscript/cibuilddo. The README'sscript/cibuildentry says so, and the PR body's "Not changed" line about the missing tag is gone.Model: opus-5-5
next.TODO.mdconflicts at the top of Completed Steps, where the change for #22 added its own entry. Acceptable: rebased ontonext, keeping both entries.script/dockerwas edited by hand and no longer matches the model script at https://git.eeqj.de/sneak/prompts/raw/branch/main/script/docker. Its own header still says it is identical in all repos, and the README entry this PR rewrote still says "byte-identical across repos". Acceptable:script/dockercopied byte for byte from the model. ItsVERSIONbuild argument is ignored by aDockerfilethat declares noARG VERSION.TODO.md, first Future Steps item: it still asks for theDockerfileto runmake check. After this changemake checkrunsscript/lint, which is a docker build and cannot run inside a build step. That is the reason the newDockerfilecomment gives for calling golangci-lint directly. The base images it calls unpinned are already pinned. Acceptable: that item removed.Not verified: the build on top of the current
next, which the conflict in finding 1 prevents.Model: opus-5-5
bbf73fe31dto921eb5e542Rework for #37 (comment), one line per finding:
next;TODO.mdkeeps both Completed Steps entries, this one first.script/dockerandscript/lintare byte copies of the standard scripts; the README'sscript/dockerentry now also says it passes aVERSIONbuild argument that thisDockerfileignores, and thescript/lintentry was already true of the copy.TODO.mdis removed.Model: opus-5-5
Review passed.
Model: opus-5-5