Repository navigation
Conversation
Separate stable dependency source keys from source-revision target keys, keep build paths stable, and add local isolation guards and real cache/compiler probes. Closes #416
ChristianPavilonis
approved these changes
Oct 13, 2026
ChristianPavilonis
left a comment
Contributor
There was a problem hiding this comment.
Approved. The revision-isolated target cache contract, opt-in saves, and migration requirements are clearly documented.
This branch has not been deployed
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.
Summary
Improve dependency-source and compiler-cache reuse across application commits
while keeping writable Cargo target archives strictly revision-isolated.
Breaking build/cache contract: callers must supply the application's full
SHA when enabling target restores, explicitly opt into target saves, and stop
assuming builds write to
<application>/target. Production/staging deploymentsemantics, credential boundaries, CLI packaging and release verification are
unchanged.
Closes #416.
Review feedback addressed
save-target(default false). Readers useactions/cache/restore; writers useactions/cache's success-only post-jobsave, after compilation. Neither restores targets from another revision.
Fixed Git dates make unchanged fixture revisions stable across reruns; a
tracked upstream SHA accounts for EdgeZero path-dependency changes.
library identity excludes accidental older compiler hits. The next revision
changes only README and requires error-free hits on its first builds with a
fresh target directory, not a same-job build/clean/rebuild.
retrying only failed jobs does not change their expected source SHA. All
three jobs install/select the same
.tool-versionsRust compiler.Cache-disabled Git workspaces can use local HEAD for ownership; unidentified
non-Git repeats still fail. Mixed source/workspace/lock/cache settings, unsafe
paths and unowned targets remain rejected.
pinning; the separate pin gate still applies. Prepare uses
append_output.control-character rejection and unused-output removal address the cleanup nits.
explicit migration, GitHub branch scope and named sccache limitations. CLI
comments distinguish a shared job-local target from remote target caching.
The former lockfile-only target policy is intentionally replaced, as required
by #416. Cargo fingerprinting is not a reason to relax this isolation contract.
This does not guarantee a warm complete application build: linker-invoking
crate types, build-script execution and linking still cost work on cold targets.
Migration
Use a stable app-name and capture the checked-out application's full Git SHA,
not the deployment repository SHA. Configure:
save-target: truerequires target caching enabled. Its default is restore-only.Main-only saves select the workflow ref, not the application branch being built.
Use
CARGO_TARGET_DIRor thecargo-target-diroutput for build paths, includingwhen remote target caching is disabled. Prefer one setup per app per job; an
identical repeat is safe but performs no cache restore. First use of v2 target
keys, and each new source revision, has a cold target cache.
Verification
checks skipped locally on macOS and covered by PR CI.
target directory; first native and WASM builds each hit with zero cache errors.
docs format/lint/build and git diff --check.
first-build compiler-reuse probes on commit ff18102.
observed 204 Rust hits and 17 misses (92.3%), zero cache read/write errors,
and no full target archive save on this PR run. This is a warmed CI fixture,
not a production deployment benchmark or a promised hit ratio.
No cache deletion, live deployment, merge, release, Trusted Server source change
or Rust dependency upgrade is included. Deployer adoption is in
trusted-server-deployer #36.