Rewrite README.md and the other prose documents sentence by sentence (closes #397, closes #398) #399

Open
clawbot wants to merge 14 commits from docs/397-rewrite-prose-documents into next
pull from: docs/397-rewrite-prose-documents
14 Commits
Author SHA1 Message Date
sneak 1ecfe12e78 Fix other sentences that carry faults the review named
check / check (push) Failing after 20m20s
A search of the four documents, the help text and config.example.yml
for the review's faults found these.

- prune help, and snapshot purge and snapshot list in README.md: a
  snapshot is dropped or reported when its manifest is gone, not its
  metadata or directory.
- README.md, version: the date printed is the commit date.
- README.md, Configuration: names the commands that start without a
  config that loads.
- README.md, snapshot purge: "each such snapshot" named nothing.
- README.md and docs/DATAMODEL.md: a backup can upload unchanged
  content again, so "uploads only what changed" was false.
- docs/REPOSTRUCTURE.md: db.zst.age holds more than one snapshot's
  rows.
- ARCHITECTURE.md: "database records" read as a noun.

Model: fable-5-1
2026-11-06 20:10:55 +00:00
sneak 1aea50d254 Fix three sentences that kept faults the review named
check / check (push) Successful in 9m0s
The review of the rewrite named these faults in other files. The same
sentences were still in two documents.

- docs/REPOSTRUCTURE.md, "The marker file": "index records" read as a
  noun. It now says the next backup would not upload data that the
  local index says is stored.
- docs/REPOSTRUCTURE.md, "Chunk boundaries use no secret": a chunk is
  not always between 2.5 MB and 40 MB. Only a file's last chunk can be
  smaller than a quarter of chunk_size.
- ARCHITECTURE.md, "Snapshot metadata": the export does not delete
  everything outside the snapshot. It now says what is deleted, and
  that local_meta and schema_migrations are kept.

Model: fable-5-1
2026-11-06 20:09:47 +00:00
sneak 83981783b0 Fix the review findings in --help and config.example.yml
check / check (push) Successful in 9m12s
snapshot list says why a remote-only snapshot is listed by its remote
key. snapshot verify says what access to the destination it needs. The
note on the age-keygen file is two sentences in snapshot verify and
snapshot restore. remote nuke says "backup destination store".

config.example.yml names the commands that run without a snapshot.

Only help strings and comments change.

Model: fable-5-1
2026-11-06 19:34:29 +00:00
sneak 79fccfecce Move the roadmap into TODO.md and fix a test comment
check / check (push) Successful in 9m0s
The rewrite removed the README's roadmap, which TODO.md linked to. The
roadmap items are now under Future Steps in TODO.md, in place of the
link.

A comment in internal/storage/s3_test.go cited the README for the
destination layout. That layout is in docs/REPOSTRUCTURE.md.

Model: fable-5-1
2026-11-06 19:34:28 +00:00
sneak 252db3259a Fix the review findings in the three design documents
check / check (push) Successful in 13m23s
ARCHITECTURE.md: the chunk size limits, the commit date, the cases in
which a backup skips its prune, and two sentences that read badly.

docs/DATAMODEL.md: which repository type serves which table, what the
metadata export deletes and keeps, the blobs table in a restore, and
when a chunk row is deleted.

docs/REPOSTRUCTURE.md: how an object's size relates to its contents,
what blob sizes can leak and when, and a sentence moved out of the
prune rules.

All three now say that prune drops a local snapshot whose manifest is
gone, not whose directory is gone.

Model: fable-5-1
2026-11-06 19:34:28 +00:00
sneak a52a8a781c Fix the review findings in README.md
check / check (push) Failing after 15m46s
The first sentence now names the licence, the kind of program, the
language and the author. The README gains a Design section, and its
sections carry the names REPO_POLICIES.md asks for: Rationale and
Getting started, which now holds the install command. Entrypoints opens
with the Scripts to Rule Them All statement.

Corrected: when a file is read again, the chunk size limits, and the
first prune step, which looks for a snapshot's manifest. Two sentences
that misparsed are reworded.

A test comment that named the README quickstart follows the rename.

Model: fable-5-1
2026-11-06 19:34:06 +00:00
sneak b6f8e860e1 Reword README.md sentences that read badly on a second pass
check / check (push) Failing after 3m2s
Split sentences that carried two or three ideas, turned the cases in
which a backup does not find a mount point into a list, and named the
figures that remote info reports as unknown.

Model: fable-5-1
2026-11-06 18:32:24 +00:00
sneak 64c31f890b Say what each command needs in --help and config.example.yml
check / check (push) Successful in 11m11s
snapshot verify --help now says --deep needs the age private key, from
VAULTIK_AGE_SECRET_KEY or age_secret_key, as snapshot restore does.
Both now name the config key as well as the environment variable.

The help of snapshot create, list, purge, remove, prune, remote info
and remote nuke says which access to the destination it needs.
config.example.yml gains age_secret_key, and no longer tells the reader
to pipe age-keygen into grep, which discards the private key.

Only help strings and comments change.

Model: fable-5-1
2026-11-06 18:30:34 +00:00
sneak 8f34718a0f Turn a comma chain in docs/REPOSTRUCTURE.md into a list
Model: fable-5-1
2026-11-06 18:30:34 +00:00
sneak 8654d9b7f5 Rewrite docs/REPOSTRUCTURE.md sentence by sentence
check / check (push) Failing after 16m10s
Rewritten from scratch against the code on next: the layout of the
destination, what it protects, the accepted risks, the order of writes
and the rules that keep prune from deleting data in use.

Corrected: a restore needs only db.zst.age and the blobs it reads, not
the manifest. The snapshot ID form without a name is gone, since no
command creates one.

Model: fable-5-1
2026-11-06 18:27:15 +00:00
sneak 63f8d4df59 Turn two comma chains in ARCHITECTURE.md into lists
check / check (push) Successful in 9m47s
Model: fable-5-1
2026-11-06 18:25:45 +00:00
sneak b6a2c61f82 Rewrite docs/DATAMODEL.md sentence by sentence
Rewritten from scratch against internal/database on next. Every table
and column in schema/001.sql is listed, with the indexes.

Added what the old text lacked: files.source_path, the local_meta and
schema_migrations tables, and five indexes. Corrected what it had
wrong: blobs.blob_hash holds a placeholder, not NULL, until the blob is
closed; blob_chunks rows are written when the blob is closed; queries
are parameterised, not prepared.

Model: fable-5-1
2026-11-06 18:25:45 +00:00
sneak 43c9b2c39b Rewrite ARCHITECTURE.md sentence by sentence
check / check (push) Successful in 9m24s
Rewritten from scratch against the code on next: the packages, the fx
wiring, and the steps of a backup, a restore, a verify and a prune.

Names that no longer exist in the code are gone: the S3 client as the
upload step, blob.BlobWithReader, PurgeSnapshots and the repository
interfaces. The storage layer is described through storage.Storer.

Model: fable-5-1
2026-11-06 18:23:17 +00:00
sneak de9ef62073 Rewrite README.md sentence by sentence
check / check (push) Successful in 10m57s
Rewritten from scratch against the code on next: what the program is,
how to use it, a command reference that says what each command needs,
the configuration reference as nested bullets, then development and
releasing.

snapshot verify --deep now says it needs the private key, from
VAULTIK_AGE_SECRET_KEY or age_secret_key, as snapshot restore does.

The roadmap section is removed: it described features that are not
built.

Model: fable-5-1
2026-11-06 18:21:23 +00:00