check / check (push) Successful in 1m52s
script/fmt writes with gofmt -s and goimports, but script/fmt-check only ran gofmt -l. A file that gofmt -s would simplify, or whose imports goimports would regroup, passed make check and then changed on the next make fmt. script/fmt-check now runs gofmt -s -l and goimports -l, prints each file either would change once, and fails. It puts Go's bin directory on PATH first, as script/fmt does, so it runs the goimports that script/bootstrap installs. The README line on what make check runs now names both formatters. Model: opus-5-5
4.0 KiB
4.0 KiB
Workflow
- branch (from
main) - do the work in Next Step
- move Next Step to the top of Completed Steps
- move the top item of Future Steps into Next Step
- commit (
TODO.mdchanges in the same commit as the work) - merge to
mainif the branch is not protected, otherwise open a PR - push
Status
1.0+
Tagged 1.0.0 (2025-05-08). Substantial correctness fixes and features have landed since the tag.
Next Step
Restructure README.md into the standard sections: Description, Getting Started, Entrypoints, Rationale, Design, TODO, License, Author (Getting Started, Why?, TODO, License exist; Description, Entrypoints, Design, Author are missing)
Completed Steps
- 2026-10-06:
script/fmt-checkchecks whatscript/fmtwrites: it fails and lists the files whengofmt -sor goimports would change one, so a file that passesmake checkno longer changes on the nextmake fmt - 2026-10-06: canonical files re-vendored from
sneak/promptsatdd4027b:REPO_POLICIES.mdand.editorconfigadded;.dockerignore,.gitignore,.golangci.ymland the workflow refreshed, keeping this repo's own entries andfetch-depth: 0; the lint phase runs golangci-lint v2.14.0;script/bootstrapinstalls goimports unless the installed one has the pinned version, and it andscript/fmtput Go's bin directory onPATH - 2026-10-06: the summary line after
sum,checkandclearprints the byte unit once (1.5 KiB, not1.5 KiB bytes) - 2026-10-06: a path that
--excludeor--exclude-dotfilesexcludes is skipped even when it cannot be read, so an excluded directory that cannot be listed no longer fails the run - 2026-10-06: lint and test run as phases of the
Dockerfile, and the build stage depends on both;script/lintandscript/testeach build their phase with--no-cache;script/cibuildbootstraps, runsscript/check, then builds the image; golangci-lint is no longer installed on the host - 2026-10-06:
check --continuekeeps going past a file or directory it cannot read: it counts it as failed, prints the error and the path on stderr, and checks the rest of the tree - 2026-10-05: golangci-lint settings take effect: canonical
.golangci.yml(v2 layout, settings underlinters.settings), golangci-lint pinned at v2.12.2 inDockerfileandscript/bootstrap, and the code fixed for what the settings now report (long lines inattrsum.gorewrapped) - 2026-10-05:
make tryruns on three small files in a temporary directory that it removes afterwards, also when a step fails, instead of on a fixed directory on one person's machine - 2026-10-02:
attrsum --versionreports the git tag or short commit, stamped bymake buildand by a plaindocker build .of a clone;.dockerignoresends.gitwithout.git/configand keeps a host-builtattrsumout; CI checks out full history so it stamps the same version - 2026-02-02: correctness pass: track actual bytes read instead of stale file size, atomic failure tracking in ProcessCheck, detect file modification during checksum (TOCTOU), propagate countFiles errors, single progress bar across paths, error on empty stdin, dead code removal
- 2026-02-01: added quiet mode, progress bar, summary report, and stdin path input; multiple file/directory arguments for all commands
- 2025-07-12: README update
- 2025-05-08: initial working tool with passing tests, skips non-regular files, Makefile, README; tagged 1.0.0
Future Steps
- Add a
LICENSEfile matching the README's WTFPL v2; sneak's to add, not an agent's - Tag a patch release to ship the 2026-02-02 correctness fixes
- Dry-run mode (--dry-run, -n): show what would be done without making changes (from README TODO)
- JSON output (--json) for scripting and integration (from README TODO)
- Parallel processing (-j N) with multiple goroutines for faster checksumming on large trees (from README TODO)
- Formalize and document exit codes for scripting (from README TODO)