Merged
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
9 changes: 6 additions & 3 deletions .claude/agents/os-dev.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -412,9 +412,12 @@ 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;长远合理性权重恒 ≥50%(2026-09-01
裁「四维分析中,长期合理应该权重最高,至少50%」):推荐以它领起,另三轴合起来投不翻
它,按本义读(缩小而非扩大特例/契约增生),⛔ 不为投机扩张背书;四轴冲突时推荐按拉动排
序:实测拉动→长远,零拉动→不扩散,防错破平,安全与难逆恒人工(权重与序都只排推荐,⛔
不授权、不移人工地板);权衡如实呈现交维护者拍板。`main` 在你脚下碎了、依赖未合并、CI
基础设施故障⇒`blocked`(附证据),重试到足以排除你的改动。

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

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

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

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

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

Expand DownExpand Up@@ -42,5 +47,8 @@
受六项约束:每行论据从业务立场写,机制名词只作括号补充。
**四棱分歧推荐序**(2026-08-27「tong y 4」):②实测拉动⇒荐①长远终态;零拉动⇒荐④不扩散;
③破余下平局向响亮/结构;安全与难逆恒人工;⛔ 只排推荐,分歧照旧升级、代裁面不扩。
**①长远权重下限**(2026-09-01 裁「四维分析中,长期合理应该权重最高,至少50%」):①恒
≥50%,推荐以①领起,另三轴合起来投不翻①;①按本义读(缩小而非扩大特例/契约增生),⛔ 不
据它为投机扩张背书;⛔ 只排推荐不授权 —— 50% 不把人工地板的事变成可派发的事。
**应用仓推荐序特例**(2026-08-31 裁「既然是平台缺陷,就应该等待平台处理」):阻塞源是平台
缺陷 ⇒ 恒荐等待,⛔ 不荐绕行(形状容错/复刻平台规则)、不荐劈半落地。
26 changes: 24 additions & 2 deletions scripts/check-skills-token-ratchet.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -332,7 +332,25 @@ export const CEILINGS = new Map([
// 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],
// 14391 -> 14549: the axis WEIGHTING joined the decision frame — long-term
// soundness carries the highest weight, at least 50%. Maintainer ruling
// 2026-09-01, verbatim and untranslated (kept on ONE line, #11106: a governed
// quotation that soft-breaks stops being findable by the things that grep it):
// 「四维分析中,长期合理应该权重最高,至少50%」
// Same shape and same reason as the +152 row above it: this file carries TWO
// enforced frame copies (check:skill-frame-sync COPIES), and a rule that
// changes WHICH RECOMMENDATION the frame yields is exactly the #5130 drift
// class if it ships to third-party installers with only the old tie-break —
// the customer's agent would weigh the axes co-equally while this repo weighs
// long-term ≥50%, and no report would reveal it. +158 tokens across both
// copies, against +152 for the comparable 2026-08-27 rule. Compressed twice
// before landing: the first cut measured +242, and the provenance was then
// removed on the #5451 route-B convention — the published copy carries the
// RULE without this repo's dates or quoted rulings (verified: the file holds
// zero of each), so the verbatim ruling lives in the internal copies and in
// the raising PR's body. No genuine deletion was available: the rule makes no
// existing sentence redundant, and a re-wrap moves no tokens and pays nothing.
['skills/objectstack-pm-dispatch/SKILL.md', 14549],
['skills/objectstack-query/SKILL.md', 5552], // -17 (was 5569)
// 25125 -> 25143: the CRM UI Blueprint — the catalog's module-completeness
// list, and the only place an agent is told what a finished module contains —
Expand DownExpand Up@@ -826,8 +844,12 @@ function selfTest() {
// and correctly does not shift this pin. Subtotal after: 118830, i.e. the
// same 80 tokens of slack the strip's claim had before either raise — which
// is the point of shifting rather than widening.
// 118910 -> 119068: same operation for the 2026-09-01 axis-weighting raise
// on the pm-dispatch row (+158, see that row) — one SKILL.md row, so the
// shift equals the raise exactly, and the strip's claim keeps the same 80
// tokens of slack it has carried since before any of the three raises.
['the re-measure lowered the SKILL.md subtotal',
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 118910, true],
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 119068, true],

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

**Axis ② carries the highest weight — at least 50%** when the axes conflict:
lead with the long-term reading, and the other three together cannot outvote
it. Read that weight through axis ②'s own definition — shrink special-cases
and contract accretion, never grow them — so it never underwrites speculative
expansion. It ranks recommendations only, never authority.

### 9. Round report, then next round

Print a round report to the maintainer: a table of issue → verdict → PR link →
Expand DownExpand Up@@ -848,7 +854,11 @@ Justify your recommendation on all four axes; if they conflict, present the
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.
orders recommendations only — a split still escalates. Long-term soundness
carries the highest weight, at least 50%: lead with it, the other three
together cannot outvote it, and read it as shrinking special-cases rather than
as licence to expand speculatively; weight ranks recommendations only, never
authority.

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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
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
9 changes: 6 additions & 3 deletions .claude/agents/os-dev.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -412,9 +412,12 @@ 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;长远合理性权重恒 ≥50%(2026-09-01
裁「四维分析中,长期合理应该权重最高,至少50%」):推荐以它领起,另三轴合起来投不翻
它,按本义读(缩小而非扩大特例/契约增生),⛔ 不为投机扩张背书;四轴冲突时推荐按拉动排
序:实测拉动→长远,零拉动→不扩散,防错破平,安全与难逆恒人工(权重与序都只排推荐,⛔
不授权、不移人工地板);权衡如实呈现交维护者拍板。`main` 在你脚下碎了、依赖未合并、CI
基础设施故障⇒`blocked`(附证据),重试到足以排除你的改动。

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

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

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

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

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

Expand DownExpand Up@@ -42,5 +47,8 @@
受六项约束:每行论据从业务立场写,机制名词只作括号补充。
**四棱分歧推荐序**(2026-08-27「tong y 4」):②实测拉动⇒荐①长远终态;零拉动⇒荐④不扩散;
③破余下平局向响亮/结构;安全与难逆恒人工;⛔ 只排推荐,分歧照旧升级、代裁面不扩。
**①长远权重下限**(2026-09-01 裁「四维分析中,长期合理应该权重最高,至少50%」):①恒
≥50%,推荐以①领起,另三轴合起来投不翻①;①按本义读(缩小而非扩大特例/契约增生),⛔ 不
据它为投机扩张背书;⛔ 只排推荐不授权 —— 50% 不把人工地板的事变成可派发的事。
**应用仓推荐序特例**(2026-08-31 裁「既然是平台缺陷,就应该等待平台处理」):阻塞源是平台
缺陷 ⇒ 恒荐等待,⛔ 不荐绕行(形状容错/复刻平台规则)、不荐劈半落地。
26 changes: 24 additions & 2 deletions scripts/check-skills-token-ratchet.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -332,7 +332,25 @@ export const CEILINGS = new Map([
// 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],
// 14391 -> 14549: the axis WEIGHTING joined the decision frame — long-term
// soundness carries the highest weight, at least 50%. Maintainer ruling
// 2026-09-01, verbatim and untranslated (kept on ONE line, #11106: a governed
// quotation that soft-breaks stops being findable by the things that grep it):
// 「四维分析中,长期合理应该权重最高,至少50%」
// Same shape and same reason as the +152 row above it: this file carries TWO
// enforced frame copies (check:skill-frame-sync COPIES), and a rule that
// changes WHICH RECOMMENDATION the frame yields is exactly the #5130 drift
// class if it ships to third-party installers with only the old tie-break —
// the customer's agent would weigh the axes co-equally while this repo weighs
// long-term ≥50%, and no report would reveal it. +158 tokens across both
// copies, against +152 for the comparable 2026-08-27 rule. Compressed twice
// before landing: the first cut measured +242, and the provenance was then
// removed on the #5451 route-B convention — the published copy carries the
// RULE without this repo's dates or quoted rulings (verified: the file holds
// zero of each), so the verbatim ruling lives in the internal copies and in
// the raising PR's body. No genuine deletion was available: the rule makes no
// existing sentence redundant, and a re-wrap moves no tokens and pays nothing.
['skills/objectstack-pm-dispatch/SKILL.md', 14549],
['skills/objectstack-query/SKILL.md', 5552], // -17 (was 5569)
// 25125 -> 25143: the CRM UI Blueprint — the catalog's module-completeness
// list, and the only place an agent is told what a finished module contains —
Expand DownExpand Up@@ -826,8 +844,12 @@ function selfTest() {
// and correctly does not shift this pin. Subtotal after: 118830, i.e. the
// same 80 tokens of slack the strip's claim had before either raise — which
// is the point of shifting rather than widening.
// 118910 -> 119068: same operation for the 2026-09-01 axis-weighting raise
// on the pm-dispatch row (+158, see that row) — one SKILL.md row, so the
// shift equals the raise exactly, and the strip's claim keeps the same 80
// tokens of slack it has carried since before any of the three raises.
['the re-measure lowered the SKILL.md subtotal',
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 118910, true],
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 119068, true],

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

**Axis ② carries the highest weight — at least 50%** when the axes conflict:
lead with the long-term reading, and the other three together cannot outvote
it. Read that weight through axis ②'s own definition — shrink special-cases
and contract accretion, never grow them — so it never underwrites speculative
expansion. It ranks recommendations only, never authority.

### 9. Round report, then next round

Print a round report to the maintainer: a table of issue → verdict → PR link →
Expand DownExpand Up@@ -848,7 +854,11 @@ Justify your recommendation on all four axes; if they conflict, present the
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.
orders recommendations only — a split still escalates. Long-term soundness
carries the highest weight, at least 50%: lead with it, the other three
together cannot outvote it, and read it as shrinking special-cases rather than
as licence to expand speculatively; weight ranks recommendations only, never
authority.

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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
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
9 changes: 6 additions & 3 deletions .claude/agents/os-dev.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -412,9 +412,12 @@ 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;长远合理性权重恒 ≥50%(2026-09-01
裁「四维分析中,长期合理应该权重最高,至少50%」):推荐以它领起,另三轴合起来投不翻
它,按本义读(缩小而非扩大特例/契约增生),⛔ 不为投机扩张背书;四轴冲突时推荐按拉动排
序:实测拉动→长远,零拉动→不扩散,防错破平,安全与难逆恒人工(权重与序都只排推荐,⛔
不授权、不移人工地板);权衡如实呈现交维护者拍板。`main` 在你脚下碎了、依赖未合并、CI
基础设施故障⇒`blocked`(附证据),重试到足以排除你的改动。

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

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

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

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

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

Expand DownExpand Up@@ -42,5 +47,8 @@
受六项约束:每行论据从业务立场写,机制名词只作括号补充。
**四棱分歧推荐序**(2026-08-27「tong y 4」):②实测拉动⇒荐①长远终态;零拉动⇒荐④不扩散;
③破余下平局向响亮/结构;安全与难逆恒人工;⛔ 只排推荐,分歧照旧升级、代裁面不扩。
**①长远权重下限**(2026-09-01 裁「四维分析中,长期合理应该权重最高,至少50%」):①恒
≥50%,推荐以①领起,另三轴合起来投不翻①;①按本义读(缩小而非扩大特例/契约增生),⛔ 不
据它为投机扩张背书;⛔ 只排推荐不授权 —— 50% 不把人工地板的事变成可派发的事。
**应用仓推荐序特例**(2026-08-31 裁「既然是平台缺陷,就应该等待平台处理」):阻塞源是平台
缺陷 ⇒ 恒荐等待,⛔ 不荐绕行(形状容错/复刻平台规则)、不荐劈半落地。
26 changes: 24 additions & 2 deletions scripts/check-skills-token-ratchet.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -332,7 +332,25 @@ export const CEILINGS = new Map([
// 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],
// 14391 -> 14549: the axis WEIGHTING joined the decision frame — long-term
// soundness carries the highest weight, at least 50%. Maintainer ruling
// 2026-09-01, verbatim and untranslated (kept on ONE line, #11106: a governed
// quotation that soft-breaks stops being findable by the things that grep it):
// 「四维分析中,长期合理应该权重最高,至少50%」
// Same shape and same reason as the +152 row above it: this file carries TWO
// enforced frame copies (check:skill-frame-sync COPIES), and a rule that
// changes WHICH RECOMMENDATION the frame yields is exactly the #5130 drift
// class if it ships to third-party installers with only the old tie-break —
// the customer's agent would weigh the axes co-equally while this repo weighs
// long-term ≥50%, and no report would reveal it. +158 tokens across both
// copies, against +152 for the comparable 2026-08-27 rule. Compressed twice
// before landing: the first cut measured +242, and the provenance was then
// removed on the #5451 route-B convention — the published copy carries the
// RULE without this repo's dates or quoted rulings (verified: the file holds
// zero of each), so the verbatim ruling lives in the internal copies and in
// the raising PR's body. No genuine deletion was available: the rule makes no
// existing sentence redundant, and a re-wrap moves no tokens and pays nothing.
['skills/objectstack-pm-dispatch/SKILL.md', 14549],
['skills/objectstack-query/SKILL.md', 5552], // -17 (was 5569)
// 25125 -> 25143: the CRM UI Blueprint — the catalog's module-completeness
// list, and the only place an agent is told what a finished module contains —
Expand DownExpand Up@@ -826,8 +844,12 @@ function selfTest() {
// and correctly does not shift this pin. Subtotal after: 118830, i.e. the
// same 80 tokens of slack the strip's claim had before either raise — which
// is the point of shifting rather than widening.
// 118910 -> 119068: same operation for the 2026-09-01 axis-weighting raise
// on the pm-dispatch row (+158, see that row) — one SKILL.md row, so the
// shift equals the raise exactly, and the strip's claim keeps the same 80
// tokens of slack it has carried since before any of the three raises.
['the re-measure lowered the SKILL.md subtotal',
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 118910, true],
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 119068, true],

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

**Axis ② carries the highest weight — at least 50%** when the axes conflict:
lead with the long-term reading, and the other three together cannot outvote
it. Read that weight through axis ②'s own definition — shrink special-cases
and contract accretion, never grow them — so it never underwrites speculative
expansion. It ranks recommendations only, never authority.

### 9. Round report, then next round

Print a round report to the maintainer: a table of issue → verdict → PR link →
Expand DownExpand Up@@ -848,7 +854,11 @@ Justify your recommendation on all four axes; if they conflict, present the
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.
orders recommendations only — a split still escalates. Long-term soundness
carries the highest weight, at least 50%: lead with it, the other three
together cannot outvote it, and read it as shrinking special-cases rather than
as licence to expand speculatively; weight ranks recommendations only, never
authority.

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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
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
9 changes: 6 additions & 3 deletions .claude/agents/os-dev.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -412,9 +412,12 @@ 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;长远合理性权重恒 ≥50%(2026-09-01
裁「四维分析中,长期合理应该权重最高,至少50%」):推荐以它领起,另三轴合起来投不翻
它,按本义读(缩小而非扩大特例/契约增生),⛔ 不为投机扩张背书;四轴冲突时推荐按拉动排
序:实测拉动→长远,零拉动→不扩散,防错破平,安全与难逆恒人工(权重与序都只排推荐,⛔
不授权、不移人工地板);权衡如实呈现交维护者拍板。`main` 在你脚下碎了、依赖未合并、CI
基础设施故障⇒`blocked`(附证据),重试到足以排除你的改动。

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

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

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

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

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

Expand DownExpand Up@@ -42,5 +47,8 @@
受六项约束:每行论据从业务立场写,机制名词只作括号补充。
**四棱分歧推荐序**(2026-08-27「tong y 4」):②实测拉动⇒荐①长远终态;零拉动⇒荐④不扩散;
③破余下平局向响亮/结构;安全与难逆恒人工;⛔ 只排推荐,分歧照旧升级、代裁面不扩。
**①长远权重下限**(2026-09-01 裁「四维分析中,长期合理应该权重最高,至少50%」):①恒
≥50%,推荐以①领起,另三轴合起来投不翻①;①按本义读(缩小而非扩大特例/契约增生),⛔ 不
据它为投机扩张背书;⛔ 只排推荐不授权 —— 50% 不把人工地板的事变成可派发的事。
**应用仓推荐序特例**(2026-08-31 裁「既然是平台缺陷,就应该等待平台处理」):阻塞源是平台
缺陷 ⇒ 恒荐等待,⛔ 不荐绕行(形状容错/复刻平台规则)、不荐劈半落地。
26 changes: 24 additions & 2 deletions scripts/check-skills-token-ratchet.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -332,7 +332,25 @@ export const CEILINGS = new Map([
// 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],
// 14391 -> 14549: the axis WEIGHTING joined the decision frame — long-term
// soundness carries the highest weight, at least 50%. Maintainer ruling
// 2026-09-01, verbatim and untranslated (kept on ONE line, #11106: a governed
// quotation that soft-breaks stops being findable by the things that grep it):
// 「四维分析中,长期合理应该权重最高,至少50%」
// Same shape and same reason as the +152 row above it: this file carries TWO
// enforced frame copies (check:skill-frame-sync COPIES), and a rule that
// changes WHICH RECOMMENDATION the frame yields is exactly the #5130 drift
// class if it ships to third-party installers with only the old tie-break —
// the customer's agent would weigh the axes co-equally while this repo weighs
// long-term ≥50%, and no report would reveal it. +158 tokens across both
// copies, against +152 for the comparable 2026-08-27 rule. Compressed twice
// before landing: the first cut measured +242, and the provenance was then
// removed on the #5451 route-B convention — the published copy carries the
// RULE without this repo's dates or quoted rulings (verified: the file holds
// zero of each), so the verbatim ruling lives in the internal copies and in
// the raising PR's body. No genuine deletion was available: the rule makes no
// existing sentence redundant, and a re-wrap moves no tokens and pays nothing.
['skills/objectstack-pm-dispatch/SKILL.md', 14549],
['skills/objectstack-query/SKILL.md', 5552], // -17 (was 5569)
// 25125 -> 25143: the CRM UI Blueprint — the catalog's module-completeness
// list, and the only place an agent is told what a finished module contains —
Expand DownExpand Up@@ -826,8 +844,12 @@ function selfTest() {
// and correctly does not shift this pin. Subtotal after: 118830, i.e. the
// same 80 tokens of slack the strip's claim had before either raise — which
// is the point of shifting rather than widening.
// 118910 -> 119068: same operation for the 2026-09-01 axis-weighting raise
// on the pm-dispatch row (+158, see that row) — one SKILL.md row, so the
// shift equals the raise exactly, and the strip's claim keeps the same 80
// tokens of slack it has carried since before any of the three raises.
['the re-measure lowered the SKILL.md subtotal',
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 118910, true],
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 119068, true],

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

**Axis ② carries the highest weight — at least 50%** when the axes conflict:
lead with the long-term reading, and the other three together cannot outvote
it. Read that weight through axis ②'s own definition — shrink special-cases
and contract accretion, never grow them — so it never underwrites speculative
expansion. It ranks recommendations only, never authority.

### 9. Round report, then next round

Print a round report to the maintainer: a table of issue → verdict → PR link →
Expand DownExpand Up@@ -848,7 +854,11 @@ Justify your recommendation on all four axes; if they conflict, present the
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.
orders recommendations only — a split still escalates. Long-term soundness
carries the highest weight, at least 50%: lead with it, the other three
together cannot outvote it, and read it as shrinking special-cases rather than
as licence to expand speculatively; weight ranks recommendations only, never
authority.

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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
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
9 changes: 6 additions & 3 deletions .claude/agents/os-dev.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -412,9 +412,12 @@ 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;长远合理性权重恒 ≥50%(2026-09-01
裁「四维分析中,长期合理应该权重最高,至少50%」):推荐以它领起,另三轴合起来投不翻
它,按本义读(缩小而非扩大特例/契约增生),⛔ 不为投机扩张背书;四轴冲突时推荐按拉动排
序:实测拉动→长远,零拉动→不扩散,防错破平,安全与难逆恒人工(权重与序都只排推荐,⛔
不授权、不移人工地板);权衡如实呈现交维护者拍板。`main` 在你脚下碎了、依赖未合并、CI
基础设施故障⇒`blocked`(附证据),重试到足以排除你的改动。

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

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

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

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

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

Expand DownExpand Up@@ -42,5 +47,8 @@
受六项约束:每行论据从业务立场写,机制名词只作括号补充。
**四棱分歧推荐序**(2026-08-27「tong y 4」):②实测拉动⇒荐①长远终态;零拉动⇒荐④不扩散;
③破余下平局向响亮/结构;安全与难逆恒人工;⛔ 只排推荐,分歧照旧升级、代裁面不扩。
**①长远权重下限**(2026-09-01 裁「四维分析中,长期合理应该权重最高,至少50%」):①恒
≥50%,推荐以①领起,另三轴合起来投不翻①;①按本义读(缩小而非扩大特例/契约增生),⛔ 不
据它为投机扩张背书;⛔ 只排推荐不授权 —— 50% 不把人工地板的事变成可派发的事。
**应用仓推荐序特例**(2026-08-31 裁「既然是平台缺陷,就应该等待平台处理」):阻塞源是平台
缺陷 ⇒ 恒荐等待,⛔ 不荐绕行(形状容错/复刻平台规则)、不荐劈半落地。
26 changes: 24 additions & 2 deletions scripts/check-skills-token-ratchet.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -332,7 +332,25 @@ export const CEILINGS = new Map([
// 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],
// 14391 -> 14549: the axis WEIGHTING joined the decision frame — long-term
// soundness carries the highest weight, at least 50%. Maintainer ruling
// 2026-09-01, verbatim and untranslated (kept on ONE line, #11106: a governed
// quotation that soft-breaks stops being findable by the things that grep it):
// 「四维分析中,长期合理应该权重最高,至少50%」
// Same shape and same reason as the +152 row above it: this file carries TWO
// enforced frame copies (check:skill-frame-sync COPIES), and a rule that
// changes WHICH RECOMMENDATION the frame yields is exactly the #5130 drift
// class if it ships to third-party installers with only the old tie-break —
// the customer's agent would weigh the axes co-equally while this repo weighs
// long-term ≥50%, and no report would reveal it. +158 tokens across both
// copies, against +152 for the comparable 2026-08-27 rule. Compressed twice
// before landing: the first cut measured +242, and the provenance was then
// removed on the #5451 route-B convention — the published copy carries the
// RULE without this repo's dates or quoted rulings (verified: the file holds
// zero of each), so the verbatim ruling lives in the internal copies and in
// the raising PR's body. No genuine deletion was available: the rule makes no
// existing sentence redundant, and a re-wrap moves no tokens and pays nothing.
['skills/objectstack-pm-dispatch/SKILL.md', 14549],
['skills/objectstack-query/SKILL.md', 5552], // -17 (was 5569)
// 25125 -> 25143: the CRM UI Blueprint — the catalog's module-completeness
// list, and the only place an agent is told what a finished module contains —
Expand DownExpand Up@@ -826,8 +844,12 @@ function selfTest() {
// and correctly does not shift this pin. Subtotal after: 118830, i.e. the
// same 80 tokens of slack the strip's claim had before either raise — which
// is the point of shifting rather than widening.
// 118910 -> 119068: same operation for the 2026-09-01 axis-weighting raise
// on the pm-dispatch row (+158, see that row) — one SKILL.md row, so the
// shift equals the raise exactly, and the strip's claim keeps the same 80
// tokens of slack it has carried since before any of the three raises.
['the re-measure lowered the SKILL.md subtotal',
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 118910, true],
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 119068, true],

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

**Axis ② carries the highest weight — at least 50%** when the axes conflict:
lead with the long-term reading, and the other three together cannot outvote
it. Read that weight through axis ②'s own definition — shrink special-cases
and contract accretion, never grow them — so it never underwrites speculative
expansion. It ranks recommendations only, never authority.

### 9. Round report, then next round

Print a round report to the maintainer: a table of issue → verdict → PR link →
Expand DownExpand Up@@ -848,7 +854,11 @@ Justify your recommendation on all four axes; if they conflict, present the
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.
orders recommendations only — a split still escalates. Long-term soundness
carries the highest weight, at least 50%: lead with it, the other three
together cannot outvote it, and read it as shrinking special-cases rather than
as licence to expand speculatively; weight ranks recommendations only, never
authority.

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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
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
9 changes: 6 additions & 3 deletions .claude/agents/os-dev.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -412,9 +412,12 @@ 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;长远合理性权重恒 ≥50%(2026-09-01
裁「四维分析中,长期合理应该权重最高,至少50%」):推荐以它领起,另三轴合起来投不翻
它,按本义读(缩小而非扩大特例/契约增生),⛔ 不为投机扩张背书;四轴冲突时推荐按拉动排
序:实测拉动→长远,零拉动→不扩散,防错破平,安全与难逆恒人工(权重与序都只排推荐,⛔
不授权、不移人工地板);权衡如实呈现交维护者拍板。`main` 在你脚下碎了、依赖未合并、CI
基础设施故障⇒`blocked`(附证据),重试到足以排除你的改动。

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

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

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

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

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

Expand DownExpand Up@@ -42,5 +47,8 @@
受六项约束:每行论据从业务立场写,机制名词只作括号补充。
**四棱分歧推荐序**(2026-08-27「tong y 4」):②实测拉动⇒荐①长远终态;零拉动⇒荐④不扩散;
③破余下平局向响亮/结构;安全与难逆恒人工;⛔ 只排推荐,分歧照旧升级、代裁面不扩。
**①长远权重下限**(2026-09-01 裁「四维分析中,长期合理应该权重最高,至少50%」):①恒
≥50%,推荐以①领起,另三轴合起来投不翻①;①按本义读(缩小而非扩大特例/契约增生),⛔ 不
据它为投机扩张背书;⛔ 只排推荐不授权 —— 50% 不把人工地板的事变成可派发的事。
**应用仓推荐序特例**(2026-08-31 裁「既然是平台缺陷,就应该等待平台处理」):阻塞源是平台
缺陷 ⇒ 恒荐等待,⛔ 不荐绕行(形状容错/复刻平台规则)、不荐劈半落地。
26 changes: 24 additions & 2 deletions scripts/check-skills-token-ratchet.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -332,7 +332,25 @@ export const CEILINGS = new Map([
// 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],
// 14391 -> 14549: the axis WEIGHTING joined the decision frame — long-term
// soundness carries the highest weight, at least 50%. Maintainer ruling
// 2026-09-01, verbatim and untranslated (kept on ONE line, #11106: a governed
// quotation that soft-breaks stops being findable by the things that grep it):
// 「四维分析中,长期合理应该权重最高,至少50%」
// Same shape and same reason as the +152 row above it: this file carries TWO
// enforced frame copies (check:skill-frame-sync COPIES), and a rule that
// changes WHICH RECOMMENDATION the frame yields is exactly the #5130 drift
// class if it ships to third-party installers with only the old tie-break —
// the customer's agent would weigh the axes co-equally while this repo weighs
// long-term ≥50%, and no report would reveal it. +158 tokens across both
// copies, against +152 for the comparable 2026-08-27 rule. Compressed twice
// before landing: the first cut measured +242, and the provenance was then
// removed on the #5451 route-B convention — the published copy carries the
// RULE without this repo's dates or quoted rulings (verified: the file holds
// zero of each), so the verbatim ruling lives in the internal copies and in
// the raising PR's body. No genuine deletion was available: the rule makes no
// existing sentence redundant, and a re-wrap moves no tokens and pays nothing.
['skills/objectstack-pm-dispatch/SKILL.md', 14549],
['skills/objectstack-query/SKILL.md', 5552], // -17 (was 5569)
// 25125 -> 25143: the CRM UI Blueprint — the catalog's module-completeness
// list, and the only place an agent is told what a finished module contains —
Expand DownExpand Up@@ -826,8 +844,12 @@ function selfTest() {
// and correctly does not shift this pin. Subtotal after: 118830, i.e. the
// same 80 tokens of slack the strip's claim had before either raise — which
// is the point of shifting rather than widening.
// 118910 -> 119068: same operation for the 2026-09-01 axis-weighting raise
// on the pm-dispatch row (+158, see that row) — one SKILL.md row, so the
// shift equals the raise exactly, and the strip's claim keeps the same 80
// tokens of slack it has carried since before any of the three raises.
['the re-measure lowered the SKILL.md subtotal',
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 118910, true],
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 119068, true],

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

**Axis ② carries the highest weight — at least 50%** when the axes conflict:
lead with the long-term reading, and the other three together cannot outvote
it. Read that weight through axis ②'s own definition — shrink special-cases
and contract accretion, never grow them — so it never underwrites speculative
expansion. It ranks recommendations only, never authority.

### 9. Round report, then next round

Print a round report to the maintainer: a table of issue → verdict → PR link →
Expand DownExpand Up@@ -848,7 +854,11 @@ Justify your recommendation on all four axes; if they conflict, present the
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.
orders recommendations only — a split still escalates. Long-term soundness
carries the highest weight, at least 50%: lead with it, the other three
together cannot outvote it, and read it as shrinking special-cases rather than
as licence to expand speculatively; weight ranks recommendations only, never
authority.

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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
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
9 changes: 6 additions & 3 deletions .claude/agents/os-dev.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -412,9 +412,12 @@ 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;长远合理性权重恒 ≥50%(2026-09-01
裁「四维分析中,长期合理应该权重最高,至少50%」):推荐以它领起,另三轴合起来投不翻
它,按本义读(缩小而非扩大特例/契约增生),⛔ 不为投机扩张背书;四轴冲突时推荐按拉动排
序:实测拉动→长远,零拉动→不扩散,防错破平,安全与难逆恒人工(权重与序都只排推荐,⛔
不授权、不移人工地板);权衡如实呈现交维护者拍板。`main` 在你脚下碎了、依赖未合并、CI
基础设施故障⇒`blocked`(附证据),重试到足以排除你的改动。

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

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

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

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

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

Expand DownExpand Up@@ -42,5 +47,8 @@
受六项约束:每行论据从业务立场写,机制名词只作括号补充。
**四棱分歧推荐序**(2026-08-27「tong y 4」):②实测拉动⇒荐①长远终态;零拉动⇒荐④不扩散;
③破余下平局向响亮/结构;安全与难逆恒人工;⛔ 只排推荐,分歧照旧升级、代裁面不扩。
**①长远权重下限**(2026-09-01 裁「四维分析中,长期合理应该权重最高,至少50%」):①恒
≥50%,推荐以①领起,另三轴合起来投不翻①;①按本义读(缩小而非扩大特例/契约增生),⛔ 不
据它为投机扩张背书;⛔ 只排推荐不授权 —— 50% 不把人工地板的事变成可派发的事。
**应用仓推荐序特例**(2026-08-31 裁「既然是平台缺陷,就应该等待平台处理」):阻塞源是平台
缺陷 ⇒ 恒荐等待,⛔ 不荐绕行(形状容错/复刻平台规则)、不荐劈半落地。
26 changes: 24 additions & 2 deletions scripts/check-skills-token-ratchet.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -332,7 +332,25 @@ export const CEILINGS = new Map([
// 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],
// 14391 -> 14549: the axis WEIGHTING joined the decision frame — long-term
// soundness carries the highest weight, at least 50%. Maintainer ruling
// 2026-09-01, verbatim and untranslated (kept on ONE line, #11106: a governed
// quotation that soft-breaks stops being findable by the things that grep it):
// 「四维分析中,长期合理应该权重最高,至少50%」
// Same shape and same reason as the +152 row above it: this file carries TWO
// enforced frame copies (check:skill-frame-sync COPIES), and a rule that
// changes WHICH RECOMMENDATION the frame yields is exactly the #5130 drift
// class if it ships to third-party installers with only the old tie-break —
// the customer's agent would weigh the axes co-equally while this repo weighs
// long-term ≥50%, and no report would reveal it. +158 tokens across both
// copies, against +152 for the comparable 2026-08-27 rule. Compressed twice
// before landing: the first cut measured +242, and the provenance was then
// removed on the #5451 route-B convention — the published copy carries the
// RULE without this repo's dates or quoted rulings (verified: the file holds
// zero of each), so the verbatim ruling lives in the internal copies and in
// the raising PR's body. No genuine deletion was available: the rule makes no
// existing sentence redundant, and a re-wrap moves no tokens and pays nothing.
['skills/objectstack-pm-dispatch/SKILL.md', 14549],
['skills/objectstack-query/SKILL.md', 5552], // -17 (was 5569)
// 25125 -> 25143: the CRM UI Blueprint — the catalog's module-completeness
// list, and the only place an agent is told what a finished module contains —
Expand DownExpand Up@@ -826,8 +844,12 @@ function selfTest() {
// and correctly does not shift this pin. Subtotal after: 118830, i.e. the
// same 80 tokens of slack the strip's claim had before either raise — which
// is the point of shifting rather than widening.
// 118910 -> 119068: same operation for the 2026-09-01 axis-weighting raise
// on the pm-dispatch row (+158, see that row) — one SKILL.md row, so the
// shift equals the raise exactly, and the strip's claim keeps the same 80
// tokens of slack it has carried since before any of the three raises.
['the re-measure lowered the SKILL.md subtotal',
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 118910, true],
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 119068, true],

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

**Axis ② carries the highest weight — at least 50%** when the axes conflict:
lead with the long-term reading, and the other three together cannot outvote
it. Read that weight through axis ②'s own definition — shrink special-cases
and contract accretion, never grow them — so it never underwrites speculative
expansion. It ranks recommendations only, never authority.

### 9. Round report, then next round

Print a round report to the maintainer: a table of issue → verdict → PR link →
Expand DownExpand Up@@ -848,7 +854,11 @@ Justify your recommendation on all four axes; if they conflict, present the
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.
orders recommendations only — a split still escalates. Long-term soundness
carries the highest weight, at least 50%: lead with it, the other three
together cannot outvote it, and read it as shrinking special-cases rather than
as licence to expand speculatively; weight ranks recommendations only, never
authority.

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
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
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
9 changes: 6 additions & 3 deletions .claude/agents/os-dev.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -412,9 +412,12 @@ 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;长远合理性权重恒 ≥50%(2026-09-01
裁「四维分析中,长期合理应该权重最高,至少50%」):推荐以它领起,另三轴合起来投不翻
它,按本义读(缩小而非扩大特例/契约增生),⛔ 不为投机扩张背书;四轴冲突时推荐按拉动排
序:实测拉动→长远,零拉动→不扩散,防错破平,安全与难逆恒人工(权重与序都只排推荐,⛔
不授权、不移人工地板);权衡如实呈现交维护者拍板。`main` 在你脚下碎了、依赖未合并、CI
基础设施故障⇒`blocked`(附证据),重试到足以排除你的改动。

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

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

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

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

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

Expand DownExpand Up@@ -42,5 +47,8 @@
受六项约束:每行论据从业务立场写,机制名词只作括号补充。
**四棱分歧推荐序**(2026-08-27「tong y 4」):②实测拉动⇒荐①长远终态;零拉动⇒荐④不扩散;
③破余下平局向响亮/结构;安全与难逆恒人工;⛔ 只排推荐,分歧照旧升级、代裁面不扩。
**①长远权重下限**(2026-09-01 裁「四维分析中,长期合理应该权重最高,至少50%」):①恒
≥50%,推荐以①领起,另三轴合起来投不翻①;①按本义读(缩小而非扩大特例/契约增生),⛔ 不
据它为投机扩张背书;⛔ 只排推荐不授权 —— 50% 不把人工地板的事变成可派发的事。
**应用仓推荐序特例**(2026-08-31 裁「既然是平台缺陷,就应该等待平台处理」):阻塞源是平台
缺陷 ⇒ 恒荐等待,⛔ 不荐绕行(形状容错/复刻平台规则)、不荐劈半落地。
26 changes: 24 additions & 2 deletions scripts/check-skills-token-ratchet.mjs
Original file line numberDiff line numberDiff line change
Expand Up@@ -332,7 +332,25 @@ export const CEILINGS = new Map([
// 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],
// 14391 -> 14549: the axis WEIGHTING joined the decision frame — long-term
// soundness carries the highest weight, at least 50%. Maintainer ruling
// 2026-09-01, verbatim and untranslated (kept on ONE line, #11106: a governed
// quotation that soft-breaks stops being findable by the things that grep it):
// 「四维分析中,长期合理应该权重最高,至少50%」
// Same shape and same reason as the +152 row above it: this file carries TWO
// enforced frame copies (check:skill-frame-sync COPIES), and a rule that
// changes WHICH RECOMMENDATION the frame yields is exactly the #5130 drift
// class if it ships to third-party installers with only the old tie-break —
// the customer's agent would weigh the axes co-equally while this repo weighs
// long-term ≥50%, and no report would reveal it. +158 tokens across both
// copies, against +152 for the comparable 2026-08-27 rule. Compressed twice
// before landing: the first cut measured +242, and the provenance was then
// removed on the #5451 route-B convention — the published copy carries the
// RULE without this repo's dates or quoted rulings (verified: the file holds
// zero of each), so the verbatim ruling lives in the internal copies and in
// the raising PR's body. No genuine deletion was available: the rule makes no
// existing sentence redundant, and a re-wrap moves no tokens and pays nothing.
['skills/objectstack-pm-dispatch/SKILL.md', 14549],
['skills/objectstack-query/SKILL.md', 5552], // -17 (was 5569)
// 25125 -> 25143: the CRM UI Blueprint — the catalog's module-completeness
// list, and the only place an agent is told what a finished module contains —
Expand DownExpand Up@@ -826,8 +844,12 @@ function selfTest() {
// and correctly does not shift this pin. Subtotal after: 118830, i.e. the
// same 80 tokens of slack the strip's claim had before either raise — which
// is the point of shifting rather than widening.
// 118910 -> 119068: same operation for the 2026-09-01 axis-weighting raise
// on the pm-dispatch row (+158, see that row) — one SKILL.md row, so the
// shift equals the raise exactly, and the strip's claim keeps the same 80
// tokens of slack it has carried since before any of the three raises.
['the re-measure lowered the SKILL.md subtotal',
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 118910, true],
skillMdCeilings.reduce((a, [, n]) => a + n, 0) < 119068, true],

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

**Axis ② carries the highest weight — at least 50%** when the axes conflict:
lead with the long-term reading, and the other three together cannot outvote
it. Read that weight through axis ②'s own definition — shrink special-cases
and contract accretion, never grow them — so it never underwrites speculative
expansion. It ranks recommendations only, never authority.

### 9. Round report, then next round

Print a round report to the maintainer: a table of issue → verdict → PR link →
Expand DownExpand Up@@ -848,7 +854,11 @@ Justify your recommendation on all four axes; if they conflict, present the
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.
orders recommendations only — a split still escalates. Long-term soundness
carries the highest weight, at least 50%: lead with it, the other three
together cannot outvote it, and read it as shrinking special-cases rather than
as licence to expand speculatively; weight ranks recommendations only, never
authority.

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