Shareability + crawlability hygiene pass — one atomic <SiteHead> (OG/Twitter + canonical + JSON-LD), robots.txt, sitemap
task-shareability-crawlability-hygiene
Shareability + crawlability hygiene pass
The second P0 "Now" move of the visibility floor (DEC-0073) — the cheap, build-once table-stakes that the verified audit found absent on every surface (OG/Twitter cards absent everywhere, canonical absent on all SvelteKit routes, robots/sitemap/JSON-LD absent).
Scope
- One atomic
<SiteHead>(OG + Twitter cards + canonical + Organization/SoftwareApplication JSON-LD), fed from the landingbrand.meta*SSOT, applied across/,/board,/graph— the shared-chrome discipline (build once, not per page). - The same OG + JSON-LD into the
@dossier/docsHead.astrooverride. - A checked-in
robots.txt+ an app sitemap at the apex (packages/app/static/) with an AI-crawler allow-list. pnpm add @astrojs/sitemapin@dossier/docsand wire it for/knowledge/*.- One brand-true OG image (Recalibrate the Dossier brand identity — demote color, promote type + restraint + craft — then build the showcase landing).
Ground-truth correction (verified this session)
The audit claimed @astrojs/sitemap was "already in the lockfile." That is a transitive ghost — packages/site/package.json (the @dossier/docs package) declares only Starlight, the Vercel adapter, @dossier/design, @dossier/okf, @dossier/okf-view, fonts, and astro. It is NOT a declared dependency and must be added explicitly. Do not assume it is present.
Why a task, not a fix-in-place
A real multi-surface build (a shared head component, JSON-LD modeling, a static robots/sitemap, a sitemap integration, an OG image) requiring the Principal SvelteKit Engineer's, Astro Starlight Engineer's, and Principal UX Engineer's judgment — not a one-token hygiene fix. confidence: inferred (agent-derived from DEC-0073's named "Now" roadmap + the verified audit).
Board globbed before filing — no open task covered metadata/crawlability hygiene.