Skip to content

docs(north-star): align the North Star to ontology-as-software — five edits - #22179

Merged
os-zhuang merged 2 commits into
mainfrom
claude/issue-22172-north-star-ontology-alignment
Oct 8, 2026
Merged

os-zhuang merged 2 commits into
mainfrom
claude/issue-22172-north-star-ontology-alignment

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

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 7ef50a4fb 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

… edits

Five maintainer-specified edits to docs/NORTH-STAR.md, nothing else:
the 「我们是什么」 line, a two-user sentence at the end of 「做出来的是什么」,
a four-promises sentence at the end of 「唯一的度量,那条路」, a 「你拥有」
row at the end of step ④, and two phrase swaps in priority item 4.

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VYToj6PQehTEKNrjGM9akg
@github-actions github-actions Bot added size/xs documentation Improvements or additions to documentation labels Oct 8, 2026
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 8, 2026
…order

Two text closures on the five-edit change, nothing else:
- the 「你拥有」 row (step ④) now ends with the file's own marker for
  unwritten checklist items, 「清单项待写」 (line 13's convention), instead
  of 「待清单扫描建项」;
- priority rule 4 moves the 「Agent 越权时被权限挡住并留痕」 clause to the
  end of its sentence, removing the double em-dash.

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VYToj6PQehTEKNrjGM9akg
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

维护者速读(终稿)· PR #22179(#22172,北极星对齐「本体即软件」)

项目总监席 · session_01VYToj6PQehTEKNrjGM9akg · 2026-10-08T04:29Z。对照席位自己读的 head 91bbb17187 校正自 PR 正文草稿;复核记录在 #22172 的 ACCEPT 评论。本 PR 改 docs/NORTH-STAR.md(Tier H),只能由你批准合并。

改了什么(一个文件,五处,+5/−4):

  • 第 3 行「我们是什么」:从「一个应用开发平台」改为「本体即软件——一个可执行的业务本体(对象与字段、关系、动作、权限、流程、Agent 与工具定义),AI 写、运行时跑、人与 Agent 用、你拥有;创业阶段」,并注明视图、仪表盘、应用、翻译是本体的投影,是今天人用它、看它、验它的面。
  • 第 7 行「做出来的是什么」:原能力清单一字不动,末尾加「两类用户:今天的业务人员经界面、验收者经控制台;明天的 Agent 经 MCP。路的每一步都要对两类用户成立。」
  • 第 11 行「那条路」:末尾加「四个承诺各由一步兑现:① AI 可写 · ②③ 可执行 · ④ 你拥有 · ⑤ Agent 可操作 · ⑥ 是闭环。」
  • 第 96 行(第 ④ 步列表末):新增「你拥有」功能点一行:定义在你的仓库里可 diff、整个本体可导出、可在没有我们的情况下自托管跑起来;点名三个待建清单项,按文件自己的约定标「清单项待写」。
  • 第 117 行(优先级第 4 条):「元数据既要 AI 能写」→「本体既要 AI 能写」;「也要 AI 能用」→「也要人与 Agent 能用」,句末加「Agent 越权时被权限挡住并留痕」。

按你的原话没改的: 不做「元数据」→「本体」全文替换;不加「核心优先于投影」的次序规则;能力清单不重排;「现在不做」「阶段姿态」「仪器为车队服务」「账本」不动。

为什么改: 定位 10 月 3–5 日已落在 README、文档首页、本体概念页与博客,北极星停在 10 月 1 日,AI 席位读到两套身份;「你拥有」此前没有任何一步、任何一条优先级、清单里也没有一项。你在聊天里的两句定案:「本体即软件,未来是 agent 操作,短期之内还是需要人操作,这些也重要吧?视图、仪表盘、应用、翻译」「采纳」。

风险与代价(含回滚): 纯文本,无代码、无 changeset(skip-changeset)、无生成物;派发门禁 13 项全绿;CI 在 head 上 19 成功、8 跳过、3 在跑,无红。回滚 = revert 一个提交。清单那一半不在本 PR:合并后你说一句「跑一轮 coverage sweep,加第六角:四个承诺」,扫描会建出第 96 行点名的三项。

席位意见: ACCEPT。建议批准。

你要做的: 审阅五处文字,同意则 APPROVE 并合并;或 APPROVE 后回一句,本席翻 ready 入队。


Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review October 8, 2026 05:38
@os-zhuang
os-zhuang enabled auto-merge October 8, 2026 05:38
@os-zhuang
os-zhuang added this pull request to the merge queue Oct 8, 2026
Merged via the queue into main with commit 5d1d1ac Oct 8, 2026
37 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-22172-north-star-ontology-alignment branch October 8, 2026 05:51
akarma-synetal pushed a commit to akarma-synetal/framework that referenced this pull request Oct 9, 2026
…bjectstack-ai#22205)

Fixes objectstack-ai#22194

Clause-②: no

## What changes

`docs/NORTH-STAR.md`, 「优先级」 item 4 gains one sentence: the maintainer's
own text, inserted byte-for-byte as the card's "The one edit, and only
this" section gives it, between the item's penultimate sentence and its
final sentence 「写给 AI 的文档与 skills 说错一句,等于产品缺陷。」. No other byte of the
file moves. Docs only; Tier H governed surface, so this PR stays draft
and lands on an authorized APPROVED review or the maintainer's hand.

The inserted sentence, copied programmatically out of the card body
(never retyped) and compared byte-equal to the dispatch order's
quotation:

```text
人用的那一半也有标准:作者不写一行界面代码,得到的界面要像设计师经手过——同一套设计系统、同一种版式;看着不对与渲染不出同样是缺陷,在「看到」那一步就被拒。
```

**Insertion point.** The card's quoted context predates PR objectstack-ai#22179
(objectstack-ai#22172 is landed, merge `5d1d1aca6d`). On `origin/main` `13aea18959`
the penultimate sentence ends 「……Agent 越权时被权限挡住并留痕。」 rather than
「……真能做的。」. The card's rule is applied as written (between the
penultimate and the final sentence), and the 「,Agent 越权时被权限挡住并留痕」 clause
objectstack-ai#22179 added stays exactly where it is.

### Item 4, before (`origin/main` `13aea18959`)

```text
4. 因为写的是 AI、用的也是 AI:本体既要 AI 能写——错的必须被响亮拒绝并给处方,永不静默落库;也要人与 Agent 能用——声明了的对象、动作、agent / tool / skill 元数据在运行时兑现,MCP 面暴露的就是应用真能做的,Agent 越权时被权限挡住并留痕。写给 AI 的文档与 skills 说错一句,等于产品缺陷。
```

### Item 4, after (this branch)

```text
4. 因为写的是 AI、用的也是 AI:本体既要 AI 能写——错的必须被响亮拒绝并给处方,永不静默落库;也要人与 Agent 能用——声明了的对象、动作、agent / tool / skill 元数据在运行时兑现,MCP 面暴露的就是应用真能做的,Agent 越权时被权限挡住并留痕。人用的那一半也有标准:作者不写一行界面代码,得到的界面要像设计师经手过——同一套设计系统、同一种版式;看着不对与渲染不出同样是缺陷,在「看到」那一步就被拒。写给 AI 的文档与 skills 说错一句,等于产品缺陷。
```

## Verification (head `40ae9bc4dd`)

- `git diff --stat` against base `13aea18959`: 1 file,
`docs/NORTH-STAR.md`, +1/-1; `git diff -U0` shows exactly one hunk (`@@
-117 +117 @@`, item 4).
- `grep -c -F` of the full sentence in `docs/NORTH-STAR.md`: 0 at base,
1 at head.
- Byte proof: deleting the sentence's 226 UTF-8 bytes from the head file
reproduces the base blob `824f77668f` exactly, so the insertion is the
whole diff.
- The insertion ran as a script that refused to write unless the anchor
(the sentence ending 「留痕。」 directly followed by 「写给 AI 的文档」) occurred
exactly once, then checked the result on disk.
- 「美观」 occurs 0 times in the file before and after; no section, number
or per-screen rule added.
- Punctuation: the sentence carries the card's bytes as-is. It uses
ASCII comma, colon and semicolon (U+002C, U+003A, U+003B) with CJK 、。「」
and em dashes, which is the file's own convention (0 occurrences of the
full-width U+FF0C, U+FF1A, U+FF1B before and after).
- No raw control bytes (`grep -naP` over the file: no match).

