check / check (push) Successful in 2m47s
With --continue, check stopped at the first file whose content or checksum attribute it could not read, and at the first directory it could not list. Each of these now counts as failed, its error, which names the path, goes to stderr, and the walk goes on; the run still exits non-zero. The walk shared with sum and clear takes the continue setting, and they pass false. If the count that sizes the progress bar cannot read a path, check --continue runs without the bar. Without --continue the first such error still stops the run, and the summary printed before it now counts an unreadable checksum attribute as failed, as it already did for unreadable content. Model: opus-5-5
68 lines
2.9 KiB
Markdown
68 lines
2.9 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
|
|
|
|
Policy scaffold commit: add LICENSE, REPO_POLICIES.md, .editorconfig,
|
|
.golangci.yml, and a comprehensive .gitignore (currently only the
|
|
attrsum binary), and extend the Makefile (only test/build/clean/try
|
|
today) with lint, fmt, fmt-check, check, and hooks targets.
|
|
|
|
# Completed Steps
|
|
|
|
* 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 .gitea/workflows/check.yml
|
|
* Restructure README.md into the standard sections: Description,
|
|
Getting Started, Rationale, Design, TODO, License, Author (Getting
|
|
Started, Why?, TODO, License exist; Description, Design, Author are
|
|
missing)
|
|
* 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)
|