Commit Graph

1 Commits

Author SHA1 Message Date
josh 39bfcd2032 chore(02-03): scripts/check-bundle-split.mjs (PIPE-02 structural verification)
Task 3 of Plan 02-03: ship the PIPE-02 structural assertion that Season-1
content reaches the build output. Three structural checks (any one
sufficient): chunk filename slug match (fragments / season1 / 01-soil),
chunk-contents reference to /content/seasons/01-soil/ source path or to
known fragment ids, and a future-extension hook for index.html manifest
inspection.

Phase 2 ships eager-corpus loading alongside the lazy
loadSeasonFragments surface, so currently chunkContentMatch=true via
inlined ?raw content. When Plan 02-04+ switches consumers to lazy-only
and Vite emits a separate Season-1 chunk, chunkNameMatch will also
start passing — at which point either path satisfies the assertion. The
plumbing is structurally proven now; the chunk-naming side is documented
as the path of least resistance for the Phase-4 Season-2 onboarding.

scripts/check-bundle-split.mjs:
- Refactored body into export function runCheck() returning a structured
  result; the CLI invocation guard wraps process.exit so Vitest can
  import the module without termination (verified by the test file).

scripts/check-bundle-split.test.mjs:
- 3 cases: file exists, parses + imports without process.exit firing,
  runCheck() returns the documented {ok, message, chunkNameMatch,
  chunkContentMatch, files} shape. The on-disk dist/-required happy path
  fires via the package.json scripts.ci chain (`npm run build &&
  npm run check:bundle-split`).

package.json:
- New `check:bundle-split` script.
- `ci` chain extended: lint → test → validate:assets → build →
  check:bundle-split. dist/ is populated by build before the bundle-split
  assertion runs.

`npm run ci` exits 0 end-to-end. 217/217 tests green (was 214; +3 new
this task). The PIPE-02 verification step now refuses any future change
that breaks the lazy-content plumbing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 10:07:36 -04:00