Skip to content

Commit 2bff79a

Browse files
claude[bot]claude
andauthored
skills(pm): encode the axis-weighting and decision-batch presentation rulings (#14142)
* skills(pm): encode the axis-weighting and decision-batch presentation rulings Two maintainer rulings from the 2026-09-01 PM chat, both of which explicitly order their own encoding into the skills. Axis weighting: long-term soundness carries the highest weight, at least 50%, when the axes conflict. Recommendations lead with the long-term reading and the other three axes together cannot outvote it. Landed in all four check:skill-frame-sync copies plus the card-face serialization, with two guards the ruling implies: the weight is read through that axis's own definition (shrink special-cases and contract accretion, never grow them), so it cannot underwrite speculative expansion; and it ranks RECOMMENDATIONS only, never authority, so a 50% weight cannot make a human-floor matter dispatchable. Decision-batch presentation: exactly 5 cards per batch, one batch per report, stop and wait for the reply. "Detailed explanation" is prose per card; a table row, a one-line verdict or a changed/unchanged grid does not discharge the duty — compressing the batch is a violation of it. Applicability is bounded to presenting items for a RULING, never to already-decided result statements. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Msg17tAHJ3jVTYFgHydCm2 * Keep the quoted ruling on one line in the token-ratchet ledger #11106: a governed quotation that soft-breaks stops being findable by the things that grep it, and the raise's authorization is exactly such a quote. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Msg17tAHJ3jVTYFgHydCm2 --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 6e9afe4 commit 2bff79a

6 files changed

Lines changed: 94 additions & 11 deletions

File tree

‎.claude/agents/os-dev.md‎

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -412,9 +412,12 @@ not decoration:**
412412
2026-08-04:这是创业项目,核心能力优先):能力扩张默认从紧,无拉动的声明面按
413413
implementation-first 处置,已发布零消费的能力不因沉没成本获得豁免。
414414

415-
Your recommendation must be justified on all four axes;四轴冲突时推荐按拉动排序:实测拉动→长远,
416-
零拉动→不扩散,防错破平,安全与难逆恒人工(只排推荐);权衡如实呈现交维护者拍板。`main`
417-
在你脚下碎了、依赖未合并、CI 基础设施故障⇒`blocked`(附证据),重试到足以排除你的改动。
415+
Your recommendation must be justified on all four axes;长远合理性权重恒 ≥50%(2026-09-01
416+
裁「四维分析中,长期合理应该权重最高,至少50%」):推荐以它领起,另三轴合起来投不翻
417+
它,按本义读(缩小而非扩大特例/契约增生),⛔ 不为投机扩张背书;四轴冲突时推荐按拉动排
418+
序:实测拉动→长远,零拉动→不扩散,防错破平,安全与难逆恒人工(权重与序都只排推荐,⛔
419+
不授权、不移人工地板);权衡如实呈现交维护者拍板。`main` 在你脚下碎了、依赖未合并、CI
420+
基础设施故障⇒`blocked`(附证据),重试到足以排除你的改动。
418421

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

