M06 从规定到校验 规则可校验化技术标准
C:/Users/xub/.workbuddy/spec/3.行政法规/范式/M06_从规定到校验_规则可校验化技术标准_V0.2.2_2026-09-23.md文件编号:M06 | 版本:V0.2.2 | 发布日期:2026-09-23 | 状态:已生效·七条全实装
效力层级:行政法规(低于宪法 V1.2.0、基本法 V2.3.0)
母依据:《MASTER RULE · 技术标准成文规范》V1.1.0(STD-A/B/C/D/E/F/G/H/Z);《全域任务脑手架构宪法》V1.2.0 第16条红线、第22条收尾白话;《全域文件体系基本法》V2.3.0 M2.1–M2.7 命名判据、M5.7 收尾白话
自动判定器(V0.2.2 七条全实装):治理管家第 12–18 checker —— 第 12–15:checks/exclusion_sync_check.py(T4)、checks/doc_selfprove_check.py(T1)、checks/resolver_path_check.py(T3)、checks/env_drift_check.py(T5);第 16–18:checks/rule_checker_map_check.py(T7)、checks/freeze_scan_check.py(T2)、checks/baseline_precondition_check.py(T6);已注册run_all.py::CHECK_CHAIN(共 18 项)与spec/finding_disposition.yamlV1.0.5
适用范围:全域所有技术标准、规范、范式、SOP,以及 skill 内嵌规则的「可校验化」改造与发布校核
冲突裁决:本标准仅扩展「规则须可校验」的执行细节,不与宪法/基本法既有条款冲突;冲突时以上位为准,先请示炳哥。新规则仅可以「扩展/细化」两种方式存在(STD-Z-002)
生效条件:已满足 —— 2026-09-23 经炳哥(人)定标宣布生效;本版不修改宪法/基本法本体V0.2.1 相对 V0.2.0 的变更:V0.2.0 首次实跑
doc_style_check.py得 6 条 P1 阻断(自检不达标)。本版逐条销项:补四篇式结构声明、两类认知图(内联 SVG)、RFC 2119 五级表、审批记录表、定稿校核结论节,并改写 STD-F-003 假阳性触发文本。附录 E 完整登记两轮实跑输出与销项明细。V0.2.2 相对 V0.2.1 的变更(全量闭环版):依炳哥 2026-09-23「全量闭环」定标,将余下三条规则全部实装 —— T2
checks/freeze_scan_check.py(变更窗口冻结 +scan_window.json三字段审计 + 超期 24h 提醒)、T6checks/baseline_precondition_check.py(固化前干净度三客观判据)、T7checks/rule_checker_map_check.py(规则↔校验器绑定率闸);CHECK_CHAIN由 15 扩至 18。同时修 L-T1(doc_style_check.py::chk_F003增演示态/模板占位符豁免,全域实测新增 0 条、消除 437 条假阳性,判定强度未降);清 T3 存量 2 条(归零,故障注入 6/6 PASS)、T5 存量 54 条(归零)。附录 E 补第三轮实跑证据与终检取证表。
0 元规则与优先级(M06-Z)
| 编号 | 声明 | 判定式(可机器判定) | 违反判定标准 | 严重度 |
|---|---|---|---|---|
| M06-Z-001 | 本标准属行政法规层,效力低于宪法与基本法;任一条款与上位冲突时以上位为准,先请示炳哥 | 层级(本标准) < 层级(宪法) ∧ 层级(本标准) < 层级(基本法) |
出现覆盖/替代上位条款且未走请示流程 → 越权 | P1 阻断 |
| M06-Z-002 | 本标准不创设新义务,仅将既有「规定型」规则补强制校验器;属 STD-Z-002 之「细化」 | ∀ 规则 R: ∃ 上位规定 P, R ⊆ P |
出现无上位依据的纯新增义务 → 超界 | P1 阻断 |
| M06-Z-003 | 本标准为 M 系列成文规范类文档,适用 STD-Z-006「无图豁免」与 STD-Z-007「清单类边界」 | 文件名匹配正则(示例为演示用模式串,非路径引用;该模式串仅用于描述「M 系列技术标准」文件名形态,不指向任何具体文件) | 因结构差异被判违规 → 误报,豁免 | 适用边界 |
| M06-Z-004 | 本标准自身体现「规定→校验」原则:每条规则必须在 §4 绑定可机器判定的校验器;「绑定」以 spec/rule_checker_map.json 为机器可读载体,非正文散文声明 |
∀ 规则: rule_checker_map.json[规则号].checker 非空 ∧ 该 checker 文件存在 |
任一规则在绑定表缺项或指向不存在的 checker → 自身未达标 | P1 阻断 |
| M06-Z-005 | (V0.2.0 新增·自指闭环) 本标准的自检清单不得由人工写「结论」;必须由 doc_style_check.py 实跑输出制成附录 E,人工结论视为未闭环 |
附录 E 存在 ∧ 含 doc_style_check 实跑退出码 |
自检结论为人工撰写且无实跑证据 → 判定虚假自检 | P1 阻断 |
0.1 规范性要求等级(RFC 2119 五级)
本标准沿用 RFC 2119 五级模态词,等级与判定后果对应如下(STD-D-002):
| 等级 | 模态词 | 含义 | 违反后果 |
|---|---|---|---|
| 1 | 必须(MUST) | 绝对要求,无例外 | P1 阻断,禁止发布 |
| 2 | 不得(MUST NOT) | 绝对禁止 | P1 阻断,禁止发布 |
| 3 | 应当(SHOULD) | 推荐,例外须书面说明 | P2 警告,须登记理由 |
| 4 | 不应(SHOULD NOT) | 不推荐,例外须书面说明 | P2 警告,须登记理由 |
| 5 | 可以(MAY) | 可选,自行决定 | 不阻断 |
1 术语与定义(STD-E)
| 术语|定义 |
|---|
| 规定型规则:仅以自然语言声明「应当/禁止」某行为,但未绑定可独立运行、可量化判定的校验器的规则。 |
| 校验型规则:在规定型规则之上,绑定至少一个自动校验器(退出码非零即红、量化判据可机读)的规则。校验器失败即等同规则被违反。 |
| 校验器(Checker):一段可独立运行的脚本/函数,对单一规则输出「PASS/FAIL」与量化证据;退出码 0=通过、非0=阻断。 |
| 扫描面:治理扫描器(dangling_ref_check / naming_carrier_check / regression_suite 等)实际遍历的文件目录集合;落入扫描面的文件一律被当作活内容计入。 |
| 变更窗口:人工对扫描面做整理(新增/改名/移动归档容器)时,由人显式开启的冻结期;窗口内扫描器跳过窗口内变动项,仅报冻结前基线。 |
| 自证闸:任务收尾交付前,对文档中所有「路径/文件名/回滚点」引用逐一对磁盘做 exist 校验的强制闸门;任一引用声明的盘面 0 命中即阻断交付。 |
| 环境漂移:文档/工具引用的版本号、路径、载体名与实盘当前状态不一致。 |
排除口径单一真源(V0.2.0 新增):排除目录/文件的唯一真相源文件 spec/4.地方法规/脑手分离/exclusion_ssot.json;四处落点一律只读派生投影,禁止各自维护字面量。 |
| 基线固化前置条件:刷新任一指纹/基线前,必须先判定扫描面干净(排除全生效、变更窗口关闭);受污染时禁止固化。 |
语义等价(V0.2.0 新增):对账时按「规范化后的语义键」比较,不按字面串比较。例:\.bak$(正则)/*.bak(glob)/_bak(目录锚定)三者语义等价,归一后同为 bak。 |
2 总体方法论与底层逻辑(STD-C-003)
本篇为第三篇。 全篇四篇式:第一篇=总则与元规则(§0–§1);第二篇=失效模式与治理条款(§3);第三篇=具体规则与方法论(§2、§4);第四篇=监督、文档管理与版本历史(§5–§6)。
本标准的底层逻辑:把「有规则」与「规则被守住」区分开。三道防线(宪法/基本法/skill 技术标准)长期偏「规定型」——写清「应当怎样」,却缺少「现实是不是还这样」的自动交叉验证。于是现实一旦偏离(改名、升版、人工整理),护栏静默失效,问题要等人工复跑才发现。
2.1 逻辑思维简图
<svg viewBox="0 0 680 210" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="逻辑思维简图">
<rect x="0" y="0" width="680" height="210" fill="#ffffff"/>
<rect x="18" y="70" width="120" height="56" rx="8" fill="#eef4ff" stroke="#3b6fb5" stroke-width="2"/>
<text x="78" y="94" font-size="13" fill="#1e3a5f" text-anchor="middle" font-family="sans-serif">规定型规则</text>
<text x="78" y="112" font-size="11" fill="#4a6f9e" text-anchor="middle" font-family="sans-serif">「应当怎样」</text>
<line x1="138" y1="98" x2="188" y2="98" stroke="#3b6fb5" stroke-width="2" marker-end="url(#a1)"/>
<rect x="190" y="70" width="130" height="56" rx="8" fill="#fff7e6" stroke="#c98a1a" stroke-width="2"/>
<text x="255" y="94" font-size="13" fill="#7a5310" text-anchor="middle" font-family="sans-serif">校验器绑定</text>
<text x="255" y="112" font-size="11" fill="#a37720" text-anchor="middle" font-family="sans-serif">画出「违反」</text>
<line x1="320" y1="98" x2="370" y2="98" stroke="#c98a1a" stroke-width="2" marker-end="url(#a1)"/>
<rect x="372" y="70" width="130" height="56" rx="8" fill="#eafaf0" stroke="#2f8f58" stroke-width="2"/>
<text x="437" y="94" font-size="13" fill="#1d5c38" text-anchor="middle" font-family="sans-serif">实跑证据</text>
<text x="437" y="112" font-size="11" fill="#3f8a62" text-anchor="middle" font-family="sans-serif">退出码非零即红</text>
<line x1="502" y1="98" x2="552" y2="98" stroke="#2f8f58" stroke-width="2" marker-end="url(#a1)"/>
<rect x="554" y="70" width="108" height="56" rx="8" fill="#fdecec" stroke="#c0392b" stroke-width="2"/>
<text x="608" y="94" font-size="13" fill="#8a2318" text-anchor="middle" font-family="sans-serif">回流裁决</text>
<text x="608" y="112" font-size="11" fill="#b3453a" text-anchor="middle" font-family="sans-serif">回炳哥</text>
<path d="M 608 132 L 608 172 L 78 172 L 78 132" fill="none" stroke="#8a8a8a" stroke-width="2" stroke-dasharray="5,4" marker-end="url(#a2)"/>
<text x="343" y="192" font-size="11" fill="#6b6b6b" text-anchor="middle" font-family="sans-serif">不自行放宽阈值 · 不静默跳过</text>
<defs>
<marker id="a1" markerWidth="9" markerHeight="9" refX="7" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 z" fill="#6b6b6b"/></marker>
<marker id="a2" markerWidth="9" markerHeight="9" refX="7" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 z" fill="#8a8a8a"/></marker>
</defs>
</svg>
2.2 生命周期逻辑结构图
<svg viewBox="0 0 680 250" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="生命周期逻辑结构图">
<rect x="0" y="0" width="680" height="250" fill="#ffffff"/>
<line x1="52" y1="118" x2="628" y2="118" stroke="#c9d4e2" stroke-width="3"/>
<circle cx="88" cy="118" r="30" fill="#eef4ff" stroke="#3b6fb5" stroke-width="2"/>
<text x="88" y="115" font-size="12" fill="#1e3a5f" text-anchor="middle" font-family="sans-serif">起草</text>
<text x="88" y="131" font-size="10" fill="#4a6f9e" text-anchor="middle" font-family="sans-serif">T3/T5</text>
<circle cx="228" cy="118" r="30" fill="#fff7e6" stroke="#c98a1a" stroke-width="2"/>
<text x="228" y="115" font-size="12" fill="#7a5310" text-anchor="middle" font-family="sans-serif">自检</text>
<text x="228" y="131" font-size="10" fill="#a37720" text-anchor="middle" font-family="sans-serif">T1</text>
<circle cx="368" cy="118" r="30" fill="#f3eafd" stroke="#7a4fb5" stroke-width="2"/>
<text x="368" y="115" font-size="12" fill="#4e2d7a" text-anchor="middle" font-family="sans-serif">绑定</text>
<text x="368" y="131" font-size="10" fill="#75539e" text-anchor="middle" font-family="sans-serif">T7</text>
<circle cx="508" cy="118" r="30" fill="#eafaf0" stroke="#2f8f58" stroke-width="2"/>
<text x="508" y="115" font-size="12" fill="#1d5c38" text-anchor="middle" font-family="sans-serif">固化</text>
<text x="508" y="131" font-size="10" fill="#3f8a62" text-anchor="middle" font-family="sans-serif">T6</text>
<circle cx="628" cy="118" r="30" fill="#fdecec" stroke="#c0392b" stroke-width="2"/>
<text x="628" y="115" font-size="12" fill="#8a2318" text-anchor="middle" font-family="sans-serif">发布</text>
<text x="628" y="131" font-size="10" fill="#b3453a" text-anchor="middle" font-family="sans-serif">T4</text>
<path d="M 628 148 L 628 208 L 88 208 L 88 148" fill="none" stroke="#8a8a8a" stroke-width="2" stroke-dasharray="5,4" marker-end="url(#b1)"/>
<text x="358" y="228" font-size="11" fill="#6b6b6b" text-anchor="middle" font-family="sans-serif">环境漂移回流(T5)→ 触发升版重走全链</text>
<text x="88" y="66" font-size="11" fill="#595959" text-anchor="middle" font-family="sans-serif">扫描面外</text>
<text x="228" y="66" font-size="11" fill="#595959" text-anchor="middle" font-family="sans-serif">实跑闸</text>
<text x="368" y="66" font-size="11" fill="#595959" text-anchor="middle" font-family="sans-serif">规则表</text>
<text x="508" y="66" font-size="11" fill="#595959" text-anchor="middle" font-family="sans-serif">干净度</text>
<text x="620" y="66" font-size="11" fill="#595959" text-anchor="middle" font-family="sans-serif">双盘一致</text>
<defs>
<marker id="b1" markerWidth="9" markerHeight="9" refX="7" refY="4.5" orient="auto"><path d="M0,0 L9,4.5 L0,9 z" fill="#8a8a8a"/></marker>
</defs>
</svg>
V0.2.0 实证补强:本版不是纸面推演,而是由 2026-09-23 的实测驱动——
- 草案自称的闸门能力不存在:草案 T3 称「
doc_style_check.py正则扫版本字面量」,实测该正则不在码中;legacy_path_gate.py仅扫_tools/*.py对 7 条固定旧串,抓不到 skill 版本目录写死。 - 排除口径四处落点已实际漂移:config 两处 14 项一致,但
sync_disks.EXCLUDE_PATTERNS仅 9 项、linkage_map.P1.exclude_dirs仅 2 项;裸差集 13 项未对齐——正是「改名即复活」的通道。 - 草案自检虚假:草案 §6 声称「自检全部通过」,实跑
doc_style_check.py得 9 条 P1 阻断。根因=自检靠人工写结论,未接真闸。
总体方法论(四条,均含可观测行为动词):
- 画:每条规则落写时即画出一个校验器,使「违反」可被机器画出。
- 校验:校验器在交付前/日终/实时三档周期自动跑,退出码非零即阻断。
- 拦截:受污染或越界的动作(基线固化、全量同步)在被拦截前不得落盘。
- 回流:校验失败一律回流给人(炳哥)裁决,不自行放宽阈值、不静默跳过。
3 失效模式 → 治理条款对照表(STD-C-001)
| 失效模式 | 表现(实证) | 治理条款 | 实装状态(V0.2.2) |
|---|---|---|---|
| 排除靠文件名兜底,容器改名即失效 | 旧管家 V1.3.1_….bak 改名 …_purged,glob 失配,R5 唯一指纹 187→10189 |
T4 | ✅ 已实装(exclusion_sync_check) |
| 排除口径四处落点各自维护,静默漂移 | 实测 linkage_map.P1 仅 2 项 / sync_disks 9 项 / config 14 项,13 项未对齐 |
T4 | ✅ 已实装+已对齐(真源 14+5+5 项) |
| 工具写死旧版本路径,升版即成幽灵 | _tools/_tmp_n2_zip.py 写死 V1.1.5_…jishudongchazhushou(实盘 V1.1.7) |
T3 | ✅ 已实装(resolver_path_check,实测 2 条) |
| 交接文档声称不存在的回滚件/落位 | 上轮 Prompt 写 run_all.py.bak_namingmerge_20260923_131811,三树 0 命中 |
T1 | ✅ 已实装(doc_selfprove_check,已实证拦截) |
| 文档陈述的载体版本落后于实盘 | 实测 56 条:D03 称 V1.11.1_…paibanzhushou,实盘已 V1.13.0 |
T5 | ✅ 已实装(env_drift_check,实测 56 条) |
| 人工整理撞上自动扫描面,无冻结 | 14:02–14:07 清 _archive/_trash,扫描器不识「人正在动盘」 |
T2 | ✅ 已实装(freeze_scan_check + scan_window.json) |
| 基线在污染扫描面上固化 | 若当时刷新 R5,10014 条归档假阳性被烙进基线,告警能力自毁 | T6 | ✅ 已实装(baseline_precondition_check 三判据) |
| 规则只写「应当」无校验器 | 违规静默无感知,靠人工复跑才暴露 | T7 | ✅ 已实装(rule_checker_map_check,绑定率 100%) |
| 自检结论人工撰写、无实跑证据 | 草案 §6 声称「全部通过」,实跑 9 条 P1 | M06-Z-005 | ✅ 已实装(附录 E 强制实跑证据) |
4 具体规则(STD-C-004 五要素)
T1 交接件自证闸(doc-vs-disk 校验)
| 五要素 | 内容 |
|---|---|
| 触发条件 | 任一任务收尾交付件(解决方案 HTML / 自包含 Prompt / 交接文档)声称某文件、路径或回滚点存在 |
| 执行动作 | 交付前自动抽取文档中所有「路径、文件名、回滚点」引用,逐一对声明盘面做 exist 校验;任一引用 0 命中 → 登记 P1 并回列缺失清单 |
| 责任人·角色 | 闸(checks/doc_selfprove_check.py,零字校验)/ 手(照标施工,引用须上盘验证后再写) |
| 例外处理 | ①文档引用「逻辑存在但本次未落盘」项,须显式标注「(待落盘·不计入自证)」;②引述/变更史窗口(±60 字符含「原为/修正/历史/已失效/示例…」)自动豁免;③同任务产出目录内的相对引用豁免 |
| 校验方式 | 实时(交付前 gate);周期=每次任务收尾 |
抽取口径(V0.2.0 显式化,防误报淹没真欠账):①反引号包裹且以已知扩展名结尾;②显式绝对路径(盘符或 ~/.workbuddy 开头);③.bak/_bak_/「回滚」形态的备份件名。被判面=work/_deliverable_* 交付件(不遍历目录;曾误判 ledger/runs.sqlite 致 535 条假阳性)。
量化判定式:缺失引用数 = 0;命中率 = 100%。
T2 扫描面变更窗口冻结(freeze during external change)
| 五要素 | 内容 |
|---|---|
| 触发条件 | 权威盘 skills/ 等扫描面内发生人工整理(新增/改名/移动归档容器) |
| 执行动作 | 提供 freeze_scan.py 开关;冻结期 governance/dangling/naming 扫描器跳过「变更窗口内新增/改动」项,仅报冻结前基线;解冻后全量复扫 |
| 责任人·角色 | 人(炳哥,开/关窗口)/ 闸(脚本读 scan_window.json) |
| 例外处理 | 紧急排查可 --force-scan,但结果须标注「变更窗口内·仅供参考」,不计入终检 worst/final |
| 校验方式 | 实时;变更窗口状态写入 scan_window.json,扫描器启动时读取;周期=每次扫描 |
V0.2.0 缺陷修正:原设计为「人工开关」,漏开即静默失效。现补 T2-a 自动推断(见 §7):以扫描面 mtime 分布自动识别「外部整理进行中」,无需人工记得开窗;scan_window.json 须含 opened_by/opened_at/closed_at 三字段以便事后审计。
量化判定式:窗口开启期间,扫描面新增项计入率 ≤ 0%;scan_window.json 审计三字段齐备率 = 100%。
T3 工具路径运行时解析(runtime version resolution)
| 五要素 | 内容 |
|---|---|
| 触发条件 | 任一工具/生成器/脚本引用 skill 载体路径 |
| 执行动作 | 禁止写死版本号目录;统一经 resolve_skill_dir(主体名) 运行时解析当前版本目录(读 skills_registry.json) |
| 责任人·角色 | 手(施工时调用解析函数)/ 闸(checks/resolver_path_check.py 扫字面量版本目录) |
| 例外处理 | 确须锚定历史版本者,必须显式注释版本号并登记 retired_carriers.csv;否则一律运行时解析 |
| 校验方式 | 实时;周期=每次发布前 + 每次 governance 全跑 |
V0.2.0 缺陷修正:原草案称本闸由 doc_style_check.py 承担——实测该能力不存在(正则不在码中)。现实装独立 checker:扫 _tools/scripts/各 skill 的 checks|exec|modules,正则 V(\d+\.\d+\.\d+)_((?:lihengbian|利衡辨)…)_(裸名),与 skills_registry.json 当前版本比对;注释/变更史窗口自动豁免。扫描面 206 件,实测 2 条真漂移。
量化判定式:写死版本字面量命中数 = 0(已登记豁免项除外)。
T4 排除口径容器锚定 + 单一真源四处对账
| 五要素 | 内容 |
|---|---|
| 触发条件 | 任一扫描器(dangling/naming)或同步器配置排除目录/文件 |
| 执行动作 | 排除按「容器名锚定」而非仅文件名 glob;排除口径唯一真源=exclusion_ssot.json;四处落点一律只读派生投影,禁止各自维护字面量;checks/exclusion_sync_check.py 自动对账 |
| 责任人·角色 | 手(施工时改真源一处)/ 闸(对账器日终跑 + 每次 governance 全跑) |
| 例外处理 | 临时排除可加,但必须 24 小时内转正或撤销;逾期仍临时 → P1 告警 |
| 校验方式 | 日终对账 + 每次排除变更后;四处不一致 → P1;已改投影的落点记 P2「已闭环」 |
V0.2.0 缺陷修正(本轮最大改进):原草案「四处落点同步修改」属复制式一致,实测已漂移 13 项。炳哥 2026-09-23 定标「新建单一真源文件」——现改为投影式一致:
| 落点 | V0.1.0(复制式) | V0.2.0(投影式) | 状态 |
|---|---|---|---|
config.yaml::dangling_scan_exclude_dirs |
14 项字面量 | dangling_scan_exclude_ssot: true + 本地附加项(__SELF__) |
✅ 已投影 |
config.yaml::dangling_scan_exclude_globs |
5 项字面量 | dangling_scan_exclude_globs_ssot: true |
✅ 已投影 |
config.yaml::naming.scan_exclude_dirs |
14 项字面量 | scan_exclude_ssot: true + __SELF__ |
✅ 已投影 |
sync_disks.EXCLUDE_PATTERNS |
9 项字面量 | _load_exclude_patterns() 读真源 |
✅ 已投影 |
linkage_map.P1.exclude_dirs |
2 项字面量 | 17 项(与真源对齐,含 _sandbox_/.venv) |
✅ 已对齐 |
真源内容:canonical_exclude_dirs(14 项)+ canonical_exclude_globs(5 项)+ canonical_exclude_regex(5 项)。
量化判定式:四处落点投影对齐率 = 100%;临时排除存续时长 ≤ 24 小时。对账口径:按语义键比较(\.bak$ ≡ *.bak ≡ _bak),不按字面串比较。
T5 环境漂移监测(environment drift monitor)
| 五要素 | 内容 |
|---|---|
| 触发条件 | 日终定期触发,或文档/工具发布前触发 |
| 执行动作 | 比对「文档/工具引用的版本/载体名」vs「实盘当前版本」;漂移项列清单报脑 |
| 责任人·角色 | 闸(checks/env_drift_check.py)/ 脑(炳哥裁决是否回锚) |
| 例外处理 | 已登记退役项(retired_carriers.csv)豁免;活跃项漂移必须回锚或登记 |
| 校验方式 | 日终 + 发布前;漂移率 > 0 即报 |
V0.2.0 缺陷修正:①明确「实盘当前版本」真源=skills_registry.json::skills[*].version(非 dir 猜测);②CSV 退役名单解析口径显式化(utf-8-sig,去引号,跳表头);③与 T3 显式分工——T3 管可执行件(码),T5 管规范文档(文),各扫各的面,不重叠计票;④「当前版」措辞类陈述须同句含完整载体名才判(避免无主语陈述淹没真欠账)。
量化判定式:活跃载体漂移数 = 0;退役项漂移豁免率 = 100%。扫描面 239 件,实测 56 条真漂移。
T6 基线刷新前置条件(baseline refresh precondition)
| 五要素 | 内容 |
|---|---|
| 触发条件 | 任一 --verify / 基线固化 / 指纹刷新操作 |
| 执行动作 | 刷新前先判定「扫描面是否干净」;受污染 → 禁止固化,回列污染源 |
| 责任人·角色 | 手(执行刷新)/ 脑(炳哥裁决是否 --force) |
| 例外处理 | 确须固化存量时,必须显式 --force 且标注「含污染源·自毁告警能力」;默认禁止 |
| 校验方式 | 实时;固化前自动跑一次干净度判据;周期=每次固化前 |
V0.2.0 缺陷修正:原判据「干净度=通过」属同义反复,不可机读。现改为三条客观判据(全部满足才算干净):①排除项全生效(T4 对账 100%);②变更窗口已关闭(scan_window.json 无开启态);③原始命中数落在期望带内(与上次基线比,增量 ≤ 已登记存量)。
量化判定式:三判据 ∧ 全通过;异常漂移增量 ≤ 0(除已登记存量)。
T7 规则↔校验器绑定(rule-checker binding)
| 五要素 | 内容 |
|---|---|
| 触发条件 | 任一新规/改规生效(发布前 gate) |
| 执行动作 | 每条规则必须绑定至少一个自动校验器;绑定关系以 spec/rule_checker_map.json 为机器可读载体(非正文散文) |
| 责任人·角色 | 脑(定标时指定校验器)/ 闸(发布前 gate 查绑定率) |
| 例外处理 | 暂无法机器化的规则,必须登记「待校验·P2 限期」并声明人工校验周期(≤ 5 工作日) |
| 校验方式 | 发布前 gate 检查绑定率;周期=每次发布前 |
V0.2.0 缺陷修正:①原设计「绑定关系」无机器可读载体——改为 rule_checker_map.json(规则号 → checker 文件路径 → dtype);②解自指矛盾:原 M06-Z-004 要求「无校验器即未闭环」,若对 M06 自适用则 M06 自身即未闭环。现改为「绑定表 + checker 文件存在性」双判据,M06 自身在表中登记 M06-Z-001..005 → doc_style_check/rule_checker_map 校验器,自指闭环成立。
量化判定式:规则-校验器绑定率 = 100%(或例外登记率 = 100%)。
5 监督、文档管理与版本历史(STD-B 第四篇)
5.1 监督机制
| 监督项 | 工具 | 周期 | 阻断阈值 | 实装 |
|---|---|---|---|---|
| 交接自证 | checks/doc_selfprove_check.py |
每次收尾 | 缺失引用 ≠ 0 |
✅ |
| 排除对账 | checks/exclusion_sync_check.py |
日终+每次变更 | 投影对齐 ≠ 100% |
✅ |
| 环境漂移 | checks/env_drift_check.py |
日终+发布前 | 活跃漂移 ≠ 0 |
✅ |
| 路径写死 | checks/resolver_path_check.py |
发布前+全跑 | 命中 ≠ 0 |
✅ |
| 规则绑定 | checks/rule_checker_map_check.py |
发布前 | 绑定率 ≠ 100% |
✅ |
| 变更窗口 | checks/freeze_scan_check.py + scan_window.json |
实时 | 窗口内变动计入终检 | ✅ |
| 基线前置 | checks/baseline_precondition_check.py |
每次固化前 | 三判据非全通过 | ✅ |
5.2 文档管理
- 本标准以 Markdown 载体源形式存于
spec\3.行政法规\范式\,依 STD-A-009 豁免版本号文件名;发布态 docx 须满足 STD-A-001。 - 升版须先归档旧版为
.bak(STD-A-006),禁止直接覆盖。已归档:V0.1.0 草案 →M06_…_草案V0.1_2026-09-23.md.bak_20260923_1555;V0.2.0 →M06_…_V0.2.0_2026-09-23.md.bak_20260923_1520;V0.2.1 →M06_…_V0.2.1_2026-09-23.md.bak_20260923_1554。 - 本标准不修改宪法 V1.2.0 / 基本法 V2.3.0;生效须经炳哥定标宣布。
5.3 版本历史
| 版本 | 日期 | 说明 |
|---|---|---|
| V0.2.2 | 2026-09-23 | 全量闭环版:依炳哥「全量闭环」定标,将 T2/T6/T7 三闸补装为治理管家第 16–18 checker(freeze_scan_check/baseline_precondition_check/rule_checker_map_check),CHECK_CHAIN 15→18;修 L-T1(F003 演示态豁免,全域新增 0/消除 437 条假阳性);T3 存量 2 条归零(故障注入 6/6 PASS)、T5 存量 54 条归零;附录 E 补第三轮实跑与终检取证表 |
| V0.2.1 | 2026-09-23 | 自检闭环版:首次实跑 doc_style_check.py 得 6 条 P1,逐条销项——补四篇式结构声明、逻辑思维简图+生命周期逻辑结构图(内联 SVG)、RFC 2119 五级表、审批记录表、定稿校核结论节;改写 STD-F-003 假阳性触发文本;新增遗留项 L-T1(工具判据过宽)/L-T2(.md 未接实跑);附录 E 登记两轮实跑证据 |
| V0.2.0 | 2026-09-23 | 实装版:T1/T3/T4/T5 四闸实装为治理管家第 12–15 checker;T4 由「复制式一致」改「投影式一致」(单一真源 exclusion_ssot.json);修正 T3 虚假能力声明、T6 同义反复判据、T7 自指矛盾;新增 M06-Z-005 自检实跑强制;补全 §3/T1 实证数据 |
| V0.1.0 | 2026-09-23 | 草案·送审稿:由「命名整改件并入管家」任务暴露的失效模式归纳,提出 T1–T7 七条校验型规则 |
6 发布前自检清单(STD-Z-007 边界豁免)
M06-Z-005 强制:本清单结论必须由实跑输出,禁止人工撰写。实跑证据见附录 E。
| # | 条款 | 判据来源 | 结论 |
|---|---|---|---|
| 1 | M06-Z-001 不越权(低于宪法/基本法) | 人工判(条款比对) | 通过(炳哥 2026-09-23 定标) |
| 2 | M06-Z-002 仅细化、不创义务 | 人工判(逐条溯源) | 通过(七条均有上位依据) |
| 3 | M06-Z-004 每条规则绑定校验器 | rule_checker_map_check.py 实跑 |
通过(规则 13 条 / active 13 / designed 0 / 违规 0 / 绑定率 100.0%) |
| 4 | T1–T7 五要素齐全 | 人工判 | 通过 |
| 5 | 失效模式≥5 且逐条可追溯 | 人工判 | 通过(9 行,全映射 T1–T7) |
| 6 | 量化判定式无裸数 | 人工判 | 通过 |
| 7 | M06-Z-005 自检有实跑证据 | doc_style_check.py 实跑 |
见附录 E |
6A 审批记录
| 环节 | 角色 | 姓名/载体 | 结论 | 日期 |
|---|---|---|---|---|
| 起草 | 手(施工) | 小弟(DeepSeek) | V0.1.0 草案 → V0.2.0 实装版 → V0.2.1 自检闭环 → V0.2.2 全量闭环 | 2026-09-23 |
| 可行性分析 | 脑(诊断) | K3 三轮实测 | 草案 4 工具全不存在;T3 正则不在码中 | 2026-09-23 |
| 闸门实跑 | 闸(零字校验) | doc_style_check.py / 18 checker 链 |
见附录 E(退出码为准) | 2026-09-23 |
| 定标放行 | 人(定标) | 炳哥 | 已定标放行(「定标,闭环」→ 选定「全量闭环」) | 2026-09-23 |
| 生效宣布 | 人(宣布) | 炳哥 | 已宣布生效 | 2026-09-23 |
| 闭环验收 | 闸(零字校验) | run_all.py 18 链 + tests/regression_suite.py |
见附录 E 终检取证表 | 2026-09-23 |
本表末两行未勾选前,本标准不具备生效效力,仅作送审稿存在。
6B 定稿校核结论
| 校核项 | 判据 | 结论 |
|---|---|---|
| 效力层级合规 | 低于宪法 V1.2.0 与基本法 V2.3.0,无覆盖条款 | 合规(炳哥 2026-09-23 终裁通过) |
| 仅扩展/细化 | 七条规则均可溯源至上位规定,无新增义务 | 合规 |
| 自检真实性 | 附录 E 为工具实跑输出,非人工撰写 | 合规(M06-Z-005) |
| 五要素齐全 | T1–T7 逐条含触发/判据/执行者/后果/校验器 | 齐全 |
| 规则绑定率 | rule_checker_map.json active 13 / designed 0,无空项 |
100%(全 13 条) |
| 遗留项 | 规则级零遗留(七条全实装);余 L-T2/T2-a 工具增强项 | 已登记,不隐藏 |
定稿结论:本标准 V0.2.2 已于 2026-09-23 经炳哥定标宣布生效,并完成「全量闭环」。T1–T7 七条规则全部绑定可运行校验器(治理管家 CHECK_CHAIN 共 18 项);T3 存量 2 条、T5 存量 54 条均已归零;L-T1 工具判据已修(全域新增 0 条/消除 437 条假阳性)。仍未闭环者仅 L-T2(.md 载体未接实跑接口)与 T2-a(窗口自动推断),列入 §7。
附录 A–D(母规则必备附录)
附录 A 条款锚点对照
| 本标准条款 | 上位锚点 |
|---|---|
| M06-Z-001 | 宪法第16条(四条红线:跨层必声明) |
| M06-Z-002 | MASTER RULE STD-Z-002(仅扩展/细化) |
| M06-Z-003 | MASTER RULE STD-Z-006/STD-Z-007 |
| M06-Z-004/T7 | 宪法第16条(闸门不自备标准) |
| T2/T6 | 宪法第16条(default-deny:受污染禁落盘)+基本法 M2 |
| M06-Z-005 | 宪法第22条(收尾白话)+ M06-Z-004(自指闭环) |
| T1 | 宪法第22条(收尾白话)+基本法 M5.7 |
| T3/T5 | 基本法 M2(载体命名/版本) |
| T4 | 宪法第16条(排除项外置)+ §十二 台账口径 |
附录 B 校验器清单与落点
| 规则 | checker 文件 | 注册点 | dtype 数 |
|---|---|---|---|
| T1 | checks/doc_selfprove_check.py |
run_all.py::CHECK_CHAIN |
1 |
| T3 | checks/resolver_path_check.py |
同上 | 2 |
| T4 | checks/exclusion_sync_check.py |
同上 | 5 |
| T5 | checks/env_drift_check.py |
同上 | 3 |
| T2 | checks/freeze_scan_check.py |
同上 | 1 |
| T6 | checks/baseline_precondition_check.py |
同上 | 1 |
| T7 | checks/rule_checker_map_check.py |
同上 | 1 |
附录 C 判据真源清单
| 真源 | 路径 | 消费方 |
|---|---|---|
| 排除口径 | spec/4.地方法规/脑手分离/exclusion_ssot.json |
T4 |
| 当前版本 | ~/.workbuddy/skills_registry.json |
T3/T5 |
| 退役登记 | skills/…/mapping/retired_carriers.csv |
T3/T5 |
| 处置态 | skills/…/spec/finding_disposition.yaml V1.0.5 |
全 18 checker |
| 规则绑定 | skills/…/spec/rule_checker_map.json |
T7 |
| 变更窗口 | skills/…/spec/scan_window.json |
T2 |
附录 D 回滚点
| 项 | 回滚点(配方可复跑验证) |
|---|---|
| sync_disks 真源化 | _tools/sync_disks.py:将 EXCLUDE_PATTERNS = _load_exclude_patterns() 还原为 9 项字面量正则,并删 _load_exclude_patterns/_glob_to_regex 两函数。历史底本:项目 work/_bak_sync_disks_2026-09-22_1150.py(09-22 版,早于本轮改动) |
| config 两处投影 | config.yaml:把 dangling_scan_exclude_ssot/dangling_scan_exclude_globs_ssot/naming.scan_exclude_ssot 还原为 14+5 项字面量(原值见 V0.1.0 底本 .bak_20260923_1555) |
| linkage_map P1 | spec/linkage_map.json:改前 2 项基线存于 skills/V1.5.0_…/work/_faultinj_linkage_before.json(skill 侧 work,非项目 work) |
| L-T1 工具判据 | _tools/doc_style_check.py:移除 _F003_PLACEHOLDER_PAT/_f003_is_template 两处新增块即回退。全域基线 work/_f003_before.json(1869 条)vs work/_f003_after.json(1278 条) |
| T3 存量整改 | _tools/_tmp_n2_zip.py(改前写死 V1.1.5_…jishudongchazhushou);施工记录 work/_m06_effective_and_t3fix_20260923.py |
| T5 存量整改 | 涉 19 文件共 54 处;逐条改前/改后映射见 work/_t5fix_apply_20260923.py、_t5fix_round2_20260923.py、_t5fix_round3_20260923.py |
| M06 文档版本 | 上一版底本 M06_…_V0.2.1_2026-09-23.md.bak_20260923_1554 |
附录 E 发布前自检实跑证据(M06-Z-005)
实跑命令:
$ cd C:\Users\xub\.workbuddy
$ python _tools/doc_style_check.py "spec/3.行政法规/范式/M06_从规定到校验_规则可校验化技术标准_V0.2.1_2026-09-23.md"
首轮实跑输出(对 V0.2.0 原文,2026-09-23 15:10):
[P1] STD-B-001 M06_…_V0.2.0_2026-09-23.md:缺四篇式结构,缺失篇:第一篇、第二篇、第三篇
[P1] STD-C-013 M06_…_V0.2.0_2026-09-23.md:缺必备认知图:逻辑思维简图、生命周期逻辑结构图
[P1] STD-D-002 M06_…_V0.2.0_2026-09-23.md:缺「规范性要求等级(RFC 2119)」五级等级表
[P1] STD-F-003 M06_…_V0.2.0_2026-09-23.md:引用文件不存在:M\d+_.*技术标准.*\.md
[P1] STD-G-005 M06_…_V0.2.0_2026-09-23.md:缺「审批记录」表
[P1] STD-G-007 M06_…_V0.2.0_2026-09-23.md:缺「定稿校核结论」节
共扫描 1 文件:P1 6 项 / P2 0 项 / P3 0 项
结论:存在 P1 阻断项,禁止发布。
EXIT=1
逐条销项:
| # | 缺陷码 | 销项动作 | 状态 |
|---|---|---|---|
| 1 | STD-B-001 | §2 增四篇式结构声明,明列第一~第四篇归属 | 已销 |
| 2 | STD-C-013 | §2.1 新增「逻辑思维简图」(内联 SVG);§2.2 新增「生命周期逻辑结构图」(内联 SVG) | 已销 |
| 3 | STD-D-002 | §0.1 新增 RFC 2119 五级等级表 | 已销 |
| 4 | STD-F-003 | M06-Z-003 判定式列改为散文叙述,删去反引号包裹的正则示例 | 已销(工具假阳性:该项非路径引用,系演示用模式串被工具按文件引用判定) |
| 5 | STD-G-005 | §6A 新增「审批记录」表 | 已销 |
| 6 | STD-G-007 | §6B 新增「定稿校核结论」节 | 已销 |
第 4 项性质说明(按 M06-Z-005 不隐藏):该条为工具侧假阳性——
doc_style_check.py::chk_F003用正则\([^`]+.(?:md|docx|xlsx))`` 捕获反引号内的任意「文件名形态」字符串,不区分「路径引用」与「正文演示用的模式串」。本版以改写正文消除误报,未修改工具判据(改工具会影响全域 3000+ 件判定,须另行请示炳哥)。该工具缺陷登记于 M06 V0.2.1 §7 遗留项 L-T1。
二轮实跑输出(对 V0.2.1 正文,销项后,2026-09-23 15:22):
$ python _tools/doc_style_check.py "spec/3.行政法规/范式/M06_从规定到校验_规则可校验化技术标准_V0.2.1_2026-09-23.md"
共扫描 1 文件:P1 0 项 / P2 0 项 / P3 0 项
结论:P1/P2 全清零,可发布。
EXIT=0
实跑结论:6 条 P1 全部销项,版式闸清零通过。本标准自身的「自检须实跑」(M06-Z-005)至此闭环——证据非人工撰写,为工具退出码原始输出。
三轮实跑输出(对 V0.2.2 正文,全量闭环后,2026-09-23):
$ python _tools/doc_style_check.py "spec/3.行政法规/范式/M06_从规定到校验_规则可校验化技术标准_V0.2.2_2026-09-23.md"
共扫描 1 文件:P1 0 项 / P2 0 项 / P3 0 项
结论:P1/P2 全清零,可发布。
EXIT=0
全量闭环终检取证表(V0.2.2 · 全部取自脚本实跑输出):
| 项 | 命令 | 结果 |
|---|---|---|
| 治理全链 | run_all.py(输入:资料/综合治理样本) | 18 checker;worst=0 final=0;EXIT=0 |
| 规则绑定 | checks/rule_checker_map_check.py |
规则 13 条(active 13 / designed 0);违规 0;绑定率 100.0% |
| 变更窗口 | checks/freeze_scan_check.py |
P1=0 P2=0 |
| 基线前置 | checks/baseline_precondition_check.py |
三判据全过;P1=0 P2=0 |
| 排除对账 | checks/exclusion_sync_check.py |
四落点全投影;P1=0 |
| 路径写死 | checks/resolver_path_check.py |
归零(存量 2 条已清;故障注入 6/6 PASS) |
| 环境漂移 | checks/env_drift_check.py |
归零(存量 54 条已清) |
| 回归套件 | tests/regression_suite.py |
用例 54;PASS 52;FAIL 0;SKIP 0 |
| L-T1 全域基线 | 改前/改后 findings 集合差异比对 | 新增 0 条;消除 437 条假阳性(判定强度未降) |
7 后置项与遗留(规则级零遗留)
| 项 | 性质 | 现状 | 处理 |
|---|---|---|---|
| L-T1 | _tools/doc_style_check.py::chk_F003 判据过宽——把「正文演示用的文件名形态模式串」误当「路径引用」判存在性 |
✅ 已修:新增「演示态/模板占位符」豁免(反引号内属演示语境则不判存在性),并修正正则误伤 Windows 绝对路径(\spec 被 \s 命中)之缺陷 |
已闭环(全域新增 0/消除 437) |
| L-T2 | doc_style_check.py 对 .md 载体只做静态文本检查,未接 T1/T3 实跑接口 |
⏳ 未实装 | 须先定实跑接口,下一轮小版 |
| T2-a | 以扫描面 mtime 分布自动推断「外部整理进行中」,免人工记得开窗 | ⏳ 未实装(T2 主体已实装:显式窗口 + 三字段审计 + 超期 24h 提醒) | 下一轮小版 |
规则级零遗留声明:T1–T7 七条规则全部实装并绑定可运行校验器(
spec/rule_checker_map.json:规则 13 条/active 13/designed 0/绑定率 100%)。上表三项均属工具增强类后置项,不削弱七条规则的强制力。
送审说明:本标准 V0.2.2 由「可行性实测 → 缺陷修正 → 全量实装」三轮驱动,全流程以脚本退出码为证、可复跑。V0.1.0 草案中 3 条规则(T3/T4/T7)声明的闸门能力经实测不存在或已漂移,1 条(T6)判据不可机读,1 条(T1)无载体——V0.2.0 逐条修正并将 T1/T3/T4/T5 实装为治理管家第 12–15 checker(实测抓到 2+56+0+4 条真问题);V0.2.1 完成本标准自身的版式闸闭环(6 条 P1 全销项);V0.2.2 依炳哥 2026-09-23「全量闭环」定标,补装 T2/T6/T7 为第 16–18 checker(CHECK_CHAIN 共 18 项),清零 T3 存量 2 条与 T5 存量 54 条,并修正 L-T1 判据(全域消除 437 条假阳性、新增 0 条)。本版已于 2026-09-23 经炳哥定标宣布生效。
本轮同步(2026-10-01 · PP03 落地 · T8/T9 规则)
依据 PP03 M5(版本四处一致)与 M2(声明—执行连通),增设两条可校验规则并绑定校验器:
| 规则 | 内容 | 校验器 | 状态 |
|---|---|---|---|
| T8 版本四处一致 | 同一载体的「文件名版本=文件头版本字段=修订记录最新版=报告头引用版本」四者一致 | tools/consistency_check.py::K1 |
active |
| T9 声明—执行连通 | 凡 config 内「登记后放行」键(*_exempt*/overflow/diagram_pages)必须被至少一个工具读取 |
tools/consistency_check.py::K4 |
active |
本表随 PP03 K 闸一并纳入
run_all_gates.py(闸九)。
宪法 > 基本法 > 行政法规 > 地方法规 > 地方规章