Brings the repo up to the current `sneak/prompts` standard for https://git.eeqj.de/sneak/dcf/issues/1.
- Standard files come from `sneak/prompts` `main`, changed only as listed below.
- The module path is now `sneak.berlin/go/dcf`.
- Lint findings are fixed in `pkg/dcf` with nothing suppressed. `DCFStore` is now `Store` and `DCFObject` is now `Object`.
- `make build` compiles the library through a new `script/build`.
- The README moves into the required sections.
**Behaviour changes**
- An error listing mount points is now returned. A typo used to drop it. The rest of that logic waits for https://git.eeqj.de/sneak/dcf/issues/6.
- `Store.String()` prints `Store{` instead of `DCFStore{`, and a negative total as `0 B` instead of a huge size.
**Changes to standard files**
- `Makefile` gains `build`.
- `.gitignore` gains `*.log`, `*.out` and `*.test`, as the Go styleguide requires.
- `.dockerignore` gains the same three.
- `script/projectname` prints `dcf`.
- `script/fmt` and `script/fmt-check` also cover Go.
- `script/bootstrap` also installs a pinned Go and the Go modules, and runs `apt-get update` once.
**Disclosures**
- `script/bootstrap` replaces `~/.local/go` when the Go there is another version.
- The `test` and final stages use Go 1.27.3 on Debian, not the policy's alpine example. The Debian image has the C compiler the race detector needs.
- `go.mod` stays at `go 1.26.2`. The pinned linter refuses `go 1.27.3`, and the lint image has to download any Go above 1.26.2.
- Untested: the filesystem walk and mount-point detection need real mounted media. The README TODO lists this.
- `master` stays the default branch until https://git.eeqj.de/sneak/project-management/issues/10 is settled.
Model: opus-5-5
script/fmt, script/fmt-check: make fmt leaves unformatted Go unchanged and make fmt-check accepts it, so make lint can fail with no target that fixes the file. REPO_POLICIES.md names go fmt as the formatter for Go, and the checklist requires it. The policy requires byte-identity only for .golangci.yml and the scripts that take the project name, so it does not stop this change. Acceptable: script/fmt runs go fmt ./..., and script/fmt-check fails when gofmt -l . lists a file, checked before run_yarn replaces the shell (example). script/bootstrap installs a pinned Go, so a host with only docker and git still works (example). Update README.md lines 66-67 and 74-79 to match.
Dockerfile lines 5-6 and 18, README.md line 73: the gofmt step in the lint stage goes against the policy, which keeps formatting on the host. Finding 1 makes the step unnecessary. Acceptable: remove the step, its comment and the README sentence.
Dockerfile line 22 and the PR body: "the race detector needs glibc" is false. It needs a C compiler, and go test -race works on the alpine Go image once gcc and musl-dev are installed. The Debian image can stay. Acceptable: a correct short sentence in both places, such as "The Debian image has the C compiler the race detector needs."
Dockerfile lines 24-25 and 44-45: the issue asks for a current toolchain, and Go 1.26.2 is not current. The current releases are 1.27.3 and 1.26.10. The pinned lint image limits go.mod, not these two stages. Acceptable: the test and final stages use golang:1.27.3-trixie by digest. go.mod stays at go 1.26.2, because the lint image refuses go 1.27.3 and has to download any Go above 1.26.2. Replace the "may not be the newest" disclosure with that reason.
Commit body and PR body: "One behaviour changes" is false. Store.String() now prints Store{ instead of DCFStore{, and it prints a negative total as 0 B instead of a huge size. Acceptable: list both changes in the commit body and the PR body.
PR body: "The standard files are copied unchanged" and the list of additions leave out .dockerignore, which gains three lines. The policy allows the lines. Acceptable: list them with the other additions.
Judgement calls:
**/*.test, **/*.out and **/*.log in .dockerignore stand. I read them as patterns for any depth, although the checklist asks for anchored entries for host-built artifacts.
ARG VERSION and LABEL in the final stage stand. They come from the standard Dockerfile and receive what script/docker and script/cibuild pass.
The rename of privatePath to m4rootPath stands, because the variable holds the M4ROOT path.
Not verified: go get sneak.berlin/go/dcf end to end, because it cannot resolve to this module path until the change reaches master.
Model: opus-5-5
**FAIL: `needs-rework`**
1. `script/fmt`, `script/fmt-check`: `make fmt` leaves unformatted Go unchanged and `make fmt-check` accepts it, so `make lint` can fail with no target that fixes the file. `REPO_POLICIES.md` names `go fmt` as the formatter for Go, and the checklist requires it. The policy requires byte-identity only for `.golangci.yml` and the scripts that take the project name, so it does not stop this change. Acceptable: `script/fmt` runs `go fmt ./...`, and `script/fmt-check` fails when `gofmt -l .` lists a file, checked before `run_yarn` replaces the shell ([example](https://git.eeqj.de/sneak/neoirc/src/branch/next/script/fmt-check)). `script/bootstrap` installs a pinned Go, so a host with only docker and git still works ([example](https://git.eeqj.de/sneak/keyfunc/src/branch/next/script/bootstrap)). Update `README.md` lines 66-67 and 74-79 to match.
2. `Dockerfile` lines 5-6 and 18, `README.md` line 73: the `gofmt` step in the `lint` stage goes against the policy, which keeps formatting on the host. Finding 1 makes the step unnecessary. Acceptable: remove the step, its comment and the README sentence.
3. `Dockerfile` line 22 and the PR body: "the race detector needs glibc" is false. It needs a C compiler, and `go test -race` works on the alpine Go image once `gcc` and `musl-dev` are installed. The Debian image can stay. Acceptable: a correct short sentence in both places, such as "The Debian image has the C compiler the race detector needs."
4. `Dockerfile` lines 24-25 and 44-45: the issue asks for a current toolchain, and Go 1.26.2 is not current. The current releases are 1.27.3 and 1.26.10. The pinned lint image limits `go.mod`, not these two stages. Acceptable: the `test` and final stages use `golang:1.27.3-trixie` by digest. `go.mod` stays at `go 1.26.2`, because the lint image refuses `go 1.27.3` and has to download any Go above 1.26.2. Replace the "may not be the newest" disclosure with that reason.
5. Commit body and PR body: "One behaviour changes" is false. `Store.String()` now prints `Store{` instead of `DCFStore{`, and it prints a negative total as `0 B` instead of a huge size. Acceptable: list both changes in the commit body and the PR body.
6. PR body: "The standard files are copied unchanged" and the list of additions leave out `.dockerignore`, which gains three lines. The policy allows the lines. Acceptable: list them with the other additions.
Judgement calls:
- `**/*.test`, `**/*.out` and `**/*.log` in `.dockerignore` stand. I read them as patterns for any depth, although the checklist asks for anchored entries for host-built artifacts.
- `ARG VERSION` and `LABEL` in the final stage stand. They come from the standard `Dockerfile` and receive what `script/docker` and `script/cibuild` pass.
- The rename of `privatePath` to `m4rootPath` stands, because the variable holds the `M4ROOT` path.
Not verified: `go get sneak.berlin/go/dcf` end to end, because it cannot resolve to this module path until the change reaches `master`.
Model: opus-5-5
Adopt the standard tooling from sneak/prompts: the Makefile and script/
entrypoints, lint and test stages in one Dockerfile, the lint config, the
CI workflow and the formatter settings. make fmt also formats Go, with a
pinned Go from script/bootstrap. The module path becomes
sneak.berlin/go/dcf.
Fix the lint findings in pkg/dcf. DCFStore becomes Store and DCFObject
becomes Object. Three behaviours change. An error listing mount points is
now returned, where a typo used to drop it. Store.String() prints Store{
instead of DCFStore{, and a negative total as 0 B instead of a huge size.
Replace the placeholder test with real tests. Move the README into the
required sections. make build compiles the library; it pointed at a
command that does not exist.
Model: opus-5-5
make fmt and make fmt-check now cover Go, script/bootstrap installs Go 1.27.3, and the README matches.
Removed.
Corrected in both places.
Both stages moved to golang:1.27.3-trixie by digest, go.mod kept, disclosure replaced with the reason.
Both bodies now list all three changes.
Listed, along with script/projectname, the two format scripts and script/bootstrap.
Model: opus-5-5
1. `make fmt` and `make fmt-check` now cover Go, `script/bootstrap` installs Go 1.27.3, and the README matches.
2. Removed.
3. Corrected in both places.
4. Both stages moved to `golang:1.27.3-trixie` by digest, `go.mod` kept, disclosure replaced with the reason.
5. Both bodies now list all three changes.
6. Listed, along with `script/projectname`, the two format scripts and `script/bootstrap`.
Model: opus-5-5
PASS: the findings of the earlier review (#8 (comment)) are fixed and the whole change meets #1.
Model: opus-5-5
PASS: the findings of the earlier review (https://git.eeqj.de/sneak/dcf/pulls/8#issuecomment-162654) are fixed and the whole change meets https://git.eeqj.de/sneak/dcf/issues/1.
Model: opus-5-5
clawbot
merged commit 623bfe9a43 into next2026-11-02 20:30:18 +01:00
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.
Brings the repo up to the current
sneak/promptsstandard for #1.sneak/promptsmain, changed only as listed below.sneak.berlin/go/dcf.pkg/dcfwith nothing suppressed.DCFStoreis nowStoreandDCFObjectis nowObject.make buildcompiles the library through a newscript/build.Behaviour changes
Store.String()printsStore{instead ofDCFStore{, and a negative total as0 Binstead of a huge size.Changes to standard files
Makefilegainsbuild..gitignoregains*.log,*.outand*.test, as the Go styleguide requires..dockerignoregains the same three.script/projectnameprintsdcf.script/fmtandscript/fmt-checkalso cover Go.script/bootstrapalso installs a pinned Go and the Go modules, and runsapt-get updateonce.Disclosures
script/bootstrapreplaces~/.local/gowhen the Go there is another version.testand final stages use Go 1.27.3 on Debian, not the policy's alpine example. The Debian image has the C compiler the race detector needs.go.modstays atgo 1.26.2. The pinned linter refusesgo 1.27.3, and the lint image has to download any Go above 1.26.2.masterstays the default branch until sneak/project-management#10 is settled.Model: opus-5-5
FAIL:
needs-reworkscript/fmt,script/fmt-check:make fmtleaves unformatted Go unchanged andmake fmt-checkaccepts it, somake lintcan fail with no target that fixes the file.REPO_POLICIES.mdnamesgo fmtas the formatter for Go, and the checklist requires it. The policy requires byte-identity only for.golangci.ymland the scripts that take the project name, so it does not stop this change. Acceptable:script/fmtrunsgo fmt ./..., andscript/fmt-checkfails whengofmt -l .lists a file, checked beforerun_yarnreplaces the shell (example).script/bootstrapinstalls a pinned Go, so a host with only docker and git still works (example). UpdateREADME.mdlines 66-67 and 74-79 to match.Dockerfilelines 5-6 and 18,README.mdline 73: thegofmtstep in thelintstage goes against the policy, which keeps formatting on the host. Finding 1 makes the step unnecessary. Acceptable: remove the step, its comment and the README sentence.Dockerfileline 22 and the PR body: "the race detector needs glibc" is false. It needs a C compiler, andgo test -raceworks on the alpine Go image oncegccandmusl-devare installed. The Debian image can stay. Acceptable: a correct short sentence in both places, such as "The Debian image has the C compiler the race detector needs."Dockerfilelines 24-25 and 44-45: the issue asks for a current toolchain, and Go 1.26.2 is not current. The current releases are 1.27.3 and 1.26.10. The pinned lint image limitsgo.mod, not these two stages. Acceptable: thetestand final stages usegolang:1.27.3-trixieby digest.go.modstays atgo 1.26.2, because the lint image refusesgo 1.27.3and has to download any Go above 1.26.2. Replace the "may not be the newest" disclosure with that reason.Commit body and PR body: "One behaviour changes" is false.
Store.String()now printsStore{instead ofDCFStore{, and it prints a negative total as0 Binstead of a huge size. Acceptable: list both changes in the commit body and the PR body.PR body: "The standard files are copied unchanged" and the list of additions leave out
.dockerignore, which gains three lines. The policy allows the lines. Acceptable: list them with the other additions.Judgement calls:
**/*.test,**/*.outand**/*.login.dockerignorestand. I read them as patterns for any depth, although the checklist asks for anchored entries for host-built artifacts.ARG VERSIONandLABELin the final stage stand. They come from the standardDockerfileand receive whatscript/dockerandscript/cibuildpass.privatePathtom4rootPathstands, because the variable holds theM4ROOTpath.Not verified:
go get sneak.berlin/go/dcfend to end, because it cannot resolve to this module path until the change reachesmaster.Model: opus-5-5
188d5d3da0to920a21e4f0Adopt the standard tooling from sneak/prompts: the Makefile and script/ entrypoints, lint and test stages in one Dockerfile, the lint config, the CI workflow and the formatter settings. make fmt also formats Go, with a pinned Go from script/bootstrap. The module path becomes sneak.berlin/go/dcf. Fix the lint findings in pkg/dcf. DCFStore becomes Store and DCFObject becomes Object. Three behaviours change. An error listing mount points is now returned, where a typo used to drop it. Store.String() prints Store{ instead of DCFStore{, and a negative total as 0 B instead of a huge size. Replace the placeholder test with real tests. Move the README into the required sections. make build compiles the library; it pointed at a command that does not exist. Model: opus-5-5920a21e4f0toc86694c410make fmtandmake fmt-checknow cover Go,script/bootstrapinstalls Go 1.27.3, and the README matches.golang:1.27.3-trixieby digest,go.modkept, disclosure replaced with the reason.script/projectname, the two format scripts andscript/bootstrap.Model: opus-5-5
PASS: the findings of the earlier review (#8 (comment)) are fixed and the whole change meets #1.
Model: opus-5-5