* fix(app-router): prerender cacheComponents root-param fallback shells
PR 1 of 4: core model + build integration.
Model: app-ppr-fallback-shell, pregenerated-concrete-paths, prerender-manifest
Build: prerender/run-prerender fallback shell artifact generation
Tests: createAppPprFallbackShells, pregenerated-concrete-paths core
* test(prerender-route-params): add unit tests for fallbackParamNames and validation
Adds focused unit tests for the new prerender-route-params logic introduced
in this PR:
- encodePrerenderRouteParams round-trips fallbackParamNames and omits
them when empty.
- prerenderRouteParamsPayloadMatchesRoute rejects payloads whose
fallbackParamNames contain unknown params or duplicates.
- prerenderRouteParamsPayloadMatchesRoute returns false for valid
fallback-shell matches (only exact matches are accepted today).
Also adds a comment in app-ppr-fallback-shell.ts noting that placeholder
brackets in shell pathnames are percent-encoded by new URL() at fetch
time, so the render path must supply params via the prerender-params
header rather than URL matching.
* docs(prerender): clarify BUILD_ID reuse and fallback-shell param-resolution seams
Address review feedback on PR #1702:
- Explain why run-prerender reuses the built BUILD_ID instead of
re-resolving one (config.buildId feeds prerendered-output identity).
- Note that the fallback-shell prerender-params header path described in
app-ppr-fallback-shell.ts is honored by the #1715 follow-up; this
generation-only PR still resolves params from the URL placeholder.
---------
Co-authored-by: James <james@eli.cx>