Skip to content

Add buzz-backend-sprites: a Fly.io Sprites backend provider - #1

Merged
yjc801 merged 14 commits into
mainfrom
sprites-backend
Aug 7, 2026
Merged

Add buzz-backend-sprites: a Fly.io Sprites backend provider#1
yjc801 merged 14 commits into
mainfrom
sprites-backend

Conversation

@yjc801

@yjc801 yjc801 commented Aug 6, 2026

Copy link
Copy Markdown
Owner

Adds buzz-backend-sprites: a remote-agent backend provider that runs Buzz managed agents in Fly.io Sprites — persistent Linux VMs that hibernate when idle and bill compute per second while awake. One agent, one sprite.

Nothing in the desktop changes. Provider discovery already scans ~/.local/bin for buzz-backend-*, so installing the binary is the whole integration:

cargo build --release -p buzz-backend-sprites
install -m 755 target/release/buzz-backend-sprites ~/.local/bin/

Design, and why

Choices that were forced rather than picked, each documented in the crate's [L3] conformance README:

  • A detached TTY session, not a Sprites Service. The service runtime restarts a process that exits and treats even a TERM as a crash, so an owner !shutdown would be resurrected — an I5 violation. Nothing restarts the harness here; an exit ends the session and the sprite hibernates to storage-only billing. For the same reason inactivity_seconds: 0 (indefinite lifetime) is refused: it needs a supervisor that restarts crashes without resurrecting intentional exits, and none exists while the harness clean-exit contract is unpinned (Known Defect 6).
  • The task lease is load-bearing, not belt-and-braces. An agent's relay connection is outbound, and sprite idle detection counts only inbound traffic, exec sessions, and tasks — measured: a quiet detached session goes warm in ~30s. A paused agent is unreachable forever, since nothing external would wake it. The launcher holds a 5-minute Tasks-API lease refreshed every 60s and releases it when the harness exits.
  • Secrets travel as WebSocket data, never in a URL. The exec API accepts env=K=V query parameters; URLs reach access logs. The resolved environment is streamed as stdin frames into a /dev/shm file (RAM-backed, 0600, named per attempt) that the launcher sources and deletes before execing the harness. Never the sprite's API-readable environment map, never the durable filesystem — that one is continuously synced to object storage and captured by checkpoints. The exec URL builder has no env parameter at all, and a test pins its absence.
  • flock is the at-most-one-live-agent fence. Held across exec for exactly the harness's lifetime, so the kernel arbitrates. This replaces the Kubernetes binding's UID+resourceVersion preconditions.
  • Zero destructive substrate calls. On a persistent VM every stale property is re-appliable in place, so the rows that delete residue collapse into "reprovision and start". The Substrate trait cannot express a delete and Action has no delete variant. Stated cost: deleting an agent leaves its sprite paused (storage-only billing) until sprite destroy buzz-agent-<12hex>.
  • The provision fingerprint lives inside the sprite, written atomically as the last provision step — a checkpoint restore rolls artifacts and their record back together, which a control-plane label could not do. Sprite labels carry identity only (marker, binding version, full 64-hex pubkey — no truncation, since sprite labels have no length cap).

Reused from buzz-backend-kubernetes where the spec is substrate-neutral: the wire contract, nsec-derived identity, the three-tier env builder (clear-then-write authoritative tier, respond-to gate, POSIX key rule), and the pure-classifier + fake-substrate test shape.

Testing

132 tests (128 unit + 4 golden wire fixtures), clippy clean, shellcheck clean. Fixtures drive the built binary over a real pipe with credentials poisoned, so a fixture that reaches the API fails loudly. Live tests are gated on BUZZ_SPRITES_LIVE=1, create one throwaway sprite each, and delete it.

Verified against the real platform through the release binary: cold create → provision → confirmed start (4.2s); a second deploy no-ops in 0.7s with zero writes; TERM then redeploy revives with a fresh generation; a config change against a running agent correctly does nothing (edits land on the next generation); the same change against a stopped agent reprovisions; a harness that exits during startup is reported in-band with the generation that ran and the probe's own tokens.

Three bugs surfaced only on the live path, each now covered by a regression test with the fake made faithful so it cannot hide them again:

  1. A fresh sprite polled its full 600s deadline instead of provisioning — probe.sh only exists after provisioning, so waiting for a report was waiting forever.
  2. The loser of a create race provisioned the winner's sprite (two tarball extractions into one directory is not convergence). It now observes the winner.
  3. install -m 755 /dev/stdin fails when the destination already exists, so every reprovision died where the first install passed. Assets now write-chmod-rename.

Notes

  • CI: the crate is added to Justfile:test-unit and scripts/run-tests.sh. Nothing upstream runs workspace-wide tests, so a crate absent from both lists has its suite silently skipped.
  • Deliberately not touched: the sidecar bundling lists (release/canary workflows, bundle-sidecars.sh, tauri.conf.json externalBin). v1 distributes via ~/.local/bin; bundling is the upstreaming conversation.
  • Credentials are ambient only (spec I2). Prefer an API token from sprites.dev/account exported as SPRITE_TOKEN; the keychain fallback exists for Finder-launched desktops, but on current sprite CLI versions that entry is wrapped and the API rejects it — the client says so and names the source rather than reporting a bare 401.
  • Runtime trust delta, stated: with sprig_sha256 set, the runtime is provenance-pinned to that exact artifact. By default each download is verified against the digest the release publishes beside it — transport integrity, with trust rooted in the GitHub release, so a re-published sprig-latest is trusted automatically (there is no provider-baked pin: the rolling tag moves within hours and a baked digest wedges every deploy). The sprite base image is Fly's and upgrades outside this provider's control.

🤖 Generated with Claude Code

yjc801 and others added 14 commits August 6, 2026 10:34
… fixtures

New workspace crate implementing the provider protocol's info op and the
deploy-path refusals (relay-mesh backstop, malformed nsec, missing owner,
indefinite lifetime) per docs/remote-agents.md, targeting Fly.io Sprites.

- wire.rs: protocol types (protocol_version 1), name "sprites"
- naming.rs: nsec-derived identity, buzz-agent-<12hex> sprite name, k=v
  label contract with marker+full-pubkey verification (no truncation —
  sprite labels have no 63-char cap, verified live)
- config.rs: 6 lint-safe fields; refuses inactivity_seconds 0 (no
  conforming indefinite supervisor on this substrate); baked sprig
  tarball digests per arch
- credentials.rs: ambient chain SPRITE_TOKEN → SPRITES_TOKEN → macOS
  keychain via the sprite CLI's metadata; token never printed (manual
  redacting Debug)
- golden fixtures + harness driving the built binary with poisoned
  credential env, mirroring the kubernetes crate's arbiter pattern

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…, provision fingerprint

