@@ -1183,8 +1183,10 @@ into the new version's section — see docs/releasing.md.
11831183 a server-side archive build and count against quota, are exactly the
11841184 one-at-a-time loop's (71 on a fresh depscan run, where an earlier
11851185 draft of the look-ahead issued 74). What changes is only their timing:
1186- up to four are in flight at once. ` SOCKET_API_CONCURRENCY=1 ` turns the
1187- look-ahead off entirely.
1186+ they are requested in one batch at the first planned package (see
1187+ "Fewer downloads in vendored runs"), and up to four archives are in
1188+ flight at once. ` SOCKET_API_CONCURRENCY=1 ` turns the look-ahead off
1189+ entirely.
11881190 - A token revoked * mid-run* now costs the authenticated batch endpoint
11891191 the requests already in flight — up to the in-flight cap instead of
11901192 one — before the run downgrades to the public proxy. Their answers are
@@ -1194,6 +1196,21 @@ into the new version's section — see docs/releasing.md.
11941196
11951197### Fixed
11961198
1199+ - ** ` apply ` no longer half-applies a patch that creates a file from a
1200+ diff-only cache.** A diff archive has no delta for a file the patch
1201+ creates, but the source check counted a cached diff archive as covering
1202+ the whole patch: ` apply --offline ` passed it, patched the modified files,
1203+ then failed on the created file's missing blob; online ` apply ` never
1204+ fetched that blob. Coverage is now per file (a diff covers only files
1205+ with a ` beforeHash ` ), so ` apply --offline ` reports the patch as having no
1206+ local source up front and changes nothing, online ` apply ` fetches just
1207+ the created files' blobs, and a default (diff-mode) ` repair ` downloads
1208+ them too. Such a repair's ` --json ` envelope carries a second
1209+ ` downloaded ` (dry-run ` verified ` ) artifact event with ` mode: "file" ` for
1210+ those blobs.
1211+ - ** Hosted ` scan ` resolves more than 500 patches.** The package-reference
1212+ request is sent in chunks of 500 uuids, the endpoint's limit; a larger
1213+ scan used to fail with a 400.
11971214- ** ` rollback ` fetches a before-blob that only a store peer variant
11981215 needs.** The before-blob gate now probes every pnpm and vlt store variant
11991216 copy the rollback restores, so an online rollback no longer fails
@@ -1817,6 +1834,15 @@ into the new version's section — see docs/releasing.md.
18171834
18181835### Changed
18191836
1837+ - ** Fewer downloads in vendored runs.** A vendored run now asks the patch
1838+ service for all of its planned packages' download references in one
1839+ request (in chunks of 500) from the first package it reaches, in place
1840+ of one request per package; an outage costs the same retries as before,
1841+ and a package the service reports still building is asked again at its
1842+ turn. A pypi patch the service serves as an sdist (every patch without a
1843+ file qualifier) is refused from its reference, before its bytes are
1844+ downloaded: ` auto ` still warns ` vendor_prebuilt_unavailable ` and builds
1845+ the wheel locally, ` service ` still refuses.
18201846- ** One owner rule for the patch stores.** ` list ` , ` vex ` , ` scan ` 's
18211847 ` updates[] ` , ` rollback ` and ` remove ` now read the
18221848 manifest and the vendor ledger (plus, in ` vex ` , the hosted records)
@@ -1927,22 +1953,25 @@ into the new version's section — see docs/releasing.md.
19271953 covers the purl (its entry records the record's patch uuid and the
19281954 committed artifact is on disk — a file artifact such as a wheel or
19291955 tarball only while it still hashes to the ledger's ` sha256 ` ; ` --force `
1930- keeps the eager fetch), and for every lockfile-only cargo crate the
1931- registry could fetch and verify (a crates.io ` Cargo.lock ` entry with a
1932- checksum, or the pre-vendor resolution the ledger recovers) while the
1933- patch service is enabled (the cargo backend reads the pristine source
1934- only once ` cargo_service_copy ` falls back to the local build). A git,
1935- path or custom-registry crate is never deferred: it keeps the eager
1936- ladder's ` vendor_fetch_unverifiable ` + ` package_not_installed ` refusal
1937- and is not vendored from the service's crates.io build, and a committed
1956+ keeps the eager fetch), and for every lockfile-only npm, cargo, golang
1957+ or composer package the registry would fetch and verify (a lock entry
1958+ with an integrity, or the pre-vendor resolution the ledger recovers,
1959+ that none of its fetcher's pre-download refusals applies to) while the
1960+ patch service is enabled (those backends read the pristine source only
1961+ once the service falls back to the local build; pypi and gem keep the
1962+ eager fetch, which their installed-variant probe reads). A git, path,
1963+ local-tarball or custom-registry package is never deferred: it keeps the
1964+ eager ladder's ` vendor_fetch_unverifiable ` + ` package_not_installed `
1965+ refusal and is not vendored from the service's registry build, and a committed
19381966 file artifact that no longer matches its pin keeps the eager ladder's
19391967 outcome too. Visible effects: an idempotent re-run
19401968 makes no registry requests and no longer reports ` vendor_fetched_missing `
19411969 for fetches it never needed; with no network (or under ` --offline ` ) the
19421970 re-run of an already-vendored pypi, cargo, go or lockfile-only gem
19431971 project now SUCCEEDS (` already_vendored ` , exit 0) instead of failing
1944- ` vendor_fetch_failed ` / ` package_not_installed ` ; a cargo crate the service
1945- serves is never downloaded from the registry. When a deferred fetch does
1972+ ` vendor_fetch_failed ` / ` package_not_installed ` ; an npm, cargo, golang or
1973+ composer package the service serves is never downloaded from the
1974+ registry. When a deferred fetch does
19461975 happen (a drifted committed copy being rebuilt locally, a service miss),
19471976 its ` vendor_fetched_missing ` warning is recorded just ahead of that
19481977 package's own event instead of in the up-front fetch pass, and a failed,
0 commit comments