Skip to content

site: Developers nav to objectstack.ai, the ObjectOS Community line on the homepage, four framework posts imported under their original slugs - #288

Merged
objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-286-developers-nav-community-line-blog-import
Oct 27, 2026
Merged

objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/issue-286-developers-nav-community-line-blog-import

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #286

This repository's half of the product-site / developer-site split (maintainer ruling 2026-10-26: www.objectos.ai is the ObjectOS product site and hosts the one blog; objectstack.ai is the developer site). The objectstack.ai half is objectstack-ai/objectstack#26140, whose blog redirects wait for the four slugs below.

What changed

Navigation (src/components/Header.astro, src/layouts/Base.astro, src/lib/i18n.ts): the Developers menu and the footer now carry both documentation sites, labelled by role — "Product docs" → docs.objectos.ai and "Developer docs & protocol" → https://objectstack.ai — in all eight locales (zh-Hant derived through s2t, as the rest of the UI strings are). The old generic siteNav.docs key is retired; nothing else read it.

Homepage (src/lib/positioning.ts, src/components/MarketingHome.astro): E1, the edition clause, now names the three ObjectOS editions — Community (open source, free to self-host), Cloud (hosted in the browser, nothing to install) and Enterprise (self-managed on your own infrastructure) — and keeps the portability promise ("on every edition you can export your ontology and run it on another"). The protocol is named once, as the secondary link under the lead: "Built on the open ObjectStack protocol →" → https://objectstack.ai (OBJECTSTACK_URL, exported from positioning.ts so header, footer and hero share one spelling). English plus the six authored locales (zh-Hans, ja, de, es, fr, ko); zh-Hant stays derived. E1 also feeds /llms.txt, which updates with it. T1–T4 (the README quotes) are untouched; no #209 positioning copy was changed.

Blog import (content/blog/<slug>/): the four framework posts from objectstack-ai/objectstack content/blog/ land under their original slugs and dates, canonical on this site (the layout's default canonical is the page's own URL; no canonical_url is set):

Slug date topic / audience
the-ontology-is-the-software 2026-10-05 ai-agents / general
context-window-is-the-constraint 2026-07-17 ai-agents / developer
metadata-driven-architecture 2024-01-20 app-building / developer
protocol-first-development 2024-01-22 app-building / developer

Frontmatter was mapped to this site's schema (topic, audience, status, cover, freeform tags from the site's existing vocabulary). Bodies are verbatim except: /blog/<slug> links → /en/blog/<slug>/; /docs/... links → https://objectstack.ai/docs/... (all five targets exist under objectstack content/docs/); "In this documentation:" → "In the ObjectStack documentation:" in the ontology essay's further-reading line, since the referent moved. The ontology essay's four JSX figures (OneDefinitionFigure, OntologyRunsFigure, ThreeInterfacesFigure, ThreeRoutesFigure from apps/docs/components/figures/) are ported to static *-en.svg files with their captions as alt text, in this site's palette; each post gets a cover-en.svg. The ontology essay's description was shortened from 257 to 221 characters for the site's 230-character rule; titles are the originals (two 2024 titles exceed the 60-column search-snippet warning, which is a warning and is summarised, not listed, for posts dated before 2026-10-06).

English-only: AGENTS.md's Localization section requires nothing for an English post (translations are authored, zh-Hant is generated from zh-Hans), and the source posts have no translations, so no locale siblings were written.

Why

Both homepages opened with the same hero and both sold; a visitor could not tell which one to buy from, and two pages with one text split search weight. After this PR the product site names three editions and one protocol instead of two products, routes developers to objectstack.ai from the nav and footer, and is the one place the framework posts live.

How verified

