#!/usr/bin/env python3 # -*- coding: utf-8 -*- """规则载体压缩 · 端到端验收(2026-09-24)""" import io, re, sys WS = "E:/ProgramData/AIProject/ai1net-dsh-server" MAIN = WS + "/CODEBUDDY.md" REF = WS + "/docs/规则与载体/规则详解_红线与实证_20260924.md" BAK = WS + "/归档/规则A-备份-20260924/CODEBUDDY.md.before-compress" def rd(p): return io.open(p, encoding="utf-8").read() main, ref, bak = rd(MAIN), rd(REF), rd(BAK) LIMIT = 8000 print("== 1. 体积 ==") print(" 压缩前 =%6d 字符" % len(bak)) print(" 压缩后 =%6d 字符 (线=%d, 占比 %.0f%%)" % (len(main), LIMIT, 100.0*LIMIT/len(main))) print(" 削减 =%6d 字符 (-%.0f%%)" % (len(bak)-len(main), 100.0*(len(bak)-len(main))/len(bak))) print(" 目标 <=%d : %s" % (LIMIT, "达标" if len(main) <= LIMIT else "未达标(差 %d)" % (len(main)-LIMIT))) print("== 2. 标题注入 ==") offs = [(m.start(), m.group(0)) for m in re.finditer(r"(?m)^#{1,3} .+$", main)] inline = [o for o, t in offs if o < LIMIT] print(" 总标题 =%2d 线内 =%2d %s" % (len(offs), len(inline), "12/12 达标" if len(inline)==len(offs) else "未达标")) for o, t in offs: print(" %s %6d %s" % ("OK " if o < LIMIT else "OUT", o, t[:44])) print("== 3. 红线 11 条可寻址 ==") sec3 = main[main.index("## 3. 红线 R1"): main.index("## 4. 提交边界")] ok = 0 for i in range(1, 12): tag = "**R%d**" % i if tag in sec3: ok += 1 else: print(" !! 缺失 %s" % tag) print(" 主文件 §3 内 R1-R11 判据行 = %d/11" % ok) print(" 解释段落点 R7-边界/R8/R9/R10/R11 在 §B: %s" % ("齐全" if all(("B-1" in ref or i==1) and ("### B-%d" % n) in ref for n in [1,2,3,4,5]) else "缺")) print("== 4. 指针悬空检查 ==") ref_secs = set(re.findall(r"(?m)^## (§[A-Z]\S*)", ref)) print(" 【详】实有章节: %s" % " ".join(sorted(ref_secs))) want = ["§A","§B","§C","§D","§E","§F","§G","§H"] # 主文件里指向【详】的章节号(含「详 X」「§B-1…§B-5」两种写法) used = set(re.findall(r"【详】(§[A-Z])", main)) | set(re.findall(r"详 ([A-Z]\d)", main)) bad = [s for s in want if s not in ref_secs] print(" A-H 全在: %s" % ("是" if not bad else "缺 %s" % bad)) print(" 主文件显式指向的章节: %s" % " ".join(sorted(used))) print("== 5. 完好性 ==") for k in ["R11", "R9", "R10", "分层判定标准", "动作前必须执行的三条", "preflight-lock.sh", "state.py", "_ANCHOR_SEGS", "dshs-worker"]: print(" %-26s 主文件 %s" % (k, "有" if k in main else "无")) print(" 回滚点存在: %s (%d 字符)" % ("是" if bak else "否", len(bak))) print(" 主文件与回滚点字符差 = %d" % (len(bak)-len(main)))