Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/agents/os-dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -412,9 +412,9 @@ not decoration:**
2026-08-04:这是创业项目,核心能力优先):能力扩张默认从紧,无拉动的声明面按
implementation-first 处置,已发布零消费的能力不因沉没成本获得豁免。

Your recommendation must be justified on all four axes;四轴冲突时如实呈现权衡,交维护
者拍板。同样,`main` 在你脚下碎了、依赖未合并、CI 基础设施故障时,返回 `blocked`(附证
据)—— 先重试到足以确认不是你的改动
Your recommendation must be justified on all four axes;四轴冲突时推荐按拉动排序:实测拉动→长远,
零拉动→不扩散,防错破平,安全与难逆恒人工(只排推荐);权衡如实呈现交维护者拍板。`main`
在你脚下碎了、依赖未合并、CI 基础设施故障⇒`blocked`(附证据),重试到足以排除你的改动

## 终报消息 —— 恰好这段 JSON,不带任何环绕散文

Expand Down
15 changes: 14 additions & 1 deletion .claude/skills/pm-dispatch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -868,9 +868,17 @@ finding 定级换结果态,永不留挂)/ `Blocked-by:` 活性现验(合并一
- **创业阶段不扩散需求** — **创业阶段聚焦原则**(维护者 2026-08-04 指示:
「我们是一个创业项目,应该先专注于核心能力」):能力扩张默认从紧,
无拉动的声明面按 implementation-first 处置,已发布零消费的能力不因沉没成本获得豁免。
**过渡也从紧 —— 创业阶段不渐进**(维护者 2026-08-27 裁,逐字:「项目在创业阶段,
用户也很少,短期不考虑渐进。」):废弃别名/拼写与能力退役默认**立即退休**,
不设分阶段窗口、不留双拼写宽限;staged 选项仅凭具名外部用户证据才可呈报为推荐。

推荐意见必须基于这四条轴给出理由;四轴冲突时如实呈现权衡,
交维护者拍板。**标准四棱卡面块是落卡与升级的必备件**(四棱维护者 2026-08-11 接受;
交维护者拍板。**分歧推荐序按拉动定向**(维护者 2026-08-27 裁「tong y 4」):
有实测拉动 ⇒ 荐长远形态一次付清;零拉动 ⇒ 荐不扩散(defer/remove、记录在案、重开自由);
防错轴破余下平局向响亮/结构性;安全/权限边界与破坏性难逆动作恒在人工地板。
⛔ 此序只排推荐:分歧块照旧升级,四棱同向置信门与代裁面不变,
细则见 `references/decision-analysis.md`。
**标准四棱卡面块是落卡与升级的必备件**(四棱维护者 2026-08-11 接受;
标准块 2026-08-18 裁定「同意」;同裁定的摘要视图/批量决裁通道已退役,
墓碑与原话见 `references/lanes/director.md`;收件箱由维护者定期与 AI 讨论消化,⛔ 不 assign
推送 —— 维护者 2026-08-19 裁定:「我感觉决策卡推给我太麻烦了,我需要和ai讨论才能判断,
Expand Down Expand Up @@ -904,6 +912,11 @@ skills和决裁。」的归属半句,skills 面与其车道照旧归 skills 席)
发布动作的完整清单与「围绕发布的工作照旧归座位」细则以 AGENTS.md「release act」
段为权威,含**合并 Version Packages PR**)。发现未经人工的发布痕迹按事故立案,
⛔ 不代跑补救性发布 —— 机械通道的存在不构成授权,遇到那类通道当缺陷上报。
- **发版提醒纪律**(维护者 2026-08-27 拍板,逐字:「要发版本我会自己点。
除非重要修复要发版本你可以提醒我。」):Version Packages PR 默认永不催 ——
挂着的发布 PR 是常态,⛔ 不进维护者摘要;唯一例外 = 重要修复已合 main 在等发布,
且提醒必须点名该修复与不发版的用户可见后果,让维护者仅凭提醒即可判缓急;
与上条相组合 —— 本条管**何时开口**,上条管**谁动手**。
- **Governed 面由维护者人工合并,合并即审核记录**(三裁一脉:2026-08-08
「adr 只能由维护者自己确认,人工合并,ai 不得擅自合并」;2026-08-11「所有 skills 的更新和adr
类似,需要人工审核」;2026-08-18 对「人工合并即人工审核,事后审计代替事前门」
Expand Down
2 changes: 2 additions & 0 deletions .claude/skills/pm-dispatch/references/decision-analysis.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,5 @@
④ 创业阶段不扩散(remove 优于 declare-and-maintain,每个已声明的键都是永久义务);
一行推荐 + 字母选项(A/B/…);**一行强制置信缺口(「本分析看不见什么」)**。
四棱行同受六项约束:每行论据从业务立场写,机制名词只作括号补充。
**四棱分歧推荐序**(2026-08-27「tong y 4」):②实测拉动⇒荐①长远终态;零拉动⇒荐④不扩散;
③破余下平局向响亮/结构;安全与难逆恒人工;⛔ 只排推荐,分歧照旧升级、代裁面不扩。
2 changes: 2 additions & 0 deletions .claude/skills/pm-dispatch/references/lanes/director.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ issue 编号;机器判据恒英文,引文逐字不译。
策」四轴(`check:skill-frame-sync` 管的四份拷贝不动,⛔ 本文不复制框架本体)。
- 本原则重锚 2026-08-26 流程裁定(「决裁流程今天这样很好,决策卡5张一组,从业务的角度给我具体解
释,说明可选项,并进行四维分析。应该写入技能。」):流程未变,2026-08-26 定流程、2026-08-27 升格定归属。
- **创业阶段不渐进**(维护者 2026-08-27,逐字:「创业阶段不渐进 应该写入项目总监skills」):
废弃别名与退役默认立即退休,无窗口无双拼写宽限;staged 仅凭具名外部用户证据可荐。

## 职责一:`needs:contract-review` 复审链

Expand Down
10 changes: 5 additions & 5 deletions .claude/skills/pm-dispatch/references/review-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@

- **PR 形态**:存在、是 draft、目标 `main`、正文首行引用卡片
—— **`Fixes #<n>` 仅当合并应当关卡**;只落地了可实施一半(另一半在决策箱或按范围排除)
⇒ 必须 `Part of #<n>`,否则合并会静默关掉一张正躺在决策箱里的卡,
而 `needs-user-decision` 的收件箱过滤只看 open issue。翻 ready 之前亲核首行,别只信报告。
- **闭合关键词两读**:
翻 ready 前亲扫正文 —— 合并前唯一的人工关口(⛔ 关键词永不挨着另一张 open 卡编号;
解析器不理会否定句);合并后那一读见落地细则,解析事实见平台读数。
⇒ 必须 `Part of #<n>`,否则合并静默关掉决策箱里的卡(收件箱过滤只看 open)。⚠️ 切
`Part of` 的正文最易再武装自动关闭:解释「为何不关」的记账句(谁在合并后手动关卡)、
否定句、引号/反引号包裹,解析器一律照关;安全拼法 = 卡号旁零动词,关闭安排写进评论。
- **闭合关键词两读**:翻 ready 前亲核首行、亲扫全正文(⛔ 关键词永不挨另一张 open 卡编号)
—— 合并前唯一的人工关口,别只信报告;合并后那一读见落地细则,解析事实见平台读数。
- **`Part of` 收口的卡不会自动关,`pm:dispatched` 必须手工摘**(动作要件见落地细则 B):
ACCEPT 那一刻记进落地待办,⛔ 不留给下次巡检 —— 漏摘让在飞视图多算一张无主开卡。
- **范围检查**(取 changed files,⛔ 不看报告自述):无 `content/docs/releases/` 改动、
Expand Down
16 changes: 12 additions & 4 deletions scripts/check-skills-token-ratchet.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -263,9 +263,14 @@ export const CEILINGS = new Map([
['skills/objectstack-formula/SKILL.md', 6002], // -53 (was 6055)
['skills/objectstack-i18n/SKILL.md', 6338], // -11 (was 6349)
['skills/objectstack-platform/SKILL.md', 12705], // -11 (was 12716)
// Unchanged: this skill's only id-shaped tokens are a CLI usage line and a
// JSON shape example. The one edit there (`#457` -> `#<n>`) is byte-neutral.
['skills/objectstack-pm-dispatch/SKILL.md', 14239],
// 14239 -> 14391: the pull-directed split-resolution order joined the decision
// frame (maintainer ruling 2026-08-27, verbatim and untranslated: 「tong y 4」 —
// accepting the four-rule set), and this file carries TWO enforced frame copies
// (check:skill-frame-sync COPIES), so the rule ships to third-party installers
// with the frame it amends — the #5130 drift is exactly a frame-semantics change
// that skipped this mirror. +152 tokens across both copies, compressed to the
// minimal anchor form; the raising PR's body carries the arithmetic.
['skills/objectstack-pm-dispatch/SKILL.md', 14391],
['skills/objectstack-query/SKILL.md', 5552], // -17 (was 5569)
['skills/objectstack-ui/SKILL.md', 25125], // -29 (was 25154)
['skills/objectstack-upgrade/SKILL.md', 8333], // -2 (was 8335)
Expand Down Expand Up @@ -713,8 +718,11 @@ function selfTest() {
// ⚠️ Scoped to the SKILL.md rows since #12392 widened the map: summing ALL
// ceilings would compare this re-measure's subtotal against a total that
// now includes 27 rows it never touched, which is a different claim.
// 117943 -> 118095: shifted by exactly the +152 ruling-authorized raise on
// the pm-dispatch row (2026-08-27 「tong y 4」, see that row), so the strip's
// lowering claim keeps its original slack instead of being silently eaten.
['the re-measure lowered the SKILL.md subtotal',
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 117943, true],
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 118095, true],

// ── the #12392 extension basis ───────────────────────────────────────
// Same reasoning as the pins above: the gate never reads this sha, so it
Expand Down
7 changes: 6 additions & 1 deletion scripts/pm/check-skill-line-ratchet.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,12 @@ export const CEILINGS = new Map([
// the maintainer-action ledger. A lane charter is read per seat session like
// every entry above. Set at the landed line count read from this ratchet's own
// run (headroom 0, same convention as the entries above).
['.claude/skills/pm-dispatch/references/lanes/director.md', 75],
// 75 → 77: maintainer-directed placement (2026-08-27, verbatim: 「创业阶段不渐进
// 应该写入项目总监skills」) — the no-gradualism standing rule lands here by that
// directive; the file sat at headroom 0 with no losslessly compressible slack in
// the touched sections (arithmetic in the raising PR), so the directive is the
// ruling that pays for exactly the two lines it dictates.
['.claude/skills/pm-dispatch/references/lanes/director.md', 77],
// 399 → 405 (#11126): maintainer-ruled (2026-08-23, option B, quoted in that
// PR) — the +6-line cross-repo dispatch-gates caveat, sized so the queued
// #11137 (395→399 on main) and this PR's +6 compose to exactly 405.
Expand Down
12 changes: 10 additions & 2 deletions skills/objectstack-pm-dispatch/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -692,7 +692,12 @@ forming, more permissive once it is stable — and this axis reads it from there
like every other project-specific rule.

Your recommendation must be justified on **all four** axes. If they conflict,
present the trade-off honestly and let the maintainer decide.
present the trade-off honestly and let the maintainer decide. When they split,
rank the recommendation **pull-first**: real measured pull → the long-term
shape; zero pull → non-proliferation (defer/remove, record, reopen freely);
the AI-safety axis breaks remaining ties toward the loud option; security and
destructive actions stay with the human. The order ranks recommendations
only — a split still escalates.

### 9. Round report, then next round

Expand Down Expand Up @@ -841,7 +846,10 @@ Analyze every option on four fixed axes:
declaration. How tight the default is comes from the project's conventions
file, not from this template.
Justify your recommendation on all four axes; if they conflict, present the
trade-off and let the maintainer decide.
trade-off and let the maintainer decide, ranking the recommendation pull-first
(real pull → long-term shape; zero pull → non-proliferation; the AI-safety
axis breaks ties; security/destructive → always the maintainer); the ranking
orders recommendations only — a split still escalates.

Return "blocked" (with evidence) when the default branch is broken under you, a
dependency issue is unmerged, or CI infrastructure fails — after retrying
Expand Down
Loading