check / check (push) Successful in 2m2s
`.dockerignore`, `.gitignore`, `.golangci.yml` and the workflow are their copies at that commit. This repo's own entries are kept after the canonical content: the anchored `/attrsum` binary, the Go entries in `.gitignore`, and tabs for `*.go` in the new `.editorconfig`. `REPO_POLICIES.md` is new. The workflow keeps `fetch-depth: 0`, which the policies require of a repo that stamps a tag-derived version. The lint phase moves to golangci-lint v2.14.0. `script/bootstrap` installs goimports with `go install` at its pinned commit unless the installed binary already has the pinned version, read with `go version -m`. It and `script/fmt` put Go's bin directory on `PATH` first, since the CI runner's `PATH` lacks it. Model: opus-5-5
82 lines
3.8 KiB
Markdown
82 lines
3.8 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: 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)
|