‎.claude/skills/pm-dispatch/SKILL.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -882,6 +882,12 @@ finding 定级换结果态,永不留挂)/ `Blocked-by:` 活性现验(合并一
882882
防错轴破余下平局向响亮/结构性;安全/权限边界与破坏性难逆动作恒在人工地板。
883883
⛔ 此序只排推荐:分歧块照旧升级,四棱同向置信门与代裁面不变,
884884
细则见 `references/decision-analysis.md`。
885+
**长远合理性权重恒 ≥50%**(维护者 2026-09-01 裁,逐
886+
字:「四维分析中,长期合理应该权重最高,至少50%」):四轴冲突时推荐以长远的读数领
887+
起,另三轴合起来投不翻它;权重按该轴本义读 —— 缩小而非扩大特例与契约增生 —— ⛔
888+
不据它为投机扩张背书。与分歧推荐序 compose 不取代:后者按拉动定指向,本条定下限。⛔ 权
889+
重是推荐规则不是授权规则:50% 不把人工地板的事变成可派发的事,安全/权限边界与破坏性
890+
难逆动作照旧恒交维护者。
885891
**标准四棱卡面块是落卡与升级的必备件**(四棱维护者 2026-08-11 接受;
886892
标准块 2026-08-18 裁定「同意」;同裁定的摘要视图/批量决裁通道已退役,
887893
墓碑与原话见 `references/lanes/director.md`;收件箱由维护者定期与 AI 讨论消化,⛔ 不 assign

‎.claude/skills/pm-dispatch/references/decision-analysis.md‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,14 @@
1010

1111
## 常设决裁批流程(2026-08-26 裁;裁决原话与归席见主文件「升级与决策」)
1212

13-
- 每批 ≤5 张,批序:在飞被阻塞 > 运营阻塞 > 用户可见 > 结构性;每卡 = 六项写法 + 四棱块;
14-
回批一行式「1A 2B …」,「X, 但…」= 附带条件随执行落地;裁后四件原子执行不再请示,
15-
一口气跑完;批间新入箱的卡滚入下一批,收件箱读数为零才收工。
13+
- 每批**恰好 5 张,呈完即停等回批**(2026-09-01
14+
裁「每批5张详细解释,不是这样一堆列给我,这个也要写入skills」),⛔ 永不一条消息投多
15+
批;批序:在飞被阻塞 > 运营阻塞 > 用户可见 > 结构性;每卡 = 六项写法 + 四棱块;回批一行
16+
式「1A 2B …」,「X, 但…」= 附带条件随执行落地;裁后四件原子执行不再请示,一口气跑
17+
完;批间新入箱的卡滚入下一批,收件箱读数为零才收工。
18+
- **「详细解释」= 逐卡散文**:业务问题 + 每选项真实代价 + 四维 + 一个推荐;⛔ 表格行、一
19+
行判词、「变/未变」栅格不构成详解 —— 压缩批次是违规不是摘要,重分析轮同纪律。适
20+
用面 = 任何席位向维护者**呈递需其裁决的决策项**,⛔ 不及结果陈述(轮报表格照旧)。
1621

1722
## 落卡分析模板(主文件「落卡/升级流程」②的 references 细则;中文,2026-08-19 裁)
1823

@@ -42,5 +47,8 @@
4247
受六项约束:每行论据从业务立场写,机制名词只作括号补充。
4348
**四棱分歧推荐序**(2026-08-27「tong y 4」):②实测拉动⇒荐①长远终态;零拉动⇒荐④不扩散;
4449
③破余下平局向响亮/结构;安全与难逆恒人工;⛔ 只排推荐,分歧照旧升级、代裁面不扩。
50+
**①长远权重下限**(2026-09-01 裁「四维分析中,长期合理应该权重最高,至少50%」):①恒
51+
≥50%,推荐以①领起,另三轴合起来投不翻①;①按本义读(缩小而非扩大特例/契约增生),⛔ 不
52+
据它为投机扩张背书;⛔ 只排推荐不授权 —— 50% 不把人工地板的事变成可派发的事。
4553
**应用仓推荐序特例**(2026-08-31 裁「既然是平台缺陷,就应该等待平台处理」):阻塞源是平台
4654
缺陷 ⇒ 恒荐等待,⛔ 不荐绕行(形状容错/复刻平台规则)、不荐劈半落地。

‎scripts/check-skills-token-ratchet.mjs‎

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,25 @@ export const CEILINGS = new Map([
332332
// with the frame it amends — the #5130 drift is exactly a frame-semantics change
333333
// that skipped this mirror. +152 tokens across both copies, compressed to the
334334
// minimal anchor form; the raising PR's body carries the arithmetic.
335-
['skills/objectstack-pm-dispatch/SKILL.md', 14391],
335+
// 14391 -> 14549: the axis WEIGHTING joined the decision frame — long-term
336+
// soundness carries the highest weight, at least 50%. Maintainer ruling
337+
// 2026-09-01, verbatim and untranslated (kept on ONE line, #11106: a governed
338+
// quotation that soft-breaks stops being findable by the things that grep it):
339+
// 「四维分析中,长期合理应该权重最高,至少50%」
340+
// Same shape and same reason as the +152 row above it: this file carries TWO
341+
// enforced frame copies (check:skill-frame-sync COPIES), and a rule that
342+
// changes WHICH RECOMMENDATION the frame yields is exactly the #5130 drift
343+
// class if it ships to third-party installers with only the old tie-break —
344+
// the customer's agent would weigh the axes co-equally while this repo weighs
345+
// long-term ≥50%, and no report would reveal it. +158 tokens across both
346+
// copies, against +152 for the comparable 2026-08-27 rule. Compressed twice
347+
// before landing: the first cut measured +242, and the provenance was then
348+
// removed on the #5451 route-B convention — the published copy carries the
349+
// RULE without this repo's dates or quoted rulings (verified: the file holds
350+
// zero of each), so the verbatim ruling lives in the internal copies and in
351+
// the raising PR's body. No genuine deletion was available: the rule makes no
352+
// existing sentence redundant, and a re-wrap moves no tokens and pays nothing.
353+
['skills/objectstack-pm-dispatch/SKILL.md', 14549],
336354
['skills/objectstack-query/SKILL.md', 5552], // -17 (was 5569)
337355
// 25125 -> 25143: the CRM UI Blueprint — the catalog's module-completeness
338356
// list, and the only place an agent is told what a finished module contains —
@@ -826,8 +844,12 @@ function selfTest() {
826844
// and correctly does not shift this pin. Subtotal after: 118830, i.e. the
827845
// same 80 tokens of slack the strip's claim had before either raise — which
828846
// is the point of shifting rather than widening.
847+
// 118910 -> 119068: same operation for the 2026-09-01 axis-weighting raise
848+
// on the pm-dispatch row (+158, see that row) — one SKILL.md row, so the
849+
// shift equals the raise exactly, and the strip's claim keeps the same 80
850+
// tokens of slack it has carried since before any of the three raises.
829851
['the re-measure lowered the SKILL.md subtotal',
830-
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 118910, true],
852+
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 119068, true],
831853

832854
// ── the #12392 extension basis ───────────────────────────────────────
833855
// Same reasoning as the pins above: the gate never reads this sha, so it

‎scripts/pm/check-skill-line-ratchet.mjs‎

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,27 @@ export const CEILINGS = new Map([
273273
// Lowered 48 → 46 by the #12081 soft-break closure (lowering is always
274274
// legitimate): three of this file's measured Han+ASCII-punct breaks merged
275275
// back into their paragraphs, and two of the three paid for themselves.
276-
['.claude/skills/pm-dispatch/references/decision-analysis.md', 46],
276+
// Raised 46 → 54 by TWO same-day maintainer rulings on the decision frame,
277+
// both of which explicitly order their own encoding into the skills. Verbatim
278+
// and untranslated — the decision-batch presentation rule:
279+
// 「每批5张详细解释,不是这样一堆列给我,这个也要写入skills」
280+
// and the axis-weighting rule, whose card-face half lands here (its full
281+
// statement is in the frame's single source, SKILL.md 「升级与决策」, paid from
282+
// that file's existing headroom):
283+
// 「四维分析中,长期合理应该权重最高,至少50%」
284+
// +5 for the presentation teeth (exactly-5 / stop-and-wait / ⛔ multi-batch,
285+
// and the prose-per-card duty with its applicability boundary — presenting
286+
// items for a RULING, never already-decided result statements), +3 for the
287+
// weight floor with its two guards (read through axis ①'s own definition, so
288+
// it cannot underwrite speculative expansion; recommendation-only, so it
289+
// cannot move the human floor). Could not be paid in place: all 46 lines are
290+
// already packed to their own minimum at the 120-byte cap (measured per line
291+
// — the file was densified at phrase boundaries by #13389 and the widest
292+
// reflow saving available is zero), and re-wrap funding is refused per the
293+
// 2026-08-17 rule in any case; the only other in-place payment was deleting a
294+
// ruled clause, refused on the state-machine precedent. Landed count, headroom
295+
// 0 again, same convention.
296+
['.claude/skills/pm-dispatch/references/decision-analysis.md', 54],
277297
// 134 → 133: whole-text restructuring round, PR-2 (maintainer ruling
278298
// 2026-08-23) — the three write-side sanitizer rows consolidated to one
279299
// author rule + one measured-behaviour row per surface (body / comment).
@@ -368,7 +388,21 @@ export const CEILINGS = new Map([
368388
// and 4 of the 8 paid for themselves. Zero content change — the diff is
369389
// byte-identical after whitespace normalization (39,313 B both sides), so the
370390
// 4 lines are re-flow slack, never a cut. Headroom 0 again, same convention.
371-
['.claude/agents/os-dev.md', 466],
391+
// Raised 466 → 469 by the axis-weighting ruling (maintainer 2026-09-01, PM
392+
// chat, verbatim and untranslated): 「四维分析中,长期合理应该权重最高,至少50%」.
393+
// This file is one of the four `check:skill-frame-sync` COPIES, so a rule that
394+
// changes which recommendation the frame yields has to reach it — the #5130
395+
// drift is exactly a frame-semantics change that skipped a mirror. +3 lines,
396+
// folded into the existing binding sentence rather than added as a new
397+
// paragraph. ⚠️ Re-wrap funding was AVAILABLE here and was REFUSED: three
398+
// paragraphs nearby carry wrap artifacts (two orphan lines of 6 and 8 bytes)
399+
// worth exactly the 3 lines needed, and merging them would have landed this
400+
// file at 466/466 with no raise — that is 筹行, banned by the 2026-08-17
401+
// ruling, since the ratchet governs content volume and lines are only its
402+
// machine-readable proxy. Measured both ways before reverting to the raise.
403+
// The density fix is legitimate on its own and belongs in a net-reducing PR
404+
// (2026-08-29 ruling), not this one. Landed count, headroom 0, same convention.
405+
['.claude/agents/os-dev.md', 469],
372406
// #9473: the other four `.claude/skills/` are read in full by the sessions
373407
// that use them too — the erosion mechanism the ratchet exists to stop
374408
// isn't specific to the pm-dispatch surface. Set at current counts on

‎skills/objectstack-pm-dispatch/SKILL.md‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -698,6 +698,12 @@ the AI-safety axis breaks remaining ties toward the loud option; security and
698698
destructive actions stay with the human. The order ranks recommendations
699699
only — a split still escalates.
700700

701+
**Axis ② carries the highest weight — at least 50%** when the axes conflict:
702+
lead with the long-term reading, and the other three together cannot outvote
703+
it. Read that weight through axis ②'s own definition — shrink special-cases
704+
and contract accretion, never grow them — so it never underwrites speculative
705+
expansion. It ranks recommendations only, never authority.
706+
701707
### 9. Round report, then next round
702708

703709
Print a round report to the maintainer: a table of issue → verdict → PR link →
@@ -848,7 +854,11 @@ Justify your recommendation on all four axes; if they conflict, present the
848854
trade-off and let the maintainer decide, ranking the recommendation pull-first
849855
(real pull → long-term shape; zero pull → non-proliferation; the AI-safety
850856
axis breaks ties; security/destructive → always the maintainer); the ranking
851-
orders recommendations only — a split still escalates.
857+
orders recommendations only — a split still escalates. Long-term soundness
858+
carries the highest weight, at least 50%: lead with it, the other three
859+
together cannot outvote it, and read it as shrinking special-cases rather than
860+
as licence to expand speculatively; weight ranks recommendations only, never
861+
authority.
852862
853863
Return "blocked" (with evidence) when the default branch is broken under you, a
854864
dependency issue is unmerged, or CI infrastructure fails — after retrying

0 commit comments

Comments
 (0)