Skip to content

Commit 5d1d1ac

Browse files
docs(north-star): align the North Star to ontology-as-software — five edits (#22179)
Fixes #22172 Clause-②: no Docs-only. Five maintainer-specified edits to `docs/NORTH-STAR.md` (the maintainer's own text); every other byte of the file is unchanged. `docs/NORTH-STAR.md` is a Tier H governed surface: this PR stays draft and no seat readies, queues or merges it — the maintainer approves and merges by hand. ## The five edits (line numbers at `91854796c`, base `7ef50a4fb`) | # | Where | Line (before → after) | Edit | |---|---|---|---| | 1 | 「我们是什么」 line | 3 → 3 | Whole line replaced. 「一个应用开发平台;创业阶段。」 becomes the 本体即软件 definition (对象与字段、关系、动作、权限、流程、Agent 与工具定义 — AI 写、运行时跑、人与 Agent 用、你拥有;创业阶段) followed by the 投影 sentence (视图、仪表盘、应用、翻译是本体的投影). | | 2 | 「做出来的是什么」 paragraph | 7 → 7 | The capability sentence is untouched. One sentence appended after 「参考实现 hotcrm。」: 「两类用户:今天的业务人员经界面、验收者经控制台;明天的 Agent 经 MCP。路的每一步都要对两类用户成立。」 | | 3 | 「唯一的度量,那条路」 paragraph | 11 → 11 | One sentence appended after the six steps, after 「跑得通但结果错的是 P2。」: 「四个承诺各由一步兑现:① AI 可写 · ②③ 可执行 · ④ 你拥有 · ⑤ Agent 可操作 · ⑥ 是闭环。」 | | 4 | Step ④ 「发布并装进一个环境」 list | new line 96 (after old line 95) | One row appended in the file's own row grammar `轴 · 功能点(业务语言) · 清单区 · 项 id`: `- devpath · 你拥有:定义在你的仓库里可 diff,整个本体可导出、可在没有我们的情况下自托管跑起来 · platform-core + cli · ontology-export-roundtrip, artifact-reproducible-build, standalone-boot-no-cloud(待清单扫描建项)` | | 5 | 优先级 item 4 | 116 → 117 | Two phrase swaps only: 「元数据既要 AI 能写」 → 「本体既要 AI 能写」 and 「也要 AI 能用」 → 「也要人与 Agent 能用——Agent 越权时被权限挡住并留痕」. The rest of the item is byte-identical. | `git diff -U0 7ef50a4` shows exactly five hunks (`@@ -3 +3 @@`, `@@ -7 +7 @@`, `@@ -11 +11 @@`, `@@ -95,0 +96 @@`, `@@ -116 +117 @@`). `git diff --stat` is one file, +5 / -4, and `--ignore-all-space --stat` reads the same, so no whitespace or line-ending change rides along; the file keeps its trailing newline and carries no CR bytes. Premise check: every anchor the card quotes was present verbatim on `origin/main` at `7ef50a4fb` (the file's last landing is still `78e3e3a62`, no same-day churn), so there is no quote difference to report. ## Deliberately NOT changed (the maintainer's four) - No global 元数据 → 本体 replacement: the word 元数据 still stands everywhere else (「给谁」, 「什么算做好」, 「唯一的度量」, the step rows, 「阶段姿态」). - No 「核心优先于投影」 ordering rule added. - The 「做出来的是什么」 capability list is neither reordered nor trimmed. - 「现在不做」, 「阶段姿态」, 「仪器为车队服务」 and 「账本」 are untouched. ## Verification Row grammar: every `- ` row in the file (80 after the edit) splits on ` · ` into exactly four fields, the new row at line 96 included; its 清单区 cell `platform-core + cli` uses the same `A + B` shape line 91 already uses (`cli + platform-core`). Control bytes: `grep -naP` over the control-character class on the file is clean (exit 1, no match). Gates: derived with `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` from the real changeset against merge base `7ef50a4fb` (13 commands, byte-identical to the `docs/NORTH-STAR.md` path form), run on HEAD `91854796c`, each exit code captured before any pipe: | command | exit | |---|---| | `node scripts/check-ci-filter-parity.mjs` | 0 | | `node scripts/check-closing-keyword-parity.mjs` | 0 | | `node scripts/check-closing-keyword-parity.mjs --self-test` | 0 | | `node scripts/check-comment-mask-corpus.mjs` | 0 | | `pnpm --filter @objectstack/lint run check:doc-formula-expressions` | first run 3 = PREREQUISITE NOT MET (`@objectstack/formula` and `@objectstack/lint` not built; nothing measured); after `pnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint` under the shared verify lock (lock verdict exit 0, 88 s held): rerun exit **0** | | `pnpm check:cross-package-test-inputs` | 0 | | `pnpm check:doc-authoring` | 0 | | `pnpm check:driver-memory-census` | 0 | | `pnpm check:gitlink-declared` | 0 | | `pnpm check:nul-bytes` | 0 | | `pnpm check:pm-governed-merges` | 0 | | `pnpm check:refd-timer-probe` | 0 | | `pnpm check:watch-hint-literal` | 0 | `node scripts/pm/dispatch-gates.mjs --ran` over that record: exit 0 — 「13 derived, 13 run, 0 NOT-MEASURED, 0 UNRUN」, the zero derived from recorded exit codes (none is 3). Drift from the dispatch's gate snapshot (taken earlier the same day): the derived list carries `pnpm --filter @objectstack/lint run check:doc-formula-expressions` where the snapshot named `pnpm --filter @objectstack/lint run check:doc-authoring`, and it adds `pnpm check:watch-hint-literal`; both derived commands were run. `package.json` has no `check:*` script named `north-star`. NOT MEASURED locally, by design (CI owns them): the whole-tree `pnpm lint`, the type-check lanes and the Test Core shards the derivation lists as CI-only. This diff touches no package source, so the dependency closure of affected packages is empty and no package `build`, `test` or `typecheck` is owed by the diff itself; the one build run here (`@objectstack/formula` + `@objectstack/lint`, under the shared verify lock) was a declared prerequisite of the doc-formula gate, not a consequence of the change. ## Acceptance notes - The three checklist ids in the new row (`ontology-export-roundtrip`, `artifact-reproducible-build`, `standalone-boot-no-cloud`) do not exist yet in `docs/qa/platform-checklist/`. The row marks them 「待清单扫描建项」 per the maintainer's text, while line 13 of the file spells the convention for unwritten items as 「清单项待写」. Observation only, maintainer wording kept verbatim; no script under `scripts/` reads the row ids, so no gate is affected. Carrier: the checklist-author sweep that creates the three items. Noted, not filed. - The dispatch's gate snapshot drifted within the day (see Verification). Recorded for the PM; no action in this PR. ## 维护者速读(草稿) ### 改了什么 只改 `docs/NORTH-STAR.md`,五处,每处都是你在卡上给的原文:① 「我们是什么」整行换成「本体即软件」的定义与投影句;② 「做出来的是什么」段末追加「两类用户」一句,能力清单一字不动;③ 「唯一的度量」段末追加「四个承诺各由一步兑现」一句;④ 第 ④ 步清单末尾加一行「你拥有」(devpath · platform-core + cli,三个待建清单项);⑤ 优先级第 4 条两处措辞:「元数据既要 AI 能写」→「本体既要 AI 能写」,「也要 AI 能用」→「也要人与 Agent 能用——Agent 越权时被权限挡住并留痕」。其余字节不动;你点名不改的四项(不全文替换 元数据→本体、不加「核心优先于投影」、能力清单不重排不删、「现在不做」「阶段姿态」「仪器为车队服务」「账本」)都没碰。 ### 为什么改 北极星从「应用开发平台」对齐到「本体即软件」:把产品定义、两类用户、四个承诺与路的六步一一对应写进去,并把「你拥有」(可 diff、可导出、可自托管)列为路上的一个功能点。这是卡 #22172 的全部内容,不多不少。 ### 风险与代价(含回滚) 纯文档,无代码、无发布面、无 changeset(`skip-changeset`)。风险在措辞:第 ④ 步新行的三个清单项 id 还不存在,行尾已标「待清单扫描建项」;文件第 13 行对未写项的约定拼法是「清单项待写」,这里按你的原文保留,没有门禁读这些 id。回滚 = revert 这一个 commit,无副作用。 ### 席位意见 (留空,席位填) ### 你要做的 在本 PR 上 Approve 并合并(Tier H;席位不翻 ready、不入队)。若第 ④ 步新行的「待清单扫描建项」要改成文件既有的「清单项待写」拼法,请在评论里说一句,席位代改。 --- _Generated by [Claude Code](https://claude.ai/code/session_01VYToj6PQehTEKNrjGM9akg)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 1e5d322 commit 5d1d1ac

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

‎docs/NORTH-STAR.md‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# ObjectStack 北极星
22

3-
**我们是什么**:一个应用开发平台;创业阶段。
3+
**我们是什么**:本体即软件——一个可执行的业务本体(对象与字段、关系、动作、权限、流程、Agent 与工具定义),AI 写、运行时跑、人与 Agent 用、你拥有;创业阶段。视图、仪表盘、应用、翻译是本体的投影,是今天人用它、看它、验它的面。
44

55
**给谁**:第三方开发者,AI 代理为主、人验收——AI 进入我们的元数据协议写应用,人看结果、拍板。应用的终端用户是企业里的业务人员,他们通过 Agent 和界面使用应用。
66

7-
**做出来的是什么**:**AI 原生的企业管理应用**——业务对象与记录、看数据的视图、能用的表单、真挡得住的权限、审批与自动化、经营报表、登录与身份、可对外的 API、文件、客户的语言,以及不写代码在运行中改应用。AI 原生的意思:应用自带一个能替用户操作它的 Agent——本仓(社区版)通过 MCP 把对象与动作暴露出去,用户接入自己的 Agent;企业版把 Agent 内置在用户界面里,那一半住 cloud 仓。缺任何一样就不是这个应用。这一行是定义,不是清单;每一项做到什么、怎么验证,在 `docs/qa/platform-checklist/`。参考实现 hotcrm。
7+
**做出来的是什么**:**AI 原生的企业管理应用**——业务对象与记录、看数据的视图、能用的表单、真挡得住的权限、审批与自动化、经营报表、登录与身份、可对外的 API、文件、客户的语言,以及不写代码在运行中改应用。AI 原生的意思:应用自带一个能替用户操作它的 Agent——本仓(社区版)通过 MCP 把对象与动作暴露出去,用户接入自己的 Agent;企业版把 Agent 内置在用户界面里,那一半住 cloud 仓。缺任何一样就不是这个应用。这一行是定义,不是清单;每一项做到什么、怎么验证,在 `docs/qa/platform-checklist/`。参考实现 hotcrm。两类用户:今天的业务人员经界面、验收者经控制台;明天的 Agent 经 MCP。路的每一步都要对两类用户成立。
88

99
**什么算做好**:一个建在协议上的应用,过了验证才算做好——它的元数据对应的清单项在一次 run 里通过,`objectstack verify` 在它上面是绿的。没过验证的交付不算 done。
1010

11-
**唯一的度量,那条路**:一个新的 AI 开发者(人在旁验收)从 `npm create objectstack` 出发:写元数据 → 本地跑起来、看到 → 验证响亮拒绝错的、放行对的 → 发布并装进一个环境 → 接一个 Agent(社区版走 MCP),让它在应用里完成一次真实业务操作 → 按客户一句话需求迭代一次。每周真走一遍,结果落一张 run record。第一个断掉的步骤就是当前的 P0;跑得通但结果错的是 P2。
11+
**唯一的度量,那条路**:一个新的 AI 开发者(人在旁验收)从 `npm create objectstack` 出发:写元数据 → 本地跑起来、看到 → 验证响亮拒绝错的、放行对的 → 发布并装进一个环境 → 接一个 Agent(社区版走 MCP),让它在应用里完成一次真实业务操作 → 按客户一句话需求迭代一次。每周真走一遍,结果落一张 run record。第一个断掉的步骤就是当前的 P0;跑得通但结果错的是 P2。四个承诺各由一步兑现:① AI 可写 · ②③ 可执行 · ④ 你拥有 · ⑤ Agent 可操作 · ⑥ 是闭环。
1212

1313
**路上的功能点**:平台要做出来的功能点,一行一个,按那条路的步骤排;自上而下就是顺序 —— 这张表就是路线图,改它即改优先级。每行 `轴 · 功能点(业务语言) · 清单区 · 项 id`,一个功能点从协议到运行时到前端是一整条;`docs/qa/platform-checklist/` 里的每一项都恰好属于这里的一行(未写的项标「清单项待写」)。id 不带前缀时属于它前面那个清单区,跨区的写全名。
1414

@@ -93,6 +93,7 @@
9393
- workflow · 随包发的流程与动作:停用要持久、被依赖时拒绝、可克隆、两道门一样严 · automation + api-backend + access-security · packaged-flow-disable-durable, packaged-flow-subflow-disable-refusal, packaged-flow-clone-contract, setup-packaged-automation-board, api-backend.packaged-action-disabled-dispatch, api-backend.action-activation-door-contract, access-security.packaged-flow-write-door-parity
9494
- access · 装进来的包带着它声明的能力与权限集,只读的包锁住 Studio · access-security + studio-authoring · capability-declaration-lifecycle, packaged-permission-set-lifecycle, readonly-package-locks-studio, studio-authoring.packaged-automation-studio-lock
9595
- studio · 随包发来的视图与仪表盘,是可以直接改的那一类 · studio-authoring · packaged-display-class-direct-edit
96+
- devpath · 你拥有:定义在你的仓库里可 diff,整个本体可导出、可在没有我们的情况下自托管跑起来 · platform-core + cli · ontology-export-roundtrip, artifact-reproducible-build, standalone-boot-no-cloud(清单项待写)
9697

9798
**⑤ 接一个 Agent(社区版走 MCP),让它完成一次真实业务操作**
9899

@@ -113,7 +114,7 @@
113114
1. 安全与数据完整性永远最高,不等路。
114115
2. 路断了、或清单上的能力断了 ⇒ P0/P1;能跑但出错 ⇒ P2;不在路上、不在清单上 ⇒ p3 或不做。定级读「路上的功能点」:改那张表即改优先级,⛔ 不逐卡改档。
115116
3. 本车道队列还有开放的 P0/P1 时,该车道不派 p2/p3 的工具卡、契约卫生卡;解锁产品 P0/P1 的仪器卡沿链继承其优先级。
116-
4. 因为写的是 AI、用的也是 AI:元数据既要 AI 能写——错的必须被响亮拒绝并给处方,永不静默落库;也要 AI 能用——声明了的对象、动作、agent / tool / skill 元数据在运行时兑现,MCP 面暴露的就是应用真能做的。写给 AI 的文档与 skills 说错一句,等于产品缺陷。
117+
4. 因为写的是 AI、用的也是 AI:本体既要 AI 能写——错的必须被响亮拒绝并给处方,永不静默落库;也要人与 Agent 能用——声明了的对象、动作、agent / tool / skill 元数据在运行时兑现,MCP 面暴露的就是应用真能做的,Agent 越权时被权限挡住并留痕。写给 AI 的文档与 skills 说错一句,等于产品缺陷。
117118

118119
**阶段姿态**:速度优先于兼容。用的人少:退役立即生效,无过渡窗口、无别名双拼;兼容层、迁移窗口一类的工作默认 p3;声明了但不兑现的键按发布批量退役,不一键一卡。
119120

0 commit comments

Comments
 (0)