The repo now follows the standard layout. The shared ignore and editor files, policies, CI workflow and build scripts are copied unchanged from sneak/prompts at commit cc440118c876. The Dockerfile has separate lint and test phases, and every image build runs both, so a plain docker build . cannot skip them.
make fmt and make fmt-check also format Markdown with prettier. Node and yarn come from script/bootstrap at pinned versions when they are not already installed.
The shared .golangci.yml is adopted unchanged, linted with golangci-lint v2.14.0, and the code is fixed to it: long functions split into named steps, with the same flags, output files, SQL and order of steps.
bsdaily now reports its version. A plain docker build . of a clone stamps the commit's tag or short commit, logs it on the first line of every run, and prints it with --version.
cmd/bsdaily is a single call; the command line lives in internal/cli, with table tests for the date and flag rules. Flags, help text and messages are unchanged.
Worth knowing before merging or deploying:
A docker build . whose context has .git but cannot read a version from it now fails. Without .git the binary reports dev.
One behaviour fix rides along with the lint work: the extraction transaction is now rolled back on every early return. Before, most failures skipped the rollback.
CI now runs on every push to every branch, not only on main.
script/cibuild installs what it needs first (Go via apt, and node and yarn, on the runner image).
Nothing here waits on you.
Model: opus-5-5
What `next` holds over `main`:
- The repo now follows the standard layout. The shared ignore and editor files, policies, CI workflow and build scripts are copied unchanged from `sneak/prompts` at commit `cc440118c876`. The `Dockerfile` has separate lint and test phases, and every image build runs both, so a plain `docker build .` cannot skip them.
- `make fmt` and `make fmt-check` also format Markdown with prettier. Node and yarn come from `script/bootstrap` at pinned versions when they are not already installed.
- The shared `.golangci.yml` is adopted unchanged, linted with golangci-lint v2.14.0, and the code is fixed to it: long functions split into named steps, with the same flags, output files, SQL and order of steps.
- bsdaily now reports its version. A plain `docker build .` of a clone stamps the commit's tag or short commit, logs it on the first line of every run, and prints it with `--version`.
- `cmd/bsdaily` is a single call; the command line lives in `internal/cli`, with table tests for the date and flag rules. Flags, help text and messages are unchanged.
Worth knowing before merging or deploying:
- A `docker build .` whose context has `.git` but cannot read a version from it now fails. Without `.git` the binary reports `dev`.
- One behaviour fix rides along with the lint work: the extraction transaction is now rolled back on every early return. Before, most failures skipped the rollback.
- CI now runs on every push to every branch, not only on `main`.
- `script/cibuild` installs what it needs first (Go via apt, and node and yarn, on the runner image).
Nothing here waits on you.
Model: opus-5-5
clawbot
self-assigned this 2026-10-06 08:27:18 +02:00
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
removed their assignment 2026-10-06 08:53:52 +02:00
sneak
was assigned by clawbot2026-10-06 08:53:52 +02:00
script/fmt now also runs prettier over every Markdown file, and
script/fmt-check checks them without writing. prettier is pinned in
package.json and yarn.lock. script/bootstrap keeps its Go and apt
handling and gains the canonical node and yarn install (nvm from a
hash-checked archive, yarn through corepack), at the pinned versions
when they are absent; a node or yarn already installed is used as is.
Both fmt scripts find yarn the canonical way. The new files come from
sneak/prompts at cc440118c876. README.md and TODO.md are rewrapped by
make fmt, with no wording changes.
Deviation: package.json drops the canonical "license": "MIT" line; this
repo is WTFPL.
Model: opus-5-5
Co-authored-by: clawbot <sneak+clawbot@sneak.cloud>
clawbot
changed title from Merge next into main: standard repo layout to Merge next into main: standard repo layout, Markdown formatting2026-10-06 12:25:07 +02:00
Vendor .golangci.yml byte-identical from sneak/prompts at cc440118 and
move the Dockerfile lint phase to golangci-lint v2.14.0 by the digest
REPO_POLICIES.md names. Fix the code to that config with flags, help
text, output files, SQL and the order of steps unchanged; long
functions are split into named steps.
Judgement call: the extraction transaction is now rolled back on every
early return; the old deferred rollback missed most failures and could
dereference a nil transaction.
Thirteen //nolint directives (gosec, unconvert, mnd, unqueryvet), each
with its reason.
Model: opus-5-5
clawbot
changed title from Merge next into main: standard repo layout, Markdown formatting to Merge next into main: standard repo layout, Markdown formatting, shared lint config2026-10-06 14:25:12 +02:00
A plain `docker build .` now stamps bsdaily's version: the VERSION
build argument when one is given, otherwise `git describe --tags
--always` on the .git in the build context, as the canonical
Dockerfile does. The build fails if .git is there and the version
still comes out empty, dev or unknown. A host `make` build stamps the
same `git describe`, or dev. bsdaily logs the version on the first
line of every run and prints it with --version; a build that stamps
nothing, or an empty value, reports dev.
Judgement call: the build line also takes the canonical -trimpath and
-s -w.
One //nolint (gochecknoglobals): -X can only set a package-level
variable.
Model: opus-5-5
Co-authored-by: clawbot <sneak+clawbot@sneak.cloud>
clawbot
changed title from Merge next into main: standard repo layout, Markdown formatting, shared lint config to Merge next into main: standard layout, Markdown formatting, shared lint config, version stamp2026-10-06 18:42:07 +02:00
cmd/bsdaily/main.go now only passes Version to cli.Main and exits with
the status it returns, as REPO_POLICIES.md requires of cmd/. The cobra
command, the flag rules and the date parsing moved unchanged into
internal/cli, so flags, help text, error messages, exit status and the
first log line stay as they were. The fallback to dev for an empty
version moved with them into cli.Main.
parseTargetDates is exported as ParseTargetDates so that a table test
outside the package can reach it; the test never touches the filesystem
or runs the extraction. README describes the new layout and TODO.md
records the step.
Model: opus-5-5
Co-authored-by: clawbot <sneak+clawbot@sneak.cloud>
clawbot
changed title from Merge next into main: standard layout, Markdown formatting, shared lint config, version stamp to Merge next into main: standard layout, lint config, version stamp, command line in internal/2026-10-06 23:08:07 +02: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.
What
nextholds overmain:sneak/promptsat commitcc440118c876. TheDockerfilehas separate lint and test phases, and every image build runs both, so a plaindocker build .cannot skip them.make fmtandmake fmt-checkalso format Markdown with prettier. Node and yarn come fromscript/bootstrapat pinned versions when they are not already installed..golangci.ymlis adopted unchanged, linted with golangci-lint v2.14.0, and the code is fixed to it: long functions split into named steps, with the same flags, output files, SQL and order of steps.docker build .of a clone stamps the commit's tag or short commit, logs it on the first line of every run, and prints it with--version.cmd/bsdailyis a single call; the command line lives ininternal/cli, with table tests for the date and flag rules. Flags, help text and messages are unchanged.Worth knowing before merging or deploying:
docker build .whose context has.gitbut cannot read a version from it now fails. Without.gitthe binary reportsdev.main.script/cibuildinstalls what it needs first (Go via apt, and node and yarn, on the runner image).Nothing here waits on you.
Model: opus-5-5
Merge next into main: standard repo layoutto Merge next into main: standard repo layout, Markdown formattingMerge next into main: standard repo layout, Markdown formattingto Merge next into main: standard repo layout, Markdown formatting, shared lint configMerge next into main: standard repo layout, Markdown formatting, shared lint configto Merge next into main: standard layout, Markdown formatting, shared lint config, version stampMerge next into main: standard layout, Markdown formatting, shared lint config, version stampto Merge next into main: standard layout, lint config, version stamp, command line in internal/View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.