Found by the seat's site-wide audit of docs.objectos.ai on 2026-10-06, which built main @ b754364. Priority: P1 for the share card, P2 for the rest. Page titles are #167's and stay there. This card covers everything else in the head and the export.
Findings
Share card overflow
/og/docs/en/image.png, the index card, prints its 511-character description over the title, the divider and the brand line.
- About 15 English pages have descriptions over 130 characters (e.g.
build/ai-skills) and overflow the same way.
- Cause:
apps/docs/app/og/docs/[...slug]/route.tsx:30-33 passes the raw description.
Index description
/privacy and /terms
Internal note published
- The
{/* Naming, decided under #79… */} comment at resources/license.mdx:13-22 ships in /docs/resources/license.mdx, in llms-full.txt (around lines 11063-71) and in what Copy Markdown copies.
- Cause:
getLLMText (apps/docs/lib/source.ts:60) does not strip MDX comments.
Done looks like
- Share cards: the OG route clamps the description at a word boundary, about 120 characters with an ellipsis. Spot-render the index card and 3 long-description cards and look at them.
- Index: the
/docs meta description is a short form of 160 characters or fewer, and the full paragraph stays in the page body.
- The positioning gate's copy rule (a) must then compare the right string. Either add a short-description constant to
apps/docs/lib/positioning.ts that the gate checks, or have the gate compare the body.
- State the choice in the PR.
- Descriptions: the other over-long and generic descriptions are rewritten to 160 characters or fewer, English only. Siblings are not touched.
- Legal pages:
/privacy and /terms get generateMetadata, with title, description, canonical, alternates only for authored locales, and og:title. A footer link reaches both.
- Export:
getLLMText strips {/* … */} comments, pinned by a test.
- Gates: green.
Surface
apps/docs/app/og/**, apps/docs/app/[lang]/{privacy,terms}/page.tsx (metadata only), apps/docs/lib/source.ts, apps/docs/lib/positioning.ts, .github/scripts/check-positioning.mjs (rule (a) wiring only), the English frontmatter description: lines, and the footer component.
Order
After #294, because it touches the same legal page files. It can run before or after #167.
Generated by Claude Code
Found by the seat's site-wide audit of docs.objectos.ai on 2026-10-06, which built
main@b754364. Priority: P1 for the share card, P2 for the rest. Page titles are #167's and stay there. This card covers everything else in the head and the export.Findings
Share card overflow
/og/docs/en/image.png, the index card, prints its 511-character description over the title, the divider and the brand line.build/ai-skills) and overflow the same way.apps/docs/app/og/docs/[...slug]/route.tsx:30-33passes the raw description.Index description
/docsdescription is 511 characters (the full positioning paragraph, since docs: one positioning constant, one gate, ObjectOS as Cloud or Enterprise (PR 1 of #171) #293). A search snippet shows only the tagline and never reaches "ObjectOS"./privacyand/termsog:title, and the meta description is the 511-character site default.generateMetadata.Internal note published
{/* Naming, decided under #79… */}comment atresources/license.mdx:13-22ships in/docs/resources/license.mdx, inllms-full.txt(around lines 11063-71) and in what Copy Markdown copies.getLLMText(apps/docs/lib/source.ts:60) does not strip MDX comments.Done looks like
/docsmeta description is a short form of 160 characters or fewer, and the full paragraph stays in the page body.apps/docs/lib/positioning.tsthat the gate checks, or have the gate compare the body./privacyand/termsgetgenerateMetadata, with title, description, canonical, alternates only for authored locales, andog:title. A footer link reaches both.getLLMTextstrips{/* … */}comments, pinned by a test.Surface
apps/docs/app/og/**,apps/docs/app/[lang]/{privacy,terms}/page.tsx(metadata only),apps/docs/lib/source.ts,apps/docs/lib/positioning.ts,.github/scripts/check-positioning.mjs(rule (a) wiring only), the English frontmatterdescription:lines, and the footer component.Order
After #294, because it touches the same legal page files. It can run before or after #167.
Generated by Claude Code