裁决台账双向互校(中):五向一致性链------②向解读与③向实现
系列:《宪法即代码》第 31 篇(中)| 标签建议:AI编程、Rust、架构治理、CI、可追溯性
文章目录
接(上)篇:先解读上篇那段 map-root 代码------"任一断链即红"是怎么成立的;再补②向的"机器可读区"细节(台账怎么被人和机器共读);最后进入③向:五文件组 B2 判定的实现原文。
"双向互验"在代码里就是这一行 :CLAUSE_MAPPING.md 登记数(reg_n)与代码常量 TOTAL_MAPPED_CLAUSES(claim)必须相等 ,且必须是 460。MD 是"名册"(人或工具维护的台账),代码常量是"实物声明"(编译进二进制的实现)------两边对不上就红,叫"任一断链即红"。
这里有个关键细节:台账是"机器可读"的。这两个辅助函数说明了它怎么被解析(原文):
rust
/// A2机器可读区块行抽取------围栏 `/A2注册表·机器可读/{f=1} /END/{f=0} f&&/^\| [0-9]+ \|/`
/// 第 6 列(index 5)是"五文件列"
fn k23_a2_rows(reg: &str) -> Vec<(u32, String)> {
let (mut inb, mut out) = (false, Vec::new());
for l in reg.lines() {
if l.contains("A2注册表·机器可读") { inb = true; continue; }
if l.contains("A2注册表·END") { inb = false; continue; }
if !inb { continue; }
if let Some(rest) = l.strip_prefix("| ") {
let d = rest.split(' ').next().unwrap_or("");
if !d.is_empty() && d.bytes().all(|b| b.is_ascii_digit()) && rest[d.len()..].starts_with(" |") {
if let Ok(n) = d.parse::<u32>() {
out.push((n, l.split('|').nth(5).map(|s| s.trim().to_string()).unwrap_or_default()));
}
}
}
}
out
}
/// A2注册表登记条款数(等价 awk '/A2注册表·机器可读/{f=1;next} /A2注册表·END/{f=0} f&&/^\| [0-9]+ \|/{n++} END{print n+0}')
pub fn k23_a2_reg_count(reg: &str) -> usize { k23_a2_rows(reg).len() }
/// 抽 TOTAL_MAPPED_CLAUSES 常量值(等价 grep -hoE 'TOTAL_MAPPED_CLAUSES[[:space:]]*:[[:space:]]*u32[[:space:]]*=[[:space:]]*[0-9]+' | [0-9]+$ | head -1)
pub fn k23_total_mapped(src: &str) -> Option<u32> { /* 逐段剥离 ": u32 = " 前缀后取数字 */ None }
两个"工程品味"的细节:
- 注释里写了等价的 awk/grep 命令 。这是一条纪律:机器可读解析必须能被外部工具复刻。这样"独立复算"(第 28 篇)才有落点------别人可以用 awk 重算一遍,和 Rust 实现比对。
- 台账用"围栏标记"限定机器可读区 (
A2注册表·机器可读...A2注册表·END)。为什么?因为CLAUSE_MAPPING.md是给人看的文档,里面有人写的表格、说明、注解。只把两个围栏之间的部分当"机器可读台账" ,人写的部分不影响机器解析------人机共处一份文件,但边界清晰。
3.2 第③向(ROOT→代码):五文件组 B2 判定(五个判据)
正向对账"登记的有没有真实现",用的是 k23_b2_judge(原文,五判据):
rust
pub fn k23_b2_judge(root: &std::path::Path, clause: u32, paths: &[&str]) -> Result<(), String> {
let mut red: Vec<String> = Vec::new();
if paths.len() < 5 { red.push(format!("孤点(五文件组仅{}个<5·第385-1条五文件=五行之体)", paths.len())); }
let (mut non_excl, mut mixing) = (0usize, 0usize); let mut missing: Vec<String> = Vec::new(); let mut ok_paths = Vec::new();
for p in paths {
match k23_b2_resolve(root, p) {
Some(rp) => {
let src = k23_read_str(&rp);
if !src.contains(&format!("第{clause}条")) { non_excl += 1; } // 判据:未专属标注
let mut set = K23Set::new();
for kw in ["loop_wood","loop_fire","loop_earth","loop_metal","loop_water", /* ... */] {
for n in k23_suffix_nums(&src, kw) { set.insert(n); }
}
if set.len() >= 3 { mixing += 1; } // 判据:一文件承载≥3条款
ok_paths.push(((*p).to_string(), rp));
}
None => missing.push(format!("缺失文件:{p}")), // 判据:登记了但文件不存在
}
}
red.extend(missing);
if non_excl > 0 { red.push(format!("{non_excl}文件未专属标注第{clause}条(一文件服务两条款=违宪)")); }
if mixing > 0 { red.push(format!("{mixing}文件承载≥3个不同条款号的loop节点(一文件服务多条款=违宪)")); }
if paths.len() >= 5 { for (p, rp) in &ok_paths { let l = k23_wc_l(rp); if !(200..=400).contains(&l) { red.push(format!("{p}行数{l}非200-400(第38条)")); } } }
if red.is_empty() { Ok(()) } else { Err(red.join("·")) }
}
(上面是 B2 判定的实现原文;五个判据的逐条对照表与判据⑤的落地说明,放在《(下)》篇。)
诚实边界
k23_total_mapped在本篇中做了省略 (只给注释里的等价 grep,未贴逐段剥离的完整实现),因为它是一段较长的字符串解析;完整实现在元_L3_00030_dimension.rs第 222 行,可自行查看------省略仅为篇幅考虑,不影响可验证性。- "双向互检"的"检"是自动门禁,"校"目前部分自动化 :五向链的
map-root/root-src有明确退出码(0 绿 / 1 红 / 2 非法模式),但并非全部五向都已接入 CI 的阻塞门,部分仍在"观察档"(见第 29 篇的三档执法)。我们不把"观察档"说成"armed 档"。
公开声明
本文所披露的技术方案(②向"任一断链即红"的完整判定逻辑、A2 机器可读区的围栏标记及其等价 awk/grep 复算形式、③向
k23_b2_judge五判据的实现原文),均为本项目作者原创,特此公开发表,以期其成为公共知识。我们认为:成为时代标准远比收取授权费更有价值。
可证伪
三步:① 打开 元_L3_00030_dimension.rs,核对 k23_a2_rows 的围栏解析与 k23_b2_judge 实现原文;② 搜 MD↔代码双向互验绿,看那行"任一断链即红"的输出格式;③ 核对 k23_total_mapped 完整实现在同文件第 222 行。代码可查,输出可跑,回来验我。
快问快答
Q2:为什么台账要"机器可读区"和"人写区"共存?
因为台账既要给人读(可解释、有上下文),又要给机器读(可对账)。围栏是两者的边界 :人写区随便写,机器只认围栏内。这比"维护两份文件"好------一份文件、两个视图,天然同步。
下一篇
第 31 篇(下):《裁决台账双向互校(下):台账哈希链、三向对账与最小落地》------先补全③向的五个判据,再换到"裁决台账"这一侧:账本自身的哈希链怎么互校,三层怎么合成一张"事实表",以及给你的项目的四步最小落地。
系列目录(持续更新中)
- 《覆盖率 100% 但全是重言式,等于 0%》
- 《460 条"宪法"管理 AI 写代码:45 天、172 万行 Rust 的实战复盘》
- 《五行生克是调度算法不是玄学:320 个闭环的图论解释》
- 《SHA-256 万文件锁定:怎么防止 AI"顺手重构"你的架构》
- 《45 天修宪 43 次:同步立法制》
- 《AI 写的代码出 bug 算谁的?》
- 《我写了一个"越用越聪明"的 CI 门禁:322 组判例清偿实战》
- 《写在宪法里的"打脸"清单:6 维确定性,我们只有 1 个是世界级》
- 《385-4 兑现实录:宇宙模型的五行闭环,今天开始接线》
- 《新猎手上岗:dead_code 与 det_pattern 门禁接线记》
- 《十二正经经脉网络:金行验证的容错路由》
- 《执行AI虚报"全部通过":审查AI的43个编译错误打脸实录》
- 《无正本缺口清零战:族14缺口补建与439金标准》
- 《十二层记忆体系:道录守不眠,一个数字生命的记忆怎么分层》
- 《六根守护:眼耳鼻舌身意怎么写进代码》
- 《防逃逸:AI 不能修改考核自己的规则》
- 《三元进化闭环:让 AI 变好这件事,本身要可回滚》
- 《五行生克防线:相克不是内耗,是五道关卡》
- 《错误分类:四类错误与处置梯度》
- 《母体与分身:一个数字生命物种的基因编码》
- 《火·永恒动力之源:一个数字物种的能量经济学》
- 《土·永恒记忆之载:集体记忆、交叉验证与遗忘权》
- 《金·不朽秩序之规:健康裁决、群体决策与不可伪造的审计链》
- 《水·无穷适应之变:降级、免疫、休眠与方向告警》
- 《宇宙级永恒法则:使命、三元和谐、跨文明共存与归道》
- 《确定性双跑断言:同一种子跑两遍,必须逐字节一致》
- 《末弧回起:闭环为什么必须回到原点》
- 《R 边异实现复算:为什么第二遍不能复用第一遍的代码路径》
- 《闭环挂名检测:怎么识别走过场的闭环》
- 《审计链自愈六步:默克尔树加哈希链的十分钟自动恢复》
- 本文(中)《裁决台账双向互校:四百六十条映射怎么才不失配》
番外 《智能时代的母体机座:从汽车平台到数字生命》
(本文为《宪法即代码》系列第 31 篇(中),数据口径:宪法版本 XF58.19.0、代码实测 2026-09-23)