Gates: `node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` derives 13 families for this change set (5
by path, 8 whole-tree). All 13 run on head `40ae9bc4dd`, every one exit
0:

```text
node scripts/check-ci-filter-parity.mjs :: exit 0
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
pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0
pnpm check:cross-package-test-inputs :: exit 0
pnpm check:doc-authoring :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:gitlink-declared :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:pm-governed-merges :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:watch-hint-literal :: exit 0
```

`--ran` reconciliation over that record: "13 derived, 13 run, 0
NOT-MEASURED, 0 UNRUN" (a derived zero: all 13 carry an exit code, none
is 3). `check:doc-formula-expressions` first exited 3 (PREREQUISITE NOT
MET, the fresh worktree had no `@objectstack/formula` /
`@objectstack/lint` dist; nothing measured); after `turbo run build
--filter=@objectstack/formula --filter=@objectstack/lint` under the
verify lock it ran and exited 0. Outside the derived 13 (artifact
rosters, wide-population families, CI type-check lanes) is CI's.

No changeset: `docs/NORTH-STAR.md` ships from no package. The root
package is private, and no `package.json` `files[]` names the file
(positive control: 69 package manifests with a `files[]` were read by
the same grep). Hence `skip-changeset`.

## Acceptance notes

- The dispatch order's mechanism assumption 3 expected "full-width
punctuation as the file already uses". Measured: the file uses ASCII
comma/colon/semicolon throughout, and so does the card's sentence, so
the card's bytes already match the file; nothing was converted.
- Three package files mention `docs/NORTH-STAR.md` in comments only
(`packages/cli/src/utils/author-time-rules.ts`,
`packages/cli/test/verify-author-time-stage.test.ts`,
`packages/lint/src/validate-security-posture.runtime-surface.test.ts`);
none reads the file, and the clause the lint test cites (「声明了的…在运行时兑现」)
is unchanged.

