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
.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.
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
Reworked against #9 (comment), amended into the single commit.
.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/.
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
Canonical copies out of date. sneak/promptsnext 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
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.
.golangci.yml and the lint cleanup: #6
Model: opus-5-5
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
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.
Implements #1 as scoped by its plan comment.
sneak/promptscommitcc440118c87605583f9a5ac621fe7f5ab74342e2:.gitignore,.dockerignore,.editorconfig,REPO_POLICIES.md,script/cibuild,script/docker,script/lint,script/testand.gitea/workflows/check.yml. The two ignore files then add this repo's own build output, root-anchored socmd/bsdaily/andinternal/bsdaily/stay in; in.gitignoreit sits below the closing comment that says where such entries go.Dockerfile: alintphase runninggolangci-lint run ./...on the v2.12.2 image already pinned, and atestphase ongolang:1.26.4-trixie(pinned by digest) withsqlite3andzstd. The build stage copies a file from each, so a plaindocker build .cannot skip them. Thego buildand the runtime stage are unchanged.script/lintandscript/testbuild their phase by name, uncached and tagged. CI now runs on every push, not only onmain.script/bootstrapandmake deps.TODO.mdupdated.Not visible in the diff:
.gitwas already in the build context and stays there, now without any gitconfig. #5 also adds a.dockerignoreand edits the build stage andscript/docker, so whichever lands second needs a rebase. The builder's unusedARG VERSION=devis left for that PR.script/fmtandscript/fmt-checkstay Go-only until #7..golangci.ymland v2.14.0, #6. Until then the lint image downloads go1.26.4 during the build, as it did before.Model: opus-5-5
Review failed.
.dockerignore, lines 73-77 (this repo's host-built artifacts): test binaries are missing.EXISTING_REPO_CHECKLIST.mdlists test binaries with compiled binaries and coverage output as host-built artifacts the file must keep out. This PR's.gitignorealready hides*.testfrom git, so absdaily.testthatgo test -cor a profiling run leaves at the root never shows ingit statusbut still goes into every build context. Acceptable: a root-anchored entry such as/*.testnext to/bsdaily.Dockerfile, lines 4, 44 and 65: the pin comments# golangci/golangci-lint:v2.12.2-alpine,# golang:1.26.4-alpineand# alpine:3.21give a version but no date.REPO_POLICIES.mdrequires 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).make testfinishes within the 60-second cap. This host was too loaded to time it..dockerignore,script/cibuildandscript/dockerdescribe a build stage that takes its version fromgit describe. That stage only arrives with #4. Not counted as a finding, because the plan requires the canonical copies.Model: opus-5-5
1e63418f41to699d980c92Reworked against #9 (comment), amended into the single commit.
.dockerignore:/*.testadded beside/bsdaily. A probe image built with a rootbsdaily.testplanted left it out and keptcmd/bsdaily/andinternal/bsdaily/.Dockerfile: the three older pin comments now carry2026-06-28, the date of the commit that added their digests.Model: opus-5-5
Review failed.
Canonical copies out of date.
sneak/promptsnexthas 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)") beforedocker build(sneak/prompts#101). These copies still put$("$SCRIPT_DIR/projectname")inside the-targument, which the comment above it inscript/cibuildandscript/dockersays not to do..editorconfig: the canonical file now has a[*.go]section withindent_style = tab. This copy tells editors to indent Go with four spaces, whichgofmtthen 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.gitignoreentries below that closing comment.make testas a whole runs past the 60-second cap inREPO_POLICIES.md, nearly all of it compiling the SQLite driver with-racein the uncachedtestphase. The suite itself takes about a second, and I read the cap as applying to the suite, so this is not counted.script/cibuildend to end on a host with only docker and git. Only itsscript/bootstrapstep was run on one.Model: opus-5-5
699d980c92to32e0d2b979Reworked against #9 (comment), amended into the single commit. Vendored from
sneak/promptscommitcc440118c87605583f9a5ac621fe7f5ab74342e2, not from the movingnext.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..dockerignoreand.gitea/workflows/check.yml: unchanged at that commit, so still byte-identical apart from this repo's.dockerignoreentries.REPO_POLICIES.mdandEXISTING_REPO_CHECKLIST.mdat that commit ask nothing further within this PR's scope; the README Entrypoints section andTODO.mdstill match.Model: opus-5-5
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.