What's Changed
- test(store): give concurrent shared-blob puts a 30s busy timeout by @jleni in #866
- ci: run nightly benchmarks at 03:37 Zurich time by @jleni in #868
- feat(bench): publish OTLP telemetry artifacts by @jleni in #867
- feat(ci): publish coverage telemetry by @jleni in #869
- feat(gc): track retained target outputs and disk reclamation by @jleni in #870
- ci: adopt Kartero telemetry exporters by @jleni in #872
- fix(bench): repair Firefox and Lance scenarios by @jleni in #873
- feat(telemetry): dump cache counters as OTLP JSON for Kartero by @jleni in #874
- feat(remote): suppress writes from untrusted CI by @jleni in #875
- feat(init): set HOST_CC and HOST_CXX, not CC by @jleni in #876
- fix(store): read the executable bit from the compiler output, not the staged blob by @jleni in #877
- feat(cc): default shim farm and Makefile/PKGBUILD docs by @jleni in #879
- feat(cc): digest user include-dir names in the object key by @jleni in #878
- feat(rustc): pin native link runtime and admit bundled WASM by @jleni in #880
- chore: add just pr as the local CI gate by @jleni in #886
- feat(cc): publish C/C++ objects to the remote by @jleni in #883
- docs: add AGENTS.md so PRs run just pr before push by @jleni in #887
- feat(wrapper): machine-wide compile scheduler by @jleni in #885
- feat(gc): default local_max_size to 5% of the cache disk by @jleni in #882
- feat(prefetch): prefer identity manifests and drop guppy by @jleni in #881
- feat(wrapper): compile-and-compare verify on hits by @jleni in #884
- test: stabilize process and environment-sensitive cases by @jleni in #888
- test(service): isolate startup timing and metrics state by @jleni in #889
- ci: build Kache with stable Kache cache by @jleni in #890
- perf(prefetch): overlap identity lookup with planning by @jleni in #891
- ci: group repository consistency checks by @jleni in #892
- test: share process-state lock across env users by @jleni in #893
- fix(cache): model frontend job count by @jleni in #894
- feat(scheduler): report cgroup resource diagnostics by @jleni in #895
- docs: lead onboarding with kache init by @jleni in #900
- docs: tighten the onboarding wording from #900 by @jleni in #902
- docs: add the store diagrams and link the product page by @jleni in #903
- ci: add a per-PR warm-build performance gate by @jleni in #901
- chore: tidy the repository root by @jleni in #905
- ci: build the perf-gate instrument from the default branch by @jleni in #907
- chore: gather packaging under packaging/ by @jleni in #906
- ci: make rust-toolchain.toml the toolchain CI actually uses by @jleni in #909
- test: isolate throwaway Git repositories from signing by @jleni in #910
- ci: compare the perf gate on millisecond wall clock by @jleni in #911
- fix(key): drop -C extra-filename from the dep-info pre-pass by @jleni in #912
- docs: cargo mutants after kache init by @jleni in #913
- test: pin kache runtime state for spawned children by @jleni in #914
- bench: add the hk subject, cold, warm and next-commit by @jleni in #915
- docs(agents): run mutants in CI, not before the push by @jleni in #916
- bench: export the same-tree warm phase to the telemetry by @jleni in #919
- feat(report): attribute wrapper time to nested trace phases by @jleni in #917
- fix(cache): key native Windows MSVC link inputs by @jleni in #918
- docs(remote): bound a remote with the store's own policy by @jleni in #921
- bench: add mbx as a third backend and an hk-mbx nightly arm by @jleni in #922
- fix(cli): honour the --since window and label it honestly by @jleni in #923
- fix(bench): unbreak the nightly and authenticate third-party clones by @jleni in #924
- ci: split the Kunobi runner pool by the disk each arm needs by @jleni in #925
- ci: put the scenario in the bench concurrency key by @jleni in #926
- perf(cc): make the preprocessor memo reachable by @jleni in #927
- perf(cc): let the preprocessor memo cross checkouts by @jleni in #928
- perf(cc): compare memo inputs as the expansion sees them by @jleni in #929
- fix(key): drop joined -o spellings from the dep-info pre-pass by @jleni in #934
- fix(key): verify guarded inputs across clock domains by @jleni in #936
- feat(cc): cache preprocessor-mode compiles that name their output by @jleni in #935
- perf(cc): resolve include shadowing instead of enumerating it by @jleni in #933
- fix(clean): don't report an unflushed file as unreclaimable by @jleni in #937
- feat(key): remember the input closure each rustc unit discovers by @jleni in #938
- bench: show the perf gate where the warm build's time went by @jleni in #941
- bench: measure every eligible subject side by side by @jleni in #940
- feat(key): derive the rustc key from a recorded closure by @jleni in #939
- ci: give the service mutation lane room for a slow runner by @jleni in #943
- feat(key): prove predictions end to end and count the evidence by @jleni in #942
- test(remote): a vanished shared-folder pack falls back to recompile by @jleni in #944
- fix(store): advise once when ingest cannot hardlink across volumes by @jleni in #946
- docs(agents): three mutation lessons the list did not have by @jleni in #951
- fix(key): let a predicted key ask the remote before re-deriving it by @jleni in #947
- feat(report): count prediction mismatches so the feature can qualify by @jleni in #945
- feat(config): parse and match volume-local store shards by @jleni in #948
- refactor: extract shared cache entry formats by @jleni in #950
- bench: turn on input predictions and sample-check them by @jleni in #952
- fix(hardlink): surface EXDEV/EPERM fallback reasons and doctor probe by @jleni in #949
- fix(key): make sampled verification sample, and read the right report object by @jleni in #955
- fix(bench): name the pools the arms were written for by @jleni in #956
- refactor: extract local artifact storage by @jleni in #953
- docs: guide README readers to Kunobi by @jleni in #960
- feat(wrapper): look up and store on the volume shard first by @jleni in #957
- refactor(store): share blob metadata validation by @jleni in #959
- refactor(service): move the planner store from SurrealDB to SQLite by @jleni in #954
- refactor: share filesystem measurements and file operations by @jleni in #961
- fix(nix): expose prebuilt compiler shims by @jleni in #963
- feat(service): keep candidate metadata and make the seed authoritative by @jleni in #964
- refactor(wrapper): share Rust cache-hit completion by @jleni in #965
- feat: report the latest recorded build session by @jleni in #966
- docs: verify cache reuse across temporary worktrees by @jleni in #967
- fix(ci): keep required check names on documentation changes by @jleni in #968
- refactor(fs): share staged file publication by @jleni in #969
- Emit daemon counters as cumulative sums by @jleni in #970
- fix(perf-gate): do not fail when the cold build slowed as much by @jleni in #972
- feat(daemon): import remote hits into the requesting volume shard by @jleni in #962
- feat(bench): add eza as the small fat-LTO nightly subject by @jleni in #973
- chore(release): prepare 0.17.0 by @jleni in #976
Full Changelog: v0.16.1...v0.17.0