- env.rs ports the kubernetes binding's §Launch data realization verbatim
  where the spec is substrate-neutral: clear-then-write authoritative tier
  (12 keys), no env_vars re-merge when launch is present, respond-to gate
  mirroring the harness's four modes exactly (untrimmed, allowlist-only
  validation asymmetry), BUZZ_ACP_NO_PRESENCE refusal, POSIX key rule
  (reworded: the launcher's shell is the consumer), 1MiB env cap.
- New for this substrate: serialize_exports — single-quote total encoding
  of the resolved env into the export lines the launcher sources, verified
  by round-tripping hostile values through a real bash oracle.
- intent.rs: ProvisionTemplate fingerprint over provisioned artifacts only
  (sprig pin, adapter pins, launcher/probe digests); env keys and
  inactivity deliberately excluded — they stream per-attempt and can never
  wedge. Recorded in-VM, not as a label (checkpoint-restore coherence).
- Wire test: the respond-to matrix through the built binary, with the
  poisoned-credential sentinel as the ordering assertion (gate before
  credential resolution).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…d the substrate seam

- substrate.rs: the reconciler's trait. Deliberately inexpressive:
  no sprite delete, no session kill — the v1 reconciler makes zero
  destructive substrate calls, and an interface that cannot express a
  delete cannot be talked into one.
- client.rs: reqwest REST (get/create/update/list-sessions with
  structured rate-limit and already-exists outcomes) + tokio-tungstenite
  exec: non-TTY [StreamID][payload] framing with mandatory stdin-EOF,
  TTY+detachable spawn capturing session_info, close-and-drop after the
  terminal frame (the server otherwise holds ~5s per exec).
- Two rules enforced by construction: the exec URL builder has no env
  parameter (secrets travel as stdin data frames; a test pins the
  absence), and rustls's ring provider installs idempotently in the
  constructor as well as main (feature unification breaks auto-select in
  test binaries too — hit live).
- credentials.rs: keychain coordinates fixed against a live keychain —
  service is sprites-cli:<user-id>, the org keyring_key is the ACCOUNT;
  the user config file resolves via the metadata's own config_path
  pointer (the on-disk name carries an unpredictable suffix).
- Live gate (BUZZ_SPRITES_LIVE=1): create→labels-round-trip→409→exec
  stdin/stdout/stderr/exit→detached spawn survives disconnect→destroy,
  all green against api.sprites.dev.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…isioning

launcher.sh runs as the detachable session's pane process and ends in a
single exec into the harness, so every substrate signal lands on buzz-acp
itself (spec L1 item 3). Before that: flock election on fd 9 (held across
exec for exactly the harness's lifetime, -w 5 so a probe can never
assassinate a contender), sourcing and shredding the per-attempt /dev/shm
env file, and the task heartbeat — load-bearing, not belt-and-braces,
because an agent's outbound relay websocket is invisible to sprite idle
detection.

probe.sh emits the three independent liveness signals (lock/comm/gen) as
one JSON line — the only in-sprite bytes the provider ever quotes into an
error. started = lock held AND comm buzz-acp; permission to start needs
all negatives, so mixed transients keep polling instead of double-starting.

provision.rs converges artifacts to the fingerprint: sha256-verified sprig
tarball before extraction, personality symlinks, pinned npm adapters,
assets, and the intent record written LAST atomically (a crash mid-provision
reads as divergence, never as done).

Live-verified end to end on a throwaway sprite: provision, detached start,
probe convergence, env-file shred, heartbeat present, loser exits 3, TERM
stops the harness and releases the hold. Trap paid: install(1) refuses a
symlink destination, so the test's stub swap removes the link first.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
classify.rs is the spec's state machine as a pure function; reconcile.rs
is the loop that drives it (2s poll, 600s deadline, injected clock) with
one create, one provision and one start per call. The Action enum has no
delete variant and the Substrate trait no delete method: this binding
makes zero destructive substrate calls, so a persistent VM's stale state
is always converged in place rather than replaced.

Rows worth naming: a started agent is a strict no-op returning its
agent_id with zero writes even when config diverges (edits land on the
next generation — the spec's documented consequence, confirmed live); an
unverifiable sprite under our deterministic name is a hard error that
touches nothing; the create-race loser observes the winner instead of
provisioning on top of it; a dead attempt of our own is an in-band error
naming the generation THAT RAN and the probe tokens, never a retry.

Three bugs the live path caught that the fakes had hidden, each with the
fake made faithful so it cannot hide them again:
- a fresh sprite polled to its 600s deadline: the probe script only
  exists after provisioning, so waiting for a report was waiting forever.
- the create-race loser provisioned the winner's sprite (two tarball
  extractions into one directory is not convergence).
- install(1) refuses an existing destination, so every REPROVISION failed
  where the first install succeeded; assets now write-chmod-rename.

Live matrix on a throwaway sprite, through the release binary: cold
create+provision+start (4.2s to confirmed start), second deploy no-op
(0.7s), TERM then revive with a fresh generation, live+changed-config
no-op, stopped+changed-config reprovision (fingerprint moved, adapter
installed), and a startup failure reported honestly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ate's tests

The spec requires every binding to document how it realizes each [L2]
term on its substrate (§Conformance item 6). The crate README is that
document: identity and ownership evidence, what "started" means here,
how at-most-one-live-agent is enforced, why Services are unusable and
indefinite lifetime is refused, how signals reach the harness, why the
task lease is load-bearing rather than belt-and-braces, where secrets do
and do not travel, what a fingerprint change does to a running agent
(nothing, until it exits), and the two costs of never destroying
anything: an orphaned sprite and a base image outside our pin.

Justfile:test-unit and scripts/run-tests.sh gain the crate — nothing in
CI runs workspace-wide tests, so a crate absent from both lists has its
suite silently skipped.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…jects it

A launchd-minimal desktop resolves its token from the sprite CLI's
keychain entry — and on current CLI versions that entry is wrapped, so
the API answers 401 to a credential the provider had every reason to
believe in. "GET sprite returned 401" sends the reader hunting through
three possible sources; the client now names the one that produced the
rejected token and the fix for it. Verified against the live API from an
env -i shell, both arms.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
One fix per finding, in review order:

1. [P1] Serialize provisioning under a sprite-wide fence: both mutating
   actions (Provision, Start) now require an in-sprite deploy lease
   (deploy.lease: token + expiry, every read-modify-write under flock on a
   stable-inode lock file). Every ensure() step re-verifies and refreshes
   the lease while holding the flock for the step's duration, so a stalled
   deploy loses the fence only after the 420s TTL. On acquisition the loop
   re-observes before acting, so the observation that authorizes a
   provision or start is itself made under the fence; the lease is held
   through the started-confirmation and released on every terminal path.

2. [P1] Pass the Sprig URL without shell evaluation: the release URL now
   rides into the install script as bash positional $1 — no interpolation,
   so no substitution surface. Defense in depth: config::parse refuses any
   sprig_version outside [A-Za-z0-9._-], which also blocks URL-shape
   escapes (/, ?, #) into other release paths.

3. [P2] Provision or reject the selected runtime: deploy_agent now gates
   launch.command before any substrate contact. Allowed: buzz-agent
   (sprig multicall, always installed) and claude-agent-acp / codex-acp
   when their install flags are on (npm bin names verified against the
   pinned packages). Anything else — goose included, and the no-command
   case, which the harness would default to goose — is refused with the
   remedy named, instead of mutating the sprite and dying at exec.

4. [P2] Require the initial task lease before exec: the launcher's first
   Tasks-API PUT is now mandatory — five bounded attempts, then exit 4,
   which releases the election flock so the probe reads stopped and the
   deploy reports startup failure instead of success for an agent that
   would hibernate unreachable inside the quiet-idle window.

5. [P2] Enforce the promised Sprig integrity check: the reconciler's
   observe stage now runs provision::spot_check whenever the recorded
   fingerprint matches and the state could otherwise authorize a Start; a
   failed hash reads as divergence and takes the full-provision path
   (under the new lease), bounded by the existing one-provision-per-call
   rule.

New coverage: lease ordering/held/blocked/released-on-failure loop tests,
spot-check repair test, launch-gate unit tests, sprig_version grammar
tests, a launcher asset test pinning the mandatory first lease, a
deploy-unprovisioned-command wire fixture, and live-test assertions that a
foreign token is contended while the lease is live. The conformance README
documents the fence, the enforced spot check, the mandatory first hold,
and the supported-runtime set.

Verified: cargo test -p buzz-backend-sprites (117 unit + 4 wire, all
pass; the two live tests skip without BUZZ_SPRITES_LIVE), cargo clippy
--all-targets -D warnings, shellcheck on launcher.sh.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Junchao Yan <yjc801@gmail.com>
One fix per finding, in review order:

1. [P1] Revalidate the lease immediately before Start: new
   provision::confirm_lease re-verifies (and refreshes) ownership under
   the flock, and the Start arm calls it before staging env or launching
   — the in-memory lease_held flag is never trusted across the TTL. A
   failed confirmation discards the observation, resets lease_held, and
   re-enters the loop (re-acquire, re-observe). Deliberately confirm,
   not reacquire: an absent lease file after we held it means a
   successor ran and released, so the observation predates its writes
   even though the lease is free.

2. [P2] Generation-scoped keep-awake task: the launcher's task is now
   buzz-agent-${GEN}, defined once as TASK_URL and used by the initial
   PUT, the refresh loop, and the EXIT trap. A predecessor's late-waking
   heartbeat can only delete its own attempt's hold; an orphaned task
   self-expires in one lease period. Asset test pins that exactly one
   task URL exists and carries the generation.

3. [P2] Normalize the command the harness receives: env::build_env now
   stores BUZZ_ACP_AGENT_COMMAND trimmed (and collapses whitespace-only
   to absent), so the value the launch gate validated is byte-identical
   to what the harness spawns — same validator/writer-agreement rule the
   identity components already follow.

New coverage: lost-lease-before-start loop test (confirm fails, loop
re-acquires, exactly one start after the passing confirm), confirm
ordering asserted in the happy-path lease test, generation-scoped-task
asset test, trimmed-command env test. README conformance doc updated for
the pre-start confirmation and the generation-scoped task name.

Verified: cargo test -p buzz-backend-sprites (120 unit + 4 wire, all
pass; live tests skip without BUZZ_SPRITES_LIVE), cargo clippy
--all-targets -D warnings, shellcheck on launcher.sh.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Junchao Yan <yjc801@gmail.com>
…rig pins; explain a stale pin

Three fixes from a live agent session.

1. Relay git auth was missing entirely. The desktop's local spawn wires
   git-credential-nostr through ephemeral GIT_CONFIG_* vars scoped to the
   relay's git URL; the sprite had none, so an agent could not clone from
   the relay (github.com fails separately for want of a credential). The
   launcher now mirrors that wiring exactly — scoped to the relay URL, so
   an unscoped helper never answers for github.com, and pointed at the
   image-local helper, since a forwarded host path cannot exist here.
   NOSTR_PRIVATE_KEY is already authoritative env; git 2.53 in the base
   image is well past the 2.46 the challenge-based helper needs.

2. Baked sprig digests refreshed. Block re-published sprig-latest the same
   day it was pinned, so provisioning failed on a checksum mismatch — the
   verification working as designed against a stale pin.

3. That failure surfaced as bare sha256sum output, naming neither the
   artifact nor the fix. It now explains the rolling tag, states nothing
   was installed, and points at provider_config.sprig_sha256 or a provider
   update.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…e publishes

A compiled-in pin cannot hold against sprig-latest. It is a rolling tag
that upstream re-publishes on every commit — it moved twice in one
afternoon, and each move failed every deploy on a checksum mismatch that
said nothing about the artifact's integrity, only about the pin's age.

So the baked pins are gone. When the owner has not set
provider_config.sprig_sha256, the reference is now the digest the release
publishes beside the tarball: the trust root becomes the GitHub release
rather than this provider's build date, and the check covers transport
integrity. An explicit sprig_sha256 is still honored verbatim and still
demands provenance — that is the knob for owners who want to pin an exact
artifact and accept updating it when the release moves.

The two mismatches now read differently, because they mean different
things: against a pin, the pin is stale or the artifact is not the one you
pinned; against a published digest, the download was corrupted or the
release was re-published mid-provision, and starting again re-reads both.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…he pins

Three leftovers from dropping the baked digests: the release-tag constant
still promised pins "below", the struct field still called None a baked
pin, and the digest-policy paragraph had been silently adopted as the
adapter-version constant's doc comment when I closed a clippy warning by
deleting the blank line under it. It documents a decision, not an item, so
it is a plain comment now.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
An agent deployed into a fresh sprite could not run a single tool — not a
shell, not a file read, not its own git clone. The harness answers every
ACP permission request with a denial (there is no approval path in it at
all) and overrides the mode the Sprites image itself ships
(defaultMode: bypassPermissions). So 'dontAsk' meant 'deny everything',
and the only cure was hand-writing allow rules into each new sprite —
which every recreated agent then lost, because a new identity means a new
sprite.

Provisioning now writes those rules, behind provider_config
.preapprove_agent_tools (default on; turn it off for a converse-only
agent). The step merges into the image's settings with python3 rather
than overwriting them: the base image keeps hooks and policy in the same
file, and clobbering it would trade one breakage for another. The flag is
part of the provision fingerprint, so toggling it reprovisions like any
other artifact change.

The script builder is shared with its test, so the assertions — merges
rather than replaces, targets the file Claude Code reads, grants exactly
the named tools and no wildcard — cover the script that actually runs.

Live rerun still owed: the dev token minted for it expired (the client
said so precisely, which is its own small proof).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…fb20

1. [P1] Flipping preapprove_agent_tools off now REVOKES the provider-owned
   allow rules instead of skipping the settings step: provisioning
   converges the pre-approval in both directions (tool_permission_script),
   removing exactly the provider's entries and leaving anything anyone
   else wrote. Behavioral test executes the real grant/revoke cycle
   against a settings file with foreign entries and image policy.

2. [P1] The tool policy now reaches Codex sessions: codex-acp never reads
   Claude Code's settings, so build_env writes INITIAL_AGENT_MODE as a
   tier-1 (user-overridable) default for codex-acp launches —
   agent-full-access when the flag is on, read-only when off. Config
   docs/schema state the per-runtime realization.

3. [P2] The rolling digest is resolved lazily and at most once per deploy
   call (resolve_once): the observe path computes the desired fingerprint
   only under the exact conditions where classify could reach its
   recorded-vs-desired comparison, so a healthy no-op deploy and every
   polling iteration are independent of GitHub release availability, and
   a release republished mid-loop can no longer flip a just-converged
   sprite back to diverged. Regression tests pin zero release reads on
   the live no-op and a single digest fetch on the cold path.

4. [P2] The settings merge writes a sibling temp file and os.replace()s
   it atomically, preserving the file's mode — an interrupted write can
   no longer leave truncated JSON that wedges every later provision at
   json.loads.

5. [P2] README: the configuration table and trust-delta section now state
   the release-rooted trust model (owner pin = provenance; default =
   transport integrity against the digest published beside the same
   mutable release) and document preapprove_agent_tools.

Verified: cargo test -p buzz-backend-sprites (128 unit + 4 provider-wire,
all pass; live tests self-skip without BUZZ_SPRITES_LIVE), clippy
--all-targets -D warnings, shellcheck on launcher.sh/probe.sh, git diff
--check.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Junchao Yan <yjc801@gmail.com>
@yjc801
yjc801 merged commit 1e5e109 into main Aug 7, 2026
yjc801 added a commit that referenced this pull request Aug 7, 2026
One fix per finding, in review order:

1. [P1] Serialize provisioning under a sprite-wide fence: both mutating
   actions (Provision, Start) now require an in-sprite deploy lease
   (deploy.lease: token + expiry, every read-modify-write under flock on a
   stable-inode lock file). Every ensure() step re-verifies and refreshes
   the lease while holding the flock for the step's duration, so a stalled
   deploy loses the fence only after the 420s TTL. On acquisition the loop
   re-observes before acting, so the observation that authorizes a
   provision or start is itself made under the fence; the lease is held
   through the started-confirmation and released on every terminal path.

2. [P1] Pass the Sprig URL without shell evaluation: the release URL now
   rides into the install script as bash positional $1 — no interpolation,
   so no substitution surface. Defense in depth: config::parse refuses any
   sprig_version outside [A-Za-z0-9._-], which also blocks URL-shape
   escapes (/, ?, #) into other release paths.

3. [P2] Provision or reject the selected runtime: deploy_agent now gates
   launch.command before any substrate contact. Allowed: buzz-agent
   (sprig multicall, always installed) and claude-agent-acp / codex-acp
   when their install flags are on (npm bin names verified against the
   pinned packages). Anything else — goose included, and the no-command
   case, which the harness would default to goose — is refused with the
   remedy named, instead of mutating the sprite and dying at exec.

4. [P2] Require the initial task lease before exec: the launcher's first
   Tasks-API PUT is now mandatory — five bounded attempts, then exit 4,
   which releases the election flock so the probe reads stopped and the
   deploy reports startup failure instead of success for an agent that
   would hibernate unreachable inside the quiet-idle window.

5. [P2] Enforce the promised Sprig integrity check: the reconciler's
   observe stage now runs provision::spot_check whenever the recorded
   fingerprint matches and the state could otherwise authorize a Start; a
   failed hash reads as divergence and takes the full-provision path
   (under the new lease), bounded by the existing one-provision-per-call
   rule.

New coverage: lease ordering/held/blocked/released-on-failure loop tests,
spot-check repair test, launch-gate unit tests, sprig_version grammar
tests, a launcher asset test pinning the mandatory first lease, a
deploy-unprovisioned-command wire fixture, and live-test assertions that a
foreign token is contended while the lease is live. The conformance README
documents the fence, the enforced spot check, the mandatory first hold,
and the supported-runtime set.

Verified: cargo test -p buzz-backend-sprites (117 unit + 4 wire, all
pass; the two live tests skip without BUZZ_SPRITES_LIVE), cargo clippy
--all-targets -D warnings, shellcheck on launcher.sh.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Junchao Yan <yjc801@gmail.com>
yjc801 added a commit that referenced this pull request Aug 7, 2026
yjc801 pushed a commit that referenced this pull request Aug 9, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [clap](https://github.com/clap-rs/clap) | dependencies |
patch | `4.6.1` → `4.6.6` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>clap-rs/clap (clap)</summary>

###
[`v4.6.6`](https://github.com/clap-rs/clap/compare/clap_complete-v4.6.5...clap_complete-v4.6.6)

[Compare
Source](https://github.com/clap-rs/clap/compare/v4.6.5...v4.6.6)

###
[`v4.6.5`](https://github.com/clap-rs/clap/compare/clap_complete-v4.6.4...clap_complete-v4.6.5)

[Compare
Source](https://github.com/clap-rs/clap/compare/v4.6.4...v4.6.5)

###
[`v4.6.4`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#464---2026-07-21)

[Compare
Source](https://github.com/clap-rs/clap/compare/v4.6.3...v4.6.4)

##### Internal

- Update to syn v3

###
[`v4.6.3`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#463---2026-07-20)

[Compare
Source](https://github.com/clap-rs/clap/compare/v4.6.2...v4.6.3)

##### Fixes

- *(derive)* Allow `"literal".function()` as attribute values

###
[`v4.6.2`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#462---2026-07-15)

[Compare
Source](https://github.com/clap-rs/clap/compare/v4.6.1...v4.6.2)

##### Fixes

- *(help)* Say `alias` when there is only one

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zLjIiLCJ1cGRhdGVkSW5WZXIiOiI0NC4xMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 9, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[async-compression](https://github.com/Nullus157/async-compression)
| dependencies | patch | `0.4.42` → `0.4.43` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>Nullus157/async-compression (async-compression)</summary>

###
[`v0.4.43`](https://github.com/Nullus157/async-compression/releases/tag/async-compression-v0.4.43)

[Compare
Source](https://github.com/Nullus157/async-compression/compare/async-compression-v0.4.42...async-compression-v0.4.43)

##### Other

- Fix hang when decoding a corrupt subsequent zstd frame
([#&#8203;470](https://github.com/Nullus157/async-compression/pull/470))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zLjIiLCJ1cGRhdGVkSW5WZXIiOiI0NC4xMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 9, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [diffy](https://github.com/bmwill/diffy) | dependencies |
patch | `0.5.0` → `0.5.1` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>bmwill/diffy (diffy)</summary>

###
[`v0.5.1`](https://github.com/bmwill/diffy/blob/HEAD/CHANGELOG.md#051---2026-07-18)

[Compare
Source](https://github.com/bmwill/diffy/compare/0.5.0...0.5.1)

##### Fixed

- [#&#8203;85](https://github.com/bmwill/diffy/pull/85)
  Merge conflict markers are now always placed on their own lines.
  Previously, a conflicting hunk at the end of a file without a trailing
  newline glued the next marker onto its last content line, producing
  unparseable output. This matches `git merge-file --diff3` behavior.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zLjIiLCJ1cGRhdGVkSW5WZXIiOiI0NC4zLjIiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 9, 2026
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [async-trait](https://github.com/dtolnay/async-trait) |
dependencies | patch | `0.1.89` → `0.1.91` | `0.1.92` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>dtolnay/async-trait (async-trait)</summary>

###
[`v0.1.91`](https://github.com/dtolnay/async-trait/compare/0.1.90...0.1.91)

[Compare
Source](https://github.com/dtolnay/async-trait/compare/0.1.90...0.1.91)

###
[`v0.1.90`](https://github.com/dtolnay/async-trait/releases/tag/0.1.90)

[Compare
Source](https://github.com/dtolnay/async-trait/compare/0.1.89...0.1.90)

- Update to syn 3

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zLjIiLCJ1cGRhdGVkSW5WZXIiOiI0NC4xMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 9, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [arc-swap](https://github.com/vorner/arc-swap) | dependencies
| patch | `1.9.1` → `1.9.2` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>vorner/arc-swap (arc-swap)</summary>

###
[`v1.9.2`](https://github.com/vorner/arc-swap/blob/HEAD/CHANGELOG.md#192)

- Document RefCnt must not panic
([#&#8203;208](https://github.com/vorner/arc-swap/issues/208)).

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zLjIiLCJ1cGRhdGVkSW5WZXIiOiI0NC4zLjIiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 9, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [anyhow](https://github.com/dtolnay/anyhow) | dependencies |
patch | `1.0.103` → `1.0.104` |
| [anyhow](https://github.com/dtolnay/anyhow) |
workspace.dependencies | patch | `1.0.103` → `1.0.104` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>dtolnay/anyhow (anyhow)</summary>

###
[`v1.0.104`](https://github.com/dtolnay/anyhow/releases/tag/1.0.104)

[Compare
Source](https://github.com/dtolnay/anyhow/compare/1.0.103...1.0.104)

- Update `syn` dev-dependency to version 3

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zLjIiLCJ1cGRhdGVkSW5WZXIiOiI0NC4zLjIiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 9, 2026
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) | Type |
Update |
|---|---|---|---|---|---|
|
[@isomorphic-git/lightning-fs](https://github.com/isomorphic-git/lightning-fs)
| [`4.6.2` →
`4.6.3`](https://renovatebot.com/diffs/npm/@isomorphic-git%2flightning-fs/4.6.2/4.6.3)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@isomorphic-git%2flightning-fs/4.6.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@isomorphic-git%2flightning-fs/4.6.2/4.6.3?slim=true)
| dependencies | patch |
|
[@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react#readme)
([source](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react))
| [`6.0.3` →
`6.0.5`](https://renovatebot.com/diffs/npm/@vitejs%2fplugin-react/6.0.3/6.0.5)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@vitejs%2fplugin-react/6.0.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitejs%2fplugin-react/6.0.3/6.0.5?slim=true)
| devDependencies | patch |
|
[@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react#readme)
([source](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react))
| [`6.0.3` →
`6.0.5`](https://renovatebot.com/diffs/npm/@vitejs%2fplugin-react/6.0.3/6.0.5)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@vitejs%2fplugin-react/6.0.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitejs%2fplugin-react/6.0.3/6.0.5?slim=true)
| dependencies | patch |
| [dorny/paths-filter](https://github.com/dorny/paths-filter) |
`v4.0.2` → `v4.0.3` |
![age](https://developer.mend.io/api/mc/badges/age/github-tags/dorny%2fpaths-filter/v4.0.3?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/dorny%2fpaths-filter/v4.0.2/v4.0.3?slim=true)
| action | patch |
| [isomorphic-git](https://isomorphic-git.org/)
([source](https://github.com/isomorphic-git/isomorphic-git)) |
[`1.38.7` →
`1.38.10`](https://renovatebot.com/diffs/npm/isomorphic-git/1.38.7/1.38.10)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/isomorphic-git/1.38.10?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/isomorphic-git/1.38.7/1.38.10?slim=true)
| dependencies | patch |
| [postcss](https://postcss.org/)
([source](https://github.com/postcss/postcss)) | [`8.5.19` →
`8.5.26`](https://renovatebot.com/diffs/npm/postcss/8.5.19/8.5.26) |
![age](https://developer.mend.io/api/mc/badges/age/npm/postcss/8.5.26?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/postcss/8.5.19/8.5.26?slim=true)
| devDependencies | patch |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>isomorphic-git/lightning-fs
(@&#8203;isomorphic-git/lightning-fs)</summary>

###
[`v4.6.3`](https://github.com/isomorphic-git/lightning-fs/releases/tag/v4.6.3)

[Compare
Source](https://github.com/isomorphic-git/lightning-fs/compare/v4.6.2...v4.6.3)

##### Bug Fixes

- IDB interface
([#&#8203;127](https://github.com/isomorphic-git/lightning-fs/issues/127))
([035e472](https://github.com/isomorphic-git/lightning-fs/commit/035e4725b9e6aa72d10cadc5ace20dec7ac76afb))

</details>

<details>
<summary>vitejs/vite-plugin-react
(@&#8203;vitejs/plugin-react)</summary>

###
[`v6.0.5`](https://github.com/vitejs/vite-plugin-react/blob/HEAD/packages/plugin-react/CHANGELOG.md#605-2026-07-30)

[Compare
Source](https://github.com/vitejs/vite-plugin-react/compare/f4b549822ec239799d746c030abb0b9a7d8f0a04...68c0cb8796ce18bd049c3d05c5210eaf0617eac0)

##### Fixed the react compiler preset filter to be linear
([#&#8203;1353](https://github.com/vitejs/vite-plugin-react/pull/1353))

The improved filter in v6.0.3 was non-linear and caused a performance
regression
([#&#8203;1349](https://github.com/vitejs/vite-plugin-react/issues/1349)).
The filter was changed to be linear to avoid that.

###
[`v6.0.4`](https://github.com/vitejs/vite-plugin-react/blob/HEAD/packages/plugin-react/CHANGELOG.md#604-2026-07-22)

[Compare
Source](https://github.com/vitejs/vite-plugin-react/compare/640fd358a0e82393acfce4e92e19a6ac6e1641a7...f4b549822ec239799d746c030abb0b9a7d8f0a04)

##### Fixed `$RefreshSig$ is not defined` error when running `vite dev`
with `NODE_ENV=production`

When running `vite dev` with `NODE_ENV=production`, the app errored with
`$RefreshSig$ is not defined`.
This error is now fixed.

</details>

<details>
<summary>dorny/paths-filter (dorny/paths-filter)</summary>

###
[`v4.0.3`](https://github.com/dorny/paths-filter/blob/HEAD/CHANGELOG.md#v403)

[Compare
Source](https://github.com/dorny/paths-filter/compare/v4.0.2...v4.0.3)

- [Document safe handling of file list outputs in
workflows](https://github.com/dorny/paths-filter/pull/326)
- [Escape multi-line filenames in list-files shell and csv
output](https://github.com/advisories/GHSA-7hc6-8hq5-9q2m)
- [Add 'some-with-excludes' predicate
quantifier](https://github.com/dorny/paths-filter/pull/322)
- [Add contents permission to PR
example](https://github.com/dorny/paths-filter/pull/248)
- [Scope base-ignored warning to API
path](https://github.com/dorny/paths-filter/pull/319)
- [Update outputs in readme to account for the 'every'
predicate-quantifier](https://github.com/dorny/paths-filter/pull/247)

</details>

<details>
<summary>isomorphic-git/isomorphic-git (isomorphic-git)</summary>

###
[`v1.38.10`](https://github.com/isomorphic-git/isomorphic-git/releases/tag/v1.38.10)

[Compare
Source](https://github.com/isomorphic-git/isomorphic-git/compare/v1.38.9...v1.38.10)

##### Bug Fixes

- **statusMatrix:** do not traverse symlinks in GitWalkerFs
([#&#8203;1215](https://github.com/isomorphic-git/isomorphic-git/issues/1215))
([#&#8203;2382](https://github.com/isomorphic-git/isomorphic-git/issues/2382))
([90ea101](https://github.com/isomorphic-git/isomorphic-git/commit/90ea101d329daa84b99cc0140a6275896ebbaf68))

###
[`v1.38.9`](https://github.com/isomorphic-git/isomorphic-git/releases/tag/v1.38.9)

[Compare
Source](https://github.com/isomorphic-git/isomorphic-git/compare/v1.38.8...v1.38.9)

##### Bug Fixes

- Preserve binary files when writing conflicted working tree
([#&#8203;2380](https://github.com/isomorphic-git/isomorphic-git/issues/2380))
([b41b1ab](https://github.com/isomorphic-git/isomorphic-git/commit/b41b1abc3df87326e639b49d0694915540d6dfb5))

###
[`v1.38.8`](https://github.com/isomorphic-git/isomorphic-git/releases/tag/v1.38.8)

[Compare
Source](https://github.com/isomorphic-git/isomorphic-git/compare/v1.38.7...v1.38.8)

##### Bug Fixes

- unsafe symlink from cherry pick
([#&#8203;2377](https://github.com/isomorphic-git/isomorphic-git/issues/2377))
([4664c8e](https://github.com/isomorphic-git/isomorphic-git/commit/4664c8e1147c3c7ba87c027e92093d28607ef4c0))

</details>

<details>
<summary>postcss/postcss (postcss)</summary>

###
[`v8.5.26`](https://github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8526)

[Compare
Source](https://github.com/postcss/postcss/compare/8.5.25...8.5.26)

- Fixed `list.split()` regression (by
[@&#8203;lazerg](https://github.com/lazerg)).
- Track symlinks in path protection in source map loading (by
[@&#8203;drengir1](https://github.com/drengir1)).

###
[`v8.5.25`](https://github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8525)

[Compare
Source](https://github.com/postcss/postcss/compare/8.5.24...8.5.25)

- Fixed 8.5.17 visitor regression.
- Fixed `list.split()` for non-string values (by
[@&#8203;amir-rezaei](https://github.com/amir-rezaei)).

###
[`v8.5.24`](https://github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8524)

[Compare
Source](https://github.com/postcss/postcss/compare/8.5.23...8.5.24)

- Preserve the BOM after the processing (by
[@&#8203;hdimer](https://github.com/hdimer)).

###
[`v8.5.23`](https://github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8523)

[Compare
Source](https://github.com/postcss/postcss/compare/8.5.22...8.5.23)

- Do not load source map without `opts.from` for security reasons.

###
[`v8.5.22`](https://github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8522)

[Compare
Source](https://github.com/postcss/postcss/compare/8.5.21...8.5.22)

- Fixed custom property losing semicolon before a comment (by
[@&#8203;sarathfrancis90](https://github.com/sarathfrancis90)).

###
[`v8.5.21`](https://github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8521)

[Compare
Source](https://github.com/postcss/postcss/compare/8.5.20...8.5.21)

- Fixed childless at-rule losing semicolon before comment (by
[@&#8203;sarathfrancis90](https://github.com/sarathfrancis90)).
- Fixed docs (by [@&#8203;isker](https://github.com/isker)).

###
[`v8.5.20`](https://github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8520)

[Compare
Source](https://github.com/postcss/postcss/compare/8.5.19...8.5.20)

- Fixed missing space if `AtRule#params` is set after (by
[@&#8203;sarathfrancis90](https://github.com/sarathfrancis90)).
- Fixed mixing AST error on warnings (by
[@&#8203;MahinAnowar](https://github.com/MahinAnowar)).

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODAuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjEyLjAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 9, 2026
…ock#4439)

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@tanstack/react-virtual](https://tanstack.com/virtual)
([source](https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual))
| [`3.14.8` →
`3.14.9`](https://renovatebot.com/diffs/npm/@tanstack%2freact-virtual/3.14.8/3.14.9)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@tanstack%2freact-virtual/3.14.9?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@tanstack%2freact-virtual/3.14.8/3.14.9?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>TanStack/virtual (@&#8203;tanstack/react-virtual)</summary>

###
[`v3.14.9`](https://github.com/TanStack/virtual/blob/HEAD/packages/react-virtual/CHANGELOG.md#3149)

[Compare
Source](https://github.com/TanStack/virtual/compare/@tanstack/react-virtual@3.14.8...@tanstack/react-virtual@3.14.9)

##### Patch Changes

- Updated dependencies
\[[`a5417b4`](https://github.com/TanStack/virtual/commit/a5417b4b0d3c82876747bb9635db7239c28d3e44)]:
-
[@&#8203;tanstack/virtual-core](https://github.com/tanstack/virtual-core)@&#8203;3.17.7

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zLjIiLCJ1cGRhdGVkSW5WZXIiOiI0NC4zLjIiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 9, 2026
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
|
[@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react)
([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react))
| [`19.2.17` →
`19.2.18`](https://renovatebot.com/diffs/npm/@types%2freact/19.2.17/19.2.18)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact/19.2.18?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact/19.2.17/19.2.18?slim=true)
|
|
[@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react-dom)
([source](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom))
| [`19.2.3` →
`19.2.4`](https://renovatebot.com/diffs/npm/@types%2freact-dom/19.2.3/19.2.4)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact-dom/19.2.4?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact-dom/19.2.3/19.2.4?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zLjIiLCJ1cGRhdGVkSW5WZXIiOiI0NC4xMi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Wes <wesbillman@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 22, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [Swatinem/rust-cache](https://github.com/Swatinem/rust-cache)
([changelog](https://github.com/Swatinem/rust-cache/compare/e18b497796c12c097a38f9edb9d0641fb99eee32..6323deb102c322ba6fcbdcafc7e3dddab59af2b6))
| action | digest | `e18b497` → `6323deb` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMi4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 22, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [ubuntu](https://hub.docker.com/_/ubuntu)
([source](https://git.launchpad.net/cloud-images/+oci/ubuntu-base)) |
container | digest | `4fbb8e6` → `561618e` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMi4wIiwidXBkYXRlZEluVmVyIjoiNDQuMjkuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 22, 2026
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@tauri-apps/api](https://github.com/tauri-apps/tauri) |
[`2.11.0` →
`2.11.1`](https://renovatebot.com/diffs/npm/@tauri-apps%2fapi/2.11.0/2.11.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@tauri-apps%2fapi/2.11.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@tauri-apps%2fapi/2.11.0/2.11.1?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>tauri-apps/tauri (@&#8203;tauri-apps/api)</summary>

###
[`v2.11.1`](https://github.com/tauri-apps/tauri/releases/tag/%40tauri-apps/api-v2.11.1):
@&#8203;tauri-apps/api v2.11.1

[Compare
Source](https://github.com/tauri-apps/tauri/compare/@tauri-apps/api-v2.11.0...@tauri-apps/api-v2.11.1)

<details>
<summary><em><h4>PNPM Audit</h4></em></summary>

```
No known vulnerabilities found
```

</details>

#### \[2.11.1]
##### Enhancements

-
[`916782601`](https://www.github.com/tauri-apps/tauri/commit/9167826011cc3d114bf12dfb301968fae479891f)
([#&#8203;15520](https://github.com/tauri-apps/tauri/pull/15520)
by [@&#8203;polw1](https://www.github.com/tauri-apps/tauri/../../polw1))
Document that `Monitor.size`, `Monitor.position` and `Monitor.workArea`
are in physical pixels, with examples showing how to convert them to the
logical pixels expected by window creation options via
`toLogical(monitor.scaleFactor)`.

<details>
<summary><em><h4>PNPM Publish</h4></em></summary>

```
> @tauri-apps/api@2.11.1 npm-publish /home/runner/work/tauri/tauri/packages/api
> pnpm build && cd ./dist && pnpm publish --access public --loglevel silly --no-git-checks

> @tauri-apps/api@2.11.1 build /home/runner/work/tauri/tauri/packages/api
> rollup -c --configPlugin typescript

�[36m
�[1m./src/app.ts, ./src/core.ts, ./src/dpi.ts, ./src/event.ts, ./src/image.ts, ./src/index.ts, ./src/menu.ts, ./src/mocks.ts, ./src/path.ts, ./src/tray.ts, ./src/webview.ts, ./src/webviewWindow.ts, ./src/window.ts�[22m → �[1m./dist, ./dist�[22m...�[39m
�[32mcreated �[1m./dist, ./dist�[22m in �[1m883ms�[22m�[39m
�[36m
�[1msrc/index.ts�[22m → �[1m../../crates/tauri/scripts/bundle.global.js�[22m...�[39m
�[32mcreated �[1m../../crates/tauri/scripts/bundle.global.js�[22m in �[1m1.4s�[22m�[39m
npm verbose cli /opt/hostedtoolcache/node/24.16.0/x64/bin/node /opt/hostedtoolcache/node/24.16.0/x64/bin/npm
npm info using npm@11.13.0
npm info using node@v24.16.0
npm silly config load:file:/opt/hostedtoolcache/node/24.16.0/x64/lib/node_modules/npm/npmrc
npm silly config load:file:/tmp/286e8dee195254a4370e608b672019b0/.npmrc
npm silly config load:file:/home/runner/.npmrc
npm silly config load:file:/home/runner/.config/pnpm/rc
npm verbose title npm publish tauri-apps-api-2.11.1.tgz
npm verbose argv "publish" "--ignore-scripts" "tauri-apps-api-2.11.1.tgz" "--access" "public" "--loglevel" "silly"
npm verbose logfile logs-max:10 dir:/home/runner/.npm/_logs/2026-06-17T13_41_23_851Z-
npm verbose logfile /home/runner/.npm/_logs/2026-06-17T13_41_23_851Z-debug-0.log
npm warn Unknown env config "verify-deps-before-run". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm warn Unknown env config "npm-globalconfig". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm warn Unknown env config "overrides". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm warn Unknown env config "_jsr-registry". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm silly logfile done cleaning log files
npm verbose publish [ 'tauri-apps-api-2.11.1.tgz' ]
npm http cache file:/tmp/286e8dee195254a4370e608b672019b0/tauri-apps-api-2.11.1.tgz 0ms (cache hit)
npm notice
npm notice 📦  @tauri-apps/api@2.11.1
npm notice Tarball Contents
npm notice 99.3kB CHANGELOG.md
npm notice 10.2kB LICENSE_APACHE-2.0
npm notice 1.1kB LICENSE_MIT
npm notice 3.5kB README.md
npm notice 5.9kB app.cjs
npm notice 5.4kB app.d.ts
npm notice 5.5kB app.js
npm notice 11.2kB core.cjs
npm notice 6.5kB core.d.ts
npm notice 10.7kB core.js
npm notice 11.0kB dpi.cjs
npm notice 8.8kB dpi.d.ts
npm notice 10.8kB dpi.js
npm notice 5.8kB event.cjs
npm notice 4.9kB event.d.ts
npm notice 5.7kB event.js
npm notice 2.2kB external/tslib/tslib.es6.cjs
npm notice 2.2kB external/tslib/tslib.es6.js
npm notice 3.0kB image.cjs
npm notice 2.4kB image.d.ts
npm notice 2.9kB image.js
npm notice 738B index.cjs
npm notice 1.2kB index.d.ts
npm notice 669B index.js
npm notice 1.1kB menu.cjs
npm notice 451B menu.d.ts
npm notice 717B menu.js
npm notice 3.6kB menu/base.cjs
npm notice 887B menu/base.d.ts
npm notice 3.6kB menu/base.js
npm notice 2.2kB menu/checkMenuItem.cjs
npm notice 1.5kB menu/checkMenuItem.d.ts
npm notice 2.2kB menu/checkMenuItem.js
npm notice 7.4kB menu/iconMenuItem.cjs
npm notice 6.1kB menu/iconMenuItem.d.ts
npm notice 7.4kB menu/iconMenuItem.js
npm notice 5.1kB menu/menu.cjs
npm notice 4.4kB menu/menu.d.ts
npm notice 5.0kB menu/menu.js
npm notice 1.7kB menu/menuItem.cjs
npm notice 1.3kB menu/menuItem.d.ts
npm notice 1.6kB menu/menuItem.js
npm notice 1.1kB menu/predefinedMenuItem.cjs
npm notice 2.6kB menu/predefinedMenuItem.d.ts
npm notice 1.1kB menu/predefinedMenuItem.js
npm notice 7.1kB menu/submenu.cjs
npm notice 4.8kB menu/submenu.d.ts
npm notice 6.9kB menu/submenu.js
npm notice 9.8kB mocks.cjs
npm notice 5.0kB mocks.d.ts
npm notice 9.7kB mocks.js
npm notice 1.8kB package.json
npm notice 22.7kB path.cjs
npm notice 17.7kB path.d.ts
npm notice 21.7kB path.js
npm notice 7.1kB tray.cjs
npm notice 8.5kB tray.d.ts
npm notice 7.0kB tray.js
npm notice 20.7kB webview.cjs
npm notice 23.8kB webview.d.ts
npm notice 20.5kB webview.js
npm notice 8.4kB webviewWindow.cjs
npm notice 4.9kB webviewWindow.d.ts
npm notice 8.3kB webviewWindow.js
npm notice 68.1kB window.cjs
npm notice 64.9kB window.d.ts
npm notice 67.2kB window.js
npm notice Tarball Details
npm notice name: @tauri-apps/api
npm notice version: 2.11.1
npm notice filename: tauri-apps-api-2.11.1.tgz
npm notice package size: 135.7 kB
npm notice unpacked size: 699.0 kB
npm notice shasum: cd6b13fc26403ca095a02e39ecdbec8048d2872d
npm notice integrity: sha512-M2FPuYND2m+wh[...]sUepJWugQCvAA==
npm notice total files: 67
npm notice
npm http fetch GET https://run-actions-1-azure-eastus.actions.githubusercontent.com/113//idtoken/***/***?api-version=2.0&audience=npm%3Aregistry.npmjs.org 200 76ms
npm http fetch POST 201 https://registry.npmjs.org/-/npm/v1/oidc/token/exchange/package/@tauri-apps%2fapi 674ms
npm verbose oidc Successfully retrieved and set token
npm http fetch GET 200 https://registry.npmjs.org/@tauri-apps%2fapi 54ms (cache miss)
npm notice Publishing to https://registry.npmjs.org/ with tag latest and public access
npm notice publish Signed provenance statement with source and build information from GitHub Actions
npm notice publish Provenance statement published to transparency log: https://search.sigstore.dev/?logIndex=1851797040
npm http fetch PUT 200 https://registry.npmjs.org/@tauri-apps%2fapi 2070ms
+ @tauri-apps/api@2.11.1
npm verbose cwd /tmp/286e8dee195254a4370e608b672019b0
npm verbose os Linux 6.17.0-1018-azure
npm verbose node v24.16.0
npm verbose npm  v11.13.0
npm verbose exit 0
npm info ok
```

</details>

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMi4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 22, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [futures](https://rust-lang.github.io/futures-rs)
([source](https://github.com/rust-lang/futures-rs)) |
dev-dependencies | patch | `0.3.32` → `0.3.34` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>rust-lang/futures-rs (futures)</summary>

###
[`v0.3.34`](https://github.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#0334---2026-08-11)

[Compare
Source](https://github.com/rust-lang/futures-rs/compare/0.3.33...0.3.34)

- Preserve cloned waker identity.
([#&#8203;3032](https://github.com/rust-lang/futures-rs/issues/3032))
- Updato `syn` to 3.
([#&#8203;3028](https://github.com/rust-lang/futures-rs/issues/3028))

###
[`v0.3.33`](https://github.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#0333---2026-07-18)

[Compare
Source](https://github.com/rust-lang/futures-rs/compare/0.3.32...0.3.33)

- Fix `ReadLine`'s soundness issue regarding to exception safety.
([#&#8203;3020](https://github.com/rust-lang/futures-rs/issues/3020))
- Fix unsound `Send` impl for `IterPinRef` and `Iter`.
([#&#8203;3003](https://github.com/rust-lang/futures-rs/issues/3003))
- Fix stacked borrows violation in `compat01as03` implementation.
([#&#8203;3012](https://github.com/rust-lang/futures-rs/issues/3012))
- Fix memory leak in `FuturesUnordered::IntoIter`.
([#&#8203;3005](https://github.com/rust-lang/futures-rs/issues/3005))
- Add `portable-atomic-alloc` feature and use it in `FuturesUnordered`.
([#&#8203;3007](https://github.com/rust-lang/futures-rs/issues/3007))
- Re-export `alloc::task::Wake`.
([#&#8203;3010](https://github.com/rust-lang/futures-rs/issues/3010))
- Update `spin` to 0.12.
([#&#8203;3014](https://github.com/rust-lang/futures-rs/issues/3014))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMi4wIiwidXBkYXRlZEluVmVyIjoiNDQuMjkuNSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 22, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [futures-util](https://rust-lang.github.io/futures-rs)
([source](https://github.com/rust-lang/futures-rs)) |
dependencies | patch | `0.3.32` → `0.3.34` |
| [futures-util](https://rust-lang.github.io/futures-rs)
([source](https://github.com/rust-lang/futures-rs)) |
workspace.dependencies | patch | `0.3.32` → `0.3.34` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>rust-lang/futures-rs (futures-util)</summary>

###
[`v0.3.34`](https://github.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#0334---2026-08-11)

[Compare
Source](https://github.com/rust-lang/futures-rs/compare/0.3.33...0.3.34)

- Preserve cloned waker identity.
([#&#8203;3032](https://github.com/rust-lang/futures-rs/issues/3032))
- Updato `syn` to 3.
([#&#8203;3028](https://github.com/rust-lang/futures-rs/issues/3028))

###
[`v0.3.33`](https://github.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#0333---2026-07-18)

[Compare
Source](https://github.com/rust-lang/futures-rs/compare/0.3.32...0.3.33)

- Fix `ReadLine`'s soundness issue regarding to exception safety.
([#&#8203;3020](https://github.com/rust-lang/futures-rs/issues/3020))
- Fix unsound `Send` impl for `IterPinRef` and `Iter`.
([#&#8203;3003](https://github.com/rust-lang/futures-rs/issues/3003))
- Fix stacked borrows violation in `compat01as03` implementation.
([#&#8203;3012](https://github.com/rust-lang/futures-rs/issues/3012))
- Fix memory leak in `FuturesUnordered::IntoIter`.
([#&#8203;3005](https://github.com/rust-lang/futures-rs/issues/3005))
- Add `portable-atomic-alloc` feature and use it in `FuturesUnordered`.
([#&#8203;3007](https://github.com/rust-lang/futures-rs/issues/3007))
- Re-export `alloc::task::Wake`.
([#&#8203;3010](https://github.com/rust-lang/futures-rs/issues/3010))
- Update `spin` to 0.12.
([#&#8203;3014](https://github.com/rust-lang/futures-rs/issues/3014))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMi4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 22, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [http](https://github.com/hyperium/http) | dependencies |
patch | `1.4.0` → `1.4.2` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>hyperium/http (http)</summary>

###
[`v1.4.2`](https://github.com/hyperium/http/blob/HEAD/CHANGELOG.md#142-June-8-2026)

[Compare
Source](https://github.com/hyperium/http/compare/v1.4.1...v1.4.2)

- Fix `uri::Builder` to allow `"*"` as the path when scheme and
authority are also set, used in HTTP/2 requests.
- Fix `Uri` to properly reject `DEL` characters.

###
[`v1.4.1`](https://github.com/hyperium/http/blob/HEAD/CHANGELOG.md#141-May-25-2026)

[Compare
Source](https://github.com/hyperium/http/compare/v1.4.0...v1.4.1)

- Fix `PathAndQuery::from_static()` and `from_shared()` to reject inputs
that do not start with `/`.
- Fix `Extend` for `HeaderMap` to clamp max size hint and not overflow.
- Fix `header::IntoIter` that could use-after-free if the generic value
type could panic on drop.
- Fix `header::{IterMut, ValuesIterMut}` to not violate stacked borrows.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMi4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 22, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [http-body-util](https://github.com/hyperium/http-body) |
dependencies | patch | `0.1.3` → `0.1.5` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>hyperium/http-body (http-body-util)</summary>

###
[`v0.1.5`](https://github.com/hyperium/http-body/compare/http-body-util-v0.1.4...http-body-util-v0.1.5)

[Compare
Source](https://github.com/hyperium/http-body/compare/http-body-util-v0.1.4...http-body-util-v0.1.5)

###
[`v0.1.4`](https://github.com/hyperium/http-body/releases/tag/http-body-util-v0.1.4)

[Compare
Source](https://github.com/hyperium/http-body/compare/http-body-util-v0.1.3...http-body-util-v0.1.4)

#### What's Changed

- Add `Fused` body combinator that always returns `None` once completed.
- Add `BodyExt::into_stream()` to convert a body into a `Stream`.
- Add `Full::into_inner()` to get the full `Buf`.
- Add `InspectFrame` and `InspectErr` combinators.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMi4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 22, 2026
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [sonner](https://sonner.emilkowal.ski/)
([source](https://github.com/emilkowalski/sonner)) | [`2.0.7` →
`2.0.8`](https://renovatebot.com/diffs/npm/sonner/2.0.7/2.0.8) |
![age](https://developer.mend.io/api/mc/badges/age/npm/sonner/2.0.8?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sonner/2.0.7/2.0.8?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>emilkowalski/sonner (sonner)</summary>

###
[`v2.0.8`](https://github.com/emilkowalski/sonner/compare/v2.0.7...ecce1841c55e4a72dfe139a8992b56498660125e)

[Compare
Source](https://github.com/emilkowalski/sonner/compare/v2.0.7...v2.0.8)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yOS41IiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 22, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [async-trait](https://github.com/dtolnay/async-trait) |
dependencies | patch | `0.1.91` → `0.1.92` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>dtolnay/async-trait (async-trait)</summary>

###
[`v0.1.92`](https://github.com/dtolnay/async-trait/releases/tag/0.1.92)

[Compare
Source](https://github.com/dtolnay/async-trait/compare/0.1.91...0.1.92)

- Resolve double\_must\_use clippy lint in generated code
([#&#8203;303](https://github.com/dtolnay/async-trait/issues/303))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yOS41IiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 27, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [ubuntu](https://hub.docker.com/_/ubuntu)
([source](https://git.launchpad.net/cloud-images/+oci/ubuntu-base)) |
container | digest | `561618e` → `33ceb71` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zOS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 27, 2026
…lock#6666)

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@tanstack/react-virtual](https://tanstack.com/virtual)
([source](https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual))
| [`3.14.9` →
`3.14.10`](https://renovatebot.com/diffs/npm/@tanstack%2freact-virtual/3.14.9/3.14.10)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@tanstack%2freact-virtual/3.14.10?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@tanstack%2freact-virtual/3.14.9/3.14.10?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>TanStack/virtual (@&#8203;tanstack/react-virtual)</summary>

###
[`v3.14.10`](https://github.com/TanStack/virtual/blob/HEAD/packages/react-virtual/CHANGELOG.md#31410)

[Compare
Source](https://github.com/TanStack/virtual/compare/@tanstack/react-virtual@3.14.9...@tanstack/react-virtual@3.14.10)

##### Patch Changes

- Updated dependencies
\[[`a0a411e`](https://github.com/TanStack/virtual/commit/a0a411e06f7334a063422de35d59b12b264b3573),
[`d2cf98b`](https://github.com/TanStack/virtual/commit/d2cf98beea1696c7187c06b57c9e724d1957963c)]:
-
[@&#8203;tanstack/virtual-core](https://github.com/tanstack/virtual-core)@&#8203;3.17.8

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zOS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 27, 2026
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [vitest](https://vitest.dev)
([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest))
| [`4.1.10` →
`4.1.11`](https://renovatebot.com/diffs/npm/vitest/4.1.10/4.1.11) |
![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/4.1.11?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/4.1.10/4.1.11?slim=true)
|

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Release Notes

<details>
<summary>vitest-dev/vitest (vitest)</summary>

###
[`v4.1.11`](https://github.com/vitest-dev/vitest/releases/tag/v4.1.11)

[Compare
Source](https://github.com/vitest-dev/vitest/compare/v4.1.10...v4.1.11)

#####    🐞 Bug Fixes

- Revive global concurrency limit for test lifecycle \[backport to v4]
 -  by [@&#8203;sheremet-va](https://github.com/sheremet-va)
and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in
[#&#8203;10992](https://github.com/vitest-dev/vitest/issues/10992)
[<samp>(5146d)</samp>](https://github.com/vitest-dev/vitest/commit/5146df80b)
- **browser**:
- Encode iframeId in tester iframe URL \[backport to v4]  -  by
[@&#8203;sheremet-va](https://github.com/sheremet-va),
**Pduhard** and **Claude Opus 4.8** in
[#&#8203;10955](https://github.com/vitest-dev/vitest/issues/10955)
[<samp>(10b2c)</samp>](https://github.com/vitest-dev/vitest/commit/10b2cd201)
- Trigger playwright/chromium gc on lower disk availability \[backport
to v4]  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa),
**Hiroshi Ogawa** and **OpenCode** in
[#&#8203;10951](https://github.com/vitest-dev/vitest/issues/10951)
[<samp>(9851d)</samp>](https://github.com/vitest-dev/vitest/commit/9851dbc41)
- **mocker**:
- Restrict redirect mocks to the fs allowlist \[backport to v4]  -  by
[@&#8203;sheremet-va](https://github.com/sheremet-va) in
[#&#8203;10974](https://github.com/vitest-dev/vitest/issues/10974)
[<samp>(fe5a1)</samp>](https://github.com/vitest-dev/vitest/commit/fe5a11d3c)

#####     [View changes on
GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.10...v4.1.11)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zOS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
yjc801 pushed a commit that referenced this pull request Aug 28, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [rui314/setup-mold](https://github.com/rui314/setup-mold)
([changelog](https://github.com/rui314/setup-mold/compare/9c9c13bf4c3f1adef0cc596abc155580bcb04444..7e4f20ad28a2e8ca6fd0892ccf72e2abb706b9c3))
| action | digest | `9c9c13b` → `7e4f20a` |

---

> [!WARNING]
> Some dependencies could not be looked up. Check the [Dependency
Dashboard](../issues/1) for more information.

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/block/buzz).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zOS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMzkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant