Repository navigation
docs(fleet): the cache-policy rollout, recorded - #349
Merged
Merged
Conversation
**Six declarations merged** -- clud (#1801), reld (#218), bosn (#512), zccache (#1910), wild (#52), soldr. **~180 GiB reclaimed** fleet-wide. Three authored and validated but awaiting a `Local-Gate:` stamp (running-process #1323, mimalloc-pprof #603, fbuild #1652), plus one real defect rather than a stamp (FastLED #4703). Every one of those was verified with a LIVE `ci-lint cache janitor --dry-run`, not just the static checks -- which is what caught: * running-process #1323 would delete 4 live toolchain entries (benign: older soldr versions re-download, they do not rebuild) -> #1325 * zccache's first draft put `compile` 354 MB below live while static CACHE-004 passed it * soldr's MERGED declaration overstates `compile` 4.7x and omits its largest family -> #3580 ## The schema changes, and why they were needed Every one exists because a repository could not declare honestly without it: | change | what it unblocked | | --- | --- | | #334 `.shapes.<scope>` | running-process's `compile`: two 1.25 GiB shapes and eight <=529 MB | | #343 janitor uses `family_footprint` | it used `max x cardinality` while CACHE-004 used the shapes sum -- the janitor was STRICTER and deleted live caches precheck approved. Found independently by three agents. | | #345 `setup-soldr:target-cache` via | 33 entries across 3 repos were permanently undeclareable | | #348 audit uses `family_footprint` | it charged wild's `cook` 2 entries against 3 live ones, and compared each entry to `fam.max` instead of the largest shape ceiling, so a `shapes` family could never pass | ## One gap left open deliberately #347 -- `via` maps one value to exactly one literal prefix, so neither a PATH-shaped cache (203 live `sccache/<a>/<b>/<c>/<hash>` entries on zccache) nor a repository-owned prefix can be declared. Listing them in `[cache].retired` would convert CACHE-001 into CACHE-009 and DELETE read caches -- both agents that hit this declined, and so did zccache's merged declaration, which carries a warning against running the janitor until the gap closes. ## The pattern Every blocker was infrastructure the cache policy does not own: a gate needing a `Local-Gate:` stamp, a taplo formatter (wild, 9 red jobs from one `=`), a REUSE licensing annotation, a bosn daemon version. Five repos, five unrelated systems, and not one caused by a `[cache.family]` value. The three times a declaration looked impossible, the gap was in the CHECKER -- so the schema work was worth more than the per-repo PRs. Refs #153, #159, #162, #347 Local-Gate: v1 tree=5cd8966536e8b5458c850e37c1b1b0f171a5f182 secs=35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Six declarations merged, ~180 GiB reclaimed
clud #1801 · reld #218 · bosn #512 · zccache #1910 · wild #52 · soldr
Three more are authored and validated but awaiting a
Local-Gate:stamp (running-process #1323, mimalloc-pprof #603, fbuild #1652), plus one real defect rather than a stamp (FastLED #4703).What the live dry-run caught that static checks didn't
Every open declaration was verified with
ci-lint cache janitor --dry-runagainst the live repository, not just precheck:toolchainentries — older soldr versions alongside the current one. Benign (toolchains re-download rather than rebuild), but not what the declaration intends → #1325compile354 MB below live, and static CACHE-004 passed itcompile4.7× (2600 MB × 6 platforms, for one 558 MB entry) and omits its largest family,zccache-unit-v1at 2.49 GB → #3580The schema changes, and why each was needed
.shapes.<scope>compile: two ~1.25 GiB shapes and eight ≤529 MB, which onemaxcannot expressfamily_footprintmax × cardinalitywhile CACHE-004 used the shapes sum — the janitor was the stricter of the two and deleted live caches precheck had approved. Found independently by three agents.setup-soldr:target-cacheviafamily_footprintcook2 entries against 3 live ones (spurious violation), and compared each entry tofam.maxinstead of the largest shape ceiling — so ashapesfamily could never passOne gap left open deliberately
#347 —
viamaps one value to exactly one literal prefix, so neither a PATH-shaped cache (203 livesccache/<a>/<b>/<c>/<hash>entries on zccache) nor a repository-owned prefix can be declared.Listing them in
[cache].retiredwould convertCACHE-001intoCACHE-009and delete read caches. Both agents that hit this declined to do it, and so did zccache's merged declaration, which carries an explicit warning against running the janitor until the gap closes.The pattern
Every blocker was infrastructure the cache policy does not own: a gate needing a
Local-Gate:stamp, a taplo formatter (wild — nine red jobs from one=), a REUSE licensing annotation, a bosn daemon version. Five repos, five unrelated systems, and not one caused by a[cache.family]value.The three times a declaration looked impossible, the gap turned out to be in the checker — so the schema work was worth more than the per-repo PRs.
Refs #153, #159, #162, #347
🤖 Generated with Claude Code