Skip to content

docs: edition layer — Editions group, three-path Start, editions badges, Reference summaries - #349

Merged
os-zhuang merged 3 commits into
mainfrom
claude/project-thread-ri8ilt
Oct 27, 2026
Merged

os-zhuang merged 3 commits into
mainfrom
claude/project-thread-ri8ilt

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Steedos · project thread

Fixes #343

Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么: 文档站加了一层“版本”:新增 Editions 分组(版本对比矩阵、License 迁入、Public Preview 说明);Quickstart 换成 Start 三条入口(Cloud / Community / Enterprise);每个英文页标注适用版本,页头显示徽章、侧栏显示图标;Reference 里五个框架语法页缩成“产品在哪用 + 几个例子”,完整语法链到 objectstack.ai。
  • 为什么改: 读者分不清哪页适用于云版、哪页只适用于自部署;语法大表在两个站重复维护。卡片范围是维护者定的,本 PR 照做。
  • 风险与回滚: 三个旧地址(/docs/quickstart、/docs/resources/license、/docs/extend-existing-systems)靠永久重定向承接,已在本地 workerd 预览实测落到新页;type-check 从此在英文页缺 editions: 时变红,写新页的人会被拦。回滚即 revert 本 PR,无数据或协议面。
  • 先看: ① apps/docs/source.config.ts 的 schema 函数(英文页必须带 editions:,译文页豁免);② apps/docs/scripts/check-frontmatter.mjs(fumadocs-mdx CLI 本身不校验 frontmatter,所以加了这一步,带活体反例自检);③ content/docs/editions/compare.mdx 的矩阵(无来源的格子写 n/d,未猜)。
  • 两分钟验证: 打开预览站 /docs/configure/runtime,应看到标题下“Available in: Community · Enterprise”两枚徽章,左侧栏该页右侧有两个小图标;访问 /docs/quickstart 应跳到 “Run ObjectOS Community locally”。
  • 需要你做的: 审批 AGENTS.md 新增的一行规则(受管面);批准后由席位落地。

What changes

Editions group (top level, after Architecture)

  • editions/compare.mdx — the matrix, columns Community / Cloud Free / Cloud Team / Enterprise. Every cell is a fact the card states or one this repository already states with a source; the rest read n/d with a legend, and are listed under open questions below.
  • resources/license.mdx → editions/license.mdx (rename, redirect).
  • editions/public-preview.mdx — data durable, APIs may change, no SLA yet.

Start group (replaces Quickstart)

  • start/cloud.mdx — sign up, organization and slug, production environment, first app (AI Builder or template), invite members.
  • quickstart.mdx → start/community.mdx, retitled "Run ObjectOS Community locally", intro rewritten (rename, redirect).
  • start/enterprise.mdx — points into Deploy.

