Skip to content

No page explains the positioning: add an /ontology/ pillar page and a /compare/ page with a "when not to use it" section #235

Closed

Description

@objectstack-fleet

Filing-gate category: ③ maintainer-directed task. The maintainer, in the PM session chat on 2026-10-15, on the seat's evaluation that proposed these two pages: 「立卡处理」.
Who acts: the repo:www.objectos.ai seat (objectstack-ai/objectstack#12224), at its next dispatch; one dev per page if the seat prefers.
Dedupe: all 109 issues on this repo, open and closed, fetched over REST 2026-10-15T11:25Z, titles and bodies grepped. /ontology/|ontology page|pillar page: 1 hit (#219, inbound links to the existing cluster pillars — not a new page). /compare/|compare page|when.to.use: 0 hits.
Dispatch tier: ceiling (CONTRACT_REVIEW_TIER) — reason: positioning copy, under the dispatch-tier ruling quoted on #209 (2026-10-05).

Why

The site states the positioning in one line (positioning.ts T1) and never explains it. Readings on origin/main 53764e0, 2026-10-15T11:27Z: the only places that say what an executable ontology is are content/glossary/en/ontology.ts (one paragraph) and src/pages/llms.txt.ts:67 (one sentence). There is no comparison page either: the home #compare section links three blog posts, against Airtable, Retool and Lovable.

objectstack added both pages on 2026-10-08 (335c4737): content/docs/concepts/compare.mdx and content/docs/concepts/when-to-use.mdx.

Page 1 — /[lang]/ontology/

What an executable business ontology is, written for both readers: the person who chooses and the agent that writes. Source of truth is objectstack origin/main 1ced0f82: content/docs/concepts/ontology.mdx, README.md:79-217, and the three sentences of objectstack.ai's "00 · The idea" section (apps/docs/app/[lang]/page.tsx:127-131).

  • The six kinds: objects and fields, relations, actions, permissions, flows, agent and tool definitions.
  • Projections: views, dashboards, apps, translations.
  • What it is not — all four guardrails (objectstack commit d2e687fd).
  • The four promises, each with the mechanism that keeps it: Executable, AI-writable, Agent-operable, You own it.
  • "You own it" states the mechanism only: files in your repo, Apache-2.0, self-hosting. objectstack's own roadmap still lists whole-ontology export as unverified (docs/NORTH-STAR.md:96), so no "one-click export" claim.

Navigation: first entry under Product → Evaluate. Linked from the home positioning section, the glossary ontology term and llms.txt.

Page 2 — /[lang]/compare/

  • The five categories as objectstack's compare page sets them: knowledge ontologies (RDF/OWL), semantic and context layers, operational ontologies (Palantir), metadata-driven platforms, AI code generation.
  • The concessions objectstack makes (compare.mdx:101-117), kept.
  • A "When not to use it" section from when-to-use.mdx: core ERP, integration-heavy work, data lakes, certified platforms.
  • The existing comparison posts linked under their category.
  • The home #compare chips retargeted to this page.

Constraints

Done looks like

  • Every factual line cites its objectstack source in the PR body.
  • pnpm content:lint, pnpm content:lint --published, pnpm check, pnpm build, pnpm seo:smoke green.
  • Both pages browser-checked at the seat's viewports, in en and zh-Hans.

Activity

  1. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1
    Session: session_017GeNDQH7E5S2rX8ajVAPxv
    Account: os-tesla
    Branch: claude/sharp-mendel-1087cg-issue-235
    Worktree: www.objectos.ai-issue-235
    Domain: none — single-lane repo (repo:www.objectos.ai)
    Seat: repo:www.objectos.ai#2
    File surface: new content/pages/{en,zh-Hans}/{ontology,compare}.ts, src/content-pages/registry.ts, src/components/Header.astro (nav entry), src/lib/home.ts (#compare chips only), src/pages/llms.txt.ts (page entries only), generated zh-Hant output (stop on breach; explain in the report)
    Container & model: M, mode:subagent, model: CONTRACT_REVIEW_TIER — reason: the maintainer's 2026-10-15 ruling that article cards dispatch at the ceiling tier, and #209's dispatch-tier ruling for positioning copy (2026-10-05)
    Clause-②: no
    Responsibility: n/a — not a defect card
    Thread-read: none
    Serial constraints cleared: #233 (seat 2, same round) shares src/lib/home.ts and src/pages/llms.txt.ts — ordinary concurrency, the later lander merges main; no open seat-1 PR touches this surface (#237 #244 #245 are content/blog/**, #255 is ArticleList.astro + i18n.ts; files read 2026-10-16T06:33Z). Premise: content/pages/en/ontology.ts and compare.ts absent on origin/main 6ada491.

  2. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 235,
      "status": "done",
      "branch": "claude/sharp-mendel-1087cg-issue-235",
      "pr": "https://github.com/objectstack-ai/www.objectos.ai/pull/258",
      "session": "session_017GeNDQH7E5S2rX8ajVAPxv",
      "premise_still_valid": true,
      "summary": "Premise re-read on origin/main 6ada491: content/pages/en/ontology.ts and compare.ts absent, home #compare chips still pointing at three blog posts, nav Evaluate group without an ontology entry. Landed two marketing pages in en and zh-Hans (Chinese re-derived from the objectstack sources, zh-Hant derived by the registry, other locales on the English fallback): /[lang]/ontology/ (six-kind core, four projections, the four guardrails of objectstack commit d2e687fd, the four promises each with its mechanism, You own it as mechanism only, T1/T2/T3/T4/E1 quoted from positioning.ts) and /[lang]/compare/ (the five categories, side-by-side table and the four concessions of compare.mdx, the Not-a-fit-today list and five questions of when-to-use.mdx, nine of the site's comparison posts filed under their category). Wiring: Ontology first under Product → Evaluate in every locale, a positioning-section link on the home, the #compare chips to /[lang]/compare/#in-depth and the section link to /[lang]/compare/, llms.txt lists both through the registry. Every factual line is cited to objectstack origin/main 1ecb08a1 path+line in the PR body. Draft PR #258, assignee os-tesla, head fb40251.",
      "tests": "All on head fb40251 after the last commit, exit codes captured before any pipe. pnpm content:lint exit 0 and pnpm content:lint --published exit 0: '✓ content lint passed (347 files, 44 glossary terms checked)' (12 snippet-width warnings are on the #212 post, not on touched files). pnpm check exit 0: 'Result (158 files): 0 errors, 0 warnings, 0 hints'. pnpm build exit 0 (gen-zh-hant 'generated 47, kept 0 hand-maintained', tree clean after; '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)'). 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)'. Browser check (Playwright + /opt/pw-browsers/chromium against astro preview of the built dist): /en/ontology/, /en/compare/, /zh-Hans/ontology/, /zh-Hans/compare/ at 1366x625, 1440x750, 390x844, 360x800 — 96 assertions, 0 failing: scrollWidth equals innerWidth on all 16 pairs; primary CTA above the fold on all 16 (bottom 457–727 px vs folds 625–844); on both phone widths the table sits in a real scroll container (overflow-x auto, tabindex 0) and fits outright after the template's cell wrapping; nav entry, three home chips (anchor #in-depth present), compare link and positioning link resolve 200 in en and zh-Hans; all 46 internal links on the four pages resolve 200. Screenshots looked at: full pages at 1366, phone crops (hero, artifact, cards, in-depth, tables), home positioning and #compare sections at 1366 and 390 in both locales, the open Product menu. One defect found in the first round and fixed in commit fb40251: the artifact diagram's 72-char lines were cut at 360/390 px; reflowed to 44 chars and re-verified on the rebuilt dist. No ablation: this repo has no unit tests and no tested behaviour changed (content modules plus two additive template options).",
      "gates": "Local subset, hand-derived from this repo's package.json per the dispatch (objectstack's dispatch-gates.mjs does not cover www.objectos.ai, so no --ran reconciliation exists here): content:lint 0 · content:lint --published 0 · check 0 · build 0 · seo:smoke 0, all at fb40251; check and build ran under the shared lock as slot www-235 ('VERDICT command-exit 0 · held the lock 122s · waited 0s'). CI: the repo's one workflow, cloudflare-pages.yml, check-run 'Build and deploy' status in_progress, conclusion null on fb40251 at report time (read via GET check-runs); not waited for, per the role file. Browser check as in tests.",
      "mcp_calls": "0 — no MCP GitHub tool was called; reads were gh api GET (issue 235, its comments, pulls/258, commits/fb40251/check-runs).",
      "api_writes": "2 relay strokes through scripts/pm/fleet-write/dispatch.mjs (route auto → dispatch, run 38865514873 success for the first): (1) pr_create = POST /repos/objectstack-ai/www.objectos.ai/pulls (draft) + its assignee leg POST /repos/objectstack-ai/www.objectos.ai/issues/258/assignees (read-back: 11551 bytes sent, 11551 stored, assignees os-tesla); (2) this report = POST /repos/objectstack-ai/www.objectos.ai/issues/235/comments. git push ×3 (empty-branch probe, ab4e800, fb40251) are git, not REST. No label writes, no PATCH, no issue creation.",
      "deviations": "File surface extended, each with the producer reason: src/content-pages/types.ts + src/components/MarketingEvidencePage.astro — MarketingPageTable gains optional eyebrow/title (the fixed 'Decision surface' heading is wrong over a side-by-side category table; ontology keeps the default) and localizeHref localizes /en/blog/SLUG/ links to the reader's locale only where that locale's post is built (measured in dist: zh-Hans → /zh-Hans/blog/ for 7 posts and /en/blog/ for the 2 English-only ones, zh-Hant → /zh-Hant/blog/, ja fallback → /en/blog/); src/lib/i18n.ts — siteNav.ontology in 7 authored locales + s2t, because every nav label is an i18n string, not the page's navLabel (#255 also edits i18n.ts: ordinary concurrency, later lander merges main); src/components/MarketingHome.astro — the chip hrefs live there (compareLinks), not in home.ts, plus the positioning link markup and a 4-line CSS rule; src/lib/home.ts — positioningLink in 7 locales. src/pages/llms.txt.ts untouched: the registry is the producer and both pages appear under Primary Pages in the built llms.txt. content/glossary untouched (#233 holds it). The two commits carry the harness-written attribution trailers (Co-Authored-By with a model name, Claude-Session); page copy and PR body carry no model identifier; reported, not rewritten. Scratchpad isolated under scratchpad/issue-235/. Preview server (port 4723) and lock runs started by me are stopped; no monitors left.",
      "files_changed": "content/pages/en/ontology.ts (new), content/pages/en/compare.ts (new), content/pages/zh-Hans/ontology.ts (new), content/pages/zh-Hans/compare.ts (new), src/content-pages/registry.ts (PAGE_ORDER), src/content-pages/types.ts, src/components/MarketingEvidencePage.astro, src/components/Header.astro, src/components/MarketingHome.astro, src/lib/home.ts, src/lib/i18n.ts — 11 files, +972/−11; no generated zh-Hant file changed (marketing zh-Hant is derived at build time, not written to disk).",
      "line_budget": "n/a",
      "open_questions": [
        {
          "question": "Should the nav entry 'Why ObjectOS' (Product → Evaluate) point at /[lang]/compare/ directly, instead of the home #compare section whose chips now lead there (two hops)?",
          "options": [
            "A — keep as is: the home section stays the nav contract documented in MarketingHome.astro; /compare/ is reached from the chips, the section link, the ontology page's secondary CTA, every page's next-links and llms.txt",
            "B — retarget whyObjectOs to marketingPagePath(locale, 'compare') and drop the id=compare nav-contract comment; one line in Header.astro, no copy change",
            "C — add a second Evaluate entry 'How it compares' beside Ontology and leave 'Why ObjectOS' alone (one more i18n key in 7 locales)"
          ],
          "recommendation": "B, when the seat touches Header.astro next: real need — a reader opening 'Why ObjectOS' wants the comparison, and the page now exists; long-run — one page as the comparison's home beats a home-section hop; AI-error axis — n/a (nav copy, not metadata); focus — zero new surface, one href. Not done here because the card named only the ontology nav entry and the home section's id is a documented contract."
        }
      ],
      "out_of_scope_findings": [
        "follow-up for the seat (not a defect): content/glossary/*/ontology.ts pageSlugs should add 'ontology' and 'compare' so the glossary term links to the pillar — carrier: #233 (holds that file this round) or the seat after it lands; dedupe words: glossary ontology pageSlugs pillar link",
        "noted, not filed: the derived zh-Hant copy renders 运行时 as 執行時 (OpenCC s2twp) wherever positioning T2 appears, home hero included — site-wide behaviour of src/lib/positioning.ts zhHant = s2t(zhHans), pre-existing, a localization choice rather than a defect; carrier: none",
        "noted, not filed: pnpm content:lint prints 12 snippet-width warnings (title over 60 columns, description over 160) on content/blog/what-does-the-ontology-is-the-software-mean/ in all seven locales, landed in #212 on 2026-10-15; warnings, not errors; carrier: none"
      ]
    }

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed and live · 2026-10-16T07:22Z

    Probe Reading
    PR #258, squash a69829e (pinned to head fb40251), merged by seat 2. Seat record: PR comment 6210272944 (ACCEPT → PR #258 comment 6210272944)
    origin/main a69829e content(pages): an /ontology/ pillar page and a /compare/ page … (#258)
    Deploy on main run 38866614697 Deploy to Cloudflare Pages: completed/success on a69829e
    Live probe NOT MEASURED. www.objectos.ai is refused by this container's egress (CONNECT 403). The deploy run's conclusion is the reading.

    State: closed completed by Fixes #235; pm:dispatched removed. Follow-up (the glossary ontology term linking to /ontology/ and /compare/) is in #233's patch round on PR #259.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions