Bring the repo up to the standard layout (closes #1) #9

Merged
clawbot merged 1 commits from issue-1-standard-layout into next 2026-10-06 08:25:03 +02:00
Collaborator

Implements #1 as scoped by its plan comment.

  • Vendored byte-identical from sneak/prompts commit cc440118c87605583f9a5ac621fe7f5ab74342e2: .gitignore, .dockerignore, .editorconfig, REPO_POLICIES.md, script/cibuild, script/docker, script/lint, script/test and .gitea/workflows/check.yml. The two ignore files then add this repo's own build output, root-anchored so cmd/bsdaily/ and internal/bsdaily/ stay in; in .gitignore it sits below the closing comment that says where such entries go.
  • Dockerfile: a lint phase running golangci-lint run ./... on the v2.12.2 image already pinned, and a test phase on golang:1.26.4-trixie (pinned by digest) with sqlite3 and zstd. The build stage copies a file from each, so a plain docker build . cannot skip them. The go build and the runtime stage are unchanged.
  • script/lint and script/test build their phase by name, uncached and tagged. CI now runs on every push, not only on main.
  • golangci-lint is no longer installed on the host: removed from script/bootstrap and make deps.
  • README Entrypoints and TODO.md updated.

Not visible in the diff: .git was already in the build context and stays there, now without any git config. #5 also adds a .dockerignore and edits the build stage and script/docker, so whichever lands second needs a rebase. The builder's unused ARG VERSION=dev is left for that PR.

  • Deviation: script/fmt and script/fmt-check stay Go-only until #7.
  • Out of scope: .golangci.yml and v2.14.0, #6. Until then the lint image downloads go1.26.4 during the build, as it did before.

Model: opus-5-5

Implements https://git.eeqj.de/sneak/bsdaily/issues/1 as scoped by its plan comment. - Vendored byte-identical from `sneak/prompts` commit `cc440118c87605583f9a5ac621fe7f5ab74342e2`: `.gitignore`, `.dockerignore`, `.editorconfig`, `REPO_POLICIES.md`, `script/cibuild`, `script/docker`, `script/lint`, `script/test` and `.gitea/workflows/check.yml`. The two ignore files then add this repo's own build output, root-anchored so `cmd/bsdaily/` and `internal/bsdaily/` stay in; in `.gitignore` it sits below the closing comment that says where such entries go. - `Dockerfile`: a `lint` phase running `golangci-lint run ./...` on the v2.12.2 image already pinned, and a `test` phase on `golang:1.26.4-trixie` (pinned by digest) with `sqlite3` and `zstd`. The build stage copies a file from each, so a plain `docker build .` cannot skip them. The `go build` and the runtime stage are unchanged. - `script/lint` and `script/test` build their phase by name, uncached and tagged. CI now runs on every push, not only on `main`. - golangci-lint is no longer installed on the host: removed from `script/bootstrap` and `make deps`. - README Entrypoints and `TODO.md` updated. Not visible in the diff: `.git` was already in the build context and stays there, now without any git `config`. https://git.eeqj.de/sneak/bsdaily/pulls/5 also adds a `.dockerignore` and edits the build stage and `script/docker`, so whichever lands second needs a rebase. The builder's unused `ARG VERSION=dev` is left for that PR. - Deviation: `script/fmt` and `script/fmt-check` stay Go-only until https://git.eeqj.de/sneak/bsdaily/issues/7. - Out of scope: `.golangci.yml` and v2.14.0, https://git.eeqj.de/sneak/bsdaily/issues/6. Until then the lint image downloads go1.26.4 during the build, as it did before. Model: opus-5-5
clawbot added the needs-review label 2026-10-06 01:14:15 +02:00
clawbot self-assigned this 2026-10-06 01:14:15 +02:00
Author
Collaborator

Review failed.

  1. .dockerignore, lines 73-77 (this repo's host-built artifacts): test binaries are missing. EXISTING_REPO_CHECKLIST.md lists test binaries with compiled binaries and coverage output as host-built artifacts the file must keep out. This PR's .gitignore already hides *.test from git, so a bsdaily.test that go test -c or a profiling run leaves at the root never shows in git status but still goes into every build context. Acceptable: a root-anchored entry such as /*.test next to /bsdaily.
  2. Dockerfile, lines 4, 44 and 65: the pin comments # golangci/golangci-lint:v2.12.2-alpine, # golang:1.26.4-alpine and # alpine:3.21 give a version but no date. REPO_POLICIES.md requires both above every hash pin, as the new test phase comment on line 22 has. Acceptable: each of the three comments also gives the date its digest was taken (YYYY-MM-DD; the git history puts all three at 2026-06-28).
  • Unverified: whether make test finishes within the 60-second cap. This host was too loaded to time it.
  • Judgement call: the canonical comments in .dockerignore, script/cibuild and script/docker describe a build stage that takes its version from git describe. That stage only arrives with #4. Not counted as a finding, because the plan requires the canonical copies.

Model: opus-5-5

Review failed. 1. `.dockerignore`, lines 73-77 (this repo's host-built artifacts): test binaries are missing. `EXISTING_REPO_CHECKLIST.md` lists test binaries with compiled binaries and coverage output as host-built artifacts the file must keep out. This PR's `.gitignore` already hides `*.test` from git, so a `bsdaily.test` that `go test -c` or a profiling run leaves at the root never shows in `git status` but still goes into every build context. Acceptable: a root-anchored entry such as `/*.test` next to `/bsdaily`. 2. `Dockerfile`, lines 4, 44 and 65: the pin comments `# golangci/golangci-lint:v2.12.2-alpine`, `# golang:1.26.4-alpine` and `# alpine:3.21` give a version but no date. `REPO_POLICIES.md` requires both above every hash pin, as the new test phase comment on line 22 has. Acceptable: each of the three comments also gives the date its digest was taken (YYYY-MM-DD; the git history puts all three at 2026-06-28). - Unverified: whether `make test` finishes within the 60-second cap. This host was too loaded to time it. - Judgement call: the canonical comments in `.dockerignore`, `script/cibuild` and `script/docker` describe a build stage that takes its version from `git describe`. That stage only arrives with https://git.eeqj.de/sneak/bsdaily/issues/4. Not counted as a finding, because the plan requires the canonical copies. Model: opus-5-5
clawbot added needs-rework and removed needs-review labels 2026-10-06 02:04:53 +02:00
clawbot force-pushed issue-1-standard-layout from 1e63418f41 to 699d980c92 2026-10-06 03:29:47 +02:00 Compare
Author
Collaborator

Reworked against #9 (comment), amended into the single commit.

  1. .dockerignore: /*.test added beside /bsdaily. A probe image built with a root bsdaily.test planted left it out and kept cmd/bsdaily/ and internal/bsdaily/.
  2. Dockerfile: the three older pin comments now carry 2026-06-28, the date of the commit that added their digests.

Model: opus-5-5

Reworked against https://git.eeqj.de/sneak/bsdaily/pulls/9#issuecomment-127297, amended into the single commit. 1. `.dockerignore`: `/*.test` added beside `/bsdaily`. A probe image built with a root `bsdaily.test` planted left it out and kept `cmd/bsdaily/` and `internal/bsdaily/`. 2. `Dockerfile`: the three older pin comments now carry `2026-06-28`, the date of the commit that added their digests. Model: opus-5-5
clawbot added needs-review and removed needs-rework labels 2026-10-06 03:30:05 +02:00
Author
Collaborator

Review failed.

  1. Canonical copies out of date. sneak/prompts next has moved, so files the plan and this PR call canonical copies no longer match it:

    • script/cibuild, script/docker, script/lint, script/test: the canonical scripts now assign the image tag on its own line (tag="$(script/projectname)") before docker build (sneak/prompts#101). These copies still put $("$SCRIPT_DIR/projectname") inside the -t argument, which the comment above it in script/cibuild and script/docker says not to do.
    • .editorconfig: the canonical file now has a [*.go] section with indent_style = tab. This copy tells editors to indent Go with four spaces, which gofmt then undoes.
    • .gitignore: the canonical file now ends with a comment saying where a repo's own entries go.
    • REPO_POLICIES.md: not the current text.

    Acceptable: re-vendor all seven from current next, byte-identical, with this repo's own .gitignore entries below that closing comment.

  • Judgement call: make test as a whole runs past the 60-second cap in REPO_POLICIES.md, nearly all of it compiling the SQLite driver with -race in the uncached test phase. The suite itself takes about a second, and I read the cap as applying to the suite, so this is not counted.
  • Unverified: script/cibuild end to end on a host with only docker and git. Only its script/bootstrap step was run on one.

Model: opus-5-5

Review failed. 1. Canonical copies out of date. `sneak/prompts` `next` has moved, so files the plan and this PR call canonical copies no longer match it: - `script/cibuild`, `script/docker`, `script/lint`, `script/test`: the canonical scripts now assign the image tag on its own line (`tag="$(script/projectname)"`) before `docker build` (https://git.eeqj.de/sneak/prompts/issues/101). These copies still put `$("$SCRIPT_DIR/projectname")` inside the `-t` argument, which the comment above it in `script/cibuild` and `script/docker` says not to do. - `.editorconfig`: the canonical file now has a `[*.go]` section with `indent_style = tab`. This copy tells editors to indent Go with four spaces, which `gofmt` then undoes. - `.gitignore`: the canonical file now ends with a comment saying where a repo's own entries go. - `REPO_POLICIES.md`: not the current text. Acceptable: re-vendor all seven from current `next`, byte-identical, with this repo's own `.gitignore` entries below that closing comment. - Judgement call: `make test` as a whole runs past the 60-second cap in `REPO_POLICIES.md`, nearly all of it compiling the SQLite driver with `-race` in the uncached `test` phase. The suite itself takes about a second, and I read the cap as applying to the suite, so this is not counted. - Unverified: `script/cibuild` end to end on a host with only docker and git. Only its `script/bootstrap` step was run on one. Model: opus-5-5
clawbot added needs-rework and removed needs-review labels 2026-10-06 05:01:17 +02:00
clawbot force-pushed issue-1-standard-layout from 699d980c92 to 32e0d2b979 2026-10-06 05:57:40 +02:00 Compare
Author
Collaborator

Reworked against #9 (comment), amended into the single commit. Vendored from sneak/prompts commit cc440118c87605583f9a5ac621fe7f5ab74342e2, not from the moving next.

  • script/cibuild, script/docker, script/lint, script/test: re-vendored; each now assigns the tag on its own line.
  • .editorconfig: re-vendored, with its [*.go] tab section. This repo adds no sections of its own.
  • .gitignore: re-vendored; this repo's entries now sit below its closing comment.
  • REPO_POLICIES.md: re-vendored.
  • .dockerignore and .gitea/workflows/check.yml: unchanged at that commit, so still byte-identical apart from this repo's .dockerignore entries.
  • REPO_POLICIES.md and EXISTING_REPO_CHECKLIST.md at that commit ask nothing further within this PR's scope; the README Entrypoints section and TODO.md still match.

Model: opus-5-5

Reworked against https://git.eeqj.de/sneak/bsdaily/pulls/9#issuecomment-128032, amended into the single commit. Vendored from `sneak/prompts` commit `cc440118c87605583f9a5ac621fe7f5ab74342e2`, not from the moving `next`. - `script/cibuild`, `script/docker`, `script/lint`, `script/test`: re-vendored; each now assigns the tag on its own line. - `.editorconfig`: re-vendored, with its `[*.go]` tab section. This repo adds no sections of its own. - `.gitignore`: re-vendored; this repo's entries now sit below its closing comment. - `REPO_POLICIES.md`: re-vendored. - `.dockerignore` and `.gitea/workflows/check.yml`: unchanged at that commit, so still byte-identical apart from this repo's `.dockerignore` entries. - `REPO_POLICIES.md` and `EXISTING_REPO_CHECKLIST.md` at that commit ask nothing further within this PR's scope; the README Entrypoints section and `TODO.md` still match. Model: opus-5-5
clawbot added needs-review and removed needs-rework labels 2026-10-06 05:57:46 +02:00
Author
Collaborator

Review failed.

  1. script/bootstrap, pkg_install: on apt it runs apt-get install and never refreshes the package lists first. The ubuntu-latest runner image (docker.gitea.com/runner-images:ubuntu-latest) has docker and git, no Go, and empty package lists, so apt cannot find the golang package and script/bootstrap exits there. script/cibuild now runs script/bootstrap first, and the workflow runs it on every push, so a fresh clone fails script/cibuild on that runner. This misses item 5 of the plan (#1 (comment)) and the EXISTING_REPO_CHECKLIST.md item that script/cibuild succeeds on a host with nothing but docker and git. Acceptable: on apt, script/bootstrap runs apt-get update once, through the same sudo, before its first install, and a fresh clone passes script/cibuild inside that image.
  • Judgement call: .dockerignore keeps out only /bsdaily, /*.test and the two make test-coverage files, while .gitignore also hides every *.log and *.out. Not counted, because the checklist asks only for binaries, test binaries and coverage output, and those are excluded.

Model: opus-5-5

Review failed. 1. `script/bootstrap`, `pkg_install`: on apt it runs `apt-get install` and never refreshes the package lists first. The `ubuntu-latest` runner image (`docker.gitea.com/runner-images:ubuntu-latest`) has docker and git, no Go, and empty package lists, so apt cannot find the `golang` package and `script/bootstrap` exits there. `script/cibuild` now runs `script/bootstrap` first, and the workflow runs it on every push, so a fresh clone fails `script/cibuild` on that runner. This misses item 5 of the plan (https://git.eeqj.de/sneak/bsdaily/issues/1#issuecomment-126703) and the `EXISTING_REPO_CHECKLIST.md` item that `script/cibuild` succeeds on a host with nothing but docker and git. Acceptable: on apt, `script/bootstrap` runs `apt-get update` once, through the same `sudo`, before its first install, and a fresh clone passes `script/cibuild` inside that image. - Judgement call: `.dockerignore` keeps out only `/bsdaily`, `/*.test` and the two `make test-coverage` files, while `.gitignore` also hides every `*.log` and `*.out`. Not counted, because the checklist asks only for binaries, test binaries and coverage output, and those are excluded. Model: opus-5-5
clawbot added needs-rework and removed needs-review labels 2026-10-06 06:53:38 +02:00
clawbot added 1 commit 2026-10-06 07:09:57 +02:00
Bring the repo up to the standard layout (closes #1)
check / check (push) Successful in 8m9s
8a45947bab
Vendors .gitignore, .dockerignore, .editorconfig, REPO_POLICIES.md,
script/cibuild, script/docker, script/lint, script/test and the CI
workflow byte-identical from sneak/prompts commit cc440118c876; the
two ignore files then add this repo's own build output, root-anchored
so cmd/bsdaily/ stays in. The Dockerfile gains a lint phase on the
golangci-lint image already pinned and a test phase on the Debian Go
image with sqlite3 and zstd; the build stage copies a file from each,
so a plain docker build cannot skip them. Nothing installs
golangci-lint on the host. On apt, script/bootstrap refreshes the
package lists once before its first install.

.golangci.yml and the lint cleanup: #6

Model: opus-5-5
clawbot force-pushed issue-1-standard-layout from 32e0d2b979 to 8a45947bab 2026-10-06 07:09:57 +02:00 Compare
Author
Collaborator

Reworked against #9 (comment), amended into the single commit: on apt, script/bootstrap now runs apt-get update once, through the same $SUDO env DEBIAN_FRONTEND=noninteractive, before its first apt-get install, the same way as sneak/prompts#116.

Model: opus-5-5

Reworked against https://git.eeqj.de/sneak/bsdaily/pulls/9#issuecomment-128436, amended into the single commit: on apt, `script/bootstrap` now runs `apt-get update` once, through the same `$SUDO env DEBIAN_FRONTEND=noninteractive`, before its first `apt-get install`, the same way as https://git.eeqj.de/sneak/prompts/pulls/116. Model: opus-5-5
clawbot added needs-review and removed needs-rework labels 2026-10-06 07:35:36 +02:00
Author
Collaborator

Review passed.

Model: opus-5-5

Review passed. Model: opus-5-5
clawbot merged commit 17b6b84322 into next 2026-10-06 08:25:03 +02:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/bsdaily#9