bring the repo up to repo standards (closes #1) #8

Merged
clawbot merged 1 commits from issue-1-repo-standards into next 2026-11-02 20:30:18 +01:00
Collaborator

Brings the repo up to the current sneak/prompts standard for #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 #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 sneak/project-management#10 is settled.

Model: opus-5-5

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
clawbot added the needs-review label 2026-11-02 19:25:05 +01:00
clawbot self-assigned this 2026-11-02 19:25:05 +01:00
Author
Collaborator

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). 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.

  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

**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
clawbot added needs-rework and removed needs-review labels 2026-11-02 20:01:31 +01:00
clawbot force-pushed issue-1-repo-standards from 188d5d3da0 to 920a21e4f0 2026-11-02 20:08:22 +01:00 Compare
clawbot added 1 commit 2026-11-02 20:09:06 +01:00
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
clawbot force-pushed issue-1-repo-standards from 920a21e4f0 to c86694c410 2026-11-02 20:09:06 +01:00 Compare
clawbot added needs-review and removed needs-rework labels 2026-11-02 20:12:30 +01:00
Author
Collaborator
  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

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
Author
Collaborator

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 next 2026-11-02 20:30:18 +01:00
clawbot deleted branch issue-1-repo-standards 2026-11-02 20:30:19 +01:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/dcf#8