docs(规约): 删除编号规范.md,生效规则并入文档规范 §7.1
用户裁定:docs/编号规范.md 在项目里已无意义,删除。 依据:该文 253 行里真正仍生效的只有两条规则(新条目一律不发编号、 人读文档存量编号继续清退)和一张存量族表;其余内容早有归属——两道 编号门禁的退役记录在 docs/门禁说明/id-check.md 与 id-check-new.md, 手工普查与恢复机器面在 scripts/archive/id_gate/README.md。留着就是 第二真相源,同一事实写在两处迟早漂移。 处理: - docs/文档规范.md 新增 §7.1「条目与编号:一律不发」,承接规则、 场景表、三条硬规矩、存量族表、已停发旧号族清单、不是编号的清单、 清理动作与「没有机器门禁兜底」四段。 - 活跃引用 62 处逐条改指 §7.1 或归档 README:AGENTS.md 2 处、 门禁说明三篇 18 处、其余文档 11 篇、代码与脚本 10 处、rename_maps 七个 record 字段、.dsh/skills 四个文件 8 处。 - 归档区 107 处去掉 docs/ 前缀当纯文本提及;编号治理历史.md 45 处 改为「原编号规范 §N」,避免被 doc-links 当自引用解析。 - 顺带修正 scripts/archive/id_gate/README.md 里仍称旧文为现行规范 的表述。 门禁:check_doc_links --all --sections-strict 220 篇全通过、无法判定 0; pre-commit 全 Passed。
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
check_ids.py — 编号门禁(docs/编号规范.md §8 的 8 项校验)——**已退役(2026-10-28)**。
|
||||
check_ids.py — 编号门禁(编号规范.md §8 的 8 项校验)——**已退役(2026-10-28)**。
|
||||
|
||||
⚠ 退役说明(先读这段,别把它当活门禁用):
|
||||
本脚本与两份语料(id_registry.json / id_aliases.json)已整体移入 scripts/archive/id_gate/,
|
||||
@@ -9,7 +9,7 @@ check_ids.py — 编号门禁(docs/编号规范.md §8 的 8 项校验)—
|
||||
(钩子 id-check-new:只查新增行、零语料)已于 2026-10-29 一并退役,也进了本目录——
|
||||
**编号形态此后没有机器面**。本脚本保留下来只做一件事:
|
||||
想复查「存量编号现状」时手工跑一遍出报告。
|
||||
手工普查与恢复机器面 → docs/编号规范.md §8.5;两道门禁的留档 → docs/门禁说明/id-check.md
|
||||
手工普查与恢复机器面 → 编号规范.md §8.5;两道门禁的留档 → docs/门禁说明/id-check.md
|
||||
与 docs/门禁说明/id-check-new.md。
|
||||
下面这份 docstring 是退役前的原样,未改,作为历史口径保留。
|
||||
|
||||
@@ -37,7 +37,7 @@ check_ids.py — 编号门禁(docs/编号规范.md §8 的 8 项校验)—
|
||||
构建产物。裸形盲区显式登记在 id_registry.json 的 `unmanaged_bare`,不是「检查通过」。
|
||||
|
||||
上线节奏(§8):默认 **warn-only**(退出码 0);`--strict` 才让校验 1~6 拦提交。
|
||||
第 8 项(两根护栏)自 2026-10-28 起**只报告、不拦提交**(用户裁定);退役路线见 docs/编号规范.md §8.5。
|
||||
第 8 项(两根护栏)自 2026-10-28 起**只报告、不拦提交**(用户裁定);退役路线见 编号规范.md §8.5。
|
||||
|
||||
用法(仓库根):
|
||||
& '.venv\\Scripts\\python.exe' scripts/check_ids.py # warn-only 全库
|
||||
@@ -167,7 +167,7 @@ class Checker(object):
|
||||
f["_full"] = re.compile("^(?:%s)$" % fam["pattern"])
|
||||
f["_owners"] = self._expand_owners(fam)
|
||||
# 定义集属主 ≠ 登记处属主。冻结历史快照族(snapshot_only)的登记处只能挂在
|
||||
# 规范正文(docs/编号规范.md §4.5 那种存档表)时,那张表**是存档不是定义**:
|
||||
# 规范正文(编号规范.md §4.5 那种存档表)时,那张表**是存档不是定义**:
|
||||
# 规范里还混着大量写法示例(`N-99`、`S1`、`N-31`),若进定义集会同时打穿
|
||||
# 裸形判定(`S1` 被判成 `S-1` 的漏连字符,实测 238 条)与撞号判定(§4.5 的
|
||||
# `S-3` 与登记簿 S-3 被判重复定义)。因此只对快照族做这个剔除。
|
||||
@@ -338,7 +338,7 @@ class Checker(object):
|
||||
else:
|
||||
self.add(1, "error", rel, lineno, literal,
|
||||
"未登记前缀:%s(§4.1 / §4.2 总表里没有这一族)" % literal,
|
||||
"归到既有类别;确属新类别先改 docs/编号规范.md §4,再进 registry")
|
||||
"归到既有类别;确属新类别先改 编号规范.md §4,再进 registry")
|
||||
self.stats["undecidable"] += 1
|
||||
continue
|
||||
|
||||
@@ -492,7 +492,7 @@ class Checker(object):
|
||||
self.add(5, "error", rel, lineno, literal,
|
||||
"冻结前缀越游标:%s > %s(%s;§4.3 / §8 校验 5)"
|
||||
% (literal, fam["cursor"], fam["title"]),
|
||||
"该族已封闭,新条目改语义标识(§3.3);确需新号先改 docs/编号规范.md §4")
|
||||
"该族已封闭,新条目改语义标识(§3.3);确需新号先改 编号规范.md §4")
|
||||
|
||||
def _check_dangling(self, rel, lineno, literal, fam):
|
||||
if not fam.get("check_dangling") or not fam["_def_owners"] or rel in fam["_def_owners"]:
|
||||
@@ -631,7 +631,7 @@ class Checker(object):
|
||||
by_code = defaultdict(list)
|
||||
for f in self.findings:
|
||||
by_code[f.code].append(f)
|
||||
print("=== 编号门禁 check_ids.py(docs/编号规范.md §8)===")
|
||||
print("=== 编号门禁 check_ids.py(编号规范.md §8)===")
|
||||
print("扫描 %d 个文件;编号字面量 %d 处(豁免 [示例]/[计划] 行 %d 处、变更记录行 %d 处、"
|
||||
"非编号噪声 %d 处、裸形盲区 %d 处、命中别名表 %d 处)"
|
||||
% (self.stats["files"], self.stats["refs_total"], self.stats["skip_example"],
|
||||
@@ -724,7 +724,7 @@ def load_backlog():
|
||||
def backlog_doc(entries, errs, ratio):
|
||||
return {
|
||||
"schema": 1,
|
||||
"note": ("编号债务台账(docs/编号规范.md §8.4):--strict 只对**台账之外**的新错误级问题拦提交。"
|
||||
"note": ("编号债务台账(编号规范.md §8.4):--strict 只对**台账之外**的新错误级问题拦提交。"
|
||||
"台账只许减不许增——还清的用 --prune-backlog 收掉;确需新增一条必须写 reason 字段"
|
||||
"说明这笔债为什么该存在,默认禁止顺手加行(否则一周后台账就变成第二个 backlog)。"
|
||||
"指纹 = 文件 + 校验号 + 字面量,不含行号(行号会漂,用它台账天天假新增)。"),
|
||||
@@ -737,7 +737,7 @@ def backlog_doc(entries, errs, ratio):
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser(
|
||||
description="编号门禁:docs/编号规范.md §8 的 8 项校验(默认 warn-only)")
|
||||
description="编号门禁:编号规范.md §8 的 8 项校验(默认 warn-only)")
|
||||
ap.add_argument("--strict", action="store_true",
|
||||
help="增量拦截:台账(scripts/id_known_backlog.json)之外的新错误级问题 → 拦提交")
|
||||
ap.add_argument("--write-backlog", action="store_true",
|
||||
@@ -847,20 +847,20 @@ def main():
|
||||
|
||||
# 两根护栏自 2026-10-28 起转「报告制」(用户裁定):只打印,不影响退出码。
|
||||
# 理由:它们逼着每一笔提交维护 99 族语料(近 80 笔提交有 61 笔被编号体系牵连),
|
||||
# 而真正防回潮的是校验 1~6 的台账外新账。退役路线见 docs/编号规范.md §8.5。
|
||||
# 而真正防回潮的是校验 1~6 的台账外新账。退役路线见 编号规范.md §8.5。
|
||||
base = reg.get("decidable_ratio_baseline")
|
||||
if base is not None and ratio + RATIO_TOL < base and not args.update_baseline:
|
||||
print("\n[报告] 校验 8:可判定比例 %.2f%% 低于记录基线 %.2f%%(容差 %.1fpp)"
|
||||
% (ratio, base, RATIO_TOL))
|
||||
print(" 只报告、不拦提交。想把当前值记成新基线跑 --update-baseline;"
|
||||
"口径见 docs/编号规范.md §8.5")
|
||||
"口径见 编号规范.md §8.5")
|
||||
# 绝对数护栏同样转报告制(2026-10-28):越线只打印,不影响退出码。
|
||||
und_now = ck.stats["refs_total"] - ck.stats["decidable"]
|
||||
ceil_now = reg.get("undecidable_total_ceiling")
|
||||
if ceil_now is not None and und_now > ceil_now and not args.update_baseline:
|
||||
print("\n[报告] 校验 8:不可判定引用绝对数 %d 高于记录上限 %d(只报告、不拦提交)"
|
||||
% (und_now, ceil_now))
|
||||
print(" 清理方向不变:号只该越清越少;口径见 docs/编号规范.md §8.5")
|
||||
print(" 清理方向不变:号只该越清越少;口径见 编号规范.md §8.5")
|
||||
if err_total:
|
||||
if args.strict:
|
||||
led = load_backlog()
|
||||
|
||||
Reference in New Issue
Block a user