Skip to content

docs(readme): say "ontology-driven" beside "the ontology is the software" — the mechanism line that sets ObjectStack apart from metadata-driven platforms (maintainer-directed) #24754

Closed

Description

@objectstack-fleet

Ruled: 6286329964 · letter 甲 · 2026-10-20T08:02Z — the Chinese line stays 「本体即软件。」, the English definition line stays in label form with 「no second application」, the new paragraph stands; state pm:dispatched (in flight, assignee unchanged; director seat, summon #45 continuation 1, batch #375 item 1).

Filing gate ③, a task the maintainer directed. In the skills seat 1 session (session_01HEdP5tPhqQfzwRmKDxwn85, seat post #7623) on 2026-10-20, the maintainer asked, verbatim: 「salesforce 之前叫元数据驱动,我们现在可以叫本体驱动吗」, then 「本体驱动 会不会和本体即软件更搭」, then directed: 「立卡,更新 README」 and 「你负责用〔达档模型名〕派发」 (the model's name is masked here by the model-identifier rule; it is the CONTRACT_REVIEW_TIER constant). Filed by the domain:skills seat 1 (os-justin). ⛔ Not a claim. Self-labelled under exception 二 (SKILL.md 域车道表: 立卡人自贴、正文齐三件 ⇒ 执行席直接认领, triage spot-checks) because the maintainer named this seat to dispatch it; root README.md has no row in the lane table.

Reader who acts: the domain:skills seat's developer, dispatched at CONTRACT_REVIEW_TIER on the maintainer's word, in one PR to README.md only. The PR stays draft: the wording is the maintainer's positioning, so the seat posts the 速读 and lands only on the maintainer's word on the text (he is online), not by auto-merge.

Dedupe: REST enumeration of this repository, GET /repos/objectstack-ai/objectstack/issues?state=all&since=YYYY-MM-DDThh:mmZ&per_page=100 (the since value being 2026-10-17T00:00:00Z; the digits were moved out of the quotation by the director seat so the body could be re-stamped, nothing else of this paragraph changed) (9 pages, 806 items, pull requests skipped), title+body matched against /ontology-driven|本体驱动|本体即软件|ontology is the software|README/i → 11 hits, none on point (other READMEs, QA runs, seat posts, the protocol.ts split decision). The last README positioning PR is #22955 (1f312fdfa, the essay/compare/deck links). No open card.

What the README says today (origin/main)

  • Lines 7–14, the thesis block: 「## The ontology is the software.」 / 「One executable business ontology. AI writes it, the runtime runs it, agents operate it, you own it.」 / 「本体即软件。」 / 「Apps small enough for AI to hold whole.」; line 16 the tag row Executable · AI-writable · Agent-operable · You own it · Apache-2.0.
  • Lines 79–96, 〈What we mean by ontology〉: the definition (objects, fields, relations, actions, permissions, flows, agent and tool definitions = a business ontology), the two boundaries (not a knowledge-representation ontology; not a semantic layer over existing systems), projections, where code goes, and the links to the concept page, the glossary and the compare page (which sets ObjectStack beside knowledge ontologies, semantic layers, operational ontologies, metadata platforms and AI code generation).
  • Lines 214–217, the closing thesis quote.
  • The word 「metadata-driven」 does not occur in the README; 「metadata」 occurs as the thing the agent writes (line 28) and Studio authors (line 77).

What to change (the seat's reading of the maintainer's words; the maintainer rules on the final wording)

  1. The mechanism line, paired with the thesis. 「The ontology is the software」 is the claim about what ObjectStack is; 「ontology-driven」 (本体驱动) is the adjective for how it runs, the successor of 「metadata-driven」 as Salesforce's generation used it. Add it where the thesis is stated — the block at lines 7–14 and/or the tag row at line 16 — so the pair reads as one statement: the ontology is the software, and the software is ontology-driven. Bilingual like the block itself (「本体即软件。本体驱动。」 or the dev's better rendering).
  2. One or two sentences in 〈What we mean by ontology〉 that say what the word adds over metadata-driven: metadata-driven names the mechanism (behaviour generated from declarative configuration); ontology-driven names what that definition is — the business ontology itself, the one source that the runtime, the API, the UI and the agents all consume, with no second hand-written application beside it. Keep the section's existing boundaries intact (not a knowledge-representation ontology, not a semantic layer): the new sentences must not re-open them.
  3. ⛔ Not in this PR: the compare page, the concept page, the glossary, docs/NORTH-STAR.md, AGENTS.md and the four-axis text still say 「metadata」 in their own voices; if the README change contradicts any of them, the developer names the line in the PR body as a finding, and the seat carries it to the maintainer. No new section, no rewrite of the README's structure, no change to the demo, install or package sections.

Acceptance

  • grep -c "ontology-driven" README.md ≥ 1 and grep -c "本体驱动" README.md ≥ 1; the thesis block and 〈What we mean by ontology〉 keep their links; pnpm check:doc-anchors and the rest of the derived gate list are green.
  • The PR body quotes the maintainer's four sentences, shows before/after for every changed line, and carries a ## 维护者速读(草稿); the seat's 速读 goes to the maintainer, who rules on the wording before the seat lands it.
  • Fixes closes this card.

Related


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 5 · domain:skills seat 1 · 2026-10-20T04:44Z
    Session: session_01HEdP5tPhqQfzwRmKDxwn85
    Account: os-justin (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-24754-readme-ontology-driven
    Worktree: objectstack-issue-24754
    Domain: domain:skills (the maintainer named this seat to dispatch; root README.md has no lane-table row; self-labelled under exception 二, triage spot-checks)
    Seat: domain:skills#1 (seat post #7623)
    File surface: README.md only — the thesis block (lines 7–14) and/or the tag row (line 16), and one or two sentences in 〈What we mean by ontology〉 (lines 79–96); ⛔ no other file, no structural change
    Container & model: S, mode:subagent, model: CONTRACT_REVIEW_TIER (reason: the maintainer's per-card word 「你负责用〔达档模型名〕派发」, this seat's session chat at 2026-10-20T04:40Z, the model's name masked by the model-identifier rule; dispatch-gates --tier --repo objectstack-ai/objectstack README.md at 580fd4ed3c prints no path-derived mandate, so the ceiling is the maintainer's ruling, not a derivation; README.md is not a governed face, the seat's own ACCEPT is the review of record, and the landing waits on the maintainer's word on the wording)
    Clause-②: no
    Responsibility: n/a — not a defect card (filing gate ③, a maintainer-directed task)
    Thread-read: none
    Ruling-ref: the maintainer's four sentences quoted in the card body (2026-10-20T04:40Z)
    Serial constraints cleared: README.md is FREE (no open PR touches it; last merged README change #23303 3d830b77c); the lane's in-flight #24727 touches docs/adr/0047-object-ui-run-modes.md only (disjoint); seat 2 (#19287) is vacant since 2026-10-19T16:53Z.

    • Premise read on origin/main 580fd4ed3c: README.md is 452 lines; the thesis block, tag row and 〈What we mean by ontology〉 read as the card quotes; the string 「metadata-driven」 does not occur in the file.
    • Landing: PR stays draft; the seat posts the 速读 and lands (ready + auto-merge) only after the maintainer's word on the text.
  2. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Dispatch order — posted 2026-10-20T04:44Z by the claiming seat (session_01HEdP5tPhqQfzwRmKDxwn85, os-justin, domain:skills#1; claim 6283576353). The same text is the dev's prompt, run mode:subagent at CONTRACT_REVIEW_TIER on the maintainer's word (README.md is not a governed face; the seat's ACCEPT is the review of record, and the landing waits on the maintainer's word on the wording).

    你是 os-dev,本令派你恰好一张卡:#24754(p2,domain:skills,维护者直派的 README 定位文案卡;非受管面,PR 留 draft 等维护者对措辞拍板)。

    • 认领评论 6283576353。
    • 分支 claude/issue-24754-readme-ontology-driven,worktree ../objectstack-issue-24754,基点 origin/main(派发时 580fd4ed3c)。
    • 预期落点只有 README.md:① 论点块(第 7–14 行)与/或标签行(第 16 行)加「本体驱动 / ontology-driven」的机制句;② 〈What we mean by ontology〉(第 79–96 行)加一到两句说清它比 metadata-driven 多出什么。⛔ 不碰其他文件,不改 README 结构,不动演示/安装/包目录各节。
    • 若实测表明真正的生产者在别处,直接按生产者侧修,落点与理由写进报告和 PR 正文。

    一、裁决(不可重裁)

    • 维护者四句原话(本席会话,2026-10-20 04:3x–04:40Z),逐字:「salesforce 之前叫元数据驱动,我们现在可以叫本体驱动吗」「本体驱动 会不会和本体即软件更搭」「立卡,更新 README」「你负责用〔达档模型名〕派发」(模型名按模型标识规则遮蔽)。PR 正文逐字引前三句。
    • 卡正文〈What to change〉三条是本席对原话的读法,措辞最终由维护者拍板:你给出最好的一版,PR 留 draft。
    • 〈What we mean by ontology〉既有的两条边界(不是知识表示本体:无继承、无公理、无推理器;不是架在既有系统上的语义层)原样保留,新句 ⛔ 不得重开或削弱它们。
    • 你施工的档位是维护者点名的达档;本席以 ACCEPT 作复核记录,⛔ 不另起隔离复审(README 非受管面)。

    二、PM 机制假设(须实测,鼓励证伪)

    1. README 452 行;第 7–14 行是 > 引用块(英文标题句、一句加粗、中文「本体即软件。」、一句 Apps…),第 16 行是反引号标签行;第 79–96 行一段散文 + 一段比较链接。「metadata-driven」在文件里零命中,「metadata」两处(第 28、77 行)指 agent/Studio 写的元数据,不改。
    2. 两级主张的分工:「本体即软件」答「是什么」,「本体驱动」答「怎么跑」;metadata-driven 描述机制(行为由声明式配置生成),ontology-driven 命名这份定义本身 —— 业务本体,运行时、API、UI、agent 都消费它,旁边没有第二份手写应用。写进 README 时要能一句话被外人读懂,首次出现带定义。
    3. 对外比较页(objectstack.ai/docs/concepts/compare)把 ObjectStack 与 metadata platforms 并列;README 新句不得与该页或〈What we mean by ontology〉的既有口径矛盾 —— 读 content/docs/concepts/compare.mdx(或同名页)与 content/docs/concepts/ontology.mdx 核一遍,矛盾处作为 finding 写进 PR 正文,⛔ 不在本 PR 改它们。
    4. 门禁:pnpm check:doc-anchors 对 README 的锚点/链接;其余清单见下。README 没有行数棘轮。
    5. 中英双语:论点块本身双语,「本体驱动」的中文与英文「ontology-driven」应成对出现;标签行若加项,保持反引号样式与现有四项的并列语气。

    三、PM 建议路线(可选,实测优先)

    • 论点块:在「本体即软件。」旁或其下加「本体驱动。」及英文对应(例如把加粗句改为「One executable business ontology, and an ontology-driven stack.」或另起一行「Ontology-driven: …」),以最小改动让两句成一对。
    • 〈What we mean by ontology〉:在定义句之后加一句对照:「Metadata-driven, as the previous generation of platforms used the term, names the mechanism — behaviour generated from declarative configuration. Ontology-driven names what that definition is: the business ontology itself, the one thing the runtime, the API, the UI and the agents all consume, with no second application written beside it.」(示例,按你的判断改写)。
    • 用四轴自评一遍措辞(实际需求、长远合理、防 AI 误读、不扩散)写进 PR 正文的 ## 维护者速读(草稿):改了什么 / 为什么 / 风险(对外口径一致性) / 席位意见留空 / 你要做的(拍板措辞)。
    • PR 保持 draft;翻 ready 与入队归席位,且只在维护者对措辞点头后。

    本令门禁清单(PM 于 580fd4ed3c 以 dispatch-gates --commands 对 README.md 取得,9 条)

    • node scripts/check-closing-keyword-parity.mjs · node scripts/check-closing-keyword-parity.mjs --self-test · node scripts/check-comment-mask-corpus.mjs
    • pnpm check:doc-anchors · pnpm check:driver-memory-census · pnpm check:gitlink-declared · pnpm check:nul-bytes · pnpm check:refd-timer-probe · pnpm check:watch-hint-literal

    通用

    • 仓 objectstack-ai/objectstack,共享检出 /home/user/objectstack(⛔ 不编辑;它游离钉在 origin/main);PM 会话 session_01HEdP5tPhqQfzwRmKDxwn85,席位 domain:skills#1,卡 assignee os-justin(⛔ 你不写卡 assignee)。
    • PM 的认领评论即你的身份;⛔ 不另留认领。动手前读卡全文与全部评论,核对最新一条 Claim: 点名的 Branch: 就是本令的分支,不符即停手回报。
    • 档位:CONTRACT_REVIEW_TIER 施工(维护者点名;dispatch-gates --tier 在 580fd4ed3c 读「no path-derived mandate」)。
    • README 非受管面:不走达档隔离复审;席位 ACCEPT 后等维护者对措辞拍板再落地。PR 正文带 ## 维护者速读(草稿)(中文、业务角度,席位意见留空)。
    • 不发布面(README 不进任何包的 files[])⇒ 不写 changeset,skip-changeset 随 pr_create 的 labels 同笔申报;若分类器拒该标签,原样记入 deviations,⛔ 不自行改道。
    • PR 正文行首照抄认领的 Clause-②: no;首行 Fixes #N。PR 正文一次写成(os-dev 定义:正文后续改动归席位)。
    • 门禁清单由 PM 于派发时以 node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack README.md 取得(见本令专属段),逐条跑,退出码先落盘再看,--ran 对账;对实际改动重取一次补跑。
    • Writes: 只走 REST 代理 / scripts/pm/ 写工具(云容器经 fleet-write 中继);写预算三笔:git push、pr_create(draft,assignees: ["os-justin"],labels: ["skip-changeset"])、卡上一条 os-dev-report 评论;⛔ 无 MCP 写。终报 mcp_calls 与 api_writes 两数都报。
    • 终报 JSON 照 os-dev 定义;另只收机器可核字段:gates(逐条命令 + 退出码)、line_budget(README 行数 before/after,改动行逐行列出)、deviations、files_changed。
    • 前台执行姿态:全部步骤同步跑完,⛔ 不把检查挂后台等唤醒;一轮只以终报或 blocked 结束。

    每个方案必须沿四条固定评估轴分析,这是决策分析的核心原则,不是可选项:

    • 实际业务需求 — 它服务的是真实存在的业务场景,
      还是投机性能力面?判据要求实测(谁在写这个键、谁在读、
      示例应用与真实部署的用法),「读起来像有用」不作数。这条轴会改变结论,不是陪衬。
    • 项目长远合理性 — 哪个方案符合北极星方向与可持续架构(no workarounds、
      contract-first),临时补丁式选项要明说长期代价。
    • 防 AI 写代码犯错,尤其是防 AI 写元数据 app 犯错 — 哪个方案让 AI 在结构上更难写错:
      契约收紧(严格 schema、publish 时响亮拒绝)优于消费端宽容(?? 回退、静默容错)——
      宽容恰是 AI 批量犯错被掩盖的温床;声明即强制,绝不让 AI 声明一个运行时不兑现的能力。
    • 创业阶段不扩散需求 — 创业阶段聚焦原则:创业项目先专注核心能力,能力扩张默认
      从紧,无拉动的声明面按 implementation-first 处置,已发布零消费能力不因沉没成本豁免。
      过渡也从紧 —— 创业阶段不渐进:废弃别名/拼写与能力退役默认立即退休,无分阶段
      窗口、无双拼写宽限;staged 仅凭具名外部用户证据方可荐。新增门禁默认否:门禁是只减
      不增的零件,例外只有维护者点名;荐新增门禁须引其点名原话,否则荐「不加」。

    基本裁决原则:spec 声明 > 实现 > 文档面;声明而未兑现是实现缺口,补实现或退役,
    ⛔ 不在消费端收窄;未声明键随实现,文档随之。「声明即强制」只及 spec 与元数据契约、
    运行时能力,⛔ 不及 AGENTS.md 这类给 agent 读的约定 —— 那些的读者是 agent,不是门禁。
    推荐意见必须基于这四条轴给出理由;四轴冲突时如实呈现权衡,
    交维护者拍板。


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 24754,
      "status": "done",
      "branch": "claude/issue-24754-readme-ontology-driven",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/24771",
      "session": "session_01HEdP5tPhqQfzwRmKDxwn85 — subagent of the dispatching seat; the relay stroke, the commit trailer and the PR footer all carry this id",
      "premise_still_valid": true,
      "summary": "README.md only, at origin/main 580fd4ed3c: the thesis block's 「本体即软件。」 becomes 「本体即软件,本体驱动。」 with a new English definition line (\"Ontology-driven: database, API, UI and agent tools all derive from that one definition of the business, so there is no second codebase to keep in step with it.\"), and 〈What we mean by ontology〉 gains a two-sentence paragraph (metadata-driven names the mechanism and ObjectStack keeps it; calling the stack ontology-driven names what the definition is and whose it is: a definition of the business, an open format in your repository, written for an agent to read). The section's two boundaries, the four-promise sentence, the tag row and every link are byte-identical. Draft PR #24771 by design — the wording is the maintainer's to rule on; the PR body quotes his three sentences verbatim, shows before/after per line, and carries the 维护者速读(草稿) with three wording choices for him. Departed from the dispatch's suggested sentence on measured grounds: compare.mdx grants metadata-driven platforms 'Executable: Yes' and 'Is the system itself: Yes', so the differentiator is the essay's three (open format, yours to take, written for an agent), not 'one source the runtime consumes' or 'no second application beside it' (README says code moves into the runtime). Premise check: all four line ranges as described; 'metadata-driven' zero hits holds; the dispatch's 'metadata on two lines (28, 77)' is false — 22 lines — none touched.",
      "tests": "No package touched, so ① build closure and ② package test/typecheck are empty by the local-scope rule; pnpm lint and the farm are CI's. Acceptance on the committed tree 4cc84f1e54: grep -c \"ontology-driven\" README.md = 1; grep -c \"本体驱动\" README.md = 1; wc -l README.md = 463 (was 452). Control-byte scan grep -naP '[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]' README.md = empty. Ablation: none — docs-only, no tested behaviour changed. test:repo not run locally — not derived, diff touches no test; CI Test Core carries it.",
      "gates": "Local, derived at 4cc84f1e54 by node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (identical to the dispatch's harvest at 580fd4ed3c), each exit captured to a file before any pipe: node scripts/check-closing-keyword-parity.mjs :: exit 0 (\"OK (3 parsers agree on all 9 keywords …)\"); node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0 (\"40 assertions, 5 mutations … driven to red\"); node scripts/check-comment-mask-corpus.mjs :: exit 0 (\"9639 files, 0 disagree, 0 unparseable\"); pnpm check:doc-anchors :: exit 0 (\"540 internal #fragment link(s) across 423 source file(s) all resolve to a real heading\"); pnpm check:driver-memory-census :: exit 0; pnpm check:gitlink-declared :: exit 0; pnpm check:nul-bytes :: exit 0 (\"scanned 12505 text file(s) … no raw ASCII control bytes\"); pnpm check:refd-timer-probe :: exit 0; pnpm check:watch-hint-literal :: exit 0. dispatch-gates --ran ran.list :: exit 0 — \"9 derived, 9 run, 0 NOT-MEASURED, 0 UNRUN\". CI check-runs on 4cc84f1e54 at report time (GET /commits/4cc84f1e54/check-runs, 36 runs): completed/success — Check Changeset, Check Documentation Links, Check PR Size, No other open PR may claim the same issue, No other open PR may claim the same single-writer path, Part-of PR must not also close its card, The card this PR closes must claim this branch, filter; in_progress — Lint · CI release & engine gates, Lint · ESLint, Lint · PM dispatch-gates, Lint · docs & code guards, Lint · repo & tooling gates, Lint · scoped (query-options erasure; slot lookup & corpus; tooling self-tests), Type Check · (consumer gates; debt ledger; source gates; workspace), Test Core, Dogfood Regression Gate, Governed Surface Queue Guard, Auto Label; skipped — Build Core, Build Docs, Console Pin Gate, Temporal Conformance, Dogfood Verify CLI, Packed-tarball smoke, Dogfood Regression Gate shards, Test Core shards. Not re-run locally; not waited for.",
      "line_budget": "README.md 452 → 463 lines (+11, −0 net; diff 12 insertions / 1 deletion). Changed: line 12 「本体即软件。」 → 「本体即软件,本体驱动。」. Added lines 13–16: 「>」 / 「> Ontology-driven: database, API, UI and agent tools all derive from that one」 / 「> definition of the business, so there is no second codebase to keep in step」 / 「> with it.」. Added lines 97–103: 「Metadata-driven, as the previous generation of platforms used the word, names」 / 「the mechanism — behaviour derived from a declarative definition instead of」 / 「written as code — and ObjectStack keeps it. Calling the stack ontology-driven」 / 「names what that definition is and whose it is: a definition of the business」 / 「rather than configuration of a platform, an open format in your repository」 / 「rather than inside a vendor's system, and written for an agent to read.」 / blank. No line removed; no other line moved except by the insertions.",
      "files_changed": [
        "README.md"
      ],
      "mcp_calls": "0 — no MCP GitHub tool called; reads were gh api GET (issue 24754, its comments, pull 24771, commits/4cc84f1e54/check-runs)",
      "api_writes": "2 relay strokes via scripts/pm/fleet-write/dispatch.mjs as objectstack-fleet[bot] — ① pr_create (run 39372491486, success; executor issued POST /repos/objectstack-ai/objectstack/pulls, POST /repos/objectstack-ai/objectstack/issues/24771/assignees [os-justin], POST /repos/objectstack-ai/objectstack/issues/24771/labels [skip-changeset]; read-back 10116/10116 bytes identical; labels read back on the PR: size/s (bot), skip-changeset); ② comment (POST /repos/objectstack-ai/objectstack/issues/24754/comments — this os-dev-report). git pushes (not REST): empty-branch probe (exit 0), one push refused by the pre-push hook with nothing landed, one landed 4cc84f1e54.",
      "deviations": [
        "First push of the content commit was refused by the pre-push check:commit-card-trailers: I had written the Co-Authored-By trailer with a model name, following the harness attribution reminder; the repo rule (model-free pair) wins. Amended the unpublished local commit to 'Co-authored-by: Claude' + Claude-Session, pushed again; no history anyone held was rewritten.",
        "PR footer uses AGENTS.md's session-URL form, not the harness reminder's '🤖 Generated with' block — repo instruction takes precedence.",
        "Departed from the dispatch's suggested 〈What we mean by ontology〉 sentence (reasons measured against compare.mdx, the essay and ontology.mdx; recorded in the PR body under 'Why these words').",
        "Dispatch hypothesis 1 falsified in one half: 'metadata' occurs on 22 README lines, not two; 'metadata-driven' zero occurrences holds. None of the 22 lines touched.",
        "test:repo not run locally — derivation did not name it and the diff touches no test; CI Test Core carries it."
      ],
      "open_questions": [
        {
          "question": "Chinese pair line: one sentence with a comma, or two sentences?",
          "options": [
            "A 「本体即软件,本体驱动。」 (as landed)",
            "B 「本体即软件。本体驱动。」"
          ],
          "recommendation": "A — the maintainer asked whether 本体驱动 pairs with 本体即软件; a comma makes the pair one statement, mirroring 'the ontology is the software, and the software is ontology-driven'."
        },
        {
          "question": "English definition line in the thesis block: label form or full pair sentence?",
          "options": [
            "A 'Ontology-driven: database, API, UI and agent tools all derive from …' (as landed)",
            "B 'The ontology is the software, and the software is ontology-driven: …' (repeats the h2 text inside the same block)"
          ],
          "recommendation": "A — the h2 already states the first half two lines above; the label form keeps the block tight and matches the README's label style."
        },
        {
          "question": "Are the three contrasts in the new paragraph (a definition of the business; an open format in your repository; written for an agent to read) the three things to say publicly?",
          "options": [
            "A keep the three (they are the essay's own 'what it was not' triple for Salesforce metadata)",
            "B swap or drop one"
          ],
          "recommendation": "A — they are already the public line in the essay and compare.mdx, so the README adds no new claim."
        }
      ],
      "out_of_scope_findings": [
        "carrier: the domain:skills seat, to the maintainer · noted, not filed — our own docs use 'metadata-driven' in ObjectStack's voice in 41 files (docs index, getting-started index, concepts index §Metadata-Driven Development, design-principles, packages/core and packages/cli READMEs, create-objectstack's AGENTS.md template 'a metadata-driven low-code project'; CHANGELOGs, ADRs and release notes included). The README was written to sit on top of that term; if ontology-driven becomes the house term those pages follow in their own PRs. dedupe words: ontology-driven, metadata-driven, house term, docs index, concepts index.",
        "carrier: none · noted, not filed — compare.mdx's side-by-side row grants metadata-driven platforms 'Executable: Yes' and 'Is the system itself: Yes'; the README's differentiator was chosen to agree with it (openness, ownership, agent-readability). No contradiction found between the README and compare.mdx, ontology.mdx, metadata-driven.mdx, the glossary entry or the essay. dedupe words: compare, side by side, metadata-driven platforms, is the system itself.",
        "carrier: none · noted, not filed — the essay's only prior use of 'ontology-driven' is Guarino 1998's non-executable sense (line 215); the README defines the term in the executable sense on first use so the two cannot be confused. dedupe words: Guarino, ontology-driven information systems, executable."
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #24771 comment 6283820689 · domain:skills seat 1 · os-justin · session_01HEdP5tPhqQfzwRmKDxwn85 · 2026-10-20T05:06Z

    • PR docs(readme): say "ontology-driven" beside "the ontology is the software" #24771 (head 4cc84f1e5, README.md +12/−1) is the developer's draft of the maintainer's wording; the seat's 速读终稿 puts three wording choices (and one optional word) to the maintainer. The PR stays draft until his word; then the seat lands it (README is not a governed face; the seat's record is the review of record).
    • This card: pm:dispatched → needs-user-decision in the same act (the PR hangs on the maintainer's wording).
    • Carried, not filed: 41 of our own docs files say 「metadata-driven」 in ObjectStack's voice; whether 「ontology-driven」 becomes the house term is the maintainer's call and would be its own ③ card.

    Generated by Claude Code

  5. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    席位意见(增量 1 · README 措辞三选一词)· director seat (summon #45 continuation 1, session_01Lg6GQ4xjqmvEzYv78d6H7i), read as batch #375 item 1, 2026-10-20T07:07Z

    On the skills seat 1's maintainer-directed card (filing gate ③; draft PR #24771, head 4cc84f1e5, README.md +12/−1; the seat's 速读终稿 6283820689 puts three wording choices and one optional word to the maintainer). The director read the diff itself. ① 「本体即软件,本体驱动。」 as one sentence (A): it reads as the pair the maintainer asked for (「本体驱动 会不会和本体即软件更搭」) and matches the English 「the ontology is the software, and the software is ontology-driven」. ② the label form 「Ontology-driven: …」 (A): the h2 two lines above already states the first half, so a full two-clause sentence would say it twice. ③ the three contrast words — a definition of the business, an open format in your repository, written for an agent to read — (A): they are the essay's and the compare page's existing public 口径, so the README adds no new claim and contradicts none of the 41 files that say metadata-driven in ObjectStack's voice. The one word: 「no second codebase to keep in step with it」 → 「no second application to keep in step with it」 — this seat recommends taking it (B on the word): README line 88 says code does not disappear but moves into the runtime, so 「codebase」 invites the reading that there is no code at all; 「application」 says what is meant and costs one word.

    Recommend ① A · ② A · ③ A · word B. Workload of the letters: zero beyond the one-word edit, which the seat has its dev make on the PR; README is not a governed face, the seat's ACCEPT 6283841997 is the review of record, and the seat lands after the maintainer's word. After the word: the maintainer's sentence is recorded on PR #24771 by this seat; this card leaves needs-user-decision for pm:dispatched (in flight, assignee unchanged), and closes with the merge.


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling: batch #375 item 1 · letter 甲 · maintainer 「甲」 2026-10-20T08:01Z

    Director seat, summon #45 continuation 1, session_01Lg6GQ4xjqmvEzYv78d6H7i (GitHub os-justin; written as objectstack-fleet[bot] through the relay, read back), on the skills seat 1's maintainer-directed card (PR #24771, head 4cc84f1e5; the seat's 速读终稿 6283820689 put three choices and one word; this seat's delta 6285422242 recommended A · A · A · word B). Opening marker #12708, comment 6285413947. The maintainer's words in this session's chat, in order: 「中文对句:A「本体即软件,本体驱动。」你不觉得显得太啰嗦了吗,你和我讨论的时候要列出具体的句子。」 — answered with the four candidate blocks spelled out in full (甲 / 乙 / 丙 / 丁) — then 「甲」. Thread-read: 6285422242.

    What the ruling binds (letter 甲 — the Chinese line stays four characters; the mechanism lives in the English definition line):

    1. The thesis block of README.md reads, verbatim:
      > **One executable business ontology.** AI writes it, the runtime runs it, agents operate it, you own it.
      >
      > 本体即软件。
      >
      > Ontology-driven: database, API, UI and agent tools all derive from that one definition of the business, so there is no second application to keep in step with it.
      >
      > Apps small enough for AI to hold whole.
      
      So against PR docs(readme): say "ontology-driven" beside "the ontology is the software" #24771's head: the Chinese line goes back to 「本体即软件。」 (the dev's 「本体即软件,本体驱动。」 is withdrawn as too wordy), the English definition line stays in its label form, and its last words change from 「no second codebase」 to 「no second application」.
    2. The new paragraph in 〈What we mean by ontology〉 stands as the PR has it (presented to the maintainer in full as 照用, not objected).
    3. Mapping to the seat's choices: ① neither A nor B — the Chinese line is unchanged from main; ② A; ③ A; the one word, B. The card's acceptance line 「grep -c "本体驱动" README.md ≥ 1」 is superseded by this letter: the Chinese word does not appear, 「ontology-driven」 does (grep -c "ontology-driven" README.md ≥ 1 stands).
    4. Not taken: 乙 (a second Chinese line mirroring the definition — the block gets heavy), 丙 (the dev's pair — the maintainer: too wordy), 丁 (the same pair reordered).

    Workload of the letter: one edit on PR #24771 (two lines of README.md), then the seat's landing; README is not a governed face, the seat's ACCEPT 6283841997 is the review of record once re-read on the new head.

    Execution: the maintainer's word and the final text are recorded on PR #24771 by this seat; this card needs-user-decision → pm:dispatched in this act (in flight, assignee unchanged); the domain:skills seat 1 has its dev make the two-line edit, re-reads its ACCEPT on the new head, and lands (pr_ready + automerge_enable) with CI green; the card closes with the merge.


    Generated by Claude Code

  7. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 24754,
      "status": "done",
      "branch": "claude/issue-24754-readme-ontology-driven",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/24771",
      "session": "session_01HEdP5tPhqQfzwRmKDxwn85 — subagent of the dispatching seat; round 2 on the maintainer's ruling",
      "premise_still_valid": true,
      "summary": "Round 2 on the maintainer's ruling (letter 甲 — card comment 6286329964, PR comment 6286370846): one new commit 7a9bc58c69 on top of 4cc84f1e54, no amend, no force. README.md moves exactly two lines: line 12 「本体即软件,本体驱动。」 → 「本体即软件。」 and line 15 「no second codebase to keep in step」 → 「no second application to keep in step」; the English definition line keeps its label form and the README's ~80-column wrap; the 〈What we mean by ontology〉 paragraph and every other line are unchanged. PR body untouched (body read back 10116 bytes, unchanged; draft; labels documentation, size/s, skip-changeset; assignee os-justin). Worktree removed after the push.",
      "tests": "Acceptance on the committed tree 7a9bc58c69: grep -c \"ontology-driven\" README.md = 1 (still required); grep -c \"本体驱动\" README.md = 0 (the card's grep is superseded by the ruling — the Chinese word is not used); wc -l README.md = 463 (unchanged); longest changed line 79 columns. Control-byte scan grep -naP '[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]' README.md = empty. No package touched: ① and ② empty; no ablation (docs-only); test:repo not run locally (not derived; CI Test Core carries it).",
      "gates": "Local at 7a9bc58c69 — node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derives the same 9 families as rounds 0/1; each exit captured to a file before any pipe: node scripts/check-closing-keyword-parity.mjs :: exit 0; node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0; node scripts/check-comment-mask-corpus.mjs :: exit 0 (\"9639 files, 0 disagree, 0 unparseable\"); pnpm check:doc-anchors :: exit 0 (\"540 internal #fragment link(s) across 423 source file(s) all resolve to a real heading\"); pnpm check:driver-memory-census :: exit 0; pnpm check:gitlink-declared :: exit 0; pnpm check:nul-bytes :: exit 0 (\"scanned 12505 text file(s) … no raw ASCII control bytes\"); pnpm check:refd-timer-probe :: exit 0; pnpm check:watch-hint-literal :: exit 0. dispatch-gates --ran :: exit 0 — \"9 derived, 9 run, 0 NOT-MEASURED, 0 UNRUN\". CI check-runs on 7a9bc58c69 at report time (33 runs): completed/success — Auto Label, Check Documentation Links, Check PR Size, Dogfood Regression Gate, Governed Surface Queue Guard, Lint · CI release & engine gates, Lint · ESLint, Lint · PM dispatch-gates, Lint · scoped (query-options erasure; slot lookup & corpus; tooling self-tests), No other open PR may claim the same issue, No other open PR may claim the same single-writer path, Part-of PR must not also close its card, Test Core, The card this PR closes must claim this branch, Type Check · debt ledger, Type Check · workspace, filter; in_progress — Lint · docs & code guards, Lint · repo & tooling gates, Type Check · consumer gates, Type Check · source gates; skipped — Build Core, Build Docs, Check Changeset, Console Pin Gate, Temporal Conformance, Dogfood Verify CLI, Packed-tarball smoke, 18.x upgrade harness, Dogfood Regression Gate shards, Test Core shards. No red; not waited for.",
      "line_budget": "README.md 463 → 463 (2 lines changed, 0 added, 0 removed). Line 12 before 「> 本体即软件,本体驱动。」 after 「> 本体即软件。」. Line 15 before 「> definition of the business, so there is no second codebase to keep in step」 after 「> definition of the business, so there is no second application to keep in step」. Lines 14 and 16 (「> Ontology-driven: database, API, UI and agent tools all derive from that one」 / 「> with it.」) and the 〈What we mean by ontology〉 paragraph (lines 97–102) unchanged.",
      "files_changed": [
        "README.md"
      ],
      "mcp_calls": "0 — no MCP GitHub tool called; reads were gh api GET (issues/comments/6286370846, issues/24754/comments, pulls/24771, commits/7a9bc58c69/check-runs)",
      "api_writes": "1 relay stroke this round via scripts/pm/fleet-write/dispatch.mjs from the shared checkout as objectstack-fleet[bot] — comment (POST /repos/objectstack-ai/objectstack/issues/24754/comments: this os-dev-report). Cumulative across rounds: 3 strokes (pr_create #24771; report comment 6283787628; this comment). git push this round (not REST): one, landed 7a9bc58c69 (4cc84f1e54..7a9bc58c69), pre-push hook green.",
      "deviations": [
        "The ruling comments spell the thesis block unwrapped (one line per sentence); applied with the README's existing ~80-column wrap exactly as the coordinator's message spelled it — identical words, no other difference.",
        "test:repo not run locally — not derived and the diff touches no test; CI Test Core (success on 7a9bc58c69) carries it."
      ],
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  8. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Landing armed · domain:skills seat 1 · os-justin · session_01HEdP5tPhqQfzwRmKDxwn85 · 2026-10-20T08:13Z

    • Ruling 甲 (6286329964) applied on PR docs(readme): say "ontology-driven" beside "the ontology is the software" #24771 by commit 7a9bc58c6 (two lines: 「本体即软件。」 restored; 「no second application」); the seat's second 席位核对 6286540417 on that head; CI green; readied and armed (pr_ready + automerge_enable) through the relay. The queue merges it; Fixes #24754 closes this card and the seat then removes pm:dispatched.

    Generated by Claude Code

  9. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Landing · domain:skills seat 1 · os-justin · session_01HEdP5tPhqQfzwRmKDxwn85 · 2026-10-20T08:28Z

    Reading Value
    PR #24771 merged yes, by the queue at 2026-10-20T08:26Z, merge commit ddb3360a4
    ddb3360a4 is an ancestor of origin/main (ddb3360a49) yes
    queue branch gh-readonly-queue/main/pr-24771-… still present 0
    remote branch claude/issue-24754-readme-ontology-driven still present 0

    State change: the card closed completed by the PR's Fixes; pm:dispatched removed. README.md on main now carries the ontology-driven definition line beside 「本体即软件。」 and the two-sentence paragraph in 〈What we mean by ontology〉, as ruled 甲.


    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

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions