docs(门禁): 拆开「不可判定绝对数」的真实构成,并写下每批自证没吃余量的做法
起因是今天下午我自己给三条道下过一条错指令:「编号余量只剩 4,别新增 TC 号、优先用母号加小写子项」。 刚才用检查器自己量了一遍,**那条指令的机制是错的,而且方向危险**: refs_total 8,744 − decidable 7,582 = 1,162,逐项拆开精确闭合、无第四类: · skip_bare_unmanaged 834 —— 裸形盲区(同字母多义的裸号出现在属主登记处之外,§6 明令不判) · noise_allowed 326 —— 命中 id_registry.json 的 noise_literals 白名单(不是编号 形态像) · undecidable 2 —— 真·硬不可判定:族还登记着、属主登记处已空(清号批次遗留) 也就是说这 1,162 里约 99.8% 是**设计上的豁免**,而带属主登记处的族无论加多少引用都是「可判定」, 一点不吃这根护栏。更要紧的是:我那条指令会把人推向「把编号改写成语义短语/散文」——**那恰好是 §7.6 加这根绝对数护栏要防的稀释**(比值会被清号动作稀释,绝对数不会)。等于我让团队去撞自己立的闸。 指令已向五条道撤回,并写进新增的 §7.7 第 3 条读法里,免得下一个人再走一遍。 §7.7 同时把「每批自证没吃余量」写成可复制的五项式:改前先记三个数 → 改后逐数比对(⚠ --strict 只 回答有没有新错误级,不回答可判定占比动没动,不能当替身)→ 若涨了用 git show HEAD:<路径> 取临时副本 或开一棵 worktree **只回退自己名下文件**再跑同一扫描器(明令禁止用 git stash / checkout 回退,那会 把别人在飞的改动一起收走,本仓同一天刚为此踩过)→ 报告写全 refs/dec/und/比值/错误 五项差值, 不许只写「跑过没问题」→ 真还掉一块后用 --update-baseline 同步下调上限(脚本自己拒绝上调; 手工调高上限等于自废这道闸)。 另澄清一处容易误读的地方:本文件打印的「校验 1 未登记前缀:0 处」与这 1,162 不矛盾——校验 1 报的是 **新增错误级行为**,护栏统计的是**分母水位**,一个是行为一个是水位,别互相替换。 实测与本笔自查:check_ids.py --strict exit 0(可判定 7,582/8,744 = 86.71%、不可判定绝对数 1,162 **未变**,本笔没吃余量,也没新增任何编号引用);check_doc_links.py --all exit 0(186 个文档); 本篇 --sections-strict exit 0(新增引用一律写成可校验的紧邻形式:docs/文档规范.md §3.5,并把草稿里 指向不存在的 §5.2 改对——编号规范只有 5.1/5.3/5.5/5.7);字节卫生 bom=false / CRLF=0 / U+FFFD=0 / 结尾换行齐。裸形与噪声样例没有写进正文([示例] 行虽在进分母前就豁免,但把野形态抄进文档没有收益)。 看板:本笔收口 task-34。其余在飞任务由五条道继续,我只暂存本篇一个文件。
This commit is contained in:
@@ -158,6 +158,45 @@
|
||||
(`| v1.6 | 2026-10-25 | …`)那类表漏豁免——同一份冻结历史被两种表头拆成两种待遇,属工具缺陷,
|
||||
现已补齐(要求版本号与日期两格连排,单独的版本号不算,避免普通表格被误免)。
|
||||
|
||||
## 7.7 「不可判定绝对数」到底是什么:构成实测 + 每批自证没吃余量的做法(2026-10-27)
|
||||
|
||||
先给一条与直觉相反的结论,它是这一节存在的理由:**给带属主登记处的族加引用,完全不吃这根护栏**
|
||||
(那些引用算「可判定」)。这根护栏只统计**门禁主动豁免掉的字面量**与真·硬不可判定。
|
||||
|
||||
实测拆解(`.venv` 解释器,`import check_ids` 后取 `Checker.stats`;口径同 §7.6 的第二根护栏):
|
||||
|
||||
| 项 | 数 | 是什么 |
|
||||
|---|---|---|
|
||||
| `refs_total` | 8,744 | 候选字面量总数(硬件位号在进分母之前就 `continue`,不计入,见 §6) |
|
||||
| `decidable` | 7,582 | 落进已登记前缀族**且该族属主登记处存在** |
|
||||
| 两者之差 = 护栏口径 | **1,162** | 等于下面三项之和(逐项相加精确闭合,无第四类) |
|
||||
| └ `skip_bare_unmanaged` | 834 | 裸形盲区:同字母多义的裸号出现在属主登记处文档之外,按 §6 明令不判 |
|
||||
| └ `noise_allowed` | 326 | 命中 `id_registry.json` 的 `noise_literals` 白名单(不是编号,但形态像) |
|
||||
| └ `undecidable` | **2** | 真·硬不可判定:族仍登记着、但属主登记处已空(`cleared_2026_10_26` 那批遗留) |
|
||||
|
||||
三条读法:
|
||||
|
||||
1. 这 1,162 里约 **99.8% 是设计上的豁免**,不是「没登记的野号」。把它当债务余额来读会得出错误结论。
|
||||
它与本文件打印的「校验 1 未登记前缀:0 处」不矛盾——**校验 1 报的是新增错误级**,护栏统计的是分母差;
|
||||
两者一个是行为、一个是水位,别互相替换。
|
||||
2. 真正会推高这个绝对数的只有两类动作:**在属主登记处之外新增裸形引用**,或**新增命中噪声表的连字符形态**。
|
||||
要指代就写全号并紧邻属主文档名(写法口径见 `docs/文档规范.md` §3.5,判它的是校验 6)。
|
||||
3. ⚠ **反向错误更贵**:为了「少占余量」而把编号改写成语义短语/散文——那正是 §7.6 与这根护栏的动机要防的
|
||||
稀释(比值会被清号动作稀释,绝对数不会)。2026-10-27 凌晨 Lead 给三条道下过这样一条错指令,已撤回;
|
||||
正确口径是:按 `docs/编号规范.md` §1 先问三句,属允许族就用号,**需要新母号时由 Lead 改 `id_registry.json` 游标**。
|
||||
|
||||
**每批自证没吃余量(可复制的做法,五项式)**:
|
||||
|
||||
1. 改之前先跑一次 `./.venv/Scripts/python.exe scripts/check_ids.py`,记下三个数:字面量总数、可判定、
|
||||
不可判定绝对数。⚠ `--strict` 只回答「有没有新错误级」,**不回答可判定占比动了没有**——别拿它当替身。
|
||||
2. 改完再跑一次,逐数比对。
|
||||
3. 若绝对数涨了,先确认是不是本批吃的账。**不要用 `git stash` / `git checkout` 去回退**(那会把别人在飞的
|
||||
改动一起收走,本仓同日刚为此踩过):用 `git show HEAD:<路径>` 把名下文件取成临时副本,或开一棵
|
||||
`git worktree`,只回退自己名下那几个文件,再跑同一扫描器——差值就是本批的净影响。
|
||||
4. 交报告时把差值写全,形如 `refs +0 / dec +0 / und +0 / 比值 +0.00pp / 错误 +0`;**别只写「跑过没问题」**。
|
||||
2026-10-26 的清号批次与同日三篇文档改写都是按这句式交的,读者能自己复算。
|
||||
5. 确实还掉一块之后,用 `--update-baseline` 把 `undecidable_total_ceiling` **同步下调**(脚本自己拒绝上调)。
|
||||
**手工把上限调高等于自废这道闸,任何时候都不许做。**
|
||||
## 8. 改这个门禁本身
|
||||
|
||||
- 改族定义 = 改 `scripts/id_registry.json`,改完必须看**编号字面量总数有没有变小**:
|
||||
@@ -169,6 +208,7 @@
|
||||
|
||||
| 日期 | 变更 |
|
||||
|---|---|
|
||||
| 2026-10-27 | 新增 §7.7:实测拆解「不可判定绝对数」的构成(裸形盲区 834 + 噪声白名单 326 + 真·硬不可判定 2 = 1,162,精确闭合),并写入每批自证没吃余量的五项式做法(含「不得用 stash/checkout 回退别人在飞改动」与 --update-baseline 只下调);同批撤回一条 Lead 错指令——「怕吃余量而把编号写成散文」恰好是 §7.6 这根护栏要防的稀释行为 |
|
||||
| 2026-10-26 | **方案 B(同日续批)**:登记簿系 `N-x`/`S-x`/`T-x`/`A-x` 与 UI 簇 `U1~U5` 共 20 个号停发、约 418 处引用转语义短语(字面量净减 443:8,946 → 8,503);新增第二根护栏「不可判定引用绝对数上限」(`undecidable_total_ceiling`,只减不增),并把比例基线下调——理由与实测(比例跌、绝对数不涨)见 §7.6;`CHANGELOG_ROW` 补「版本号 + 日期」表头的变更记录行 |
|
||||
| 2026-10-26 | **清号批次**(用户裁定:字母+数字编号太多、没人认得):全仓删除「属主已死 / 从未启用」的编号约 1,100 处,规范 §4.1 收成全活族 + §4.1.1 列已清除族,§4.2/§4.5/§7.1/§9 作废压缩。门禁口径不变(族仍登记,只拦新增引用);扫描面 / 字面量总数 / 台账 / 比例基线按本批实跑重打(见 §3、§7)。新增 §7.5 讲清"比例上升 ≠ 卫生变好"的读法 |
|
||||
| 2026-10-25 | 二进制工件跳过(§6 第 9 条):`iter_files` 按 gzip 魔数/头 2KB NUL 嗅探排除 gz/png 等,防乱码伪编号顶出校验 1 假新账(f3rounds gz 入库实测触发);602 处存量台账口径不变 |
|
||||
|
||||
Reference in New Issue
Block a user