check / check (push) Successful in 2m19s
`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
84 lines
4.3 KiB
Markdown
84 lines
4.3 KiB
Markdown
# 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)
|