Repository navigation
content(pages): add the /ontology/ pillar and /compare/ with a "when not to use it" section - #258
Merged
Merged
Conversation
…not to use it" section Two marketing pages, en and zh-Hans (the Chinese re-derived from the objectstack sources, not translated), zh-Hant derived at build time by the registry. /ontology/ explains the positioning line: the six-kind core, the four projections, the four guardrails on the word, and the mechanism behind each of the four promises. /compare/ sets ObjectStack beside the five categories of objectstack's compare page, keeps its concessions, carries the "not a fit today" list from when-to-use, and links the site's comparison posts under their category. Wiring: nav entry first under Product > Evaluate; the home positioning section links to /ontology/; the home #compare chips and link go to /compare/; llms.txt lists both through the registry. The marketing table takes an optional heading (the side-by-side comparison is not a decision surface) and page-module links to blog posts localize where the post exists in the locale. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017GeNDQH7E5S2rX8ajVAPxv
The pipeline diagram's 72-character lines were cut off at 360 and 390 px (the block scrolls, but the right-hand comments were out of view). Every line is now at most 44 characters, so the diagram fits a phone without a horizontal scroll. en and zh-Hans. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017GeNDQH7E5S2rX8ajVAPxv
Contributor
Author
席位核对ACCEPT —
Accepted deviations: the template's optional table eyebrow and title; locale-aware post links (localized only where that locale's post is built); the Follow-ups:
Landing: ready, then squash by the seat. Merge publishes, so the seat follows the change to the deploy run and a live probe. Generated by Claude Code |
os-tesla
pushed a commit
that referenced
this pull request
Oct 16, 2026
… claude/sharp-mendel-1087cg-issue-233 Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017GeNDQH7E5S2rX8ajVAPxv
os-tesla
pushed a commit
that referenced
this pull request
Oct 16, 2026
…pare/ pages; llms.txt Articles line leaves "AI-native" Patch round on #233's review: `pageSlugs` of the `ontology` term (en, zh-Hans) now lead with the two pages #258 added on main; the llms.txt Articles entry describes the blog in the ontology framing. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017GeNDQH7E5S2rX8ajVAPxv
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #235
What this adds
Two marketing pages, authored in English and Simplified Chinese (the Chinese re-derived from the objectstack sources, not translated from the English page), Traditional Chinese derived at build time by the registry's s2t pass, and the other five locales served the English body under the existing fallback rule (noindexed, canonical to
/en/)./[lang]/ontology/— the pillar for the positioning line: the six-kind core, the four projections, the four guardrails on the word, and the mechanism behind each of the four promises. H1 is T1, the lead opens with T2, both read fromsrc/lib/positioning.ts./[lang]/compare/— ObjectStack beside the five categories of objectstack's compare page, with its concessions kept ("Where the others are stronger"), a "When not to use it" section carrying the "Not a fit today" list fromwhen-to-use.mdx, the side-by-side table compressed to the template's three columns, the five questions as the review checklist, and the site's own comparison posts under the category each product falls in.Links:
Ontologyis the first entry under Product → Evaluate in every locale (siteNav.ontology, seven authored labels, zh-Hant derived); the home positioning section carries a text link to/[lang]/ontology/; the home#comparechips go to/[lang]/compare/#in-depth(where each named product's post sits) and the section's "Read the comparison" link to/[lang]/compare/;llms.txtlists both pages under Primary Pages through the registry (no edit tosrc/pages/llms.txt.tswas needed — the registry is the producer), withontologyfirst andcompareafterplatforminPAGE_ORDER.Sources, line by line (objectstack
origin/main1ecb08a1)O=content/docs/concepts/ontology.mdx,C=content/docs/concepts/compare.mdx,W=content/docs/concepts/when-to-use.mdx,R=README.md,P=src/lib/positioning.tson this repo./ontology/
t1,t2,t4,e1, quoted.abstractremoved, ADR-0049 O 47–48); semantic layer O 49–53; formal ontology O 56–57; code moves into the runtime O 75–79 and R 87–89. Projections are the preceding section.t3[0..3]quoted; Executable O 68–73; AI-writable O 85–91 and R 184–189; Agent-operable O 95–98 and R 163–167; You own it O 27–29, R 208–212 (Apache-2.0, "no open-core asterisks"), R 221–222 (container-ready). Mechanism only — no export claim;docs/NORTH-STAR.md:96lists whole-ontology export as unverified./compare/
t2quoted. Hero line is C 11 ("ObjectStack is none of the five").·between (the template's table is three columns wide); column headers quote Pt3.t4,e1.Mechanism measured (PM assumption)
A new page is one module per authored locale under
content/pages/{en,zh-Hans}/withslugequal to the file name; the registry globs the tree, derives zh-Hant withdeepS2t, andgetMarketingPagefalls back to English for the rest. No per-page registry entry exists;PAGE_ORDERonly orders. Verified in the build:/zh-Hant/ontology/renders the converted copy and is self-canonical;/ja/compare/carriesnoindex, nofollowand canonical/en/compare/;seo:smokeasserts the hreflang set per locale. The compare page's categories and concessions are as incompare.mdxlines 14–86 and 101–117 at 1ecb08a1.Two small changes outside the declared file surface, and why
src/content-pages/types.tsandsrc/components/MarketingEvidencePage.astro:MarketingPageTabletakes an optionaleyebrow/title. The template's table heading is the fixed "Decision surface — What changes, who reviews it, what runs"; over a side-by-side category comparison that heading is wrong. The ontology page keeps the default.src/components/MarketingEvidencePage.astro,localizeHref: a page-module link of the form/en/blog/SLUG/is localized to the reader's locale when that locale's post is built, and left on the English post otherwise (the same conditional rule as content-lint's cross-locale check and gen-zh-hant's rewrite). Without it the zh-Hans and derived zh-Hant compare pages would send readers to English posts that exist in their language. Measured in dist: zh-Hans →/zh-Hans/blog/…for seven posts and/en/blog/…for the two English-only ones; zh-Hant →/zh-Hant/blog/…; ja (fallback body) →/en/blog/….src/lib/i18n.ts: the nav label producer issiteNav, not the page module (every nav label on the site is an i18n string), sositeNav.ontologywas added in the seven authored locales;src/components/MarketingHome.astrois the producer of the chip hrefs (compareLinks) and the positioning-section markup, so the retarget and the new link live there, withpositioningLinklabels insrc/lib/home.tsfor seven locales.No
content/glossary/**file was touched (#233 holdscontent/glossary/*/ontology.ts); the glossary →/ontology/link is a follow-up for the seat.Gates (head fb40251)
pnpm content:lint— exit 0 —✓ content lint passed (347 files, 44 glossary terms checked). The 12 snippet-width warnings printed are oncontent/blog/what-does-the-ontology-is-the-software-mean/(landed in content(blog): what "the ontology is the software" means — post 1 of the positioning wave (slot 2026-10-15) #212), not on files this PR touches.pnpm content:lint --published— exit 0 — same verdict line.pnpm check— exit 0 —Result (158 files): 0 errors, 0 warnings, 0 hints.pnpm build— exit 0 —904 page(s) built in 83.93s;✓ content lint --dist passed (486 built blog pages checked);✓ content lint --dist CJK line breaks passed (904 built pages, 342 in zh/ja, 0 segment breaks between CJK characters);✓ content lint --dist quotation marks passed (… 0 pointing the wrong way or left open …);✓ content lint --dist links passed (97570 internal links in 904 built pages resolve to built files).gen-zh-hantreportedgenerated 47, kept 0 hand-maintainedand left the tree clean (no generated file changed).pnpm seo:smoke— exit 0 —SEO smoke test passed (894 HTML pages checked; 583 sitemap URLs against 311 noindexed pages; 5570 canonical/hreflang annotations; 16791 prose blocks language-checked; 97560 internal links redirect-checked).pnpm checkandpnpm buildran under the shared verify lock (VERDICT command-exit 0 · held the lock 122s · waited 0s); exit codes were captured before any pipe.Browser check (Chromium via Playwright,
astro previewof the built dist)/en/ontology/,/en/compare/,/zh-Hans/ontology/,/zh-Hans/compare/at 1366×625, 1440×750, 390×844 and 360×800 — 96 assertions, 0 failing:scrollWidthequalsinnerWidth);overflow-x: auto,tabindex=0, named by the heading), and with the template's phone cell wrapping both tables fit the viewport outright (scrollWidth equals clientWidth, no scroll needed);/[lang]/compare/#in-depth, anchor present), the compare link and the positioning link resolve 200 in en and zh-Hans; all 46 internal links on the four pages resolve 200.Looked at: full-page renders of all four pages at 1366 and crops of the phone renders (hero, artifact, category cards, in-depth cards, tables), the home positioning section and
#comparesection in en and zh-Hans at 1366 and 390, and the open Product menu. One defect found and fixed in the second commit: the artifact diagram's 72-character lines were cut off at 360/390 px; reflowed to 44 characters, re-verified.Acceptance notes
src/lib/positioning.tseverywhere they appear (T1, T2, T3, T4, E1); no paraphrase, no token figure.AGENTS.md§Positioning ("target format and runtime for AI-written enterprise software") predates the positioning; where it disagrees,positioning.tsand the objectstack README were followed, per the card.#comparesection (a documented nav contract inMarketingHome.astro); whether it should point at/[lang]/compare/directly is a seat decision, not taken here.Generated by Claude Code