All at source level — the live sites are not reachable from the build container.

  • pnpm content:lint → exit 0 (✓ content lint passed (363 files, 46 glossary terms checked)); warnings only on pre-existing posts.
  • node scripts/svg-text-fit.mjs on the eight new SVGs → exit 0 (8 SVGs, 152 text boxes ... OK).
  • Under the shared verify lock: pnpm check → VERDICT command-exit 0 (Result (160 files): 0 errors, 0 warnings, 0 hints); pnpm build → VERDICT command-exit 0 (928 page(s) built; share images: 99 rendered; content lint --dist links passed (100395 internal links in 928 built pages resolve to built files)), run at 2838815 (the final head; the first lock run at 308771c had the same source apart from the hero-link CSS and one SVG canvas size).
  • Built output: dist/en/blog/<slug>/index.html exists for all four, each with <link rel="canonical" href="https://www.objectos.ai/en/blog/<slug>/">, no noindex, and datePublished equal to the original date; dist/en/index.html contains the three-edition E1 and exactly one body link to objectstack.ai (the other three href="https://objectstack.ai" on the page are the desktop nav item, the mobile drawer item and the footer); every locale's home carries the translated "Developer docs & protocol" label.
  • Browser check (headless Chromium against dist/): home at 1366×625, 1440×750, 1920×945, 390×844, 360×800 (en) and 1440×750 (ja); the ontology essay at 1440×750 and 390×844; the blog list at 1440×750; the eight SVGs at native size. One defect found and fixed before this PR: the protocol link first rendered left-aligned on desktop and above the eyebrow on phones (the hero's phone layout reorders children with order); it now centres and takes the lead's order.

Clause-②: no
Metadata-protocol: none

Acceptance notes

  • Nav: the header already had a "Developers" group (Agent guide, Docs, GitHub, Templates); the card's "Developers entry → objectstack.ai" is the new item inside it, beside the renamed "Product docs", rather than a second top-level entry — the group label was already the right word and a second one would have duplicated it. Say so if a top-level link was wanted instead.
  • Cadence: the imports keep their original dates (two in 2024), so they take no publishing slot; content-lint --published accepted them.
  • docs.objectos.ai quotes the previous E1 verbatim (apps/docs/lib/positioning.ts, content/docs/index.mdx, compared by its own check:positioning gate, which does not read this repository). Until Edition model: ObjectOS is one product in three editions — Community (open-source runtime, free), Cloud, Enterprise; ObjectStack is the protocol and SDK. Rewrite README, Editions, License & Pricing, TRADEMARK.md (ruling 2026-10-26) docs.objectos.ai#338 restates it there under the same edition model, the two sites' E1 differ; the maintainer's 2026-10-26 ruling is the source for both.
  • Still saying "open-source ObjectStack" on the home page, outside this card's scope (positioning copy, Adopt objectstack's 2026-10-03 positioning across www.objectos.ai: copy changes, five posts, an update sweep #209): src/lib/home.ts proof[3] ("Export your ontology, run it on open-source ObjectStack"), aiCopy, the AI Builder / AI Ask cards and the data-residency item. Under the edition model those read as the Community edition; not changed here.
  • The four source posts stay in the objectstack repository until objectstack#26140 lands its redirects; the channels field was left empty rather than recording objectstack.ai URLs that will shortly redirect back here.
  • The two 2024 posts open with the editor's note the source carries ("predates the project's current positioning"); kept as is.
  • Browser verification covered the viewports AGENTS.md lists for en, plus ja at 1440×750; the remaining locales were checked for the strings in the built HTML, not screenshotted.

Generated by Claude Code

os-zhuang and others added 2 commits October 26, 2026 14:21
…four framework posts imported

Navigation: the Developers menu and the footer carry both documentation
sites labelled by role — "Product docs" (docs.objectos.ai) and
"Developer docs & protocol" (objectstack.ai) — in every locale.

Homepage: E1 now names the three ObjectOS editions (Community: open source
and free to self-host; Cloud; Enterprise) and keeps the portability
promise; the protocol is named once, as the secondary link under the lead
("Built on the open ObjectStack protocol" -> objectstack.ai). English and
the six authored locales; zh-Hant stays derived.

Blog: the four framework posts from the objectstack repository land under
their original slugs and dates (2024-01-20, 2024-01-22, 2026-07-17,
2026-10-05), canonical here, with covers and the four figures of the
ontology essay ported to SVG; /docs links point at objectstack.ai.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FMuBZmssbfQkVrKRtxNvng
…ones

Headless Chromium against dist/ showed the new link left-aligned in the
centred hero on desktop and above the eyebrow on phones, where the hero's
phone layout orders its children explicitly. The link now centres itself
and shares the lead's `order`. The ontology-runs figure's canvas is
trimmed to its content.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FMuBZmssbfQkVrKRtxNvng
`pnpm seo:smoke` (CI, after the build) rejects a link to the bare site
root, which this site serves as a language redirect. The essay now links
the home page the way the other posts do.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FMuBZmssbfQkVrKRtxNvng
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT (landing by the maintainer) · 2026-10-26T14:59Z · session_01FMuBZmssbfQkVrKRtxNvng (maintainer-directed seat, card #286)

  1. 形态 — draft PR against main, head bf0cf5c (3 commits), 17 files +2320/−23, all inside the claim's file surface (6417931434): Header.astro, Base.astro, i18n.ts, positioning.ts, MarketingHome.astro, four content/blog/<slug>/ folders (index.mdx + covers + four figure SVGs); body first line Fixes #286; Clause-②: no / Metadata-protocol: none at line start, copied from the claim; no label (this repository has no claim guards; the relay refuses an empty label list, see 4b); assignee os-zhuang.
  2. 前提实测 — re-read by the seat on bf2d68a and by the dev at report time: P2 (header links docs.objectos.ai + GitHub only) held, with the nuance that a Developers group already existed; P3 (no folder for any of the four slugs) held; P1 (live-site hero) not reachable from the container, replaced by src/lib/positioning.ts:24. Diff read by the seat: Developers menu and footer carry both documentation sites by role in eight locales (siteNav.docs retired, no other reader); E1 names Community / Cloud / Enterprise and keeps the export promise, protocol named once as the secondary hero link via OBJECTSTACK_URL (one spelling for header, footer, hero); the four posts keep their original slugs and dates (2026-10-05, 2026-07-17, 2024-01-20, 2024-01-22), canonical here, /docs/... links re-pointed to objectstack.ai/docs, JSX figures ported to static SVG with captions as alt text. Patch round bf0cf5c: one line, the ontology essay's bare site-root link → /en/; git grep of the four imported folders at bf0cf5c finds no remaining bare https://www.objectos.ai link.
  3. 门禁 check-runs (head bf0cf5c): Build and deploy (cloudflare-pages.yml, the one CI family here) success, 14:52:26–14:54:22Z — after red on 2838815 at pnpm seo:smoke ("internal link https://www.objectos.ai — is the root language redirect"), fixed by the patch above. Dev's local union, hand-derived from package.json (objectstack's dispatch-gates.mjs refuses a sister-repo verdict): pnpm content:lint exit 0 (363 files), node scripts/svg-text-fit.mjs exit 0 (8 SVGs, 152 text boxes), pnpm check VERDICT command-exit 0 at 308771c, pnpm build VERDICT command-exit 0 at 2838815 (928 pages, 100395 internal links resolve), rebuild at bf0cf5c VERDICT command-exit 0 (928 pages) and pnpm seo:smoke exit 0 on that dist ("SEO smoke test passed, 918 HTML pages, 100385 internal links redirect-checked"), per the dev's second report 6419240801. Browser check against dist/ at the AGENTS.md viewports (en) plus ja and zh-Hans samples; one layout defect (protocol link alignment on phones) found and fixed in 2838815.
  4. 接受的偏差 — (a) general-purpose subagent under os-dev.md (os-dev agent type not loaded in this thread, as the claim records); (b) relay dry-run refused labels: [] on pr_create — key omitted, no label sent, zero writes lost; (c) PR body carries two angle-bracket placeholders, stored byte-identical, body not patched; (d) pnpm check not re-run on the final heads — the deltas are a CSS block, one SVG canvas size and one MDX link, accepted as narrowing; (e) one lock-queue timeout (exit 99, sibling cli vitest run) re-measured on the same slot; (f) live sites unreachable from the container, P1/P2 read at source; (g) one patch round for the CI failure, same dev, one line.
  5. 范围外去向 — open question 1 (nav placement) accepted as A: the objectstack.ai item lives inside the existing Developers group beside Product docs; no new top-level surface. Open question 2 (docs.objectos.ai E1) ruled A: docs.objectos.ai#341 adopts this E1 and the protocol-link label byte for byte — scope note posted there in this stroke. src/lib/home.ts "open-source ObjectStack" (6 lines) → Adopt objectstack's 2026-10-03 positioning across www.objectos.ai: copy changes, five posts, an update sweep #209 / Site changes for the ObjectOS Cloud launch: primary CTA and pricing buttons to cloud.objectos.ai, Cloud and Sign-in entries in the navigation, merged on launch day #287, noted not filed. objectstack.ai redirects for the four slugs → docs(site): objectstack.ai becomes the developer site — one-line positioning, start command, docs entry points, "Run it" strip; blog redirects to objectos.ai objectstack#26165, held until this PR merges. Relay pr_create empty-labels trap → the seat's own dispatch template, fixed there.
  6. 落地条款 — sister repository: no governed-path list, check-governed-merges.mjs does not answer here; the PR flips ready in this stroke via the relay. This repository has allow_auto_merge off and no branch protection on main, so the relay's automerge_enable cannot land it (same reading as docs.objectos.ai#339): the maintainer merges by hand, or enables auto-merge + protects main with Build and deploy required, after which this seat lands it through the relay. Landing order unchanged: this PR first, then objectstack#26165 (its blog redirects target https://www.objectos.ai/en/blog/<slug>/, which exists only after this merge).

Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 26, 2026 15:00
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 26, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to no response for status checks Oct 26, 2026
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 27, 2026
Merged via the queue into main with commit 657a634 Oct 27, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant