* fix(app-router): preserve source identity for intercepted renders
Intercepted App Router renders used the visible target pathname as the payload route identity. That let a modal navigation such as /feed to /photos/42 replace the retained source tree with target-scoped route and page ids, so refreshes, server actions, chained modals, and history traversal could lose source page state.
The violated invariant is that an intercepted render has separate display and matched-route identities. This commits a fenced render identity helper, keeps source route and page ids stable for retained source-route payloads, leaves the target pathname in interception proof, and includes source context in RSC cache variants.
Regression coverage asserts source payload keys, cache variants, modal refresh/action/history flows, and source client/search state preservation.
* fix(app-router): normalize intercepted rsc cache source
* fix(app-router): harden intercepted cache regeneration
* refactor(app-router): share intercepted path normalization
* fixup! fix(app-router): preserve source identity for intercepted renders
fixup! fix(app-router): preserve source identity for intercepted renders