Trust remote build cache entries
Remote caching moves build results between developers and CI, but those runs do
not have the same authority. Putnami keeps the speed benefit while making the
trust boundary explicit: the cache provider classifies every provenance-aware
entry as trusted or hint, and the CLI decides whether that class may satisfy
the current run.
Use --cache-trust on build, test, lint, package, or another job command:
# Authoritative: only provider-verified trusted entries may pass a job
putnami lint,test,build --cache-trust=ci
# Developer workflow: accept all remote entries
putnami build --cache-trust=any
# Keep the local store but do not contact the remote cache
putnami build --cache-trust=none| Policy | What may satisfy a job | Default |
|---|---|---|
ci |
Only trusted entries |
CI |
any |
Trusted entries, developer hints, and legacy entries | Local development |
none |
No remote entry; local cache entries still apply | — |
The key guarantee is negative: a hint never marks a job green under ci.
Putnami may still download and digest-verify the hint's blobs into the local CAS,
so the real execution can reuse those bytes. It does not install the hint's
result as a local action-cache entry, and the job re-executes.
Providers that predate provenance return no channel. They keep their historical
behavior under any; under ci, Putnami treats them as hints and re-executes.
Remote successful-run markers do not have provenance yet, so they can influence
bare main or master project selection only under any. With ci, Putnami
uses a local successful-run marker when available and otherwise selects every
project.
Configure the policy
Precedence is:
--cache-trustPUTNAMI_CACHE_TRUSToptions.<command>.cache-trustinputnami.workspace.jsonciwhenCIis set, otherwiseany
For example, make builds authoritative without changing local test behavior:
{
"options": {
"build": { "cache-trust": "ci" },
"test": { "cache-trust": "any" }
}
}A multi-command invocation uses the strictest configured command policy because
it shares one provider session. Release paths (publish, tag, and
version tag) force at least ci; --cache-trust=none remains a stricter
remote opt-out.