README and TODO: say only what the code does for records it cannot decrypt
check / check (push) Waiting to run

A file whose copy in another album decrypted is stored from that copy, and
the album where it does not decrypt neither links nor lists it. Only a run
without --json prints the line for an album. The exit-code and read-command
sentences no longer cover that file, and the failures.json sentence covers
only files in the backup's scope.

Model: opus-5-5
This commit is contained in:
2026-10-14 03:04:59 +00:00
parent c6bc1a6265
commit f75816a0da
2 changed files with 31 additions and 27 deletions
+22 -20
View File
@@ -135,13 +135,13 @@ matters.
| `3` | There is no usable session: none is saved, the saved one is corrupt, or the server no longer accepts it. Run `quak login` as the user the cron job runs as. |
After a `1`, the next run fetches each missing original again, fetches the ML
data that is not cached, and rebuilds the album links. A file or album quak
could not decrypt keeps the exit code at `1` until the server sends a copy that
decrypts, or deletes it (see "Backup layout"). An original that a `--verify` run
could not read, or put back with bytes that still do not match, stays at its
save path. Only a later `--verify` run checks it again: a run without `--verify`
leaves it as it is and takes the file out of `failures.json`, so that run can
exit 0.
data that is not cached, and rebuilds the album links. An album quak could not
decrypt, or a file in `failures.json` because quak could not decrypt it, keeps
the exit code at `1` until the server sends a copy that decrypts, or deletes it
(see "Backup layout"). An original that a `--verify` run could not read, or put
back with bytes that still do not match, stays at its save path. Only a later
`--verify` run checks it again: a run without `--verify` leaves it as it is and
takes the file out of `failures.json`, so that run can exit 0.
## Examples
@@ -626,9 +626,9 @@ answer, so they report current account state rather than whatever the cache last
held. If that round-trip fails, the command prints the error on one line and
exits 1, or 3 when the server no longer accepts the saved session (see "Session
handling"). An album or file quak cannot decrypt does not fail it; the command
answers without it (see "Default reads vs. fresh reads"). `--cache-dir`
overrides where the cache lives; without it each account gets its own directory
under the per-user cache path.
answers from what did decrypt (see "Default reads vs. fresh reads").
`--cache-dir` overrides where the cache lives; without it each account gets its
own directory under the per-user cache path.
An ID given to `files --collection`, `get`, `get-thumb` or
`helper fix-missing-thumbnails --file` is written in decimal digits, no larger
@@ -745,16 +745,18 @@ succeeds, or once it is no longer in the library or in the backup's scope. The
library's `lib.backup({ includeThumbnails: true })` also writes
`thumbnails/<fileID>.jpg` beside `collections/`; `quak backup` does not.
A file the library could not decrypt (see "Default reads vs. fresh reads") goes
into `failures.json` with an empty title, since its title is encrypted too, and
an error that starts `could not be decrypted:` and gives the reason. A file in
two albums is backed up as usual if its copy in the other album decrypted. An
album the library could not decrypt has no name quak can read and no files it
can list. A run without `--json` prints one line for it,
`FAILED album <id>: could not be decrypted: <reason>`, and `--json` and the
`BackupResult` list its ID in `undecryptableAlbums`. Every other file is backed
up. Either kind keeps the exit code at 1, run after run, until the server sends
a copy that decrypts or deletes it; the next run then drops it.
A file in the backup's scope that the library could not decrypt (see "Default
reads vs. fresh reads") goes into `failures.json` with an empty title, since its
title is encrypted too, and an error that starts `could not be decrypted:` and
gives the reason. If a copy of it in another album decrypted, it does not: its
original is stored from that copy, and the album where it does not decrypt
neither links nor lists it. An album the library could not decrypt has no name
quak can read and no files it can list. A run without `--json` prints one line
for it, `FAILED album <id>: could not be decrypted: <reason>`, and `--json` and
the `BackupResult` list its ID in `undecryptableAlbums`. Such a file in
`failures.json`, or such an album, keeps the exit code at 1, run after run,
until the server sends a copy that decrypts or deletes it; the next run then
drops it.
`backup.lock` keeps two backups of the same directory from running at once, such
as a cron run that starts while the previous one is still going. A backup
+9 -7
View File
@@ -25,16 +25,18 @@ declares one.
# Completed Steps
- 2026-10-13: An album or file quak cannot decrypt, or whose metadata is not
- 2026-10-14: An album or file quak cannot decrypt, or whose metadata is not
JSON, no longer fails the refresh, so one bad record no longer stops
`quak backup` from storing anything (issue 181). The refresh leaves it out, an
album with its files, and the library keeps it with the reason in
`metadata.json` until the server sends a copy that decrypts or deletes it. The
backup stores every other file, records each such file in `failures.json` with
an error starting `could not be decrypted:`, prints one line naming each such
album's ID, lists those IDs in `undecryptableAlbums`, and exits 1 while any
remain. A file whose copy in another album decrypts is backed up as usual. The
read commands answer from what decrypted.
`metadata.json` until the server sends a copy that decrypts or deletes it.
`quak backup` stores every other file, records each such file in
`failures.json` with an error starting `could not be decrypted:`, names each
such album's ID in a printed line, or with `--json` in `undecryptableAlbums`,
and exits 1 while any remain. A file whose copy in another album decrypts is
not recorded: its original is stored from that copy, and the album where it
does not decrypt neither links nor lists it. The read commands answer from
what decrypted.
- 2026-10-14: `quak backup` no longer asks the server for changes every 3
seconds while it runs (issue 183). It opens its library with