ConceptsFall-through

Fall-through

A SvelteKit project is already a map from files to meaning: src/routes/admin/users/[id]/+page.svelte is the page for /admin/users/:id. svelte-d does not flatten that map into a bag of generated names. It falls through. The kit-relative path is the workspace-relative path. Only the cell prefix changes, because the same route has to exist as preserved source, as libwasm D, as optional lang=ts glue, and — if there is a server file — as vibe.0 D.

That is why a reader can open src-d/routes/admin/users/_id_/page.d and still know which Svelte file produced it. The _id_ spelling is forced by the language and by the compiler: D cannot start a filename with +, and LDC 1.43 on Windows asserts inside globMatch if a directory name contains [. Source under src-svelte/ keeps the kit names. Dest under src-d/ is sanitized only where the identifier would be illegal. Component files are not sanitized at all: ClickField.svelte remains ClickField.d / struct ClickField. Groups (app) stay on disk and are stripped from the URL, which is what SvelteKit itself does.

The cells and their prefixes are fixed. There is not a fifth tree.

ProjectWorkspaceCell
src/routes/+page.sveltesrc-svelte/routes/+page.sveltesource, preserved
src-d/routes/page.dlibwasm
src-ts/modules/generated/routes__page_svelte.tslang=ts jsExports + __svelteD.ts
src/lib/Dock.sveltesrc-d/lib/Dock.dlibwasm (struct Dock)
src/routes/+page.server.dwebserver/source/generated/routes/page_server.dvibe.0
src/routes/admin/users/[id]/+page.sveltesrc-d/routes/admin/users/_id_/page.ddest dirs cannot keep [
src/lib/jquery-bridge.tssrc-ts/modules/helpers/lib/jquery-bridge.tsVite
src/styles/app.scssstyles/app.scssVite
node_modules/svelte-grid/Grid.sveltesrc-svelte/ext/svelte-grid/Grid.svelteingested, then printed
public/logo.pngpublic/logo.pngvibe.0 serveStaticFiles

svelte-d map src/routes/admin/+page.svelte and the TypeScript export mapKitPath must agree field-for-field. That agreement is tested. Compile writes the same information to ws/.svelte-d/fallthrough.json so an adapter or a debug page can see the map without re-deriving it. Mapping a path is still not a claim that the printer has emitted every construct on that file. A +page.svelte that uses a construct the language section marks as a seam will map cleanly and then fail (or skip) at print. The map is the filesystem contract; the language section is the IR contract.