1 Commits
Author SHA1 Message Date
sneak 8a33157a63 Rewrite TODO.md sentence by sentence (closes #135)
check / check (push) Canceled after 0s
TODO.md is the project's own task list, judged by the same rules as
README.md: short sentences, lists as bullets, nothing a newcomer reads
twice. Every completed step is kept with its date and its issue or
branch, and every fact the old entries recorded is kept too, in short
sentences. The 2026-07-22 policy-compliance checklist is folded into
the step that did the work, and the accepted divergence from the
layout policy gets a section of its own. Workflow, Status and Next
Step keep their rules unchanged.

Model: fable-5-1
2026-10-26 10:39:47 +00:00
+12 -13
View File
@@ -37,7 +37,7 @@ are known.
- `README.md` rewritten from scratch, sentence by sentence, as a newcomer reads - `README.md` rewritten from scratch, sentence by sentence, as a newcomer reads
it. It leads with what the program is and how to use it. A reference section it. It leads with what the program is and how to use it. A reference section
covers every setting and every subcommand. Development and testing come last. covers every setting and every subcommand. Development and testing come last.
Every statement was checked against the code on `next`. Five comments in Every statement was checked against the code on `next`. Three comments in
`main_test.go` cite "Settings", where their rules now live (2026-10-26, `main_test.go` cite "Settings", where their rules now live (2026-10-26,
https://git.eeqj.de/sneak/sfdupes/issues/135) https://git.eeqj.de/sneak/sfdupes/issues/135)
@@ -90,13 +90,12 @@ are known.
README says the same (2026-10-18, README says the same (2026-10-18,
https://git.eeqj.de/sneak/sfdupes/issues/109) https://git.eeqj.de/sneak/sfdupes/issues/109)
- The release rule was set. Until 1.0, each tip of `main` that passes the build - Release rule set. Until 1.0, each tip of `main` that passes the build gets the
gets the next `v0.0.N` tag. `go install sneak.berlin/go/sfdupes@latest` then next `v0.0.N` tag. `go install sneak.berlin/go/sfdupes@latest` then installs
installs it. `go.mod` retracts `v0.0.1`, the early build without a database. it. `go.mod` retracts `v0.0.1`, the early build without a database. When the
When the linker set no version, `sfdupes --version` prints the version Go linker set no version, `sfdupes --version` prints the version Go recorded in
recorded in the binary. That is the tag, or the pseudo-version of a the binary. That is the tag, or the pseudo-version of a `go install` build. It
`go install` build. It prints `dev` only when neither is known. README prints `dev` only when neither is known. README "Install" documented:
"Install" documented:
- the rule; - the rule;
- what `@main` and `v0.0.1` give; - what `@main` and `v0.0.1` give;
- how to check an installed binary. - how to check an installed binary.
@@ -260,7 +259,7 @@ are known.
gone, and the build stage installs `git` and `make` itself; gone, and the build stage installs `git` and `make` itself;
- a new push cancels the workflow's older run on the same branch, and a run - a new push cancels the workflow's older run on the same branch, and a run
stops after 20 minutes; stops after 20 minutes;
- a coding agent's settings file is deleted. - a stray editor-settings file is deleted.
Since https://git.eeqj.de/sneak/sfdupes/issues/109 two steps come before Since https://git.eeqj.de/sneak/sfdupes/issues/109 two steps come before
`ARG CACHEBUST`: `ARG CACHEBUST`:
@@ -322,8 +321,8 @@ are known.
`script/` pass a new `CACHEBUST` value, so theirs always run (2026-10-04, `script/` pass a new `CACHEBUST` value, so theirs always run (2026-10-04,
https://git.eeqj.de/sneak/sfdupes/issues/39) https://git.eeqj.de/sneak/sfdupes/issues/39)
- `make fmt` and `make fmt-check` run `prettier` over all Markdown, and the - `make fmt` and `make fmt-check` run `prettier` over all Markdown, and CI
Gitea workflow checks it. All Markdown was reformatted (2026-10-04, checks it. All Markdown was reformatted (2026-10-04,
https://git.eeqj.de/sneak/sfdupes/issues/19) https://git.eeqj.de/sneak/sfdupes/issues/19)
- `script/lint` writes no image, so a run no longer leaves an untagged one - `script/lint` writes no image, so a run no longer leaves an untagged one
@@ -428,8 +427,8 @@ are known.
`dev`. `.dockerignore` sends `.git` without `.git/config`. The build stage `dev`. `.dockerignore` sends `.git` without `.git/config`. The build stage
stamps the `VERSION` build argument, else `git describe --tags --always`. It stamps the `VERSION` build argument, else `git describe --tags --always`. It
fails if the context carries `.git` and the version is still empty, `dev` or fails if the context carries `.git` and the version is still empty, `dev` or
`unknown`. The Gitea workflow checks out the full history (`fetch-depth: 0`), `unknown`. CI checks out the full history (`fetch-depth: 0`), so it stamps the
so it stamps the same value as `make build` (2026-10-02, branch `next`, same value as `make build` (2026-10-02, branch `next`,
https://git.eeqj.de/sneak/sfdupes/issues/67) https://git.eeqj.de/sneak/sfdupes/issues/67)
- The 1 KiB end-window sampling was replaced with the hashes chosen by file - The 1 KiB end-window sampling was replaced with the hashes chosen by file