/** * PageDocument — the unified page-level contract for every page in a Grove * project. A `PageDocument` declares the page's identity, its rendered * metadata (title, description, OG, Twitter), the JSON-LD nodes it wants * emitted, and its discovery profile (sitemap, llms, related links). * * Everything the framework renders in `` (title, description, * canonical, OG, Twitter, JSON-LD) is derived from this single model. * `definePageDocument` is the canonical constructor — it validates the * invariants (title present, OG URL matches canonical, etc.) so callers * can't accidentally construct a malformed document. * * The JSON-LD registry (`siteSchema`, `collectionSchema`, `recordSchema`, * `contentSchema`, `buildJsonLd`) is a small blueprint layer: each schema * function takes a typed input and returns the JSON-LD node graph the * consumer serializes into `