From 979f1b57497dfde5672ff535c7504d59756535ea Mon Sep 17 00:00:00 2001 From: sneak Date: Mon, 26 Oct 2026 17:16:04 +0000 Subject: [PATCH] README: five sentences fixed for the documents gate (closes #229) The documents gate on `next` failed five README sentences (https://git.eeqj.de/sneak/quak/issues/219#issuecomment-156230). Each is replaced with the gate's rewrite after a check against the code: the keywords score sentence is split in two; `-1` is dropped from the invalid ID examples, since the option parser refuses a positional `-1` as an unknown option before the ID check; `mlData` drops the whole `clip` block, as `src/backup.ts` and `src/metadata-backup.ts` do; a collection name gets its ID at 250 bytes and a file name at 255, as `uniqueNames` does; `lastTriedAt` is one timestamp per run. Nothing else changes; `make fmt` reflowed the touched paragraphs. Model: fable-5-1 --- README.md | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 4c51a1e..2571bc6 100644 --- a/README.md +++ b/README.md @@ -472,8 +472,8 @@ fresh reads"). `backup` counts it as failed (see "What quak cannot decrypt"). A collection ID or file ID given to `files`, `get`, `get-thumb` or `fix-missing-thumbnails --file` is written in decimal digits and is at -most 9007199254740991. Anything else, such as `0x10`, `1e3` or `-1`, is refused -before any request is sent. The command logs `Invalid file ID: ` or +most 9007199254740991. Anything else, such as `0x10` or `1e3`, is refused before +any request is sent. The command logs `Invalid file ID: ` or `Invalid collection ID: ` and exits 1. ### What quak prints @@ -692,10 +692,10 @@ Update times are in microseconds, as Ente records them. The JSON also holds the machine-learning data Ente computed for the photo, as `mlData`. Ente's apps detect faces in each photo and compute a CLIP embedding for it, a list of 512 numbers that describes what the photo shows. `mlData` -holds everything but that embedding. In its place the JSON holds `keywords`, -derived from the embedding as described under "Keywords". A file with no -machine-learning data has neither field. A file whose data holds no usable -embedding has no `keywords`. +holds everything but the `clip` block, which holds that embedding. In its place +the JSON holds `keywords`, derived from the embedding as described under +"Keywords". A file with no machine-learning data has neither field. A file whose +data holds no usable embedding has no `keywords`. The backup waits for the library's fetch of machine-learning data to finish before it writes the JSON files. When a file's data cannot be fetched, @@ -748,11 +748,11 @@ derives a file's keywords the way the app sorts it. The categories are: Each category has a query, and a text embedding of that query from Ente's CLIP text model. A file's score for a category is the cosine similarity of the file's -embedding and the category's: a number from -1 to 1, higher the more alike the -two embeddings are. The file falls in the category when its score reaches the -category's minimum score. The keywords are the titles of the categories the file -falls in, highest score first. A video never falls in a category marked "no -videos", as in the app. +embedding and the category's. That is a number from -1 to 1; the more alike the +two embeddings are, the higher it is. The file falls in the category when its +score reaches the category's minimum score. The keywords are the titles of the +categories the file falls in, highest score first. A video never falls in a +category marked "no videos", as in the app. #### Collection directories @@ -775,11 +775,11 @@ ignoring case, each gets its ID added: two albums named `Trip` become `Trip (10)/` and `Trip (11)/`. Two files in one collection whose titles match, ignoring case, get their IDs added before the extension: `IMG_0001 (12345).JPG` and `IMG_0001 (12346).JPG`. A collection named like another collection's JSON -file, such as `Trip.json` beside `Trip`, also gets its ID added. A name too long -for a file name, which most file systems limit to 255 bytes, gets its ID added -too. It is then cut short before the ID, just far enough to fit. IDs never -change, so a name stays the same from run to run until such a clash appears or -goes away. +file, such as `Trip.json` beside `Trip`, also gets its ID added. A file name +longer than 255 bytes, the limit on most file systems, gets its ID added too. So +does a collection name longer than 250 bytes, which leaves room for `.json`. It +is then cut short before the ID, just far enough to fit. IDs never change, so a +name stays the same from run to run until such a clash appears or goes away. Each run removes every symlink in a collection's directory that points into the date folders and is not one of its current links, yours included. A file or @@ -834,7 +834,8 @@ Each entry holds: - `fileID` and `title`; - `classification`: the kind of failure; - `attempts`: how many runs in a row have failed the file; -- `lastTriedAt`: when it was last tried, as a Unix time in milliseconds; +- `lastTriedAt`: the start of the run that last tried it, as a Unix time in + milliseconds; - `error`: the error, as quak printed it. The kinds are: