Fix the six findings of the review on config set, version and blob names
check / check (push) Successful in 11m16s

README.md: config set keeps comments and can remove blank lines; a
config that does not load yet also has a value that is not a size
refused; vaultik version reports a tag and adds a development-build
note to every other version. docs/REPOSTRUCTURE.md and README.md:
someone who has a blob's whole contents can compute its name and see
whether it is stored. docs/DATAMODEL.md: snapshot list shows an
unfinished snapshot as remote only once its manifest is at the
destination; closing a full blob commits the first chunk of the next
one. internal/cli/config.go: config set --help says the same about
comments and blank lines.

Model: fable-5-1
This commit is contained in:
clawbot committed 2026-11-11 08:28:40 +00:00
1 parent f65fd2870b
commit a8b9c57e93
4 files changed
+22 -15

No files matched your search

+9 -8
View File
@@ -64,9 +64,8 @@ It was written to meet these requirements together:
## Getting started
Installing needs Go 1.26.1 or later. `go install` builds the newest tagged
version. `vaultik version` then reports that tag and calls the build a release.
Generating a key pair needs `age-keygen`, which comes with
[age](https://age-encryption.org/).
version. `vaultik version` then reports that tag. Generating a key pair needs
`age-keygen`, which comes with [age](https://age-encryption.org/).
```sh
# Install vaultik.
@@ -294,7 +293,7 @@ list or a map prints as YAML.
Sets one value in the config file. The key is a dotted path, as in
`vaultik config set compression_level 9`.
- Comments and formatting in the file are kept.
- Comments in the file are kept. Blank lines can be removed.
- A key that no setting has is refused. A key that is not in the file yet is
created. A missing parent becomes a list when the next part of the path is a
number, and a map otherwise.
@@ -307,12 +306,13 @@ The command refuses a change that would stop the config from loading. An example
is `vaultik config set compression_level 99`. The file is then left unchanged.
A config that does not load yet is checked less strictly. An example is the file
`config init` writes, which has no `storage_url`. There the command refuses only
three things:
`config init` writes, which has no `storage_url`. There the command refuses
these:
- an unknown key
- a value of the wrong type, such as a word where a number belongs
- a `${ENV:NAME}` value whose variable is unset or empty
- a value that is not a size, for a size setting
### `snapshot create`
@@ -1292,6 +1292,7 @@ destination still learns these:
- when each backup finished
- how many blobs each snapshot uses, and their sizes
- which blobs two snapshots share
- whether a blob holds data they already have in full
- whether a hostname and snapshot name they guess exist there
The last point holds because a remote key is a plain hash of the snapshot ID,
@@ -1503,8 +1504,8 @@ the version Go recorded in it:
`v`, so the tag `v1.0.0` gives `vaultik 1.0.0`. `script/release-snapshot` stamps
`dev-` followed by 12 characters of the commit.
`vaultik version` calls a build a release only when its version is a plain tag,
such as `v1.0.0` or `1.0.0`. Every other version is a development build.
`vaultik version` adds a development-build note to every version except a plain
tag, such as `v1.0.0` or `1.0.0`.
`make` stops with an error when `script/version` gives no version.