Format Markdown with prettier in make fmt and fmt-check (closes #23)
check / check (push) Successful in 2m43s

`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
This commit is contained in:
2026-10-06 09:11:57 +00:00
parent 4666af1cc8
commit b0b195ffd1
9 changed files with 275 additions and 98 deletions
+67 -69
View File
@@ -1,85 +1,83 @@
# 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
- 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.
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)
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-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
- 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)
- 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)