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
4 changes: 2 additions & 2 deletions .claude/skills/pm-dispatch/references/decision-analysis.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
- 一句话问题:开头一句话说清冲突是什么,⛔ 不带实现名词,写客户看得见的症状。
- 选项 × 真实代价表:每选项一行,做什么 + 客户可感知的后果;有实测的注明实测。
- 业务含义直译:每选项配一句业务上等于什么,允许行业类比。
- 四轴从业务立场论证:论据是客户、产品或事故后果,机制名词只作括号补充。
- 四轴从业务立场论证(含四棱行):论据是客户、产品或事故后果,机制名词只作括号补充。
- 防 AI 犯错轴写清出错时谁看到什么:响亮拒绝,还是静默泄露。
- 推荐 + 回退 + 置信缺口:荐一项、给回退项、明说本分析看不见什么。
- 裁后执行段:写明裁定之后怎么执行,让维护者只裁方向不背执行。
Expand All @@ -42,8 +42,8 @@
- ② 实际业务拉动:今天谁撞上;零拉动默认 defer 或 remove。
- ③ 防 AI 犯错:闭合枚举优于自由结构,响亮拒绝优于静默容忍。
- ④ 创业阶段不扩散:remove 优于 declare-and-maintain,每个已声明的键都是永久义务。
- 四棱后一行:`Prior rulings read: <terms> → <n> hits; <ADR-xxxx Dn|none>`;未搜成整行写 unresolved。
- 末尾一行推荐 + 字母选项(A/B/…),再加一行强制置信缺口:本分析看不见什么。
- 四棱行同受六项写法约束:论据从业务立场写,机制名词只作括号补充。

## 应用仓推荐序特例

Expand Down
39 changes: 39 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1103,6 +1103,45 @@ jobs:
- name: Widening-tell gate self-test
run: pnpm check:pm-widening-tells

# Prior-ruling reader self-test (#17009) — same family and the same split
# as every step around it. The LIVE read takes a card number over REST and
# searches this checkout's `origin/main`, so it is a tool a seat runs
# against the card in front of it, not a verdict about the PR that happens
# to run CI next. Only the offline self-test runs here.
#
# ⛔ Do not "promote" the live read into a gate. It is REPORT-ONLY by the
# ruling that admitted it: it ranks candidate rulings and names them, and
# WHICH candidate governs is a seat's reading and the maintainer's ruling
# (SKILL.md 〈升级与决策〉③). A blocking context over that judgement would
# be a required-set change, and the required set is the maintainer's.
#
# What the self-test instruments is the set of rules a clean tree cannot
# exercise: the term derivation's length floor, stopwords and code-span
# splitting (a backticked CLAUSE must not become a term); the
# governing-text carrier in both shapes the live board uses, plus the
# ABSENT case, which is 23 of its 27 open decision cards; word-boundary
# matching against the substring noise `git grep -iE` would drag in; the
# two decision shapes and the prose bullets the separator rule rejects;
# and status classification, which reads the FIRST status word rather than
# scanning for a retirement word anywhere in the line — two live accepted
# ADRs mention a later supersession/withdrawal of a sub-part, and
# precedence-scanning hides both from the pasted reading. Weakening any of
# them leaves an ordinary run just as green — it would simply surface
# fewer rulings, which is indistinguishable from a card that has none —
# and that is the shape `check:self-test-wired` requires this step for.
#
# It also carries ONE live-tree leg: the ADR-0131 D8 heading must still
# parse at the shape the reader expects, so a heading-format drift reds
# here instead of quietly shrinking every future candidate set. That leg
# reports `skipped` where no `origin/main` exists rather than passing —
# "could not check" is never rendered as "checked and clean".
#
# It imports `check-half-states.mjs` for the board resolver and the proxy
# re-exec plan — one source each, so this reader and the patrol cannot
# come to disagree about which board is read or how it is reached.
- name: Prior-ruling reader self-test
run: pnpm check:pm-prior-rulings

# Stamped-post helper self-test (#17314) — the WRITE half of the rule that
# a timestamp a seat writes into GitHub comes from a clock read by the act
# that writes it. This tool POSTS: its live path mutates a card, so it is
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
"check:pm-half-states": "node scripts/pm/check-half-states.mjs --self-test",
"check:pm-clause2-carriers": "node scripts/pm/check-clause2-carriers.mjs --self-test",
"check:pm-widening-tells": "node scripts/pm/check-widening-tells.mjs --self-test",
"check:pm-prior-rulings": "node scripts/pm/check-prior-rulings.mjs --self-test",
"check:pm-closed-card-sweep": "node scripts/pm/sweep-closed-cards.mjs --self-test",
"check:pm-post-stamped": "node scripts/pm/post-stamped.mjs --self-test",
"check:pm-board-snapshot": "node scripts/pm/board-snapshot.mjs --self-test",
Expand Down
Loading
Loading