bsdaily is missing several standard repo files (verified against main: the root has no .gitignore, .dockerignore, .editorconfig, or .golangci.yml).
Definition of done
Add a standard Go .gitignore and .dockerignore (match a sibling such as sneak/dnswatcher).
Add .editorconfig matching our standard Go repos (copy sneak/dnswatcher's).
Add .golangci.yml byte-identical to sneak/dnswatcher's (org-standard config).
make check and docker build . are green under the new config. If the linter surfaces findings, remediate them BEHAVIOR-PRESERVINGLY; if the remediation is large (more than ~50 findings), STOP and report so the lint cleanup can be split into its own issue/PR rather than bundled here.
The finishing commit's title must end with (closes #N) referencing this issue.
bsdaily is missing several standard repo files (verified against `main`: the root has no `.gitignore`, `.dockerignore`, `.editorconfig`, or `.golangci.yml`).
## Definition of done
1. Add a standard Go `.gitignore` and `.dockerignore` (match a sibling such as `sneak/dnswatcher`).
2. Add `.editorconfig` matching our standard Go repos (copy `sneak/dnswatcher`'s).
3. Add `.golangci.yml` byte-identical to `sneak/dnswatcher`'s (org-standard config).
4. `make check` and `docker build .` are green under the new config. If the linter surfaces findings, remediate them BEHAVIOR-PRESERVINGLY; if the remediation is large (more than ~50 findings), STOP and report so the lint cleanup can be split into its own issue/PR rather than bundled here.
The finishing commit's title must end with ` (closes #N)` referencing this issue.
Splitting this: I'm landing the three non-lint dotfiles now (.gitignore, .dockerignore, .editorconfig — all copied from sneak/dnswatcher, .gitignore adapted to the /bsdaily binary) as a PR that keeps make check green. That PR is refs #1, not closes, because the .golangci.yml part is deferred.
Adding the org-standard .golangci.yml (linters: default: all) surfaces 167 lint findings in bsdaily's existing code (baseline with no config is 0). Breakdown: wsl_v5 49, noinlineerr 43, nlreturn 16, lll 13, err113 12, revive 12, gosec 9, noctx 6, plus complexity linters. That is a substantial behavior-preserving cleanup, not an overnight change. Your call: do the full cleanup, or tune the shared .golangci.yml to be less brutal for existing code. Assigning to you for that decision; the .golangci.yml add closes#1 once it lands green.
Splitting this: I'm landing the three non-lint dotfiles now (`.gitignore`, `.dockerignore`, `.editorconfig` — all copied from `sneak/dnswatcher`, `.gitignore` adapted to the `/bsdaily` binary) as a PR that keeps `make check` green. That PR is `refs #1`, not `closes`, because the `.golangci.yml` part is deferred.
Adding the org-standard `.golangci.yml` (`linters: default: all`) surfaces 167 lint findings in bsdaily's existing code (baseline with no config is 0). Breakdown: `wsl_v5` 49, `noinlineerr` 43, `nlreturn` 16, `lll` 13, `err113` 12, `revive` 12, `gosec` 9, `noctx` 6, plus complexity linters. That is a substantial behavior-preserving cleanup, not an overnight change. Your call: do the full cleanup, or tune the shared `.golangci.yml` to be less brutal for existing code. Assigning to you for that decision; the `.golangci.yml` add closes #1 once it lands green.
The dotfiles portion of this issue is complete and pushed, but I can't open the PR: clawbot is not a collaborator on sneak/bsdaily, so PR creation returns user must be a collaborator. (It has access on secret/vaultik/netwatch, where the parallel dotfile PRs opened fine.)
Adds .gitignore (dnswatcher's, binary line adapted to /bsdaily), .dockerignore and .editorconfig (byte-for-byte from dnswatcher). All three were absent.
.golangci.yml intentionally deferred (its adoption cascades into ~167 lint findings needing a dedicated cleanup pass).
Verified on the branch: make check green (0 issues.); docker build . succeeds.
Decision needed:
Option A (recommended): add clawbot as a collaborator on sneak/bsdaily; I'll then open the PR from issue-1-dotfiles-v2, run the independent review, and post the reviewer's results as a comment — same flow as the other repos.
Option B: you open the PR yourself from issue-1-dotfiles-v2 (base main, refs #1).
Assigning to you for the access call.
The dotfiles portion of this issue is complete and pushed, but I can't open the PR: `clawbot` is not a collaborator on `sneak/bsdaily`, so PR creation returns `user must be a collaborator`. (It has access on `secret`/`vaultik`/`netwatch`, where the parallel dotfile PRs opened fine.)
**Ready on the remote:**
- Branch `issue-1-dotfiles-v2` @ `36e6061b181944f1797c08b64d5cafbbef26c044`
- Adds `.gitignore` (dnswatcher's, binary line adapted to `/bsdaily`), `.dockerignore` and `.editorconfig` (byte-for-byte from dnswatcher). All three were absent.
- `.golangci.yml` intentionally deferred (its adoption cascades into ~167 lint findings needing a dedicated cleanup pass).
- Verified on the branch: `make check` green (`0 issues.`); `docker build .` succeeds.
**Decision needed:**
- **Option A (recommended):** add `clawbot` as a collaborator on `sneak/bsdaily`; I'll then open the PR from `issue-1-dotfiles-v2`, run the independent review, and post the reviewer's results as a comment — same flow as the other repos.
- **Option B:** you open the PR yourself from `issue-1-dotfiles-v2` (base `main`, `refs #1`).
Assigning to you for the access call.
Plan. This issue becomes the unit that brings the repo up to the standard layout in REPO_POLICIES.md and EXISTING_REPO_CHECKLIST.md from sneak/prompts. Both are read from sneak/promptsnext: its main still forbids git describe in a build stage, which the version ruling in #4 overturned.
The open question above is decided by REPO_POLICIES.md: the shared .golangci.yml is never modified, so the code is fixed. With about 170 findings, that part moves, as this issue's own definition of done asks, to #6. Formatting Markdown is #7.
Definition of done
.gitignore, .dockerignore, .editorconfig: the canonical copies from sneak/promptsnext. .dockerignore adds the repo's own host-built files, root-anchored: /bsdaily, /coverage.out, /coverage.html. The old branch issue-1-dotfiles-v2 is not used (its files came from another repo, not the canonical ones).
Dockerfile: a lint phase on the golangci-lint image already pinned here, running golangci-lint run ./... directly (the move to v2.14.0 goes with the config in #6); a test phase on the Debian Go image pinned by digest, with the sqlite3 and zstd tools installed, running the canonical test command; the build stage copying a file from each phase; the runtime stage last and unchanged. The build stage keeps today's plain go build: the version stamp is #4.
script/lint and script/test build their phase by name, uncached and tagged; script/cibuild, script/docker and .gitea/workflows/check.yml are the canonical copies; script/bootstrap installs no linter. Nothing on the host gives a lint result: the Makefiledeps target stops installing golangci-lint @latest.
REPO_POLICIES.md re-vendored; the README Entrypoints section and TODO.md match the new scripts.
A fresh clone passes script/cibuild on a host with only docker and git. A planted lint error fails make lint and docker build .; a planted failing test fails make test and docker build .; both reverted.
Model: opus-5-5
Plan. This issue becomes the unit that brings the repo up to the standard layout in `REPO_POLICIES.md` and `EXISTING_REPO_CHECKLIST.md` from `sneak/prompts`. Both are read from `sneak/prompts` `next`: its `main` still forbids `git describe` in a build stage, which the version ruling in https://git.eeqj.de/sneak/bsdaily/issues/4 overturned.
The open question above is decided by `REPO_POLICIES.md`: the shared `.golangci.yml` is never modified, so the code is fixed. With about 170 findings, that part moves, as this issue's own definition of done asks, to https://git.eeqj.de/sneak/bsdaily/issues/6. Formatting Markdown is https://git.eeqj.de/sneak/bsdaily/issues/7.
## Definition of done
1. `.gitignore`, `.dockerignore`, `.editorconfig`: the canonical copies from `sneak/prompts` `next`. `.dockerignore` adds the repo's own host-built files, root-anchored: `/bsdaily`, `/coverage.out`, `/coverage.html`. The old branch `issue-1-dotfiles-v2` is not used (its files came from another repo, not the canonical ones).
2. `Dockerfile`: a `lint` phase on the golangci-lint image already pinned here, running `golangci-lint run ./...` directly (the move to v2.14.0 goes with the config in https://git.eeqj.de/sneak/bsdaily/issues/6); a `test` phase on the Debian Go image pinned by digest, with the `sqlite3` and `zstd` tools installed, running the canonical test command; the build stage copying a file from each phase; the runtime stage last and unchanged. The build stage keeps today's plain `go build`: the version stamp is https://git.eeqj.de/sneak/bsdaily/issues/4.
3. `script/lint` and `script/test` build their phase by name, uncached and tagged; `script/cibuild`, `script/docker` and `.gitea/workflows/check.yml` are the canonical copies; `script/bootstrap` installs no linter. Nothing on the host gives a lint result: the `Makefile` `deps` target stops installing golangci-lint `@latest`.
4. `REPO_POLICIES.md` re-vendored; the README Entrypoints section and `TODO.md` match the new scripts.
5. A fresh clone passes `script/cibuild` on a host with only docker and git. A planted lint error fails `make lint` and `docker build .`; a planted failing test fails `make test` and `docker build .`; both reverted.
Model: opus-5-5
clawbot
changed title from Add missing standard config files: .gitignore, .dockerignore, .editorconfig, .golangci.yml to Bring the repo up to the standard layout: config files, Docker lint and test phases, scripts2026-10-06 00:54:24 +02:00
Built as #9, covering the plan's definition of done; the PR body lists the judgement call and what stays with #6 and #7.
Model: opus-5-5
Built as https://git.eeqj.de/sneak/bsdaily/pulls/9, covering the plan's definition of done; the PR body lists the judgement call and what stays with https://git.eeqj.de/sneak/bsdaily/issues/6 and https://git.eeqj.de/sneak/bsdaily/issues/7.
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.
bsdaily is missing several standard repo files (verified against
main: the root has no.gitignore,.dockerignore,.editorconfig, or.golangci.yml).Definition of done
.gitignoreand.dockerignore(match a sibling such assneak/dnswatcher)..editorconfigmatching our standard Go repos (copysneak/dnswatcher's)..golangci.ymlbyte-identical tosneak/dnswatcher's (org-standard config).make checkanddocker build .are green under the new config. If the linter surfaces findings, remediate them BEHAVIOR-PRESERVINGLY; if the remediation is large (more than ~50 findings), STOP and report so the lint cleanup can be split into its own issue/PR rather than bundled here.The finishing commit's title must end with
(closes #N)referencing this issue.Splitting this: I'm landing the three non-lint dotfiles now (
.gitignore,.dockerignore,.editorconfig— all copied fromsneak/dnswatcher,.gitignoreadapted to the/bsdailybinary) as a PR that keepsmake checkgreen. That PR isrefs #1, notcloses, because the.golangci.ymlpart is deferred.Adding the org-standard
.golangci.yml(linters: default: all) surfaces 167 lint findings in bsdaily's existing code (baseline with no config is 0). Breakdown:wsl_v549,noinlineerr43,nlreturn16,lll13,err11312,revive12,gosec9,noctx6, plus complexity linters. That is a substantial behavior-preserving cleanup, not an overnight change. Your call: do the full cleanup, or tune the shared.golangci.ymlto be less brutal for existing code. Assigning to you for that decision; the.golangci.ymladd closes #1 once it lands green.The dotfiles portion of this issue is complete and pushed, but I can't open the PR:
clawbotis not a collaborator onsneak/bsdaily, so PR creation returnsuser must be a collaborator. (It has access onsecret/vaultik/netwatch, where the parallel dotfile PRs opened fine.)Ready on the remote:
issue-1-dotfiles-v2@36e6061b181944f1797c08b64d5cafbbef26c044.gitignore(dnswatcher's, binary line adapted to/bsdaily),.dockerignoreand.editorconfig(byte-for-byte from dnswatcher). All three were absent..golangci.ymlintentionally deferred (its adoption cascades into ~167 lint findings needing a dedicated cleanup pass).make checkgreen (0 issues.);docker build .succeeds.Decision needed:
clawbotas a collaborator onsneak/bsdaily; I'll then open the PR fromissue-1-dotfiles-v2, run the independent review, and post the reviewer's results as a comment — same flow as the other repos.issue-1-dotfiles-v2(basemain,refs #1).Assigning to you for the access call.
Plan. This issue becomes the unit that brings the repo up to the standard layout in
REPO_POLICIES.mdandEXISTING_REPO_CHECKLIST.mdfromsneak/prompts. Both are read fromsneak/promptsnext: itsmainstill forbidsgit describein a build stage, which the version ruling in #4 overturned.The open question above is decided by
REPO_POLICIES.md: the shared.golangci.ymlis never modified, so the code is fixed. With about 170 findings, that part moves, as this issue's own definition of done asks, to #6. Formatting Markdown is #7.Definition of done
.gitignore,.dockerignore,.editorconfig: the canonical copies fromsneak/promptsnext..dockerignoreadds the repo's own host-built files, root-anchored:/bsdaily,/coverage.out,/coverage.html. The old branchissue-1-dotfiles-v2is not used (its files came from another repo, not the canonical ones).Dockerfile: alintphase on the golangci-lint image already pinned here, runninggolangci-lint run ./...directly (the move to v2.14.0 goes with the config in #6); atestphase on the Debian Go image pinned by digest, with thesqlite3andzstdtools installed, running the canonical test command; the build stage copying a file from each phase; the runtime stage last and unchanged. The build stage keeps today's plaingo build: the version stamp is #4.script/lintandscript/testbuild their phase by name, uncached and tagged;script/cibuild,script/dockerand.gitea/workflows/check.ymlare the canonical copies;script/bootstrapinstalls no linter. Nothing on the host gives a lint result: theMakefiledepstarget stops installing golangci-lint@latest.REPO_POLICIES.mdre-vendored; the README Entrypoints section andTODO.mdmatch the new scripts.script/cibuildon a host with only docker and git. A planted lint error failsmake lintanddocker build .; a planted failing test failsmake testanddocker build .; both reverted.Model: opus-5-5
Add missing standard config files: .gitignore, .dockerignore, .editorconfig, .golangci.ymlto Bring the repo up to the standard layout: config files, Docker lint and test phases, scriptsBuilt as #9, covering the plan's definition of done; the PR body lists the judgement call and what stays with #6 and #7.
Model: opus-5-5