<!-- source: openspec/current/home/narrative.md -->

---
title: Home — Narrative
status: stable
owner: pavel
audience: [pavel, ai, engineer]
tldr: Why the homepage exists and what it is — the top-of-funnel conversion surface, its block arc, and related capabilities.
---
# Home — narrative

> Per-block contract for the homepage at `/`. Sits below `web.md § Page contracts › /` and above the React components in `apps/web/src/components/home/`. Describes intent, content shape, behavior, and constraints — not literal copy. Marketing-page copy lives in `packages/i18n/messages/<locale>/web.json` (one of two i18n namespaces; chrome strings ship in `common.json`).
>
> **Translation-key notation in this spec.** Keys are written **catalog-relative** — the namespace is the file split, not part of the key. `home.hero.eyebrow` lives at `web.json` → `home.hero.eyebrow`; `nav.work` lives at `common.json` → `nav.work`. Each block's § Localization section names which namespace its keys come from. At runtime, components scope via `getTranslations("home.hero")` (which next-intl resolves under the `web` namespace because of the `messages: { common, web }` shape returned by `apps/web/src/i18n/request.ts`); the catalog files themselves contain no `web.` or `common.` wrapper.

---

## What this capability is

The homepage is the studio's top-of-funnel conversion surface. Twelve visible blocks composed in a fixed narrative arc — `Hero`, `WhatWeBuild`, `HowWeWork`, `Services`, `NowBuilding`, `ConnectedStack`, `OperatingModel`, `FounderNote`, `ForFounders`, `ForLegacy`, `TheNetworkAndCommunity`, `ClosingCTA` — move a qualified visitor from "what is this?" to "I have a brief, here it is" in under three minutes of reading. A conditional thirteenth (`LabPreview`) mounts when `/lab` has at least one published article; `Nav` and `StickyCTA` are chrome / overlays and do not count. See `flows.md § Page narrative arc` for the diagram.

This document describes what each block is for, what it must contain, how it must behave, and what it must NOT do. Block-level changes (new section, removed CTA, different motion) require an edit to this file and should be reviewable as a unit.

For routing, SEO metadata, intake-form mechanics, and the Cloudflare Worker target — see `web.md`. For visual tokens, animation primitives, and brand voice — see `design-system.md`. For component implementations — see `ui.md` and `apps/web/src/components/`.

---

## Related capabilities

- `web.md` — page contracts, routing, SEO, intake mechanics.
- `design-system.md` — visual tokens, animation primitives, brand voice.
- `ui.md` — `@rapoport-studio/ui` component implementations (TacticalFrame, etc.).
- `i18n.md` — locale routing and message catalog convention.

---

## Sync home arc with RAP-1190 (applied 2026-05-24 from change `sync-home-arc-with-rap-1190`)

`§ What this capability is` rewritten to enumerate the ratified arc by name and to flip the block-count line from "eleven blocks" to "twelve visible blocks + one conditional `LabPreview`". This closes the Phase 9 corpus debt left by `archive/2026-05-23-fix-home-trust-blocks-and-narrative/` (RAP-1190), which shipped the page rewrite but did not produce the file edits this phase enumerated. `WhoWeWorkWith` and `BuildOnPlatform` are no longer on the page per `D-HTN-6` / `D-HTN-7` in that archive; `FounderNote` is the only new block from RAP-1190 (`D-HTN-5`); `ForLegacy` (pre-existing from RAP-673) is codified here as the 12th visible block (`D-SHA-2`); `LabPreview` is codified as a conditional mount that does not count toward the visible-block invariant (`D-SHA-1`).

Cross-ref: `archive/2026-05-24-sync-home-arc-with-rap-1190/`. Parent change: `archive/2026-05-23-fix-home-trust-blocks-and-narrative/`. Linear: RAP-1190 Phase 9 follow-up.
