Addendum (director seat, 2026-09-10T11:0xZ) — the principle has three clauses, verbatim and untranslated: 「我们的项目以objectstack 协议为准,文档应该以实际实现为准。协议不正确的应该先修改协议。」 The third clause fixes the ORDER: when the protocol is judged wrong, the spec change lands first and consumers block on it — a consumer never implements a wrong arm, never narrows or widens a spec-declared shape locally, and never adds an author-settable key the spec does not declare. Write all three clauses; the precedence paragraph below is the derived reading.
Filed by the director seat (summon #21, session_01QVMnxyWBx8cAQMsV6akDV9) on the maintainer's instruction, verbatim and untranslated (director chat, 2026-09-10T10:5xZ):
我们的项目以objectstack 协议为准,文档应该以实际实现为准。 这个是决裁的基本原则,应该写入skills
Routed domain:skills under the maintainer direct-dispatch channel (the instruction names the work); pm:queue. ⛔ Not claimed. The director seat writes rulings, not skill text.
What to write, and where
The principle, as a named base principle of adjudication — the maintainer's sentence quoted verbatim with its date, in the four-axis decision framework block of .claude/skills/pm-dispatch/SKILL.md 〈升级与决策〉, next to the two maintainer quotes already embedded there (2026-08-04 创业阶段聚焦, 2026-08-27 不渐进), and in the framework's synced copy (check:skill-frame-sync / -freshness guard both copies; find the second copy by the guard, do not guess). The operational reading the director derived when executing decision batch #112 (seat post #12708, ledger 5617477212), which the text should carry so the next adjudicator applies it mechanically:
- Precedence: the shape
@objectstack/spec declares > the actual implementation (the read site) > every documentation face (TS types in objectui, registry inputs, JSDoc, README, liveness ledgers).
- A key or arm the spec declares that an implementation does not honour is an implementation gap: implement it, or file a spec card to retire it (ADR-0049 enforce-or-remove) — never narrow it locally in a consumer.
- A key the spec does not declare follows its implementation; its documentation faces are corrected to what the implementation does.
- Documentation drift is repaired toward the implementation; only a ruling with a cited source makes it a contract defect (this half already exists as 「说明书脱节不进:有裁定出处才是 (b),否则改文档」 and 「协议为基准:spec 与代码不一致默认改代码对齐;改协议单独立卡」 — keep those lines, and make the four-axis block cite the principle they derive from).
Same PR: the matching clause in references/core-rules.md (SKILL.md and core-rules change together by the seat's own rule).
Constraints the dispatch must carry
SKILL.md is under the line ratchet (pnpm check:pm-skill-ratchet: line count never rises). Net budget for this change: +3 lines in the framework block, paid by deletion elsewhere in the file — the maintainer's instruction is the authority for the content, not for raising the ceiling.
- Governed surface: contract-review tier build (skills seat), draft PR with
## 维护者速读(草稿), request review from os-zhuang and hotlong, human merge. check:skill-frame-sync and check:skill-frame-freshness must pass on the PR.
- ⛔ Do not restate the principle in prose elsewhere; one named principle, two synced copies, one core-rules clause.
Dedup
git grep on origin/main for 协议为基准 / 说明书脱节 / 实际实现 across SKILL.md, core-rules.md, decision-analysis.md, AGENTS.md (2026-09-10T10:5xZ): the two derived clauses exist; the base principle with the maintainer's wording does not, and the four-axis block does not cite it. Open domain:skills cards read by title: none about this principle. Refs: seat post #12708 (summon #21 ledger 5617477212 records the ruling and its application to objectui#7759 / #4631 / #4044 / #8568 / #8754), #17285 (the tier ruling set), #17359 (sibling skills evaluation).
Generated by Claude Code
Routed
domain:skillsunder the maintainer direct-dispatch channel (the instruction names the work);pm:queue. ⛔ Not claimed. The director seat writes rulings, not skill text.What to write, and where
The principle, as a named base principle of adjudication — the maintainer's sentence quoted verbatim with its date, in the four-axis decision framework block of
.claude/skills/pm-dispatch/SKILL.md〈升级与决策〉, next to the two maintainer quotes already embedded there (2026-08-04 创业阶段聚焦, 2026-08-27 不渐进), and in the framework's synced copy (check:skill-frame-sync/-freshnessguard both copies; find the second copy by the guard, do not guess). The operational reading the director derived when executing decision batch #112 (seat post #12708, ledger 5617477212), which the text should carry so the next adjudicator applies it mechanically:@objectstack/specdeclares > the actual implementation (the read site) > every documentation face (TS types in objectui, registryinputs, JSDoc, README, liveness ledgers).Same PR: the matching clause in
references/core-rules.md(SKILL.md and core-rules change together by the seat's own rule).Constraints the dispatch must carry
SKILL.mdis under the line ratchet (pnpm check:pm-skill-ratchet: line count never rises). Net budget for this change: +3 lines in the framework block, paid by deletion elsewhere in the file — the maintainer's instruction is the authority for the content, not for raising the ceiling.## 维护者速读(草稿), request review fromos-zhuangandhotlong, human merge.check:skill-frame-syncandcheck:skill-frame-freshnessmust pass on the PR.Dedup
git greponorigin/mainfor 协议为基准 / 说明书脱节 / 实际实现 acrossSKILL.md,core-rules.md,decision-analysis.md,AGENTS.md(2026-09-10T10:5xZ): the two derived clauses exist; the base principle with the maintainer's wording does not, and the four-axis block does not cite it. Opendomain:skillscards read by title: none about this principle. Refs: seat post #12708 (summon #21 ledger 5617477212 records the ruling and its application to objectui#7759 / #4631 / #4044 / #8568 / #8754), #17285 (the tier ruling set), #17359 (sibling skills evaluation).Generated by Claude Code