Describe the issue
The blog skeleton at docs/releases/blog-skeletons/02-upgrading-from-3x.md opens with "Wheels 4.0 lands with seven breaking changes..." and lists 7 items.
The canonical upgrade guide at web/sites/guides/src/content/docs/v4-0-0/upgrading/3x-to-4x.mdx opens with "The eleven breaking changes" and lists 11.
The stats table in docs/releases/wheels-3.0-vs-4.0.md says Breaking defaults hardened | 7 — agreeing with neither.
The lists don't overlap cleanly:
- In the blog only:
- In the canonical guide only:
Why this matters
A team encountering both documents before upgrading will be confused about scope. The blog's "testbox → wheelstest namespace" framing is also misleading — the actual change is to the test base class, not to the testbox package namespace, so anyone search-replacing extends="testbox.system.BaseSpec" to extends="wheelstest.system.BaseSpec" will not get the right result. The right replacement is extends="wheels.WheelsTest".
Suggested fix
Pick one of:
- Update the blog skeleton to match the canonical guide's 11 items. Choose the most narratively interesting four or five to highlight; reference the canonical guide for the full list.
- If the blog is intentionally a narrative subset, change the opener. "the eleven breaking changes" → drop the count, e.g., "Wheels 4.0 lands with a handful of breaking changes..." and link to the canonical list. Don't promise a specific count if the blog isn't going to enumerate them all.
- Either way, fix the
testbox → wheelstest framing in blog item 3 — the breaker is wheels.Test → wheels.WheelsTest, not a namespace move on the package itself.
- Reconcile the stats table in
wheels-3.0-vs-4.0.md — Breaking defaults hardened | 7 doesn't match either document and should be checked against the source PRs.
🤖 Filed by Claude Code while assisting with a 4.0 upgrade testbed
Describe the issue
The blog skeleton at
docs/releases/blog-skeletons/02-upgrading-from-3x.mdopens with "Wheels 4.0 lands with seven breaking changes..." and lists 7 items.The canonical upgrade guide at
web/sites/guides/src/content/docs/v4-0-0/upgrading/3x-to-4x.mdxopens with "The eleven breaking changes" and lists 11.The stats table in
docs/releases/wheels-3.0-vs-4.0.mdsaysBreaking defaults hardened | 7— agreeing with neither.The lists don't overlap cleanly:
cfwheels → wheelsnamespace rename in active code (chore: rebrand CFWheels → Wheels in active code and metadata #2064)testbox → wheelstestnamespace rename (which is not what refactor: rename testbox namespace to wheelstest (WheelsTest) #1889 actually renames — refactor: rename testbox namespace to wheelstest (WheelsTest) #1889 renameswheels.Test→wheels.WheelsTest, the test base class, not thetestboxnamespace)trustProxy/strategy (fix: change RateLimiter trustProxy default to false #2024, fix(middleware): default rate limiter proxy strategy to last for security #2088)application.wirebox→application.wheelsdi(refactor: rename application.wirebox to application.wheelsdi #1888)Why this matters
A team encountering both documents before upgrading will be confused about scope. The blog's "testbox → wheelstest namespace" framing is also misleading — the actual change is to the test base class, not to the
testboxpackage namespace, so anyone search-replacingextends="testbox.system.BaseSpec"toextends="wheelstest.system.BaseSpec"will not get the right result. The right replacement isextends="wheels.WheelsTest".Suggested fix
Pick one of:
testbox → wheelstestframing in blog item 3 — the breaker iswheels.Test→wheels.WheelsTest, not a namespace move on the package itself.wheels-3.0-vs-4.0.md—Breaking defaults hardened | 7doesn't match either document and should be checked against the source PRs.🤖 Filed by Claude Code while assisting with a 4.0 upgrade testbed