We deleted our only dynamic content route to get fourteen folders, and not one URL changed CogniPrep replaced a single dynamic Next.js route serving five test-format pages with fourteen static route folders, expanding to fourteen pages without changing any URL. The dynamic route's body became a shared TestTypeShell component, and the test registry in lib/tests/test-types.ts grew from 973 to 2,228 lines with new parent, group and coverageNote fields. A two-directional guard test now fails the build when a registry entry lacks a route folder or vice versa, catching pages that would otherwise 404 while still appearing in the sitemap and footer. CogniPrep had five pages describing test formats, at /tests/numerical-reasoning and four siblings, served by one dynamic route: app/tests/ test-type /page.tsx reading an entry out of a registry. That is the obvious shape, and for five pages it was fine. Last week the cluster went to fourteen pages, and the dynamic route is gone. Every URL is identical to what it was. Git recorded the change honestly, as a rename: js .../page.tsx = components/tests/TestTypeShell.tsx | 249 ++- The body of the dynamic route became a shell component, and fourteen folders now each hold an eleven-line file: js import { testTypeMetadata } from '@/components/tests/test-type-metadata'; import { TestTypeShell } from '@/components/tests/TestTypeShell'; // Content and metadata live in lib/tests/test-types.ts. const SLUG = 'abstract-reasoning'; export const metadata = testTypeMetadata SLUG ; export default function Page { return