docs(plan): mark step 7 done, with what landed beyond the original scope
The plan still said "Scoped 2026-08-27, not started" for work that is complete and validated against S3 — the first thing a reviewer reads, describing the PR as unwritten. Records the two pieces that were not in the original scoping: the memory cache moving to content keying (it was still file-keyed, so identical content held two RAM entries), and the engine binding a run to the flags it started with. Also that `.transcoded/` legitimately persists where external mounts exist, since hash-less callers have no content identity — absence is only expected elsewhere. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1409,7 +1409,25 @@ hardcoded SQL). New sources bolt on independently.
|
|||||||
after, step 5 lands at scale; per-row HEADs do not survive a 4×
|
after, step 5 lands at scale; per-row HEADs do not survive a 4×
|
||||||
row count.
|
row count.
|
||||||
7. **`ImageTranscodeService`** — same shape, `kind = 'transcode'`,
|
7. **`ImageTranscodeService`** — same shape, `kind = 'transcode'`,
|
||||||
no new table. **Scoped 2026-08-27, not started.** The service does
|
no new table. **Done 2026-08-30**, validated on a snapshot restore
|
||||||
|
against S3: 13 cached transcodes imported, 5 `.skip` markers
|
||||||
|
collapsing to 3 negative rows (three of them named the same content),
|
||||||
|
`file_gone` exercised with a synthetic id, and every deletion
|
||||||
|
preceded by a byte-for-byte readback.
|
||||||
|
|
||||||
|
Two things landed beyond the three pieces below. The memory cache is
|
||||||
|
now keyed by content as well, not just the durable tier — it was
|
||||||
|
still `{file_id}:{ext}`, so identical content held two RAM entries
|
||||||
|
and the second file missed. And `run_or_resume` binds a run to the
|
||||||
|
flags it started with, so a paused `?repair=true` import can no
|
||||||
|
longer resume as import-only.
|
||||||
|
|
||||||
|
Still local-disk, deliberately: hash-less callers (external mounts)
|
||||||
|
have no content identity, so they keep `.transcoded/` and it will
|
||||||
|
not disappear on installs that have them. Absence is only expected
|
||||||
|
elsewhere.
|
||||||
|
|
||||||
|
*Original scoping, for the record.* The service does
|
||||||
not currently write the derived tier at all, which is the same gap
|
not currently write the derived tier at all, which is the same gap
|
||||||
`persist_rendered` closed for thumbnails, and it must be closed
|
`persist_rendered` closed for thumbnails, and it must be closed
|
||||||
before `transcode_import` can converge.
|
before `transcode_import` can converge.
|
||||||
|
|||||||
Reference in New Issue
Block a user