Files
attrsum/TODO.md
T
clawbot 8976a64832
check / check (push) Successful in 2m19s
Format Markdown with prettier in make fmt and fmt-check (closes #23)
`make fmt` now runs prettier over the Markdown files after the Go
formatters, and `make fmt-check` fails when prettier would change one.
`package.json`, `yarn.lock`, `.prettierrc` and `.prettierignore` are the
`sneak/prompts` copies at `dd4027b`, except for `"private": true` in
`package.json` in place of the licence field. Both scripts find yarn the
way that repo's scripts do. `script/bootstrap` installs prettier with
`yarn install --frozen-lockfile`. When the yarn those scripts would run
is not 1.22.22, it installs yarn through corepack under node 22.17.0:
the node on `PATH` if it has that version, otherwise one installed
through nvm from a hash-checked archive. `README.md` and `TODO.md` are
reformatted once.

Model: opus-5-5
2026-10-06 11:43:51 +02:00

4.3 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.md changes in the same commit as the work)
  • merge to main if 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: make fmt formats the Markdown files with prettier (four-space indents, proseWrap: always) and make fmt-check fails on one it would change; prettier is pinned in package.json and yarn.lock, and script/bootstrap installs it, along with the pinned node and yarn when the yarn on hand is not the pinned version; the Markdown files reformatted once
  • 2026-10-06: script/fmt-check checks what script/fmt writes: it fails and lists the files when gofmt -s or goimports would change one, so a file that passes make check no longer changes on the next make fmt
  • 2026-10-06: canonical files re-vendored from sneak/prompts at dd4027b: REPO_POLICIES.md and .editorconfig added; .dockerignore, .gitignore, .golangci.yml and the workflow refreshed, keeping this repo's own entries and fetch-depth: 0; the lint phase runs golangci-lint v2.14.0; script/bootstrap installs goimports unless the installed one has the pinned version, and it and script/fmt put Go's bin directory on PATH
  • 2026-10-06: the summary line after sum, check and clear prints the byte unit once (1.5 KiB, not 1.5 KiB bytes)
  • 2026-10-06: a path that --exclude or --exclude-dotfiles excludes 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/lint and script/test each build their phase with --no-cache; script/cibuild bootstraps, runs script/check, then builds the image; golangci-lint is no longer installed on the host
  • 2026-10-06: check --continue keeps 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 under linters.settings), golangci-lint pinned at v2.12.2 in Dockerfile and script/bootstrap, and the code fixed for what the settings now report (long lines in attrsum.go rewrapped)
  • 2026-10-05: make try runs 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 --version reports the git tag or short commit, stamped by make build and by a plain docker build . of a clone; .dockerignore sends .git without .git/config and keeps a host-built attrsum out; 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 LICENSE file 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)