## 维护者速读(草稿)

### 改了什么

北极星文件 `docs/NORTH-STAR.md` 的「优先级」第 4
条加了一句话,就是您在卡上同意的原文,一字不差:用户界面也有标准,作者不写一行界面代码,得到的界面也要像设计师处理过(同一套设计系统、同一种版式);界面看着不对,和渲染不出来一样算缺陷,在「看到」这一步就被拒。这句话放在「Agent
越权时被权限挡住并留痕」之后、「写给 AI 的文档与 skills 说错一句」之前。文件其他内容一个字节都没动。

### 为什么改


在这个平台上,应用作者不写界面代码,也改不了平台自带的弹窗,所以每一个渲染出来的界面都是平台的责任。以前「渲染不出来」会在「本地跑起来、看到」这一步被拦下,「渲染得难看」却拦不住;这句话把两者放到同一个关口。它只承诺两件能检查的事(一套设计系统、每类界面一种版式),不写「美观」二字,避免变成没完没了的审美卡。

### 风险与代价(含回滚)

纯文档改动,不影响任何发布的包,也不改变运行时行为,所以不需要
changeset。代价在后面:今后定级和复核时,「看着不对」的界面也会按缺陷排队,工作量会增加;具体检查哪些界面种类、怎么判定,由配套的测试清单卡负责,不写在北极星里。回滚:撤销(revert)这个
PR 即可,只涉及一行。

### 席位意见



### 你要做的

核对上面「before / after」两段,确认这句话的原文和位置无误后,在本 PR 上点 Approve。

---
_Generated by [Claude
Code](https://claude.ai/code/session_01CXydFDyiQwNbGFkmwrcRQq)_

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation needs-user-decision size/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants