Summary
A PR that touches only packages/** (e.g. renaming/removing an export, changing a prop type) can break docs examples or playground usage and still pass every PR gate. The breakage surfaces only post-merge as a failed deploy.
Location
package.json:27 typecheck and package.json:9 build are --filter=./packages/* only; the always-run PR build job (.github/workflows/pr-checks.yml:63-70) builds packages only.
pr-checks.yml:81-98 dorny/paths-filter gates docs-check / playground-check on apps/docs/** / apps/playground/** — so a packages/**-only PR skips both.
- Vitest is colocated in
packages/0/src (examples aren't tested). docs-deploy.yml / playground-deploy.yml run only on push to master (post-merge).
Impact
CI/DX hygiene, not runtime/security. Coolify keeps serving the last good image, so a failed deploy stalls the update rather than taking the site offline; cost is red CI on master + a fix-forward. Note: vite-ssg build does not type-check, so type-level example breakage is caught nowhere — the path-filter fix below catches removed/renamed exports (the common case).
Suggested fix
Add - 'packages/**' to both the docs and playground filter lists in pr-checks.yml (~:95-98). This reuses the existing docs-check / playground-check jobs (which run build:docs / build:play), only paying the build cost when packages or the respective app actually change.
Summary
A PR that touches only
packages/**(e.g. renaming/removing an export, changing a prop type) can break docs examples or playground usage and still pass every PR gate. The breakage surfaces only post-merge as a failed deploy.Location
package.json:27typecheckandpackage.json:9buildare--filter=./packages/*only; the always-run PRbuildjob (.github/workflows/pr-checks.yml:63-70) builds packages only.pr-checks.yml:81-98dorny/paths-filtergatesdocs-check/playground-checkonapps/docs/**/apps/playground/**— so apackages/**-only PR skips both.packages/0/src(examples aren't tested).docs-deploy.yml/playground-deploy.ymlrun only on push to master (post-merge).Impact
CI/DX hygiene, not runtime/security. Coolify keeps serving the last good image, so a failed deploy stalls the update rather than taking the site offline; cost is red CI on master + a fix-forward. Note:
vite-ssgbuild does not type-check, so type-level example breakage is caught nowhere — the path-filter fix below catches removed/renamed exports (the common case).Suggested fix
Add
- 'packages/**'to both thedocsandplaygroundfilter lists inpr-checks.yml(~:95-98). This reuses the existingdocs-check/playground-checkjobs (which runbuild:docs/build:play), only paying the build cost when packages or the respective app actually change.