Repository navigation
Bound storage-report sizing to a shared filesystem budget - #4353
Conversation
|
Co-authored-by: ScriptedAlchemy <25274700+ScriptedAlchemy@users.noreply.github.com>
Co-authored-by: ScriptedAlchemy <25274700+ScriptedAlchemy@users.noreply.github.com>
b3e2ad9 to
30f62b9
Compare
ScriptedAlchemy
left a comment
There was a problem hiding this comment.
Follow-up repairs pushed: the artifact-mark phase now uses the same budget/cancellation path as scope enumeration; offline sizing and sampling share one counter; truncated unregistered counts are marked as lower bounds; empty pagination results no longer erase unavailable coverage. I also repaired the two stale segment_scope_roots call signatures that would fail compilation and moved the import into the normal import block. Added focused Rust regressions for budget exhaustion/cancellation, offline sharing, lower-bound rendering/JSON, and unavailable page merging. Pinned rustfmt, diff checks, and commitlint pass; native Bazel validation is pending CI.
ScriptedAlchemy
left a comment
There was a problem hiding this comment.
Pushed f162dfb to fix the concrete compile failures from CI run 39559627882 (Clippy job 119100236502 and native job 119100236798).
The remaining retention tests now pass the shared entry budget and assert cancellation/exhaustion behavior. The removed dir_size_bytes re-export and its live CLI caller are migrated to the canonical bounded walker; list --all shares one existing entry ceiling across registered and orphan stores, and partial/unreadable measurements remain unknown instead of contributing an exact total. Only a confirmed missing root reports zero. A failed root inspection no longer becomes an empty store through Path::exists(). The stored footprint callback also has the explicit types required by its FnMut interface.
Added focused real-filesystem regressions for shared budgets, incomplete/non-directory measurements, and the exists() == false/metadata-error case, and strengthened the retention budget assertions. Pinned rustfmt, git diff --check, and commitlint pass. Native compilation and the new Rust regressions are left to fresh Bazel CI; these checks have not been run locally. No entry ceiling, deadline, or assertion was weakened.
Summary
Motivation
Project page limits did not bound work inside each project, and registered and unregistered sizing used separate walks with different failure accounting. Partial traversal could therefore appear complete, while unavailable retention protection still triggered generation scanning.
Changes
Test plan
b0d45bb; current-head CI is pendingbazel build //...passed onb0d45bbbefore the latest master updateFull CI on
b0d45bb85e1b3dbe8b447cb0076ddec3ceddbfd7passedbazel build --config=ci //..., all 169 fleet test targets, the Linux aggregate, Clippy, repository gates, feature gates, Dashboard, and the shipped Linux CLI build. CI after that master update on5193a8bpassed 168/169 targets. Only the composition-root unit target failed (937 passed, 1 failed):committed_save_remains_noncurrent_until_its_broker_handoffcaptured its baseline before initial graph-admission work finished, allowing a setup generation to race the save assertion. Clippy, shipped CLI build, Dashboard, feature gates, and repository gates passed.Current head
fe58c29d0397923b1f749bd759431a68a8288f3bincludes master through44d8265c13a5feb70e7ea834c1d11ed413f3f2afand reuses the exact fixture fix from #4351 (6c70575): wait for the initial graph owner admission to settle before pinning the save baseline. All generation, freshness, broker-debt, and receipt assertions retain their existing bounds. The identical patch already passed both focused handoff tests and strict Clippy in #4351; that shared test lane owns the behavioral validation. Pinned formatting, whitespace checks, and commit hooks passed here. No production behavior or deadline changed. Fresh full CI on this combined head must pass before merge.Checklist
CHANGELOG.mdupdated (under[Unreleased]if no version bump).envfiles included