Skip to content

site(blog): the pillar post leads the Recommended grid; Articles hero lead in six locales; close the 641–900px grid hole (merge 2026-10-20 after post 2) - #255

Open
objectstack-fleet[bot] wants to merge 3 commits into
mainfrom
claude/pm-dispatch-objectos-ju9td1-issue-209-grid
Open

objectstack-fleet[bot] wants to merge 3 commits into
mainfrom
claude/pm-dispatch-objectos-ju9td1-issue-209-grid

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #209

Merge on Tue 2026-10-20, right after post 2 (#244), and not before. The new lead line says "who should own the business definition layer". That wording only becomes true when post 2 retitles the sibling post from "Business Semantic Layer" to "Business Definition Layer". The seat ruled that ordering, Q1=A.

Branch. Three commits from the staged lin/issue-209-grid, replayed onto main @ 2e16f1f. All 14 stack cards and #254 are already on main. The replay is patch-equal to lin/post-base..lin/issue-209-grid, with byte-identical diffs. Head a9c74f7.

Seat check on the replay, after #223's count-aware grids landed:

The blog-home Recommended grid gets the pillar post, as planned in the #211 ACCEPT (comment 5995074540, answer 2): once post 1 is published, it replaces the weakest-fitting of the four pinned picks, and the lead that introduces the grid describes the four posts actually shown. Two review additions on the same page: the Articles hero lead in the six non-English locales, and the empty grid cell at 641–900px. Two files: src/components/ArticleList.astro and src/lib/i18n.ts (one function per locale).

What changed

featuredSlugs (the first entry renders as the full-width feature card):

Before After
1 (feature) enterprise-ontology-race-open-vs-closed what-does-the-ontology-is-the-software-mean
2 metadata-not-code-generation enterprise-ontology-race-open-vs-closed
3 vibe-coding-technical-debt-2026 metadata-not-code-generation
4 natural-language-to-app-metadata vibe-coding-technical-debt-2026

Dropped pick: natural-language-to-app-metadata — its actor is an "AI Builder" (10 mentions) turning a business user's sentence into pages, where the positioning's writer is a coding agent pointed at ObjectStack, and it is the least cross-linked of the four (3 inbound files, one glossary pair). It stays published and moves to the Latest list.

Kept enterprise-ontology-race-open-vs-closed, which the #211 dev had suggested dropping: #228 retitles it to "Open vs. Closed Enterprise Ontologies: Who Owns the Business Definition Layer?", which makes it the grid's "you own it" post. It has 21 inbound files and carries two of the charter's named concepts ("definition layer vs runtime layer", "protocol-open, definition-closed"). This PR lands after #228 (slot Tue 10-13), so the card never shows the old "Business Semantic Layer" title under the new lead.

recommendedLead, every locale. The "why the business semantic layer should be open" clause is retired (the README: the ontology is "not a semantic layer over your existing systems"). The lead now names the three themes of the four picks in canonical vocabulary: what "the ontology is the software" (T1) means, who should own the business definition layer, and why AI-built apps stay governable as metadata, not generated code.

Locale Before After
en Start here: why the business semantic layer should be open, why AI-native software is metadata rather than generated code, and how one request becomes a governable app. Start here: what "the ontology is the software" means, who should own the business definition layer, and why AI-built apps stay governable as metadata, not generated code.
zh-Hans 从这几篇读起:业务语义层为什么该开放、AI 原生应用为什么是元数据而非代码,以及如何用一句话搭出可治理的应用。 从这几篇读起:「本体即软件」是什么意思、业务定义层该归谁所有,以及 AI 生成的应用为什么是元数据而非代码才可治理、可改。
zh-Hant (s2t of zh-Hans) 從這幾篇讀起:業務語意層為什麼該開放、AI 原生應用為什麼是後設資料而非程式碼,以及如何用一句話搭出可治理的應用。 從這幾篇讀起:「本體即軟體」是什麼意思、業務定義層該歸誰所有,以及 AI 生成的應用為什麼是後設資料而非程式碼才可治理、可改。
ja まずはここから:ビジネスセマンティックレイヤーがなぜオープンであるべきか、AI-native の核心がなぜコードではなくメタデータなのか、そして一文がどうガバナンス可能なアプリになるのか。 まずはここから:「オントロジーがソフトウェアである」とはどういう意味か、業務定義層は誰が所有すべきか、AI が作ったアプリはなぜコードではなくメタデータならガバナンスでき変えられるのか。
de Hier anfangen: warum die Business-Semantikschicht offen sein sollte, warum AI-native Metadaten statt Code bedeutet, und wie aus einem Satz eine governte Anwendung wird. Hier anfangen: was „Die Ontologie ist die Software“ bedeutet, wem die Geschäftsdefinitionsschicht gehören sollte, und warum AI-gebaute Apps als Metadaten statt Code änderbar bleiben.
es Empieza por aquí: por qué la capa semántica de negocio debe ser abierta, por qué AI-native significa metadatos en vez de código, y cómo una frase se convierte en una app gobernable. Empieza por aquí: qué significa «La ontología es el software», de quién debe ser la capa de definición del negocio, y por qué las apps hechas con AI se gobiernan como metadatos, no como código.
fr Commencez ici : pourquoi la couche sémantique métier doit être ouverte, pourquoi l’AI-native, c’est des métadonnées plutôt que du code, et comment une phrase devient une application gouvernable. Commencez ici : ce que signifie « L’ontologie est le logiciel », à qui doit appartenir la couche de définition du métier, et pourquoi les apps écrites par l’AI restent gouvernables en métadonnées, pas en code.
ko 여기서부터: 비즈니스 시맨틱 레이어가 왜 열려 있어야 하는지, AI-native가 왜 코드가 아니라 메타데이터인지, 그리고 한 문장이 어떻게 거버넌스 가능한 앱이 되는지. 여기서부터: 「온톨로지가 곧 소프트웨어다」가 무슨 뜻인지, 비즈니스 정의 계층은 누가 소유해야 하는지, AI가 만든 앱이 왜 코드가 아니라 메타데이터여야 바꿀 수 있는지.

Lengths (characters, before → after): en 168 → 171, zh-Hans 55 → 61, zh-Hant 57 → 63, ja 94 → 93, de 168 → 182, es 181 → 193, fr 194 → 209, ko 95 → 95. T1 is quoted per locale from src/lib/positioning.ts (en case-adapted inside the sentence, as the pillar post's own title does). The zh-Hant string is the repo's s2t of the zh-Hans string, written as a literal like the rest of homeCopy.

Every locale shows the pillar. content/blog/what-does-the-ontology-is-the-software-mean/ has all eight index*.mdx, the build emits the post in all eight locales, and the built /LOCALE/blog/ grid has four cards in this order in all eight; natural-language-to-app-metadata is in the Latest list of all eight.

The Articles hero lead (articlesLead, src/lib/i18n.ts)

The hero lead above the grid read "executable business ontologies, runtime governance, and agent-operated applications" in en but "AI-native software" in the other six authored locales (zh-Hant derives through s2t). The six now carry en's sentence with the positioning wave's terms per locale. The same function feeds the blog index meta description and the RSS channel description, so those change with it.

Locale Before After
en (unchanged) ${n} articles on executable business ontologies, runtime governance, and agent-operated applications. —
zh-Hans ${n} 篇关于构建 AI-native 软件的文章。 ${n} 篇关于可执行业务本体、运行时治理与 Agent 操作应用的文章。
zh-Hant (s2t) ${n} 篇關於構建 AI-native 軟體的文章。 ${n} 篇關於可執行業務本體、執行時治理與 Agent 操作應用的文章。
ja AI-native ソフトウェア構築に関する ${n} 本の記事。 実行可能なビジネスオントロジー、ランタイムガバナンス、エージェントが操作するアプリケーションに関する ${n} 本の記事。
de ${n} Artikel über den Aufbau AI-nativer Software. ${n} Artikel über ausführbare Geschäftsontologien, Runtime-Governance und von Agents bediente Anwendungen.
es ${n} artículos sobre crear software AI-native. ${n} artículos sobre ontologías de negocio ejecutables, gobernanza del runtime y aplicaciones operadas por agentes.
fr ${n} articles sur la construction de logiciels AI-native. ${n} articles sur les ontologies métier exécutables, la gouvernance du runtime et les applications opérées par les agents.
ko AI-native 소프트웨어 구축에 관한 글 ${n}개. 실행 가능한 비즈니스 온톨로지, 런타임 거버넌스, 에이전트가 운영하는 애플리케이션에 관한 글 ${n}개.

Terms: 可执行业务本体 / 実行可能なビジネスオントロジー / ausführbare Geschäftsontologie / ontología de negocio ejecutable / ontologie métier exécutable / 실행 가능한 비즈니스 온톨로지 and Agent 操作 / エージェントが操作 / von Agents bedient / operadas por agentes / opérées par les agents / 에이전트가 운영 are the T2/T3 renderings in positioning.ts. Lengths with the built counts: zh-Hans 25 → 35, zh-Hant 25 → 35, ja 31 → 59, de 47 → 104, es 44 → 113, fr 55 → 120, ko 29 → 56 characters (en is 99). The six old leads were stubs that could not carry the three terms; measured in the DOM at eight viewports, every locale stays on one desktop line as today, and at 768/820 and phone widths takes the line counts en's own lead already takes (2 and 3; zh-Hans 1 and 2).

The 641–900px grid hole (ArticleList.astro CSS)

.featured-grid was two columns at 641–900px with the feature spanning the row, so three standard cards left the fourth cell empty. In that range the feature now takes one cell and its thumb takes the standard 16:10, so the four cards fill a 2×2 grid with matching cover heights. Why this and not the alternatives: at this range the feature is already the stacked card (ArticleCard drops its side-by-side layout below 1024px), so it gives up nothing it still had; one column would stack three oversized cards and break ArticleCard's sizes promise that a standard thumb is one of two at this range; a third card spanning both columns reads as a second feature. The override is scoped to (min-width: 641px) and (max-width: 900px) so the phone rules in ArticleCard are untouched, and .article-item.feature .thumb outranks ArticleCard's own .feature .thumb whatever the bundle order.

Gates (final commit 4d9f767, through scripts/pm/os-verify-lock.sh, held 113s, waited 0s)

  • pnpm check: exit 0 — Result (152 files): 0 errors, 0 warnings.
  • pnpm build: exit 0 — zh-Hant generated 47, content lint passed (347 files), svg-text-fit OK, 888 page(s) built in 68.29s, content lint --dist passed (486 built blog pages), tree clean after the build.
  • pnpm seo:smoke: exit 0 — 878 HTML pages checked.
  • Built HTML: in all eight dist/LOCALE/blog/index.html the hero lead, the meta description and the RSS channel description are the same string, with 0 occurrences of "AI-native".

Browser check (AGENTS.md six viewports plus 768×1024 and 820×1180, light and dark, before and after)

/en/blog/, /zh-Hans/blog/ and /ja/blog/ at 1366×625, 1440×750, 1512×830, 1920×945, 768×1024, 820×1180, 390×844 and 360×800, both themes: 48 page-viewport-theme triples on the state before this addendum (2ce9631's two files, built with astro build --outDir into a scratch directory) and 48 on 4d9f767, served from dist/ and driven by Playwright Chromium; lazy images scrolled into view before judging; the Recommended section screenshotted on its own, plus the viewport and the full page.

  • Before: at 768 and 820 the grid rows were feature / two / one, with the last row 49% short of the grid's right edge (the hole) in all 12 tablet triples; the zh-Hans and ja hero leads said AI-native. After, all 48: HTTP 200, documentElement.scrollWidth equals the viewport width, 0 elements extending past the viewport outside a scroll container, 4 cards, every row reaches the grid's left and right edges, the two covers in each tablet row are the same height (218px at 768, 234px at 820), the feature card is 49% of the grid at 768/820 and full width elsewhere, and neither lead overflows its box.
  • The six charter viewports are unchanged by this addendum: the rows (feature / three at 1366–1920, one per row at 390/360), the thumb heights and the Recommended lead's line counts (en 2/4/4, zh-Hans 2/3/3, ja 2/5/5) match the earlier run on 2ce9631 exactly.
  • Hero lead lines (desktop / 768 / 820 / 390 / 360): en 1/2/2/3/3 unchanged; zh-Hans 1/1/1/2/2 (was 1/1/1/1/1); ja 1/2/2/3/3 (was 1/1/1/2/2).
  • Looked at: en light 768 before (the empty cell under the pair) and after (a 2×2 grid, covers level), zh-Hans dark 820 (same, dark), en dark 820 and zh-Hans light 768 at the top of the page (the hero lead on two lines / one line above the grid), ja light 1366 (the new ja hero lead on one line), en light 1440 (the charter grid as before).

Acceptance notes

  • homeCopy keeps a hand-written zh-Hant string while positioning.ts and i18n.ts derive zh-Hant with s2t; the old hand-written lead differed from s2t by one word (語意 vs 語義). Noted only.
  • The derived zh-Hant hero lead renders 运行时治理 as 執行時治理, the same s2twp rendering positioning.ts already has for T2. Noted only.
  • At 768px the ja Recommended lead takes three lines before and after this PR (the tablet widths are outside the charter set); the desktop and phone counts are unchanged.

Generated by Claude Code

🤖 Generated with Claude Code

https://claude.ai/code/session_01FeA1nwBz1ohH65dvffUGKr

…ts lead

The four pinned "start here" picks now open with the pillar definition post
(what-does-the-ontology-is-the-software-mean, slot 2026-10-08) as the feature
card, keep enterprise-ontology-race-open-vs-closed (the "you own it" pick;
#228 retitles it to the business definition layer), metadata-not-code-
generation and vibe-coding-technical-debt-2026, and drop natural-language-
to-app-metadata: its actor is an "AI Builder" turning a business user's
sentence into pages, where the positioning's writer is a coding agent pointed
at ObjectStack, and it is the least cross-linked of the four (3 inbound files).

The recommendedLead in all eight locales now describes those four posts in
the canonical vocabulary: what "the ontology is the software" means, whose
the business definition layer should be, and why AI-built apps stay
governable as metadata rather than generated code. The "business semantic
layer should be open" clause is retired (the README: the ontology is not a
semantic layer over your existing systems). zh-Hant is the repo's s2t of the
zh-Hans string. Each lead stays within +25 characters of today's, so the
section head keeps its two desktop lines.

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

Measured in the DOM at the six AGENTS.md viewports: the first wording took a
third desktop line in ja and an extra phone line in en and zh-Hans. These
shorter leads render the same number of lines as today's at every viewport
in en, zh-Hans, zh-Hant, ja and ko; de, es and fr keep their two desktop
lines and take one more line at 390px, which no wording within today's
length avoided. zh-Hant is again the repo's s2t of the zh-Hans string.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeA1nwBz1ohH65dvffUGKr
…1–900px grid hole

articlesLead (src/lib/i18n.ts) said "AI-native software" in zh-Hans, ja, de,
es, fr and ko while en already read "executable business ontologies, runtime
governance, and agent-operated applications". The six now carry that sentence
with the positioning wave's terms per locale (positioning.ts, post 1, #228);
zh-Hant keeps deriving through s2t. Measured in the DOM at eight viewports:
every locale stays on one desktop line, and takes at tablet and phone widths
the same line counts en's lead already does. The same function feeds the blog
index meta description and the RSS channel description.

.featured-grid was two columns at 641–900px with the feature spanning the row,
so three standard cards left the fourth cell empty. In that range the feature
now takes one cell (it is already the stacked card there: ArticleCard drops
its side-by-side layout below 1024px) and its thumb takes the standard 16:10,
so the four cards fill a 2×2 grid with matching cover heights. One column
would stack three oversized cards and break ArticleCard's `sizes` promise
that a standard thumb is one of two at this range; a third card spanning both
columns reads as a second feature.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeA1nwBz1ohH65dvffUGKr
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants