Repository navigation
Post (slot Thu 2026-11-05): When Should You Not Use an Executable Business Ontology? #261
Description
Carries item B of #236. #236 keeps item D; item A is PR #260, held to 2026-11-03; item C is split into its own card in the same stroke.
Filing-gate category: ③ maintainer-directed task. The maintainer, PM session chat, 2026-10-15: 「立卡处理」 on the evaluation that proposed this post. #236 split it out per its own body: one dev per post.
Who acts: repo:www.objectos.ai · seat 2 (objectstack-ai/objectstack#23827). It dispatches on filing.
Dedupe: all 113 issues on this repo, open and closed, REST, 2026-10-16T07:34Z. when (should you )?not (to )?use|when-to-use|not a fit: 2 hits, #236 (the parent) and #235 (closed; its /compare/ page carries a "Not a fit today" list — see the overlap fence below).
Dispatch tier: ceiling (CONTRACT_REVIEW_TIER) — reason: the maintainer's 2026-10-15 ruling that article cards dispatch at the ceiling tier.
The post
"When Should You Not Use an Executable Business Ontology?" (working title, query-shaped). Slot Thu 2026-11-05, merged on that day by the seat.
- Source of truth: objectstack
content/docs/concepts/when-to-use.mdx— good fits, the not-a-fit list, the five questions before you start, what you get in the first weeks and after a year — andcontent/docs/concepts/compare.mdxconcessions. - Steelman each non-fit (writing rule 7): core ERP or finance of a large enterprise, integration-heavy workloads, analytics over data lakes, algorithm-heavy domains, certified-platform requirements. For each, say what the reader should use instead and why that is the right call. The product appears only as the subject of its limits.
- Overlap fence.
/[lang]/compare/(PR content(pages): add the /ontology/ pillar and /compare/ with a "when not to use it" section #258, landed 2026-10-16) already lists these non-fits and the five questions in one line each. This post must go further: a concrete scenario per non-fit, the cost of choosing wrong, and a decision checklist the reader can run on their own case. Link the page; do not restate it. Vary the opening, structure and proof against Post (slot Thu 2026-10-08): What Does "The Ontology Is the Software" Mean? An Executable Business Ontology, Defined #211, content(blog): executable ontology vs knowledge ontology — post 2 of the positioning wave (slot 2026-10-20) #244, content(blog): what makes a business app AI-writable — post 3 of the positioning wave (slot 2026-10-22) #245, content(blog): agent-operable apps — every object and action an MCP tool under the user's permissions (post 4, slot 2026-10-27) #237 and PR content(blog): What Do AI Models Lack in the Enterprise? A World, Hands and a Fence (slot 2026-11-03) #260 (writing rule 9). - Proof artifact: a decision table (workload → fit / not a fit → what to use instead → the deciding fact), with each row sourced.
en and zh-Hans authored (the Chinese re-derived, not translated); zh-Hant generated. Facts verified against objectstack origin/main on the day of writing. No token figures as positioning (#209 Q5).
Done looks like
Draft PR Refs #236 (item B) with Fixes this card. Gates pnpm content:lint, pnpm content:lint --published, pnpm check, pnpm build, pnpm seo:smoke green. Browser check en + zh-Hans at 1440×750 and 390×844. SVGs rendered at native size and at phone width and looked at.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 16, 2026
Claim: PM loop round 1
Session:
session_017GeNDQH7E5S2rX8ajVAPxvAccount:
os-teslaBranch:
claude/sharp-mendel-1087cg-issue-261Worktree:
www.objectos.ai-issue-261Domain: none — single-lane repo (
repo:www.objectos.ai)Seat:
repo:www.objectos.ai#2File surface: one new
content/blog/directory for this post (itsindex*.mdxand SVGs), en + zh-Hans authored, zh-Hant generated (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 tierClause-②: no
Responsibility:
n/a — not a defect cardThread-read: none
Serial constraints cleared: slot 2026-11-05 free (seat 1's plan on #209, comment 6192871332; seat 2's on objectstack-ai/objectstack#23827); new post directory, no file shared with any open PR (#237 #244 #245 #255 #259 #260 read 2026-10-16T07:34Z); subject overlap fenced in the card body.
objectstack-fleet commentedon Oct 16, 2026
os-dev-report
{ "issue": 261, "status": "done", "branch": "claude/sharp-mendel-1087cg-issue-261", "pr": "https://github.com/objectstack-ai/www.objectos.ai/pull/264", "session": "session_017GeNDQH7E5S2rX8ajVAPxv", "premise_still_valid": true, "summary": "New post directory content/blog/when-not-to-use-an-executable-business-ontology/ for slot Thu 2026-11-05: en authored, zh-Hans re-derived from the same sources, zh-Hant generated; cover and self-check diagram as zh/en SVG pairs with an explicit fill on every text node. Thesis in the first paragraph; the six-kind test as the ownable concept; each of the five non-fits gets a scenario, the alternative and its case, the cost of choosing wrong and the deciding fact with its source; two compare.mdx concessions; a sourced decision table and a ten-question self-check; the product appears only as the subject of its limits and the CTA only for cases that pass. Mechanism assumption measured true: when-to-use.mdx at objectstack 43567a8f carries five non-fits and five questions. Draft PR #264 opened through the relay with assignee os-tesla; merging is the seat's, on the slot day.", "tests": "No test suite in this repo; the gates are the tests, all on HEAD f9955fa with exit codes captured before any pipe. pnpm content:lint exit 0 (✓ content lint passed (350 files, 44 glossary terms checked); the three Date is in the future advisories are the slot). pnpm content:lint --published exit 0 (same verdict line). pnpm svg:lint on the four SVGs exit 0 (svg-text-fit: OK — 4 SVGs, 148 text boxes, 0 filtered elements, tolerance 2px). pnpm check exit 0 (Result (158 files): 0 errors, 0 warnings, 0 hints). pnpm build exit 0 under the shared lock, VERDICT command-exit 0, held 102s on a shared box (907 page(s) built; ✓ share images: 91 rendered; ✓ content lint --dist passed (489 built blog pages checked); ✓ CJK line breaks passed (0 segment breaks); ✓ quotation marks passed (0 pointing the wrong way or left open); ✓ links passed (97929 internal links in 907 built pages resolve)). pnpm seo:smoke exit 0 (SEO smoke test passed (897 HTML pages checked; 586 sitemap URLs against 311 noindexed pages; 5582 canonical/hreflang annotations; 16982 prose blocks language-checked; 97919 internal links redirect-checked)). Browser: Playwright library with the preinstalled Chromium against astro preview of dist, every server stopped by PID. en and zh-Hans at 1440x750 and 390x844 all 200; header cover rendered once (.cover x1, not referenced in the body); both images scrolled into view and decode()d; no horizontal page overflow at 390; article internal links en 13 / zh-Hans 11 checked, all 200; decision table three columns 113/115/128 px at 390 (fits the 358px column, no sideways scroll) and 234/239/386 at 1440; blog list cards en and zh-Hans render cover, title, description, topic, audience, tags; the four SVGs rendered at native size (1200x675, 1200x760) and at 390 width and looked at. No ablation: content only, no tested behaviour changed.", "gates": "Local subset, hand-derived from this repo package.json (objectstack dispatch-gates answers only its own tree, not used): content:lint, content:lint --published, svg:lint, check, build (with gen:zh-hant, content-lint --published, svg-text-fit, og-images and the four --dist lints inside it), seo:smoke; every one exit 0 on f9955fa, verdict lines in the tests field and in the PR body. CI on PR #264 head f9955fa at report time: one check-run, Build and deploy (.github/workflows/cloudflare-pages.yml): in_progress; commit status contexts: 0. Not re-run locally; the PM reads its conclusion.", "line_budget": "n/a", "deviations": "(1) zh-Hans does not link this site’s /compare/ or /ontology/ pages. Measured before the first commit: with [对比页](/zh-Hans/compare/) in the zh-Hans body, scripts/gen-zh-hant.mjs leaves the link untouched in the generated zh-Hant file (prints: left 2 /zh-Hans/ link(s) as-is — no provable Traditional build) and pnpm content:lint exits 1 with a blocking Cross-locale internal link error because /zh-Hant/compare/ IS built; linking /en/compare/ from zh-Hans fails the same rule the other way. The zh-Hans text names the page without a link and links the objectstack concept pages instead; en links /en/compare/, /en/ontology/ and /en/security/. The generator fix is outside this card’s file surface (see out_of_scope_findings and open_questions). (2) First build failed with NoImageMetadata: Astro’s SVG size probe validates the root tag inside the first 1000 bytes and the self-check SVGs’ long aria-label pushed the root tag to 1263/1300 bytes; fixed in 64a1442 by moving the description into a desc element (root tags now 261/236 bytes). (3) The first decision table had four columns, which scroll at 390 under the layout’s 104px per-column floor (417px of content in 358); reduced to three columns in f9955fa with the fit verdict merged into the use-instead cell. (4) The first lock run joined its parts with semicolons and got a batch-last-exit verdict; discarded, re-run with && (VERDICT command-exit 0 is the one quoted). (5) The first preview server was pnpm-wrapped and its re-exec survived the parent’s SIGTERM; found by cmdline and killed by exact PID; later servers were spawned detached and killed by process group; ports probed down afterwards, nothing of mine left running. No label writes, no MCP writes, no PATCH of the PR body. Commit trailers are model-free (Co-Authored-By: Claude; Claude-Session URL).", "files_changed": [ "content/blog/when-not-to-use-an-executable-business-ontology/index.mdx", "content/blog/when-not-to-use-an-executable-business-ontology/index.zh-Hans.mdx", "content/blog/when-not-to-use-an-executable-business-ontology/index.zh-Hant.mdx (generated by pnpm gen:zh-hant)", "content/blog/when-not-to-use-an-executable-business-ontology/cover.svg", "content/blog/when-not-to-use-an-executable-business-ontology/cover-en.svg", "content/blog/when-not-to-use-an-executable-business-ontology/self-check.svg", "content/blog/when-not-to-use-an-executable-business-ontology/self-check-en.svg" ], "mcp_calls": "0 — no MCP GitHub tools used; all reads via gh api / git", "api_writes": "2 — both relay dispatches (POST /repos/objectstack-ai/objectstack/dispatches): run 38873182377 executed POST /repos/objectstack-ai/www.objectos.ai/pulls (draft #264) and POST /repos/objectstack-ai/www.objectos.ai/issues/264/assignees (os-tesla); the second executes POST /repos/objectstack-ai/www.objectos.ai/issues/261/comments (this report). git push x4 (empty-branch probe, then three commits), not REST.", "open_questions": [ { "question": "The zh-Hans post cannot carry /zh-Hans/compare/ and /zh-Hans/ontology/ links until gen-zh-hant proves marketing pages; add them in a follow-up, or hold this PR?", "options": [ "A: land this PR as is on the slot day; once the one-condition generator fix lands, a follow-up in the same post directory adds the two zh-Hans links and regenerates zh-Hant", "B: hold this PR until the generator fix lands, then add the links here before 2026-11-05" ], "recommendation": "A, because the English post satisfies the overlap fence today, the fix is a producer change under scripts/ outside this card’s file surface, and the slot is 20 days out, so the follow-up fits either way; B couples a content PR to a tooling PR for two links" } ], "out_of_scope_findings": [ "class: b · reach: public door pnpm content:lint, exit 1 measured in this run — a zh-Hans body linking its own locale’s marketing page, [对比页](/zh-Hans/compare/), makes gen-zh-hant leave the link in the generated zh-Hant file and content:lint then answers: Cross-locale internal link [對比頁](/zh-Hans/compare/): this file is the zh-Hant version, the link points at zh-Hans, and /zh-Hant/compare/ IS built (blocking); its remedy text (fix the link in the zh-Hans source and re-run pnpm gen:zh-hant) cannot be followed because the zh-Hans link is already the correct one · evidence: gen-zh-hant.mjs’ own header states that glossary terms and marketing pages derive zh-Hant from zh-Hans and fall back to English, so the two locales resolve together or not at all, i.e. the condition under which the rewrite is safe, yet its single-segment branch reports instead of rewriting; content-lint’s crossLocaleMiss then judges the generated file as if authored · Seam: spec:scripts/gen-zh-hant.mjs single-segment link handling → runtime:scripts/content-lint.mjs crossLocaleMiss | renderer: none · first zh-Hans post to link a marketing or cluster page (git grep over origin/main content/blog: 0 prior) · fix shape: rewrite /zh-Hans/SLUG/ to /zh-Hant/SLUG/ when content/pages/zh-Hans/SLUG.ts or content/pages/en/SLUG.ts exists, the way blog posts are already proven · dedupe words: gen-zh-hant, cross-locale, marketing page, zh-Hant compare, single segment", "carrier: seat 2 (repo:www.objectos.ai) to file; not filed by this dev" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 16, 2026
os-dev-report-addendum
{ "issue": 261, "report": "os-dev-report-addendum", "addendum_to": "os-dev-report comment 6211319335 on #261; the option-A follow-up named in PR #264 ACCEPT comment 6211376912", "status": "done", "branch": "claude/sharp-mendel-1087cg-issue-261", "pr": "https://github.com/objectstack-ai/www.objectos.ai/pull/264", "head": "9f18a2f (round one: f9955fa)", "session": "session_017GeNDQH7E5S2rX8ajVAPxv", "premise_still_valid": true, "summary": "Patch round for the two zh-Hans links withheld in round one. Merged origin/main 3c5b6c6 (the gen-zh-hant marketing-page rewrite, PR #266) into the branch as merge commit 4e02c30: no rebase, no force-push. In content/blog/when-not-to-use-an-executable-business-ontology/index.zh-Hans.mdx the two plain-text mentions are links again: 本站的[对比页](/zh-Hans/compare/) in the opening and [定义本身是什么](/zh-Hans/ontology/) in the closing section. pnpm gen:zh-hant regenerated index.zh-Hant.mdx with /zh-Hant/compare/ and /zh-Hant/ontology/ and printed no left-as-is line. Commit 9f18a2f, pushed; PR #264 stays draft, held to its 2026-11-05 slot.", "tests": "All on HEAD 9f18a2f, exit codes captured before any pipe. pnpm gen:zh-hant exit 0 (✓ zh-Hant: generated 48, kept 0 hand-maintained, 8 with body links pointed at /zh-Hant/; no left … as-is line). pnpm content:lint exit 0 and pnpm content:lint --published exit 0 (✓ content lint passed (350 files, 46 glossary terms checked); the Date is in the future advisories are the slot). pnpm check exit 0 (Result: 0 errors, 0 warnings, 0 hints). pnpm build exit 0 under the shared lock, slot www-261, VERDICT command-exit 0 (held 110s after an 85s wait, shared box): 915 page(s) built; svg-text-fit: OK (122 SVGs, 2621 text boxes); ✓ content lint --dist passed (489 built blog pages checked); ✓ CJK line breaks passed (0 segment breaks); ✓ quotation marks passed (0 wrong); ✓ links passed (98827 internal links in 915 built pages resolve to built files). pnpm seo:smoke exit 0 (SEO smoke test passed (905 HTML pages checked; 589 sitemap URLs against 316 noindexed pages; 5619 canonical/hreflang annotations; 17174 prose blocks language-checked; 98817 internal links redirect-checked)). astro preview of dist with Chromium through the Playwright library, server stopped by process group and the port probed down: zh-Hans post 200, 13 article links all 200 including /zh-Hans/compare/ and /zh-Hans/ontology/; zh-Hant post 200, 13 article links all 200 including /zh-Hant/compare/ and /zh-Hant/ontology/; en post 200, 13 links all 200. The only cross-locale links left are the two English-only companion posts, which the lint accepts by design.", "gates": "Local subset all exit 0 on 9f18a2f (verdict lines in tests). CI on PR #264 head 9f18a2f: Build and deploy: completed / success; mergeable_state clean; 5 commits on the PR.", "files_changed": [ "content/blog/when-not-to-use-an-executable-business-ontology/index.zh-Hans.mdx (two links restored)", "content/blog/when-not-to-use-an-executable-business-ontology/index.zh-Hant.mdx (regenerated by pnpm gen:zh-hant)", "merge commit 4e02c30 bringing origin/main 3c5b6c6 into the branch (22 files from main: the generator fix, the positioning copy sweep and two glossary terms; none edited here)" ], "pr_body_should_add": [ "Deviations and notes, first bullet, superseded: zh-Hans now links /zh-Hans/compare/ and /zh-Hans/ontology/ (and /zh-Hans/security/), and the generated zh-Hant carries /zh-Hant/compare/ and /zh-Hant/ontology/, after origin/main 3c5b6c6 (the gen-zh-hant marketing-page rewrite) was merged into the branch as 4e02c30.", "Gates: re-run on 9f18a2f, all exit 0; build 915 pages and 98827 internal links resolve; seo:smoke 905 HTML pages; CI Build and deploy success on 9f18a2f.", "Browser check: article links zh-Hans 13, zh-Hant 13, en 13, all 200 in astro preview, the four marketing-page links among them.", "Branch note: one merge commit from origin/main (no rebase, no force-push); squash-merge on the slot day as planned." ], "deviations": "None beyond the round’s scope. No PR body PATCH (the additions are listed above for the seat); no label writes; no MCP writes; commit trailers model-free.", "api_writes": "1 — one relay dispatch (POST /repos/objectstack-ai/objectstack/dispatches) executing POST /repos/objectstack-ai/www.objectos.ai/issues/261/comments (this addendum). git push x1 (f9955fa..9f18a2f), not REST.", "mcp_calls": "0", "open_questions": [], "out_of_scope_findings": [] }Generated by Claude Code