Repository navigation
ci: drop the unhonoured pre-prune waiver (CACHE-034) - #533
Conversation
`pre-prune = true` was declared on both writer flows but no workflow here ever runs `ci-lint cache preprune`. CACHE-004's arithmetic waives the lockfile-change peak on that declaration alone, so the modelled footprint was understated by 3.57GB for free. Removing the declaration makes the number honest. Worst case goes 4.24GB -> 7.80GB, still inside the 9GB budget, so CACHE-004 keeps passing and the violation count is unchanged at 490.
|
CACHE-034 is implemented and merged — zackees/ci.yml#352 (docs #353). It fires on this repository's
So this PR is the remediation for an enforced rule, not a review suggestion — nothing mechanically prevents the declaration from coming back otherwise. Verified independentlyYour CACHE-004 numbers check out against Your reasoning for (B) over (A) is right: The live-vs-declared gap you flaggedAgreed it deserves its own issue rather than folding in here: declared |
|
One correction to something implied above: I framed option (A) — adding the pre-prune step — as "the smaller diff". For bosn specifically it is not currently expressible at all, and that is structural rather than a matter of effort. Two independent blockers, both verified against your
So removing This does not change the recommendation: this PR should still land. bosn's honest worst case (7.27 GiB) fits the 9 GB budget, so the waiver is a pure fiction with no underlying problem — unlike soldr and running-process, whose steady state is already over budget and which need a cardinality decision this change cannot make. |
|
Why this PR cannot go green: bosn's
The consequence for this PR is mechanical:
Running the gate against This is pre-existing and not caused by this PR — the pin is unchanged on The underlying change here remains sound and independently verified: CACHE-004 passes at 7,801,405,440 B against the 9 GB budget before and after, and the Repointing |
|
The dead pin is fixed on this branch — That was the blocker I described above, and it is now genuinely unblocked — What still blocks the attestation is unrelated to this change: the host. The bosn daemon refuses to start for with 79 orphaned I can stamp this branch as soon as the host is usable. The two changes on it are independent and both sound on their own:
Holding as a draft for the host reason alone. If you would rather land (1) on its own — since it is what unblocks this repository's gate and its precheck, independent of the cache question — say so and I will split it out. |
`fe965fc7e2c5203570072e1d0fd19d0935d98e39` is not in zackees/ci.yml -- the GitHub API returns 422 and the object is absent from the store, so there is no branch or tag to recover it from. The pin was introduced in this repository's first ci.toml (#512) and was never valid. SEC-004 did not catch it because the SHA is well-formed; a syntactically valid reference to a nonexistent commit passes every existing check. It surfaced only when something tried to RUN the gate -- local-gate resolves the pin before executing any lane, so the resolution failed first and no Local-Gate: trailer could be produced (GATE-003 on every PR). Repointed at 0fcff99 (carries CACHE-034, merged). precheck now executes against a fetchable linter: 490 violations / 13 needs_review. See #534. Local-Gate: v1 tree=705845b803adc59f10578868dfe72f0da94d2f75 secs=612 lanes=py-static:reused@67733cf35e83,guards:reused@6011cde8e2b0,rust:run,tests:run Ci-Attestation: {"at":1791223142,"gate":"python/all/static","host":"linux-x86_64","key":"67733cf35e831723fd88a6ccf527858f2eca477748fe12f7fd3b8f4b5f495c21","lane":"py-static","parents":["d67eed1413a5095445b6d90cd6e9de09aec6feea"],"secs":null,"stamp":"79fc1b824301e53e76333fd5cf8d2be9","tree":"705845b803adc59f10578868dfe72f0da94d2f75","v":1,"via":"reused"} Ci-Attestation: {"at":1791223142,"gate":"general/all/ci-policy","host":"linux-x86_64","key":"6011cde8e2b00205ef30534c9b853cbf8abb4424a0cea35162dcfd893a5aa6cc","lane":"guards","parents":["d67eed1413a5095445b6d90cd6e9de09aec6feea"],"secs":null,"stamp":"d5484777a28aea3b9707c21249f37f9e","tree":"705845b803adc59f10578868dfe72f0da94d2f75","v":1,"via":"reused"} Ci-Attestation: {"at":1791223142,"gate":"rust/all/fmt","host":"linux-x86_64","key":"a01ef65e97480db9abcc7ce1e3ebd864a1a774cb14e7d67e14db49ae96242591","lane":"rust","parents":["d67eed1413a5095445b6d90cd6e9de09aec6feea"],"secs":298,"stamp":"311e622645ec6018a777a44000eaad49","tree":"705845b803adc59f10578868dfe72f0da94d2f75","v":1,"via":"run"} Ci-Attestation: {"at":1791223142,"gate":"rust/all/boundary","host":"linux-x86_64","key":"a01ef65e97480db9abcc7ce1e3ebd864a1a774cb14e7d67e14db49ae96242591","lane":"rust","parents":["d67eed1413a5095445b6d90cd6e9de09aec6feea"],"secs":298,"stamp":"271d44451050f951110b4e85cc07d08d","tree":"705845b803adc59f10578868dfe72f0da94d2f75","v":1,"via":"run"} Ci-Attestation: {"at":1791223142,"gate":"rust/x86_64-unknown-linux-gnu/clippy","host":"linux-x86_64","key":"a01ef65e97480db9abcc7ce1e3ebd864a1a774cb14e7d67e14db49ae96242591","lane":"rust","parents":["d67eed1413a5095445b6d90cd6e9de09aec6feea"],"secs":298,"stamp":"4cf65a24a4f240269489670738e35483","tree":"705845b803adc59f10578868dfe72f0da94d2f75","v":1,"via":"run"} Ci-Attestation: {"at":1791223142,"gate":"rust/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"a01ef65e97480db9abcc7ce1e3ebd864a1a774cb14e7d67e14db49ae96242591","lane":"rust","parents":["d67eed1413a5095445b6d90cd6e9de09aec6feea"],"secs":298,"stamp":"d755f8a7fe4f219bb5470cd50e54c1d4","tree":"705845b803adc59f10578868dfe72f0da94d2f75","v":1,"via":"run"} Ci-Attestation: {"at":1791223142,"gate":"python/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"d8be7b5119ad61ca86ae6d027f371f436fea741d235b656adec5e3da2490289f","lane":"tests","parents":["d67eed1413a5095445b6d90cd6e9de09aec6feea"],"secs":314,"stamp":"e8ff0e96fc281725de0adb9e0ca3458d","tree":"705845b803adc59f10578868dfe72f0da94d2f75","v":1,"via":"run"}
97228e6 to
af34d99
Compare
What
ci.tomldeclaredpre-prune = trueon both writer flows (mainandnightly).No workflow in this repository has ever run
ci-lint cache preprune-- verified bygrep -rn "preprune" .github/ ci/, which returns nothing.ci_lint's CACHE-004 budget arithmetic honours the declaration on its own: withevery writer flow pre-pruning, the lockfile-change peak term is dropped from the
worst-case footprint. So this repository's modelled footprint was understated by
exactly that peak term -- 3.57GB -- for free.
This PR takes fix (B): it removes the declaration so the arithmetic counts the
peak honestly. It does not touch
[cache].budget, any family size, or any livecache entry.
Why not (A)
Adding
ci-lint cache preprune --lockfile-changedbefore the saves would be thebetter fix, but it is not reachable here without a structural change to the
workflow this PR should not make:
zackees/setup-soldrsteps in therustandlinuxjobsof
.github/workflows/ci.yml(lines 145, 237). A pre-prune step would have to beordered ahead of those, inside those jobs, each holding
actions: write.This repository's
ci.ymlsetspermissions: contents: readworkflow-wide, andno build job holds
actions: writetoday -- widening it onrustandlinuxisa security-relevant change that belongs in its own reviewed PR.
ci-pre.ymlis the natural home (it already carries cache duties), butnothing in
ci.ymlneeds:it. It is called as a job and deliberatelyun-gated, so its deletions would not be ordered ahead of the
setup-soldrsaves in the same run. A pre-prune that is not ordered before the save does not
remove the peak.
CACHE-004 arithmetic, before and after
Verified with
uvx --from "git+https://github.com/zackees/ci.yml@92106df315bd28de24ef1808c893c91a5859122d" ci-lint precheck --repo . --local[cache.pr].budget7.27GiB against a 9GB budget: the honest number still fits, with ~1.86GB of
headroom. Nothing was invented to achieve that -- the family
maxvalues andpercardinalities are unchanged, and the pre-existing 490 violations / 13needs_review are unchanged too (before and after).
CACHE-029 / the 99.2% cap
The prompt noted this repository's live cache sits at 9.92GiB of GitHub's 10GiB
cap, with a
compilefamily holding 9.18GiB across 16 entries. Two notes:finding, and it is not raised here:
compilealready declaresevict = "lru"in
ci.toml(line 110), so the static rule is satisfied. Before/after themodelled
compileterm is identical at 3,355,443,200 B.compile's declaredmax = "800MB"x 4 platforms models 3.36GB, while the live listing holds9.18GiB. That is entries outside the declared cardinality (and/or entries
larger than
max), which no ci.toml edit in this PR addresses. LRU evictionbounds future growth but does not reclaim the existing 9.18GiB. Tracked
separately rather than folded in here.
Unresolved
pre-prune = truehonestly needs a reviewed PR that grantsactions: writeto therustandlinuxjobs and orders a pre-prune stepahead of their
setup-soldrsteps. That is the real fix; this PR only stopsthe waiver from being free.
Local-Gate:trailer is attached. The precheck was run and is reportedabove; I did not fabricate a gate attestation. If this repository's policy
requires one on PR branches, the maintainer should run the local gate.
Second commit: repoint the linter pin (fixes #534)
The first iteration of this PR sat red because
ci.toml'slinterpin namedzackees/ci.yml@fe965fc7...— a commit that does not exist — soci-lintcould not be fetched and no
Local-Gate:trailer could ever be produced(#534). Commit 2 repoints
linterat0fcff997fefecf152ba075875029582d1ec05ad1, which resolves and carries theCACHE-034 policy documentation (zackees/ci.yml#353).
Fixes #534