Follow-up to #329, which pins wranglerVersion: "3" at all three Cloudflare deploy sites.
Why the pin exists
cloudflare/wrangler-action@v4 changed its default Wrangler CLI from 3 to 4. Neither website/package.json nor docs/package.json depends on wrangler (verified: zero hits in either package-lock.json), so the action's default is literally what deploys tracewayapp.com, the docs, and the chart index.
#329's purpose was moving off the Node 20 action runtime. Taking v4 unpinned would have carried a CLI major bump into that, on a production deploy path no PR label can exercise — so the pin holds the CLI where it is and the runtime moves alone. That was the right call for that PR and is the wrong thing to leave forever.
The problem with leaving it
The pin's exit condition is prose in three code comments. Wrangler 3 is already superseded, and unowned version state in this repo is exactly what #326 was about — it drifts until it becomes an annotation.
What "done" looks like
Not simply deleting the pin. The deeper fix for two of the three sites is making wrangler a devDependency of website/ and docs/: both workflows already run npm ci in the right working-directory and pass workingDirectory: to the action, and the action prefers a pre-installed wrangler when given no version input — so the deployed CLI becomes lockfile-pinned and Dependabot-trackable (see #330) instead of resolved at deploy time.
That covers 2 of 3. release-helm.yml:87 invokes the action with no workingDirectory and has no npm project anywhere near it (helm/ holds only the chart), running pages deploy deploy --project-name traceway-charts. Inventing a package.json purely to host one dependency would be worse than the pin; that site should keep an explicit wranglerVersion.
Validation
Wrangler 4's breaking changes need checking against website/wrangler.toml (a Worker with main, [assets], and [observability.traces]) and docs/wrangler.toml (assets-only). All three workflows are release-triggered, so this needs a workflow_dispatch dry run — release-helm.yml first, since it publishes only a chart index.
Follow-up to #329, which pins
wranglerVersion: "3"at all three Cloudflare deploy sites.Why the pin exists
cloudflare/wrangler-action@v4changed its default Wrangler CLI from 3 to 4. Neitherwebsite/package.jsonnordocs/package.jsondepends onwrangler(verified: zero hits in eitherpackage-lock.json), so the action's default is literally what deploystracewayapp.com, the docs, and the chart index.#329's purpose was moving off the Node 20 action runtime. Taking v4 unpinned would have carried a CLI major bump into that, on a production deploy path no PR label can exercise — so the pin holds the CLI where it is and the runtime moves alone. That was the right call for that PR and is the wrong thing to leave forever.
The problem with leaving it
The pin's exit condition is prose in three code comments. Wrangler 3 is already superseded, and unowned version state in this repo is exactly what #326 was about — it drifts until it becomes an annotation.
What "done" looks like
Not simply deleting the pin. The deeper fix for two of the three sites is making
wranglera devDependency ofwebsite/anddocs/: both workflows already runnpm ciin the rightworking-directoryand passworkingDirectory:to the action, and the action prefers a pre-installed wrangler when given no version input — so the deployed CLI becomes lockfile-pinned and Dependabot-trackable (see #330) instead of resolved at deploy time.That covers 2 of 3.
release-helm.yml:87invokes the action with noworkingDirectoryand has no npm project anywhere near it (helm/holds only the chart), runningpages deploy deploy --project-name traceway-charts. Inventing apackage.jsonpurely to host one dependency would be worse than the pin; that site should keep an explicitwranglerVersion.Validation
Wrangler 4's breaking changes need checking against
website/wrangler.toml(a Worker withmain,[assets], and[observability.traces]) anddocs/wrangler.toml(assets-only). All three workflows are release-triggered, so this needs aworkflow_dispatchdry run —release-helm.ymlfirst, since it publishes only a chart index.