Split the clean cache composition by origin: upload remnants, read cache, unknown #19
Loading…
Reference in a new issue
No description provided.
Delete branch "oss-oo/cache-origin-rt20261009"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What this changes
rclone's VFS cache marks a successful upload's local copy "clean" —
indistinguishable from a copy created by reading/downloading. The Control
Center's cache composition therefore labeled post-upload remnants as "read
cache", which is semantically false (they never served a read) and hid what
the cache actually holds. This round makes the composition tell the truth
about origins:
dir records paths that transitioned dirty → clean via a completed
upload, built on the existing upload-completion parsing in the state
aggregation (no new live-system probes, no rclone/mount changes).
Atomic append, 0600 file under a 0700 dir, byte-capped rotation sized
to cover the ~8.5-day cache-max-age horizon, corrupt-line tolerant
reads, sanitized relative paths only. Clean entries not journaled as
upload remnants count as read cache (the complement).
time have unknown origin and get their own bucket ("origin unknown" /
„Herkunft unbekannt") instead of being mislabeled; the bucket drains
naturally as the age policy evicts.
clean into
upload_remnants_bytes/files,read_cache_bytes/filesandunknown_origin_bytes/files; older snapshots without the fields defaultthe whole clean population to read cache (fixtures + UI consumers
updated together).
neutral-family tones (upload remnant vs read cache) plus a muted
third variant for unknown-origin that visually drains; per-segment
tooltips EN + DE explain origin semantics plainly; the sub-line gains
per-origin counts/bytes at full width with graceful minimum-width
degradation; card-level delegation tooltips stay intact; zero segments
render nothing.
each origin's meaning, the journal basis and the unknown bucket's
lifecycle.
No eviction-policy changes (the 0.9.6 early tier targets verified copies
regardless of origin — untouched), no new settings.
Evidence
(journal mechanics incl. rotation math vs append rate, migration honesty
via the unknown bucket + complement rule, additive schema with legacy
default, UI split/tooltips/degradation/zero-collapse, docs, non-goals);
make checkgreen;git diff --checkclean; laboratory remote branchesexactly
['main'](branch-hygiene assert).on one reworded table line, whitespace-only) is fixed at source in this
branch (
fd2298f); changed Markdown now passesprettier@3.5.3 --check;git diff --checkclean.remnant/read/unknown split fixtures; legacy-snapshot default; EN/DE
tooltips; min-width degradation; zero-collapse per segment.
Non-blocking findings (recorded; from the validation dossier)
covered the behavior; a permanence leg writing a journal without a
trailing newline before an append would pin it).
pdrive-stateinvocations could interleave read→rotate→replace and losea just-appended entry (duplicates are harmless; impact bounded to
under-classifying a remnant as read cache until re-observation or aging
out; the journal is a classification aid by design).
journals size 0 — the file counts as a remnant while its bytes land in
the read-cache complement until a sized record appears; per-bucket clamps
keep the sums exact either way.