# Launch Readiness Handoff: Spec 403 ## Scope Runtime changes are limited to `apps/website`. Planning and handoff artifacts live in `specs/403-public-website-launch-readiness`. `apps/platform` remains out of scope and was checked with: ```bash git status --short -- apps/platform ``` The command printed no output. ## Route Exposure Canonical rendered German default routes: - `/` - `/platform` - `/pricing` - `/contact` - `/trust` - `/legal` - `/privacy` - `/terms` - `/imprint` - `/welcome-to-docs/` - `/guides/intro/` - `/guides/getting-started/` - `/guides/first-project-checklist/` - `/platform/evidence-review/` Canonical rendered English routes: - `/en/` - `/en/platform` - `/en/pricing` - `/en/contact` - `/en/trust` - `/en/legal` - `/en/privacy` - `/en/terms` - `/en/imprint` - `/en/welcome-to-docs/` - `/en/guides/intro/` - `/en/guides/getting-started/` - `/en/guides/first-project-checklist/` - `/en/platform/evidence-review/` Redirect-only aliases: - `/product` -> `/platform` - `/products` -> `/platform` - `/services` -> `/platform` - `/blog` -> `/platform` - `/insights` -> `/platform` - `/en/product` -> `/en/platform` - `/en/products` -> `/en/platform` - `/en/services` -> `/en/platform` - `/en/blog` -> `/en/platform` - `/en/insights` -> `/en/platform` Static Astro output renders redirect aliases as noindex redirect HTML pages. Smoke coverage verifies the noindex marker, canonical target, and visible redirect link. Top navigation exposes `/welcome-to-docs/` as `Docs`, matching the public docs route instead of keeping documentation discoverable only through footer or contact-page links. German remains the unprefixed default locale. English is available as an additional locale under `/en/...`; the language picker switches between the current German route and its English counterpart where available. ## CTA Assumptions Supported public CTA paths are contact/demo and product-evaluation paths only. - Homepage CTAs route to `/contact` and `/platform`. - Platform CTAs route to `/contact` and `/trust`. - Pricing CTAs route to `/contact`. - Docs links route to intentional localized docs pages. - Footer contact CTA routes to `/contact`. The public website does not claim login, account creation, self-service payment, automated provisioning, live tenant connection, or backend form submission. ## Trust And Pricing Posture Public copy remains conservative: - no customer-logo proof - no testimonials or third-party endorsement claims - no external assurance or certification claims - no uptime, recovery, or compliance guarantees - no fixed package access or instant payment claims - no live tenant data in static previews Static product previews are framed as static/demo/illustrative content and do not imply live Microsoft tenant access from the public website. ## Sitemap And Robots `robots.txt` points to: ```text https://tenantial.com/sitemap-index.xml ``` Generated sitemap coverage includes canonical rendered German and English routes and excludes redirect-only aliases. Route-specific metadata checks cover title, description, canonical URL, alternate language links, Open Graph URL, Open Graph locale, Twitter URL, and generated PNG social image metadata. ## Deployment Expectations Reviewer validation commands: ```bash corepack pnpm build:website WEBSITE_PORT=4321 corepack pnpm --filter @tenantatlas/website test:smoke git diff --check git status --short -- apps/platform ! rg "href=\"#\"|href=\\{\"#\"\\}|href=\\{'#'\\}" apps/website/src ``` The build produces static output in `apps/website/dist`. Deploy the website artifact only; no Laravel, Filament, database, queue, Sail, Microsoft Graph, or `apps/platform` deployment step is required for this feature. ## Review Evidence - Website build passed with existing Astro hints only. - Public routes smoke suite passed: 230 passed. - Interaction smoke suite passed: 10 passed, 4 intentionally skipped. - Integrated browser review opened `http://127.0.0.1:4321/` with German default navigation and the language menu showing `Deutsch` and `English`. - `git diff --check` passed. - Source placeholder href scan passed. - `apps/platform` scope check passed.