(1/1) Cover missing head record offline navigation misses#93671
Closed
feedthejim wants to merge 1 commit into
Closed
Conversation
This was referenced May 8, 2026
Contributor
Tests PassedCommit: 31ccecb |
Contributor
Stats from current PR🔴 1 regression
📊 All Metrics📖 Metrics GlossaryDev Server Metrics:
Build Metrics:
Change Thresholds:
⚡ Dev Server
📦 Dev Server (Webpack) (Legacy)📦 Dev Server (Webpack)
⚡ Production Builds
📦 Production Builds (Webpack) (Legacy)📦 Production Builds (Webpack)
📦 Bundle SizesBundle Sizes⚡ TurbopackClient Main Bundles
Server Middleware
Build DetailsBuild Manifests
📦 WebpackClient Main Bundles
Polyfills
Pages
Server Edge SSR
Middleware
Build DetailsBuild Manifests
Build Cache
🔄 Shared (bundler-independent)Runtimes
📝 Changed Files (9 files)Files with changes:
View diffsapp-page-exp..ntime.dev.jsfailed to diffapp-page-exp..time.prod.jsfailed to diffapp-page-tur..ntime.dev.jsfailed to diffapp-page-tur..time.prod.jsfailed to diffapp-page-tur..ntime.dev.jsfailed to diffapp-page-tur..time.prod.jsfailed to diffapp-page.runtime.dev.jsfailed to diffapp-page.runtime.prod.jsfailed to diffserver.runtime.prod.jsDiff too large to display 📎 Tarball URLCommit: 31ccecb |
Contributor
Author
|
Closing this draft as part of the offline navigations first-usable restack. The current review stack is the 25-PR sequence rooted at #93622, ending at #93656, with #93648 folded into PR 22 and the stress-only rows deferred into named P1/P2 owners. The branch is intentionally left intact so the coverage can be recovered or rebundled later. Review guide: https://gist.github.com/feedthejim/b3d9fe26a7c05655fd57adcce371b93d |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack Position
This is a focused stress-test slice stacked on top of
feedthejim/offline-navigations-missing-route-record-stress.It continues the
GRAPH-02broute-graph completeness matrix for offlineNavigations. The previous slice covers a deleted persisted route record. This slice covers a deleted persisted head record while route and page segment records are still present.Why This Exists
Route/segment replay needs complete route graph data. A page segment by itself is not enough if the matching head record is missing, and this test makes that behavior explicit without relying on exact-URL replay.
The test flow is intentionally destructive:
/docs/prefetchedso route, page segment, and head records exist/docs/prefetched/_headrecordmissing-headdiagnosticsReviewer Focus
Please focus on whether this proves the missing-head-record contract distinctly from the existing expired-head-record coverage.
The existing expired-head test proves cleanup of stale head data. This PR proves the absent-record path: the client router must reject an otherwise present route/segment replay set if the required head record was never available.
What This Does Not Cover Yet
This does not finish the whole
GRAPH-02bmatrix. Remaining route-graph missing-record rows still need focused slices:Verification
pnpm prettier --with-node-modules --ignore-path .prettierignore --write test/production/app-dir/offline-navigations/offline-navigations.test.tsnpx eslint --config eslint.config.mjs --fix test/production/app-dir/offline-navigations/offline-navigations.test.tsgit diff --checkNEXT_SKIP_ISOLATE=1 pnpm test-start-turbo test/production/app-dir/offline-navigations/offline-navigations.test.ts -t "misses persisted router records when a required head record is missing during fallback boot"pnpm test-start-webpack test/production/app-dir/offline-navigations/offline-navigations.test.ts -t "misses persisted router records when a required head record is missing during fallback boot"