logo
0
0
WeChat Login

feat(ci): abstraction_check.py 自动分类 + #16 从观测升级为阻塞#33

Merged
created 2 weeks ago
main
feature/abstraction-auto-classifier
Edit
OverviewCommits
2
Files changed
7
Attachments

新建 scripts/ci/abstraction_check.py(~220 行):
按 7 条分类规则(L1~L7)把抽象化残留命中自动标注为 legit/residual:

L1 代码块内(...) → 测试数据/命令示例
L2 反引号内(...) → inline code 示例
L3 行内含反例/举例/示例/占位符/反模式 → 语义关键词
L4 多工具并列(>= 2 个商标同行) → 登记行
L5 grep -rnE 正则命令 → 自证命令
L6 文件白名单(meta-principles /
tooling-landscape /
quality-dashboard /
governance/README) → 整文件豁免
L7 Markdown 登记表行 → 表头含语义关键词时豁免

--max-residual N 参数控制阈值:

  • 默认 2:新项目迁移时的宽松起点
  • 本仓库:--max-residual=0(已达到真实为零,棘轮到顶)

改造 scripts/ci/report-abstraction.sh:

  • 从 'grep 然后抛人工分类' 改为 'python3 abstraction_check.py --max-residual=0'
  • 仍是 #!/bin/sh + set -eu,保持 POSIX 兼容
  • sh/dash/bash 三解释器语法+实跑验证通过

.cnb.yml 两处 stage 名同步改:
p1-abstraction-observe → p1-abstraction-check
(由 verify-yml-consistency.sh 实时守门保证 push/MR 两侧同步改)

本地正反双向测试:
正:29 命中 / 29 legit / 0 residual → EXIT 0
反 A(追加 1 陈述句):2 residual 精确识破 → 恰 ≤ 阈值 2 → EXIT 0
反 B(追加 2 陈述句):4 residual 超阈值 → EXIT 1 + 精确指行

关于计数从 16 → 29:不是真的涨了,而是口径从'行级'升到'匹配级'。
例如 meta-principles.md:141 的 'TAPD / 飞书 / Jira' 一行实际是
3 个独立命中,原 grep 按行算 1,新脚本按匹配算 3。29 是本仓库
抽象化讨论面的真实规模。

派生自 meta-principles.md §原则 4(抽象化自验证——本脚本就是
元原则 4 的机器可读化执行)+ §原则 2(可执行测试——本地反向测试
证明脚本能识破入侵)+ §原则 3(棘轮——#16 第二次真实上调到顶)

Refs: CHECKPOINT §五 T-04(闭环)、§四 轮次 8

is using the merge method to merge into5e74d5f6
合并来自 feature/abstraction-auto-classifier 的合并请求 #33

Successfully merged and closed

branch can be safely deleted
Reviewer
None yet
Assignee
None yet
Label
None yet
Participant