@@ -24,6 +24,10 @@ into the new version's section — see docs/releasing.md.
2424
2525### Changed (BREAKING)
2626
27+ - ** Binary Bun lockfiles are patched natively in place.** Hosted and vendored
28+ modes read and rewrite ` bun.lockb ` formats 1–3 directly, including mode
29+ changes, repair, and scoped rollback. Binary-to-text conversion, migration
30+ ledger replay, and their warning codes and tests have been removed.
2731- ** ` rollback ` is now the full-state dual of ` scan ` .** ` scan ` and ` rollback `
2832 are the batch primaries (` get ` ↔` remove ` stay the single-patch duals): a
2933 bare ` rollback ` restores the SYSTEM to unpatched across all three modes —
@@ -248,12 +252,8 @@ into the new version's section — see docs/releasing.md.
248252 table, staged all-or-nothing per ecosystem group, covering gem, golang,
249253 pypi, composer, bun, and the non-package rideshare edits (pnpm
250254 ` trustLockfile ` auto-config — pristine scaffold deleted, modified
251- scaffold keeps the file and loses only the owned line). The bun.lockb
252- migration marker restores the binary lock from the bytes the ledger
253- captured (` redirect_bun_lockb_restored ` ; the generated ` bun.lock ` is kept)
254- and warns ` redirect_bun_lockb_unrestorable ` naming git history only when
255- the ledger holds no bytes and the file is absent, or a different
256- ` bun.lockb ` has appeared since;
255+ scaffold keeps the file and loses only the owned line). Native ` bun.lockb `
256+ package snapshots restore binary resolutions directly;
257257 maven and nuget fail closed with ` hosted_revert_unsupported ` guidance
258258 (their structured-metadata edits keep their ledger records; re-run
259259 ` scan --mode hosted ` or restore from VCS). Refused groups keep their
@@ -272,7 +272,7 @@ into the new version's section — see docs/releasing.md.
272272 an existing vendored patch, including during dry-run. Vendored preflight
273273 exemptions require live local lock tuples; a ledger retained by
274274 ` rollback --preserve-state ` cannot bypass a refusal or hide it in a preview.
275- Symlinked ` bun.lockb ` files are refused before migration so their links
275+ Symlinked ` bun.lockb ` files are refused before patching so their links
276276 survive, and ` vendor --silent ` keeps refusal diagnostics on stderr.
277277
278278- ** Bun projects: every text-lock generation is accepted, vendored refusals
@@ -301,7 +301,7 @@ into the new version's section — see docs/releasing.md.
301301 ` .socket/vendor/state.json ` met by that preflight is reported as
302302 ` vendor_state_unreadable ` rather than a Bun lock code. ` scan --mode vendored ` ,
303303 ` get --mode vendored ` (search and uuid paths) and ` --detached ` runs now
304- preflight the Bun lock BEFORE any download: a binary-only , unreadable,
304+ preflight the Bun lock BEFORE any download: a malformed binary, unreadable,
305305 unsupported-version or pre-version-2 workspace lock marks the npm patches
306306 ` failed ` with the vendor refusal code and detail, fetches nothing and
307307 records no patch — the ` scan ` / ` get <purl> ` path still writes an unchanged
@@ -312,15 +312,10 @@ into the new version's section — see docs/releasing.md.
312312 ` package_not_installed ` ). The refusals stay visible under ` --silent `
313313 (code-tagged stderr line), ` --dry-run ` previews them as the additive
314314 ` would_refuse ` action (the human ` scan ` and ` get ` previews both print the
315- ` [would-refuse] ` lines), the ` bun.lockb ` refusal carries one remedy on every
316- path (` bun install --save-text-lockfile ` , Bun ≥ 1.1.39), and a ` scan ` on a
317- ` bun.lockb ` -only project warns ` bun_lockb_unsupported ` instead of reporting
318- a clean empty inventory — the detail names a shadowed sibling
319- ` package-lock.json ` / ` yarn.lock ` / ` pnpm-lock.yaml ` and the
320- delete-the-stale-lockb remedy when one exists, and the warning is kept in
321- hosted mode too (beside the driver's own ` redirect_bun_lockb_* ` outcome on
322- the run that migrates) instead of being dropped on every non-empty hosted
323- run. Hosted → vendored
315+ ` [would-refuse] ` lines). Valid binary locks are inventoried and patched
316+ directly without a Bun runtime; malformed binary locks report
317+ ` bun_lockb_invalid ` , ` redirect_bun_lockb_invalid ` , or
318+ ` vendor_bun_lockb_invalid ` at the corresponding entry point. Hosted → vendored
324319 takeover now works for bun —
325320 ` scan ` /` get --mode vendored ` and ` vendor ` over a hosted-redirected ` bun.lock `
326321 claim and replay that purl's hosted edit instead of refusing
@@ -329,21 +324,10 @@ into the new version's section — see docs/releasing.md.
329324 several hosted bun records; on a lock the vendored backend refuses (a
330325 pre-version-2 workspace lock) ` vendor ` and its dry run report the refusal
331326 BEFORE the hosted revert, leaving the purl hosted-patched instead of
332- un-hosting it and then refusing. The hosted ` bun.lockb ` migration is truthful:
333- ` bun ` is resolved on absolute ` PATH ` entries (Windows ` bun.cmd ` shims
334- included, spawned directly — the standard library quotes batch-shim paths
335- with spaces and metacharacters correctly), a stale ` bun.lockb ` beside a
336- live npm / yarn / pnpm lock is left alone (` redirect_bun_lockb_sibling_lock ` ;
337- the redirect follows the sibling lock) instead of converting the project to
338- ` bun.lock ` , a ` bun.lockb ` that is not a regular file is refused before
339- ` bun ` is spawned, a ` bun.lockb ` that Bun 1.1.43–1.1.45 keep beside the new text
340- lock is removed by the CLI so the ledger's ` removed ` edit is true, the
341- pre-migration bytes ride the ledger and ` rollback ` restores ` bun.lockb `
342- (` redirect_bun_lockb_restored ` ; the generated ` bun.lock ` is kept), Bun
343- 1.1.39–1.1.42 — which accept the flags but write nothing — get
344- ` redirect_bun_lockb_manual_migration ` instead of a false "unavailable", and
345- a failed spawn's ` redirect_bun_lockb_unsupported ` carries bun's output tail.
346- The hosted rewrite keeps CRLF on the rewritten ` bun.lock ` line. Real-Bun
327+ un-hosting it and then refusing. Native ` bun.lockb ` edits preserve the
328+ dependency graph and unrelated package metadata while updating binary
329+ pointers, tarball integrity, and the package metadata hash. The hosted text
330+ rewrite keeps CRLF on the rewritten ` bun.lock ` line. Real-Bun
347331 coverage now runs in CI: the hermetic hosted and vendored suites on Linux,
348332 macOS and Windows (Bun 1.4.2, plus 1.1.45 and 1.2.23 lock-era legs), and
349333 the production native matrix — 16 releases from 0.8.1 to 1.4.2 in hosted,
0 commit comments