Repository navigation
feat(canary): watch the fixes we wait on, digest what a pin adopts, probe JXL and dictionaries live - #812
Merged
Conversation
…robe JXL and dictionaries live Three uses for the prerelease pins, now that production runs on them. Watches (tools/lib/upstream-watches.ts): nine probes that read false on the pinned toolchain today, one per upstream fix this repository filed or commented on (seven bun issues from Bun.Image option validation to fetch honouring `dispatcher`; workerd#7106's zstd dictionary through a probe Worker on wrangler's own harness; `wrangler types --x-new-config`). Each leg reads every watch under the pin and under the candidate, and a row that differs is a `changed` night naming the fix and the build it arrived in. Landed in both is the cue to retire it. `null` never moves a verdict. pin:digest renders an upstream compare range as Markdown, changesets first for workers-sdk (the unreleased changelog) and commit subjects with the robobun count for bun; both nightly pin PRs carry it under the gate evidence. Advisory: if GitHub refuses, one line and a compare link. Two live browser probes ride beside horizon's own: a 2x2 JXL decoded from a data URI with a PNG control, and the Available-Dictionary exchange with production over two navigations. First run, Chrome 153 against Canary 155: JXL decodes by default in Canary. The dictionary probe's first draft missed the .dict fetch on half its trials because the response lands before goto resolves; the listener now attaches before navigating. workerd and its five platform packages are exempted from bunfig's 24h window by name, with the reason: wrangler main names the workerd it was built against the same day it ships, the pin takes workers-sdk main at zero hours old, and every install of main refused workerd@1.20260915.1 as too young while the pin job and the canary leg had news to report.
Contributor
Wire-size diff vs merge base
Brotli q11, the quality the edge serves. Every number here is deterministic: Client assetsNo change. 25 files, 86.93 KiB Brotli total. PagesNo change. 56 files, 584.45 KiB Brotli total. Worker bundleNo change. 249.30 KiB gzip. Dictionary transportFamily dictionary acquisition: no change, 14.41 KiB q11.
|
oddharsh
enabled auto-merge (squash)
September 15, 2026 19:33
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ✅ Deployment successful! View logs |
aadhar-sh | ce6ca7e | Sep 15 2026, 07:32 PM |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Production runs on prerelease pins since #810. This is what those early builds are now used for, three ways, each one gate or step on a leg that already runs nightly.
1. Upstream watches: the fixes we wait on, read every night
tools/lib/upstream-watches.tsis a gate turned inside out. Each entry is a probe that reads false on the pinned toolchain today, one per upstream thread this repository opened or commented on, with the reading recorded beside it. Every leg answers each watch under the pin and under the candidate; a row that differs is achangednight whose signature names the watch and the direction, so the issue says which fix arrived in which build. Landed in both is the cue to retire it. A probe that could not run readsdid not runand moves nothing.bun-image-rejects-out-of-range-qualitybun-image-rejects-wrong-option-typesbun-image-linear-light-resizebun-image-keeps-16-bit-samplesfetch-honours-dispatcherenginescss-minifier-knows-the-seven-pseudo-elementscss-minifier-lowercases-target-currentworkerd-honours-zstd-dictionarytools/workerd-zstd-probe.tson wrangler'screateTestHarnesswrangler-types-accepts-x-new-configMeasured on the pinned bun 1.4.2-canary.20260913.1 and on today's rolling canary (1.4.3-canary.1+782c4020b): every gate green, all seven bun watches
not yet -> not yet, which matches the state of bun's review queue (every one of those fix PRs is stillREVIEW_REQUIRED). The two wrangler watches readnot yeton both the pin (982b806) and main:One thing the wrangler leg's first run found and this PR settles: wrangler main had moved to
workerd@1.20260915.1(published 01:18Z), and bunfig's 24hminimumReleaseAgerefused it, so neither the canary leg nor the pin job could install main. The pin takes workers-sdk main at zero hours old, and each such commit names the exact workerd it was built against, so age-gating the runtime while taking its publisher unaged protects nothing and reds both jobs on the mornings they have news.workerdand its five platform packages are exempted by name, with the reason inbunfig.tomland the instruction to remove the six lines if the wrangler pin ever returns to a release. Verified both ways: with the exemptionbun add workerd@1.20260915.1resolves, without itfailed to resolve. This is the one policy change in the PR.2. The nightly pin PRs say what they adopt
bun run pin:digest -- --repo <owner/name> --from <sha> --to <sha>renders a GitHub compare range as Markdown, and bothbun-pin.ymlandwrangler-pin.ymlput it in the PR body under the gate evidence. For workers-sdk that is the.changeset/*.mdfiles added in the range, which is the unreleased changelog, wrangler and miniflare first; for bun it is the commit subjects with the robobun count beside them. Run on the real ranges today: #808'sb149147 -> 982b806was 5 commits carrying 4 changesets (execareplaced bytinyexec, KV bulk routes in the Local Explorer, ...), and the bun pin's09bb546 -> 7e56b40was 70 commits, 63 by bots. Advisory by construction: if GitHub refuses, the body carries one line and a compare link and the PR still opens.3. Two live browser probes, for the features parked on a browser
Horizon marks
jpeg-xlhonest-false because no synchronous probe exists, and nothing on the page can see a request header, so the two site features waiting on a browser could never flip on the browsers leg. Two live probes ride beside the page's own now:live:jxl-decode(a 190-byte 2x2 JXL fromcjxl, decoded from a data URI, with a PNG decoded the same way as the control) andlive:dictionary-transport(a real visit to production, then a second navigation, read for theAvailable-Dictionarythe engine sends and thedczit gets back;--offlineskips it, and stable chromium reading false is the instrument).First run, Chrome 153 against Canary 155: JXL decodes by default in Canary. The roadmap note from a week ago has it flag-only in Chrome; that now describes stable alone, and a JXL
/i/tier is gated on a Chrome release rather than a flag.The dictionary probe's first draft read false in Canary on three of six trials with the
.dictresponse visibly at ~450ms: the fetch lands beforegotoresolves, so a listener attached after navigation only sees the trials where it came late. It attaches before navigating now, and the reason is written at the call.What was checked
bun run test724 pass; the canary contract file also passes under node (12/12), and it now RUNS every bun watch under the pinned bun and asserts a boolean back, so a watch that readsnullfails the suite.bun run lint,bun run typecheck,bun run derive:check(three new writers declared).wrangler types --x-new-configre-measured on main982b806: still refused withUnknown arguments. My first read of exit 0 wastail's. Gotcha 40, again, and the reason that watch exists.Nothing here writes a pin, opens a PR from the canary, or holds a Cloudflare credential; the contract test that says so still passes.