editions: on every English page

  • New frontmatter key, a non-empty list of community, cloud, enterprise (apps/docs/lib/editions.ts). Required on English pages, optional on *.<locale>.mdx.
  • Rendered as a badge row under the page description (components/editions.tsx, linking to Compare Editions in the route's locale) and as an icon mark in the sidebar and mobile drawer (app/[lang]/docs/layout.tsx). A group whose pages share one non-all set is marked once on the group. The mark is aria-hidden; the badge row is the accessible statement.
  • Values: Deploy and Operate are [community, enterprise]; Configure runtime, data-sources, storage are [community, enterprise]; the rest of Configure is all three, as the card says. Beyond the card: reference/environment-variables is [community, enterprise] and build/ai-builder is [cloud, enterprise] (both follow from pages this repository already has). Tally: 64 all three, 15 community+enterprise, 2 cloud, 1 cloud+enterprise, 1 community, 1 enterprise (84 English pages).
  • type-check now fails on an English page without the key: next typegen && fumadocs-mdx && tsc --noEmit && node scripts/check-frontmatter.mjs.

Reference

  • rest-api, objectql, cel, field-types, skills-cli shrink to where ObjectOS uses the format plus examples. Each opens with the same first line: **Full specification:** [… on objectstack.ai](…). This page is the summary: where ObjectOS uses it, and a few examples. Anchors other pages link to are kept; code samples kept are byte-identical.
  • environment-variables, cli, security, runtime-capabilities unchanged.
  • AGENTS.md: one rule line in the Don't list (no syntax tables; link the specification).

Moves and links

  • extend-existing-systems.mdx → build/extend-existing-systems.mdx (rename, redirect).
  • Every docs.objectstack.ai link now points to objectstack.ai/docs/...; each target page and anchor checked against the objectstack repository's content/docs.
  • Locale siblings of the three shrunk pages that had translations (field-types, objectql, skills-cli) are deleted in all locales; gen-zh-hant removed the zh-Hant copies. No *.<locale>.mdx was edited.
  • ui-text: one new key, editionsLabel ("Available in"), with values in the six locale JSONs (precedent: the app-chrome keys of earlier PRs); zh-Hant.json regenerated.

Tests

  • type-check is the enforcement. Measured before the keys were added: 80 of 214 pages failed it. The check carries a live negative control: it writes a temporary English page without editions: and exits 1 as NOT MEASURED if that page validates. Probes also confirmed an unknown value, a duplicate and an empty list are refused, and a locale file without the key passes.
  • smoke-docs.mjs: the /docs/quickstart target is now a redirect assertion, landing on /docs/start/community with H1 "Run ObjectOS Community locally".

Acceptance notes

  • Redirects live in apps/docs/next.config.mjs. The card names apps/docs/redirects.mjs, which is the objectstack repository's file; here the moved table in next.config.mjs is where every redirect already lives.
  • Outside the claimed file surface: .github/scripts/smoke-docs.mjs (its quickstart target would otherwise fail post-deploy) and README.md (two License links to the new URL).
  • AGENTS.md's Commands line still spells type-check as three steps; it is left for the maintainer so this PR adds exactly one governed line.
  • Locale meta.<l>.json files are untouched (English only): locale sidebars still list license under Resources and do not yet list extend-existing-systems under Build, until the translation pass. The pages themselves resolve.
  • Unsourced facts are n/d, not guessed: Enterprise storage; development environments on Community, Team, Enterprise; MCP limits on Team; record- and field-level security on Team; where the storage quota is enforced; the Cloud sign-up URL and the welcome flow's button names in start/cloud.mdx; Business SSO details.

Verification

All of ci.yml's steps, run locally in the foreground at 7c399fb, exit codes captured before any pipe.

Gates — all exit 0
Step Exit Reading
gen-zh-hant --check 0 43 files match
check-doc-samples 0 99 pass (@objectstack/spec 17.7.0)
type-check 0 frontmatter valid on 197 pages, negative control refused
build 0
check-locale-surface 0
check-positioning 0
check-search-locales 0
turbo test 0
check-translations 0 84 English, 113 translations
check-translation-ownership 0 21 translation artifacts deleted, none added or modified
OpenNext packaging 0
smoke-docs.mjs on the workerd preview 0 4 pages, negative control red, search in 8 locales
Browser check (Playwright, 1440 and 390)
  • Every page answered 200 with no console errors and no horizontal scroll at 390.
  • The edition mark shows only in the sidebar and the mobile drawer, never in the breadcrumb or the previous/next footer.
  • Badge links follow the route locale (/ja/docs/editions/compare).
  • /docs/quickstart, /docs/resources/license, /docs/extend-existing-systems and /ja/docs/quickstart each land on the new page with 200.
Line budget

130 files changed, +1051 / −4536. The Reference summaries are −4443 of that (content/docs/reference/**, 30 files including the deleted locale siblings).

🤖 Generated with Claude Code

https://claude.ai/code/session_01QsR2jU9jZVmgYGkkQEtDwx

…es, Reference summaries

Every English page declares the ObjectOS editions it applies to
(`editions:` frontmatter), rendered as a badge row under the title and a
mark in the sidebar; type-check refuses an English page without it,
through the same fumadocs-mdx loader the build validates with.

A top-level Editions group (compare matrix, License & Pricing moved from
Resources, Public Preview) and a Start group (Cloud, Community — the old
Quickstart — and Enterprise) replace the single Quickstart entry, with
permanent redirects for every moved URL. Extend Existing Systems moves
under Build. The five framework-syntax Reference pages shrink to where
ObjectOS uses the format plus a few examples, each linking its full
specification on objectstack.ai, and docs.objectstack.ai links become
objectstack.ai/docs.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QsR2jU9jZVmgYGkkQEtDwx
The mark sat inside each entry's link, so its screen-reader text became
part of the link name: English product nouns inside a localized title,
which the locale-surface gate refuses. The mark is now visual only
(aria-hidden, names in a tooltip); the badge row under each title is the
accessible statement of a page's editions. A group's mark also lines up
with its pages' marks instead of floating mid-row.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QsR2jU9jZVmgYGkkQEtDwx
type-check now ends with scripts/check-frontmatter.mjs, which fails any
English page without a valid editions: key; the Commands line quoted the
old three-step command.

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

Copy link
Copy Markdown
Contributor Author

维护者速读

  • 改了什么: 文档站加了一层“版本”。新增 Editions 分组:版本对比矩阵、License 迁入、Public Preview 说明。Quickstart 换成 Start 的三条入口(Cloud / Community / Enterprise)。每个英文页标注适用版本,页头显示徽章,侧栏显示图标。Reference 里五个框架语法页缩成“产品在哪用 + 几个例子”,完整语法链到 objectstack.ai。
  • 为什么改: 读者分不清哪页适用于云版、哪页只适用于自部署;语法大表也在两个站重复维护。范围由维护者在卡 Edition layer: a top-level Editions group (feature matrix by Community / Free / Team / Enterprise), a three-path Start, editions: badges on every page, and the five framework-reference pages collapsed to summaries #343 定,本 PR 照做。
  • 风险与回滚: 三个旧地址(/docs/quickstart、/docs/resources/license、/docs/extend-existing-systems)用永久重定向承接,上线前的 workerd 渲染冒烟已改成断言 /docs/quickstart 落到新页。type-check 从此在英文页缺 editions: 时变红。回滚 = revert 本 PR,不涉及数据或协议。
  • 先看: content/docs/editions/compare.mdx 的矩阵(无来源的格子写 n/d,没有猜),然后是 AGENTS.md 的两行改动。
  • 两分钟验证: 本地 pnpm --filter @objectos/docs dev,打开 /docs/configure/runtime:标题下应有 “Community · Enterprise” 两枚徽章;再访问 /docs/quickstart,应跳到 “Run ObjectOS Community locally”。
  • 需要你做的: 请 os-zhuang 或 hotlong 批准本 PR(AGENTS.md 是受管面,且改动超过 3000 行)。批准后由席位落地。

席位意见: 建议批准。矩阵里的价格、AI、支持各格都出自现有 License 页,存储 1 GB / 20 GB、Free 无开发环境、MCP 限额、自有域名、RLS/FLS 出自卡片原文。其余格子写 n/d,等 cloud 侧确认后另卡补齐(本项目读不到 cloud 仓)。#348 也改 AGENTS.md,两者位置不同;席位一次只落一个,等前一个上线冒烟通过再落下一个。

席位核对 · ACCEPT · 2026-10-27T13:48Z · session_01QsR2jTaZ2GeyfjANMwstiw · seat repo:docs.objectos.ai#1

  1. Shape. Draft PR against main, head 19b4ea4, 130 files +1052/−4537. The body's first card line is Fixes #343. Clause-②: no and Metadata-protocol: none match claim 6442674373. One patch round, requested by the seat: the AGENTS.md Commands line now quotes the four-step type-check. The body's Acceptance note saying that line "still spells type-check as three steps" is stale as of 19b4ea4. This record supersedes it.
  2. Premise. The card was measured at c622daa, and origin/main is still c622daa. Matrix facts, seat-checked: price, in-UI AI, governance, clustering/SCIM/air-gap and support rows trace to resources/license.mdx on main. SSO on Community traces to configure/authentication.mdx ("Enterprise OIDC/SSO"). Storage, the Free dev environment, MCP limits, custom domain and RLS/FLS are the card's own statements. Other cells read n/d and are in open_questions.
  3. Gates, check-runs at head 19b4ea4. build success (run 40514663713; it runs the type-check with the new frontmatter check, the build, the Worker bundle budget and the local workerd render smoke) · Ownership & freshness success (run 40514663635) · Node floor success · Deploy docs skipped (PR event). Dev-local, at 7c399fb: all ci.yml steps exit 0. Playwright at 1440 and 390: screenshots are in the project's docs-343/ folder.
  4. Accepted deviations. .github/scripts/smoke-docs.mjs (the moved quickstart target) and README.md (license link) are outside the claimed surface. Both follow the card's renames and are named in the body. The type-check enforcement is a new apps/docs/scripts/check-frontmatter.mjs with a live negative control, because the fumadocs-mdx CLI does not validate frontmatter: the PM hypothesis, measured false. Redirects live in next.config.mjs, since redirects.mjs does not exist. One ui-text key appears in six locale JSONs; this is UI chrome, not page translation. Locale meta.*.json files are untouched.
  5. Locale rule. 21 sibling deletions, field-types / objectql / skills-cli × 7 locales: rewritten pages that no longer assert the old syntax tables (AGENTS.md rule 3). cel, rest-api, quickstart, license and extend-existing-systems had no siblings. Translation ownership check: success.
  6. Out of scope / landing. Open questions for the maintainer: the n/d cells, where storage is enforced, the Cloud sign-up URL ([Decision] Where does "Get started" go? Neither site has an ObjectOS Cloud signup URL, so every plan CTA loops www → docs → www www.objectos.ai#215) and Business SSO. They go to a follow-up card once cloud facts are readable. Out-of-scope findings: none filed (stale quickstart mentions in code comments only). Tier H (AGENTS.md, and over 3000 lines): the PR stays draft. needs-user-decision is added and review is requested from GOVERNED_APPROVERS in the same stroke. After an authorized approval, the seat lands it by squash merge pinned to the approved head, one PR at a time with chore(upstream): pin objectstack and cloud, and a bump-upstream-docs workflow that lists the upstream diff since the last pin #348, each after the previous main deploy smoke-checks green (#9831 §6). Cloud organization layer: write the organization, environments, plans & AI seats, credits, storage, domains, app install/publish and Cloud Connection pages — today 0 pages on this site #344, Deploy and Operate become one self-managed handbook for Community and Enterprise: each page written once, "Enterprise adds" sections for the private image and license, plus Licensing and Business Self-Managed vs Enterprise pages #345 and Use and Build gap pages from the product definition: search & command palette, files & attachments, import, discussions & share links, reports & datasets, Ask & Build with AI, AI models & limits #346 dispatch after this lands.

@os-zhuang
os-zhuang marked this pull request as ready for review October 27, 2026 14:09
@os-zhuang
os-zhuang added this pull request to the merge queue Oct 27, 2026
Merged via the queue into main with commit d1d6a3e Oct 27, 2026
4 checks 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

3 participants