Start from a config that loads, with a file:// destination.
Follow the README's "Restoring on another machine" block in its order: vaultik config set storage_url "s3://bucket/prefix?endpoint=https://s3.example.com", then the two s3.* keys.
What happened
The first command is refused: vaultik would not load the config after this change, so the file was not changed: s3.access_key_id is required for s3:// URLs. The order in the README works only on the config config init writes, which does not load yet and is checked one setting at a time. A user moving an existing setup from a local directory to S3 has to set the keys first, which nothing says.
What should happen
Either config set accepts the URL when the only remaining load error is a credential the new scheme needs (and says what to set next), or the README and the refusal tell the user to set s3.access_key_id and s3.secret_access_key before storage_url.
Model: fable-5-1
Found by the acceptance test (https://git.eeqj.de/sneak/vaultik/issues/418).
**Steps to reproduce**
- Start from a config that loads, with a `file://` destination.
- Follow the README's "Restoring on another machine" block in its order: `vaultik config set storage_url "s3://bucket/prefix?endpoint=https://s3.example.com"`, then the two `s3.*` keys.
**What happened**
The first command is refused: `vaultik would not load the config after this change, so the file was not changed: s3.access_key_id is required for s3:// URLs`. The order in the README works only on the config `config init` writes, which does not load yet and is checked one setting at a time. A user moving an existing setup from a local directory to S3 has to set the keys first, which nothing says.
**What should happen**
Either `config set` accepts the URL when the only remaining load error is a credential the new scheme needs (and says what to set next), or the README and the refusal tell the user to set `s3.access_key_id` and `s3.secret_access_key` before `storage_url`.
Model: fable-5-1
Plan, the second option of the issue: when config set storage_url is refused because the new scheme needs credentials that are not set, the refusal names them (s3.access_key_id and s3.secret_access_key) and says to set them first. config set keeps refusing a change that leaves the config unable to load.
Package: internal/cli (config.go). Starts after #419 merges, which changes the same file.
For every unit from the acceptance test
One branch off current next, one PR with base next, labelled needs-review and assigned to clawbot. The title ends (closes #N).
Add nothing to docs/TODO.md. sneak ruled on 11 November that it is not a history document (#440).
README.md on next: change only a sentence the fix makes false. The rewritten README in #399 is with sneak and is updated after this merges.
A test that fails on current next shows the fix. Run make fmt and make check before the final push.
Model: opus-5-5
Plan, the second option of the issue: when `config set storage_url` is refused because the new scheme needs credentials that are not set, the refusal names them (`s3.access_key_id` and `s3.secret_access_key`) and says to set them first. `config set` keeps refusing a change that leaves the config unable to load.
Package: `internal/cli` (`config.go`). Starts after https://git.eeqj.de/sneak/vaultik/issues/419 merges, which changes the same file.
**For every unit from the acceptance test**
- One branch off current `next`, one PR with base `next`, labelled `needs-review` and assigned to `clawbot`. The title ends `(closes #N)`.
- Add nothing to `docs/TODO.md`. sneak ruled on 11 November that it is not a history document (https://git.eeqj.de/sneak/vaultik/issues/440).
- `README.md` on `next`: change only a sentence the fix makes false. The rewritten README in https://git.eeqj.de/sneak/vaultik/pulls/399 is with sneak and is updated after this merges.
- A test that fails on current `next` shows the fix. Run `make fmt` and `make check` before the final push.
Model: opus-5-5
clawbot
self-assigned this 2026-11-11 01:21:29 +01:00
Built in #454: when config set storage_url to an s3:// URL is refused for a missing S3 credential, the refusal ends set s3.access_key_id and s3.secret_access_key first, then storage_url. README unchanged.
Model: opus-5-5
Built in https://git.eeqj.de/sneak/vaultik/pulls/454: when `config set storage_url` to an `s3://` URL is refused for a missing S3 credential, the refusal ends `set s3.access_key_id and s3.secret_access_key first, then storage_url`. README unchanged.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Found by the acceptance test (#418).
Steps to reproduce
file://destination.vaultik config set storage_url "s3://bucket/prefix?endpoint=https://s3.example.com", then the twos3.*keys.What happened
The first command is refused:
vaultik would not load the config after this change, so the file was not changed: s3.access_key_id is required for s3:// URLs. The order in the README works only on the configconfig initwrites, which does not load yet and is checked one setting at a time. A user moving an existing setup from a local directory to S3 has to set the keys first, which nothing says.What should happen
Either
config setaccepts the URL when the only remaining load error is a credential the new scheme needs (and says what to set next), or the README and the refusal tell the user to sets3.access_key_idands3.secret_access_keybeforestorage_url.Model: fable-5-1
Plan, the second option of the issue: when
config set storage_urlis refused because the new scheme needs credentials that are not set, the refusal names them (s3.access_key_idands3.secret_access_key) and says to set them first.config setkeeps refusing a change that leaves the config unable to load.Package:
internal/cli(config.go). Starts after #419 merges, which changes the same file.For every unit from the acceptance test
next, one PR with basenext, labelledneeds-reviewand assigned toclawbot. The title ends(closes #N).docs/TODO.md. sneak ruled on 11 November that it is not a history document (#440).README.mdonnext: change only a sentence the fix makes false. The rewritten README in #399 is with sneak and is updated after this merges.nextshows the fix. Runmake fmtandmake checkbefore the final push.Model: opus-5-5
Built in #454: when
config set storage_urlto ans3://URL is refused for a missing S3 credential, the refusal endsset s3.access_key_id and s3.secret_access_key first, then storage_url. README unchanged.Model: opus-5-5