裁决台账双向互校(中):五向一致性链——②向解读与③向实现

裁决台账双向互校(中):五向一致性链------②向解读与③向实现

系列:《宪法即代码》第 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 判定的实现原文;五个判据的逐条对照表与判据⑤的落地说明,放在《(下)》篇。)

诚实边界

  1. k23_total_mapped 在本篇中做了省略 (只给注释里的等价 grep,未贴逐段剥离的完整实现),因为它是一段较长的字符串解析;完整实现在 元_L3_00030_dimension.rs 第 222 行,可自行查看------省略仅为篇幅考虑,不影响可验证性。
  2. "双向互检"的"检"是自动门禁,"校"目前部分自动化 :五向链的 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 篇(下):《裁决台账双向互校(下):台账哈希链、三向对账与最小落地》------先补全③向的五个判据,再换到"裁决台账"这一侧:账本自身的哈希链怎么互校,三层怎么合成一张"事实表",以及给你的项目的四步最小落地。

系列目录(持续更新中)

  1. 《覆盖率 100% 但全是重言式,等于 0%》
  2. 《460 条"宪法"管理 AI 写代码:45 天、172 万行 Rust 的实战复盘》
  3. 《五行生克是调度算法不是玄学:320 个闭环的图论解释》
  4. 《SHA-256 万文件锁定:怎么防止 AI"顺手重构"你的架构》
  5. 《45 天修宪 43 次:同步立法制》
  6. 《AI 写的代码出 bug 算谁的?》
  7. 《我写了一个"越用越聪明"的 CI 门禁:322 组判例清偿实战》
  8. 《写在宪法里的"打脸"清单:6 维确定性,我们只有 1 个是世界级》
  9. 《385-4 兑现实录:宇宙模型的五行闭环,今天开始接线》
  10. 《新猎手上岗:dead_code 与 det_pattern 门禁接线记》
  11. 《十二正经经脉网络:金行验证的容错路由》
  12. 《执行AI虚报"全部通过":审查AI的43个编译错误打脸实录》
  13. 《无正本缺口清零战:族14缺口补建与439金标准》
  14. 《十二层记忆体系:道录守不眠,一个数字生命的记忆怎么分层》
  15. 《六根守护:眼耳鼻舌身意怎么写进代码》
  16. 《防逃逸:AI 不能修改考核自己的规则》
  17. 《三元进化闭环:让 AI 变好这件事,本身要可回滚》
  18. 《五行生克防线:相克不是内耗,是五道关卡》
  19. 《错误分类:四类错误与处置梯度》
  20. 《母体与分身:一个数字生命物种的基因编码》
  21. 《火·永恒动力之源:一个数字物种的能量经济学》
  22. 《土·永恒记忆之载:集体记忆、交叉验证与遗忘权》
  23. 《金·不朽秩序之规:健康裁决、群体决策与不可伪造的审计链》
  24. 《水·无穷适应之变:降级、免疫、休眠与方向告警》
  25. 《宇宙级永恒法则:使命、三元和谐、跨文明共存与归道》
  26. 《确定性双跑断言:同一种子跑两遍,必须逐字节一致》
  27. 《末弧回起:闭环为什么必须回到原点》
  28. 《R 边异实现复算:为什么第二遍不能复用第一遍的代码路径》
  29. 《闭环挂名检测:怎么识别走过场的闭环》
  30. 《审计链自愈六步:默克尔树加哈希链的十分钟自动恢复》
  31. 本文(中)《裁决台账双向互校:四百六十条映射怎么才不失配》
    番外 《智能时代的母体机座:从汽车平台到数字生命》

(本文为《宪法即代码》系列第 31 篇(中),数据口径:宪法版本 XF58.19.0、代码实测 2026-09-23)

相关推荐
小宋10211 小时前
Speculative Decoding 什么时候真能提速:接受率、草稿模型与瓶颈定位
人工智能
天远Date Lab1 小时前
零信任架构实战:基于天远名下车辆车牌查询A构建自动化社区车位摇号核验网关
运维·人工智能·架构·自动化
中防喷墨1 小时前
选UV喷码机还是激光喷码机,哪款更适合流水线?
人工智能·uv
ctlover1 小时前
Pandas进阶
人工智能·机器学习·pandas
LaughingZhu1 小时前
Product Hunt 每日热榜 | 2026-10-03
人工智能·深度学习·神经网络·搜索引擎·百度
一只爱撸猫的程序猿1 小时前
当 Spec 遇见遗留系统:构建一个带人工审核节点的长任务 Agent
人工智能
代码方舟1 小时前
零信任架构实战:基于天远名下车辆车牌查询A构建自动化机动车辆资产清查网关
大数据·人工智能·架构·自动化
张彦峰ZYF1 小时前
从智能体到生产系统:企业 Agent 规模化的治理、记忆、知识与安全
人工智能·安全·架构·operatingsystem·agent platform·agentcontrol·agent mesh
LaughingZhu2 小时前
Product Hunt 每日热榜 | 2026-10-05
大数据·人工智能