Skip to content

Latest commit

 

History

History
334 lines (280 loc) · 165 KB

DEVELOPMENT_PLAN.md

File metadata and controls

334 lines (280 loc) · 165 KB

CodeEraser 开发计划

版本 v2.33 · 2026-10-13 · 状态:🔒 已由 cc-memory 锁定 · v2.30 语言扩展修正案(已收口,见本条末;十一步〔0–8 与 5b、7b〕见 §6 T 轨——2026-09-24 追加步 7b 判决回迁三件,2026-09-26 追加步 5b 边界清零;2026-09-24 另裁两条:Ruby 退出 v2.30〔码 19 只留位〕、每个语言的精度考题先于其阶梯提交;设计权威 = reference/language-expansion.md;步 0–3 已交付:步 3 分四个提交——考题冻结〔A〕、盲评真值〔A′〕、条件不抬嵌套、阶梯与精度册〔B〕;步 4 Lua + R(已交付):提交 A〔两语言进判决集、考题冻结〕与 A′〔盲评真值〕已交付 2026-09-25,Lua 考题随即升为第二代〔用户裁「现在支持」:受保护的加载 pcall(require, "x") 读作一次加载〕,第二代真值已冻结〔A2′,同日〕,B〔Lua / R 阶梯、package.path 模板读法、R 包目录角色、R 包结点只展开到代码〕642e919 / B′〔判分与精度册〕已交付 2026-09-25;步 4 至此收口;步 5 HTML(已交付):提交 A〔HTML 进判决集——节锚单元、属性站点、docdup 第四种段 + 骨架前缀表,DOCDUP_REV 6;考题三语料冻结〔本仓、h5bp、MDN learning-area〕;随同清掉步 2–4 的遗留:构建产物目录只在旁边有项目文件时才排除、Java 源集与本单元、Lua 引用文件自己的目录、考题只问走查读的文件、精度册钉在回答它的代码上〕;A″ 盲评真值〔2026-09-26,100/100 在记录行上判出〕与 B 阶梯〔html.rs / html_head.rs:资产候选集、部署根推导、祖先目录推断、空值按取回算法分读;考题走查记录加 unreached〕已交付,B′ 九份精度册已于 2026-09-28 在 5b 收口后的 92ed92e 上生成〔Java 36/36、Lua 86/86、R 18/18、HTML 75/76〕,步 5 至此收口;步 5b 边界清零〔2026-09-26 用户裁「1.8.0 之前修完」:全仓普查写明的 215 条边界里能按规范修对的 35 条全修,排在步 6 评估之前;九个提交全部交付 2026-09-28〕;步 6 评估(已交付)——提交 A〔C / C++ 考题冻结:lua/lua 476 站点、fmtlib/fmt 740 站点,各 100 题;考题表 ladder_first 记阶梯先于考题〕已交付 2026-09-28、提交 D〔白皮书例题移植到 C / C++ / Lua / R 四张表 22 行 + cognitive.rs 两处泛化在十一套文法上的等价证明;CHANGELOG 第六次拆归档〕已交付 2026-09-28、提交 B〔C / C++ 盲评真值两张表 200 道:lua 25 / 74 / 1、fmt 83 / 17,C 行改 reach: Tree〕已交付 2026-09-28、提交 B′〔C 族阶梯第四级 include/ 惯例:只问无编译链的文件、不读构建脚本、两祖先同名拒答,External 挪到 R5,GRAPH_REV 22〕已交付 2026-09-28、提交 C〔精度册 lua 73/73 · fmt 15/15 = 1.000,召回 73/74 · 15/17,按真值推算一道不差,考题两行 stage 翻 Scored〕已交付 2026-09-28、提交 E〔逐语言 FPR 台账六行:按真阳判据误拦全 0,严格口径 c 0.12 % / cpp 0.45 % / java 0.09 % / lua 0 / r 4.71 % / html 零事件,执行者钉 judged_mask 每一位;文法体积 ce.exe +5.7 MB = +28.9 %〕已交付 2026-09-28;步 6 至此收口;步 7 文档与事实〔四份只读审计(README 面 / 官网与图 / 方法学册 / 参考文档与登记册)的确认项全落:README 双语、官网四页与技术栈图 / 架构图、册 01·02·06·09·11·13·14·15 与索引、VERSIONING 7.2.0 条、生成页 ce-toml、评估台账、本横幅、CHANGELOG 三处笔误;册 01 六十四处两段式区间统一为区间写法、十三处倒序纠正;count:grammars 升为 Lang::with_grammar 面〕已交付 2026-09-28;步 7 至此收口;步 7b 判决回迁三件——①② erase 择优、structure 图案形〔erase/1 targets / kept、structure/1 patternShapes;golden +9 = 144 对;十语料十面对拍 100/100 字节同;查重预算 57 → 51 具名下调〕已交付 2026-09-28,③ CoC / CC / 嵌套规则应用进核〔scan/1 加性 events / derived,核 CE.Scan.Complexity 折三数,Rust 三个走查器删除;golden +8 = 152 对;十语料 + 自仓干净树十面对拍 110/110 字节同;查重预算主 51 → 50、子 119 → 91 具名下调〕已交付 2026-09-29;步 7b 至此收口;步 8 v1.8.0 发版已交付 2026-09-29〔bump 12e4bf21 / pin 2f0ef4c4 = tag / 发布 12:53:53Z;分数与 1.7.x 不可比;bench 七行同日入列;渠道齐平待 npm 与桌面装机〕;v2.30 至此收口,v2.31 已于 2026-09-29 立项(细则见横幅末条;步 0–3 已交付,步 4 提交 A〔十语言降表 + flow/1 接线〕与提交 B〔十语言考题冻结:二十一份档 + 登记册〕与提交 B′〔盲判:53 批 1,197 题由独立代理判出、十份审阅档 + 登记册盲判节〕已交付 2026-09-30、提交 C〔C1 仪器 bb9bdc8a:四态门 + 出处门;C2 十份精度册在 C1 干净树上生成,judged = Python / TSX / Go / C / Java / Lua / R(7/10)〕已交付 2026-09-30、提交 E〔降表回修 8 类 + 退役精度册〕、提交 F〔第二代考题:cpp / r / rust / typescript 四门的五份宇宙与四份样本在 E 的树上重导,批次提示加语言读法一节〕、提交 D1〔回放台账的仪器 + 执行者 + 文档骨架,台账阶段 Pending;十行冻结件与读数随 D2〕、提交 F′〔第二代盲判:四门 20 批 454 道零 cannot_tell、四份第二代审阅档(readings 2),与第一代共有 448 道一致 447、唯一不一致是 TypeScript 类型位置 typeof 的读法题;登记册拆出第一代归档册〕、提交 G〔十份精度册在 F′ 的干净树上重生成:类 0–2 十门零误报、judged 十门皆真、掩码十位全填(10/10);六门退役的第一代精度节入归档册〕、提交 D2〔十行冻结件在 D1′ 的干净树上重量入库、台账阶段翻 Frozen、三张表与读数落 FPR-REPLAY.md〕已交付 2026-09-30,步 4 至此收口;步 5 死代码 C〔ce flow 三面 + 守卫 flow 类(daemon 2.2.0、[flow] tier 出厂 observe)+ Stop 行 flow 对象(feed 0.12.0)+ 册 17〕已交付 2026-09-30;步 6 / 7 合并 A / B 落地第一部分〔核 CE.Merge.* 七模块 + Ted 回映射 + proto 7.5.0(clone/1 可选 leaf 列)、cli/src/merge/ 组装配 / 位置类表 / wire 与三面(ce merge、MCP merge_suggestions、GUI 报告枢纽 merge 族)、冻结建议集五语料 + 对判决盲的抽样 100 行与四批批次、册 18〕已交付 2026-09-30、落地第二部分〔四个独立判官盲判 100 行、审阅档与精度册同一提交(设计册 §13 第 36 条)、登记册 docs/EVAL-SET-MERGE.md;feasible_agree 83 / 100、reason_agree 77 / 100、params_agree 45 / 100,只入册不设门〕已交付 2026-09-30、合并家族第二代第一部分〔23 条理由分歧逐条对源核实后的九条裁定落进核与位置类表(设计册 §13 第 42–50 条:own / text 两列与组行 helper、自己的记号洞、一级拓宽、间隙一律结构差、洞序按成员 0 后序、片段骨架计辅助函数头尾、参数按文本、位置类表三修、批次读法即定义;treeNodeCap 1,048,576 → 131,072 让两道上限下最宽的请求留在协议的 32 MiB 行内)、clone/1 旧 / 新二进制三语料三面逐字节同、冻结集 / 抽样 / 批次第二代〕已交付 2026-10-01,第二代第二部分〔四个新判官盲判、merge-review-v2.json / merge-precision-v2.json 同一提交:feasible 96 / reason 92 / params 87 of 100、可行性精度 46 / 50、召回 46 / 46,与第一代共有 73 题判官 feasible 一致 67、reason 一致 66〕已交付 2026-10-01;步 8 / 9 架构 A / B〔核 CE.Arch.* 八模块 + proto 7.6.0、cli/src/arch/ 表装配(含 pkgEdges)/ wire 与三面(ce arch、MCP architecture、GUI 报告枢纽 arch 族)、册 19〕已交付 2026-09-30,冻结自仓读数 arch-self-v1.json 在落地提交的干净树上重生成、作下一提交;2026-09-30 用户令「加速推进,并行开发」:合并链与架构链在工作树车道并行开发、按 §12 步序落地));v2.29 修正案十五步已全交付,v1.7.0 于 2026-09-06 发布。既往结项裁定及其后续修正见下方版本台账(v2.22 收口令 2026-08-31:三个具名后置束 45 条一次性裁定不做,此后只做维护;唯一例外 = CoC 递归增量——M1 起挂账、2026-08-26 台账看见却未立项、不在那 45 条内,2026-08-31 用户裁定复活并已走新 plan-set,细则 = ADR-008 第四期;v2.23 九步已全交付,随 v1.4.0 发布:调用边居 Rust、环判定居 Haskell(CE.Scan.Cycles)、wire scan/1 6.5.0 加性两键、本仓实测 27 个函数各 +1、四份对拍语料零移动、三处登记就地改写、两个 README 改由生成的效果卡开场;分数与 1.3.x 不可比) · M0–M9 全交付(批 0 发 v0.7.3;批 1–9 与终扫落 main;v1.0.0 项目收口 2026-08-22)· K 轮已交付随 v1.2.0(2026-08-26)· L 轮 v2.21 已交付(v2.17 + 2026-08-28 修正案:减法批、测试子仓、二进制只出自 Actions;+ 2026-08-29 修正案:README 双语九节 + 仓内 demo、更新功能三面等价〔O83 逆转,§5.9 第二网络行为〕、三面等价门、文档三律;+ 2026-08-29 晚修正案 v2.21:ADR-009 文档事实派生 S1–S9 + archify 架构图;v1.3.0 已于 2026-08-30 四渠道发布〔tag 6da4463、GitHub Release 十资产、crates.io、codeeraser.dev 8/8、npm 1.3.0〕) · v2.24 维护修正案(2026-09-01):复杂度轴补上它一直没有的绝对上限[thresholds] cognitive_fail(默认 0 = 无硬线,纯 opt-in,只进 ce scan 的 fail 档,不进评分故分数与 1.4.x 完全可比);尺寸硬线 H=750 维持声明式、不改动态(2026-08-20 裁定不重开) · v2.25 收尾修正案(2026-09-01):O23 复活修掉——死件 why 句改为 wire 上的 code + 两语表(WHY_CODES 单一所有者,deadcode / graph-canvas 报告加性键 whyCode,GUI 与 CLI 中文面同批);ce erase 建议行带该语言未解析引用点位数(erase-plan 报告加性键 sites,显示层,wire 理由位不动);五处源注释与册 08/09 的结项立场措辞对齐;两条新门(bench.json 冻结点引文须逐数落在被引行 / docs_consts 六枚芯片改绑源常量,豁免 22→16);v1.5.0 已于 2026-09-01 四渠道发布〔tag 50d0f05〕;评分与 wire 判决面不动,分数与 1.4.x 可比 · v2.26 墓碑残留修正案(2026-09-04,用户三裁:分两段做先量 FPR / 出处叙事算残留但自动识别 changelog 定位文档并豁免 / 命名 tombstone):新增第三条 guard 规则类 tombstone——一次改动删掉名字 X 后,同一改动新增的标题、标识符、文件名以否定框((no X) / without X / (无X))重新命名 X,或新增散文段同时含回溯标记(no longer / 不再 …)与 X,即为墓碑残留;第一段(本修正案)= 纯 Rust 度量 cli/src/tombstone/ + observe feed 0.8.0 加性事件与键 + Stop/precommit 报告行 + PreToolUse feed-only 腿(会话级被删名哈希集)+ it/tombstone_replay.rs 在 requests 尾段 400 提交与自仓全史上回放、台账 docs/FPR-TOMBSTONE.md,零 wire、零 ce.toml、不发版;第一段已交付 2026-09-04(六轮回放各修一类定义缺陷,终轮 requests 0/400、自仓 3/530 = 0.57 % 门达成,9 处终轮站点逐条仲裁 = 真阳 6 / 中间态 3 / 误报 0;两条第二段口径题记在册:计划书横幅算不算 changelog 定位、单词名字);v2.27 第二段(2026-09-04 立项,用户三裁:立项 / 计划书横幅一类文档「段级台账见证 + [tombstone] ledger 声明表兑底」两者都做 / 单词名字继续算、ASCII 3 字符地板维持):tombstone/1 族 proto 6.6.0 加性——Rust 为每个新增标签面与散文句送 [kind, marks, erasedNames] 三整数(零行不送,缺席 = 零),合取、地板 floor = 1、与预算的比较居 Haskell CE.Tombstone(回执 = 命中行下标 + over,名字永不过线);[tombstone] tier / budget / ledger / terms(budget 缺席 = 条件不评估——[dedup] budget 2.6.0 先例;类默认 observe,晋级走 §4.2 同一道门);段级见证的记号阈值先在两语料回放里定再落码;ce commitmsg <file> 与 ce precommit 同型(暂存 R × 提交说明文本);方法学册 14 从 spec 派生(十三→十四全扫、判决图两语重渲);feed 0.8.0 → 0.9.0 具名断点(判决键 judged;0.8.0 形无发布带过);v1.6.0(分数可比、发布说明声明无默认档位变更);十步见 §6 T 轨;意图 (a) 不检测、O08 不复活;度量定义唯一权威 = .ccm/tombstone-spec-2026-09-04.md(本机件),第二段派生为册 14;v2.28 修正案(2026-09-04,用户裁「现在修,随 v1.6.0 发出」):codex 审阅批亲证 docdup 对连续 /// 文档注释永不合段——tree-sitter-rust 的 line_comment 节点跨到下一行列 0,merge_comments 只见 //——与 §5.1「注释连块是一段」相悖;修法 = 合段与 end_line 都按节点最后内容行(end 列 0 即上一行),DOCDUP_REV 4→5 清缓存,冻结仪器按 EVAL-SET.md 再生成协议重冻结(五语料 docdup-segments / oracle / precision 同钉 tip,先例 rev 3→4),四语料 + 自仓 ce docdup 前后对拍与自仓 check 变动入 CHANGELOG 并声明 docdup 轴与 1.5.x 的可比性;作为步 7 插入第二段,原步 7–9 → 8–10;v2.27 十步 + v2.28 已全交付,v1.6.0 已于 2026-09-05 发布〔tag af8dbf8 = pin 提交;Release 十资产 + 正式说明 / crates.io / 插件 1.6.0;官网按 HEAD 重部署 8/8;bench 行、npm 与桌面装机按用户裁随 1.7.0 同批(v1.6.0 不单独坐一次 bench,其行在 v1.7.0 的整条序列重量里入列;bench 页至此如实说「当前发布尚无自己的行」)〕;v2.29 语义层修正案(2026-09-05,用户三裁:先发 v1.6.0、#3 + #4 立新 plan-set 随 v1.7.0 / RAG 形态 = 稀疏检索 + 仓内 PPMI 联想、零外部模型 / 1.7.0 = #3 + #4 + 发版后一轮全仓清点抓出的悬置项;同日追加:npm 与桌面装机等 1.7.0 同批;同日深夜再裁:45 条按「有收益且代价可接受」逐条复活——判决正确性 7 / 发布信任链 9 / 产品小项 6 / 证据门 2 / 分发与覆盖 11 共 35 条具名做(清单 .ccm/frontier-2026-09-05-revival.md,本机件),O08 / O80 无收益不做,O03 / O14 / O53 / O67 与 README 永久立场冲突不翻**,O23 / O83 已随 1.5.1 / v2.20 做掉;README「已知限制」的结项句随 1.7.0 文档改写;同时立常设约束:本机重活给电脑留余量(cargo -j 8、串行、低优先级)):现有三层全是词法 / 结构 / 文本相似度(T1/T2 指纹、T3 TSED、docdup MinHash),补一层同角色顾问**(#3)——文件 2 的 y 与文件 1 的 x 代码不同但角色相同——用索引里已有的事实(unitsig 单元宇宙、symbols.key 名字拆词、scan/calls.rs 被调集、docdup 段的 docstring 词、AST 种类直方图、字面量种类)拼成每单元一个稀疏袋,BM25 形整数权重、倒排表进 .ce/index.db(SCHEMA 16,只存 fnv1a64 哈希与计数、不存词文本——§5.9.2 不动),仓内子词共现的 PPMI 做同义联想(#4「轻量级代码 RAG」的全部内容:确定性、离线、可回放、不做 SVD、不做 embedding);判决面 = 新 wire 族 similar/1(proto 6.7.0 加性):Rust 送查询袋与候选六通道命中整数,Haskell CE.Similar 用有理数排序并合取「同角色」位(名字 ∧ 被调,或名字 ≥ 2 ∧ 形状全等;先例 stacking / tombstone/1 合取),永远是顾问(册 13 同形:不进门、不进 ce erase、每个面印 advisory、无 tier);三面同落 ce similar / MCP similar_units / GUI 一屏 + Stop 审计一行加性 feed 键;写入钩子不做(延迟预算);阈值与 m / k1 / b 只在回放里定(自仓 + 四语料,it/similar_replay.rs + 冻结仲裁集 contracts/eval/similar-oracle-v1.json,报 top-1 同角色精度 / recall@5)再落码并冻为 SIMILAR_REV 输入;度量定义唯一权威 = .ccm/similar-spec-2026-09-05.md(本机件),落码时派生为方法学册 15;细则 = ADR-008 第六期;十五步见 §6 T 轨 · v2.30 语言扩展修正案(2026-09-24 立项,用户三裁:立项 / HTML 升格为文档类判决语言 / 一版 1.8.0;其余九条按既定原则裁定,逐条记录在设计册 §14):六个语言进判决集——C / C++ / Lua / Java / R 走 Haskell 走过的全套(Ruby 同日由用户撤出范围)(文法钉版、单元、CC 与 CoC、克隆指纹、引用图阶梯、可见性、提及规约),HTML 从纯尺寸臂升格为文档类判决语言(文档重复、引用图、节锚;不取指纹、无函数单元);Lang::judged_path 仍是唯一边界权威,新谓词 Lang::fingerprints 只把 HTML 挡在 T1 / T2 / T3 之外;wire scan/1 与 graph/1 加性键 judgedMask(proto 7.1.0 → 7.2.0)、docdup 段 kind 追加 html_text 与 text_para、GRAPH_REV 16 → 22、核 roleBits 加编译单元位与资产位;既有七个语言码的判决在步 3 的条件不抬嵌套、5b 与 5b-9 处各有具名移动(对拍逐条归因),判决人口变 = 1.8.0 分数与 1.7.x 不可比(1.4.0 先例),逐语言发布门 FPR ≤ 1 %(未达门的语言不随版发布);设计权威 = reference/language-expansion.md(结点 kind 与字段名全部实探于 tree-sitter 0.27.0,探针 scripts/tsprobe);十一步见 §6 T 轨(步 7b 判决回迁三件 = 2026-09-24 用户两裁的 Haskell 占比增项:erase 择优、structure 图案形、CoC / CC / 嵌套规则应用进核,随 1.8.0) · v2.31 Haskell 功能轨(2026-09-25 立项记录,用户两裁:GitHub 语言条上 Haskell 提到 40 % 以上〔目标已于 2026-10-03 改为 Haskell 高于 Rust、不固定比例,见 v2.33 条〕 / 路线 = 1.8.0 发布之后开新功能轨,核的测试计入语言条,不改写现有代码):四个新功能按既有分工落地——Rust 只送整数事实(§5.9.2 不动),分析与判决全在核:① 代码查询与架构规则(事实库上的 Datalog 求值;ce query 随手查,架构约束写成规则即成门,每条结果带推导链);② 函数内死代码(Rust 把函数体降为只含整数的控制流与读写表示,核建控制流图跑数据流:从未被读的局部量、被覆盖前未读的赋值、不可达语句;逐语言 FPR ≤ 1 % 才成门);③ 克隆合并建议(对克隆组做反统一,算出合成一个函数要几个参数;克隆族已送核的树加一列叶子哈希);④ 架构分析(自动分层、拆环最省改法、模块聚类、改动影响面);每个功能三面同落、各一册方法学;估算核新增约一万五到两万行另加测试,做完后语言条约 43 %(测试不计约 33 %);.gitattributes 已于立项当日撤掉 core/test/** 的 vendored 标记(口径偏向 Haskell:Rust 的测试在子仓,语言条读不到——写在该文件注释里);细则已立 2026-09-29(ADR-008 细则第七期;设计权威 = reference/analysis-track.md:四家族 query/1 · flow/1 · merge/1 · arch/1 各随其步走 proto 7.3.0–7.6.0 加性 minor,随 1.9.0 发出(1.9.0 在 v2.32 之后,见 v2.32 条);十二步见 §6 T 轨 v2.31 行;语言条每步实测记账、发版前读数入册 §11;目标自 2026-10-03 起改为 Haskell 字节数高于 Rust,见 v2.33 条)· v2.32 权威轨(2026-10-01 立项,用户三裁 + 范围再裁:「想办法减少rust比例或者增加haskell。任何办法。」→ 真改两项并要更优雅的办法 / 口径类办法做完再定 / 1.9.0 推迟到做完再发;范围 = 两项 + 老家族参考实现):四件事——① 定义进核(语言的定义表由核持有、tables/1 proto 7.7.0 加性一次答整包,Rust 只执行,无核具名拒绝、不留内嵌副本);② 文档骨架进核(各族应答加 document,字符串位一律符号引用、Rust 只绑定,各族随自己的 minor,全部切完后 8.0.0 退役旧键);③ 双语文本进核(消息目录 CE.Text,与 ② 同一次应答);④ 六个老家族(Verdict / Score、Structure、Erase、Trend、Tombstone、Similar)的参考第二实现与等价电池,只在 core/test;判决字节不动,每步十语料十面旧 / 新二进制逐字节同;语言条立项基线(a0417628)Haskell 855,590 / Rust 2,534,369 / 其他 300,362 B = 23.2 %,估算做完 ≈ 37.4 %;步 9(口径类裁定)由 v2.33 算法轨取代(2026-10-03);v2.31 步 10 / 11 排在本轨步 0–7 之后,1.9.0(本轨步 10)等 v2.33 达标(Haskell > Rust)再发;ADR-008 细则第八期;设计权威 = reference/authority-track.md;十一步见 §6 T 轨 v2.32 行 · v2.33 算法轨(2026-10-03 立项,用户令「要求改成:haskell占比比rust高。不固定比例阈值。」+ 两裁:路线 = 把算法搬进 Haskell、不拆仓 / 1.9.0 等目标达成再发):ADR-008 分工句修正——凡在测量侧已读到的事实(整数或文本)上做的计算(算法、判定、定义、文档、文字)都在核,Rust 只做碰世界的事(文件系统、tree-sitter、SQLite、git、进程、管道、clap / MCP / daemon / 钩子接线)并把读到的交给核;五波 W1 镜像退役与冷路径小件 → W2 引用阶梯(resolve/1)→ W3 候选与排序 → W4 CST 行导出及其上的算法(cst/1)→ W5 flow 降表,每波落地实读语言条、Haskell 字节数超过 Rust 即停;立项基线(40ab1a4f,git ls-tree -r -l 只计 .rs / .hs、去掉 cli/tests / contracts / site)Rust 2,405,719 / Haskell 1,469,527 B,差 936,192 B;取代 v2.32 步 9;2026-10-04 修正案「文本可过本机线」(W2a / W3 落地后 Rust 两波净减只约 7 KB〔−4,748 / −2,213 B〕:每个搬走的算法都换来同量的降胶水;用户 AskUserQuestion 三选一裁「放开「只传整数」的规定」):测量侧读到的文本(路径、说明符、配置值、单元键与名字、源文本片段)可经 ce → ce-core 的本机 stdio 管道送核、核也可答文本,§5.9 的隐私保证一条不动(§5.9-6);波次重排 W2a′ 简化 resolve/1 → W2b 其余七个阶梯,新增 W6 文本规则与 W7 报告渲染胶水;修正案基点 main 68eda600 实读 Rust 2,393,396 / Haskell 1,706,269 B = 41.62 %,差 687,127 B;修正案提交零代码、零 wire 改动;设计权威 = reference/algorithm-track.md;见 §6 T 轨 v2.33 行;步 10 三面等价(ca057291)、步 11a 去碎片化(收口 5efc9096)、步 11b 打磨纠错(收口 ce3e7d4a)已落;语言条目标已达成:步 11 收口(main ce3e7d4a)实读 Rust 2,216,787 / Haskell 2,317,409 B = 51.11 %,Haskell 多 100,622 B(同一口径);步 12 文档车道终树只改一处核注释(Tarjan → Kosaraju),读 Rust 2,216,787 / Haskell 2,317,411 B = 51.11 %,Haskell 多 100,624 B · 本文件是本仓库唯一权威计划。修改流程:改本文件 → 重新 ccm 锁定 → 才能动代码。 v1.0→v1.3 经两轮攻击评审收口(记录见 docs/reviews/(已清理,全档在 git 历史));v1.4 增补 ADR-008 + 判定属性电池;v1.5 = M5-3 拆 3A/3B + 验收门修订(十项拍板:reviews/2026-08-13-m5-3-dedup-instruments.md(git 历史) §12);v1.6 = M5-3A recall 门修正案;v1.7 = ADR-003 收敛式多写者修正案(两案均用户拍板 2026-08-14,全档见 EVAL-SET-M5-3.md);v1.8 = ADR-008 细则(判决/测量分界+四片契约,三拍板 2026-08-17:reviews/2026-08-17-adr-008-policy-dsl.md(git 历史));v1.9 = M6 并入结构管理器(structure/1 树尺度熵判决=GUI 首屏数据面,两拍板 2026-08-17:reviews/2026-08-17-m6-structure-manager.md(git 历史));v2.0 = M6 收口修正案(用户拍板 2026-08-17:趋势面板+删除候选浏览移 M7——趋势需历史存储设计、删候浏览宜与发布后反馈同批;Linux/macOS 实包归 M7 Releases 自动化,M6 以 Windows 实包+三平台编译门收口);v2.1 = M7 签名后置修正案(用户拍板 2026-08-17:0.x 不购证书/账号,README 明示未签名 + SHA256 校验链路承重,签名/公证后置 post-1.0;M7 章程四拍板与切片 P1→P2→P3→P4→P6:reviews/2026-08-17-m7-release-track.md(git 历史));v2.2 = M8 成长轨立册(用户五条+三拍板 2026-08-17:IP=软著+商标〔发明专利落选→P6 零专利时序约束;商标宜先于 P6 提交防抢注〕、全量文档对齐+生成器门控、i18n en 默认+zh 查表切换、GitHub 可见度;契约正文=reviews/2026-08-17-m8-growth-track.md(git 历史));v2.3 = M7.5 清理批修正案(用户三拍板 2026-08-18 ccm #1152:休眠评估仪器深度瘦身走 EVAL-SET.md 修正案〔CI 活门全保、复核链交 git 历史〕+ trend/1 趋势判决入核=Haskell 合约内抬占比、语言分工边界不动;P6 前置执行);v2.4 = 收口记账修正案(2026-08-19:M7/M8 收口标注、签名裁定统一为"不做"、guard 第 3 级 as-built=observe、分发行更新为已公开——纯记录性同步,零架构变更);v2.5 = 尺寸门语言臂修正案(用户拍板 2026-08-20:前端/脚本常用扩展 js/mjs/cjs/jsx、css/scss/less、html/htm、vue、svelte、sh/bash、yml/yaml 入 scan 尺寸门 + guard 硬预算 + score/棘轮(纯 size 事实),永不进 index/clone/graph/docdup/fourclass/churn/structure——判决语义零变动〔S2 混语轴若计入 css 会把正常前端目录误判混语〕;Lang 追加式扩展,wire 语言码不重排,谓词 Lang::scan_only/judged_path 为唯一边界权威;起因 = GUI 的 .js 长期无门漏缺陷,评审 2026-08-19 在册);v2.6 = 尺寸软区间+拆分 ROI 修正案(用户拍板 2026-08-20 A+B+C 全采纳、契约先行实现留 v0.6:A 软区间凸罚替换 warn/fail 双档悬崖〔硬线 750 不变,分数迁移一次并负发版声明义务〕+ B 基线锚定相对软线 S=clamp(median+k·MAD(log-LOC),[200,500])〔冻结时计算防自指漂移〕+ C 拆分 ROI 顾问面〔无可行缝 ROI<1 → 自动豁免带 why;判决/排名入核 = Haskell 占比第二叉首弹〕;设计册 reference/size-advisory.md;痛点实证 = v0.5.0 评审周 6 拆分/3 删注释/299 停车在册);v2.7 = 尺寸顾问收尾批(用户拍板 2026-08-20 三项全推进:①guard 区内档位映射接线——默认全 observe,ce.toml 显式声明才启用 warn/ask,默认翻档仍以各档 FPR 重放记录为准〔纪律不破〕;②拆分 ROI v1.1 价目——克隆块与单元 co-change 跨缝价,外语料标定定数,wire 加性 minor;③split-candidates 补 MCP 与 GUI 面;三项齐落后发 v0.7.0);v2.8 = M9 打磨与完整面立项(用户 2026-08-21 八项使用汇报 + 四拍板全走推荐线:①v0.7.3 折入桌面三修复一起出货〔draft 未建,折入只多一轮门禁+CI〕;②「擦除」= 确定性两段式 ce erase——只对可确定性安全消除的类别动手(T1/T2 精确重复块、graph 判死代码、docdup 重复段),plan/apply 分离、dry-run 默认、要求干净工作区,可擦除性判决入核,永不接 LLM 重写〔立身之本 = 确定式计算审阅不确定式输出〕;③「降 Rust 占比提 Haskell 占比」= 判决逻辑回迁核第三弹——盘点仍居 Rust 的判决性逻辑成迁移清单逐片入核,解析/索引/前端仍 Rust,ADR-002 语言分工不动;④bench 历史 = 按 release tag 用冻结黄金集回放回填,此后每版自动追加。两项现场根因第一手实录:GUI 弹窗风暴 = release 版 windowed 子系统下全仓 spawn 站点零处 CREATE_NO_WINDOW〔corelink/churn/fourclass/daemon 四站点〕,trend 一次量 30 提交、每提交多次 git+一次核判决 → 上百控制台窗循环弹出且期间无进度反馈;终端「报错」= 裸 ce 走 clap usage 到 stderr+退 2,PowerShell 5.1 再把 stderr 包成 NativeCommandError 红错。批序 0–7 与验收见 §6 M9 行);v2.9 = 1.0 收口令(2026-08-21 用户令「全部推完,计划上不要留任何项,确保无欠账/遗留,彻底检查并全量更新所有仓库内文档,最后发布 1.0.0 收口」:批 0 照发 v0.7.3;批 1–7 全部执行但不再中间发版〔原 v0.8.0 计划位并入终版〕,落 main 后以 v1.0.0 一次收口;1.0 语义与 §4.2 档位路线一致——两类规则默认 deny 已 as-built,v1.0.0 即完成度与收口声明);v2.10 = 1.0 前审查与打磨批(用户令 2026-08-21:收口前插入批 8 架构级全仓代码审查〔多 agent 审查+逐条对抗核验,发现要么修复要么书面 disposition,不许悬空〕与批 9 全域优雅性终打磨〔数学/算法/架构/GUI 再设计思考,含 GUI 美化挂账项;提案册先行,涉契约/门槛/不可逆变更逐条走 AskUserQuestion 拍板〕,批序插于批 7 与终扫之间);v2.12 = 环轴口径修正案(用户拍板 2026-08-22:cycle 轴违规集只计代码文件——批 9 P8 册间双向导航〔index 回链 + prev/next〕把 12 册+methodology.md 熔成一个 SCC、score 948<950 实测暴露:文档超链互引是导航本意、不是重构阻力,却被当结构环收费;处置 = verdict/1 请求加性新表 docFiles〔文档语言文件的宇宙下标,升序;缺省/空=旧语义,旧 golden 字节不动〕,核内 Score.hs cycleMembers 排除 doc 下标——规则仍居 Haskell〔ADR-008 反抢跑〕;liveness/死文档检测不受影响;proto minor bump + VERSIONING.md 入账 + 相关册就地修 + 引文台账 CE_BLESS 复审;P8 导航条按原双向设计随后落地);v2.13 = 规则包 DSL v1 修正案 + 协议死数据裁除(用户拍板 2026-08-24 四连:①规则包 v1 = 路径类分参——ADR-008 细则第二期:ce.toml 新增 [[rules.class]] 数组〔name+globs 仅本地渲染,永不过线(§5.9.2)〕,glob→classId 指派居 Rust 测量侧(与 exclude 同一 ignore::overrides/globset 编译器——已有两方言并存是债,第三方言零容忍),类尺求值居 Haskell 数据表;类通道 = verdict/1 continuous 行加宽第 4 列 classId(单表单 arity、混排拒——graph/1 nodes 三或四列先例)+ 新表 classKnobs(码域 = ceilings 恒发子集 {0,1,2} 的类影子:sizeCeil/cocCeil/sizeHard,不新造码只加类维);多类重叠 = 声明序首中(镜像 verdictTable 首中语义);classCap 64 分配栅栏;逐类 ladder_fault 于 load 咽喉;baseline 永三列(类 = 本 run 收费参数、非棘轮事实,core 构造 newBaseline 剥类列;per-class 棘轮 = 未来 major、v1 非目标);per-class weights/棘轮容差/判决表/软线 S 均为非目标(各有其因,防「为占比写代码」);落码四片 P1 编译搭载 + P2 类尺求值(同一 proto minor)→ P3 scan 旁表(rowClasses+gradeOverrides+镜像扩类维,scan/1 minor)→ P4 guard 类预算(零 wire);验收 = 反事实证表 C1–C9(无声明全 golden 字节不变、类尺/序/回落反事实、五种拒绝各一腿红);自仓 ce.toml 不启类先行,启类后分数与未启用不可比〔发版声明义务〕;E01 敕令独立不随类动;设计册 2026-08-24 经四路侦察复核,依 85f9308 关架令不入库,本条即持久记录;②协议死数据裁除:verdict/1 churn 行恒值第 4/5 列(added 恒=rw+ap、survived 恒 0,core 全弃读)砍除 = proto 3.0.0,daemon HelloOk::version(无客户端读)砍除 = daemon proto 2.0.0——用户裁「现在就删」,弃愿望单缓议,两断代先行于 P1〔类通道随后以 3.1.0 加性入线,C1 字节恒等以 3.0.0 goldens 为基〕;③六镜头深扫九决策件收口:D1/D5/D6 可见性缩窄+错述修正、D2/D4/D7 复活配方族同律改写〔9e05f53 处置 eval_support 先例〕、D9 ladder ensure 环留任〔审计 C6 书面处置纪律〕;④设计册归宿 = 本地 .ccm/+artifact,不入库。已落地 2026-08-24(I 轮五提交:1114aed D 清扫 → 958ab96 proto 3.0.0 + daemon 2.0.0 → 8f309b9 P1+P2 = 3.1.0 → d6d195b P3 = 3.2.0 → 44a0abd P4 零 wire;C1–C9 全部有腿;dedup 预算 191→186 只降入账;自仓 ce.toml 不启类——用户拍板 2026-08-24「维持现状」,规则包留给下游仓库,自仓分数序列连续))。v2.14 = K 轮欠账清零修正案 + 三次 wire 演进(用户两问拍板 2026-08-24:范围 = 桶 1〔53 条真缺陷/真缺口,来自 8 名只读读者的全仓盘点:事实错误 4、官网缺口 2、GUI 丢判决 6、GUI 缺屏 4、MCP 缺口 5、插件面 3、i18n 泄漏 5、CLI 行为 2、宽限窗到期 2、实战欠账 3、文档-代码不符 4、honest gaps 5、性能与发布门 4、CI 覆盖 3、审计册 #85〕+ 桶 2〔4 条 FPR 纪律件〕;协议 = 允许断代 4.0.0 一次清掉两个宽限窗到期件。桶 4〔15 条历史裁定不做〕经评估追加 1 条:SARIF 输出复活——原 2026-08-19 与 Markdown 同批退役之由是「CLI 只出结构化事实、解读归消费方 LLM」,而 SARIF 是事实的另一种编码而非解读,故裁定未被冒犯;成本 = JSON→SARIF 纯投影〔零新判决、零 wire〕,收益 = 接 GitHub code scanning 一条真实分发面。代码签名/公证单列请用户商业决定〔R1 留有「有商业需求再议」口子;装机路径已是主推线,SmartScreen/Gatekeeper 警告是真实摩擦,但属花钱的商业裁量非工程欠账〕,不入本轮;其余 13 条维持原裁定并在文档如实标注为非目标。两条原非目标经重新设计后折入(第三问拍板):①符号事实搭 import 绑定——R6 之死是「全仓同名匹配」这一解析策略之死〔铸边精度 38/66=0.576〕,不是「符号事实不可得」;梯子已高精度解析 import 绑定,而绑定了哪些名字是语法事实不是猜,故一条 import 绑定符号边的可信度恒等于其所骑的 import 边〔已过 ≥0.90 精度审计〕。graph/1 加性 symbols/symEdges 两表〔符号名永不过线、线上只走下标——与 classId 同律,§5.9.2〕,一次解开 entry bit 0 文件粒度永不置位、bit 4 无生产者、unref_public 结构性不可达、join publicGuard 生产态休眠、unit 层 graph 腿恒 null 五条 honest gap;GUI 符号级下钻随之降为渲染而非新判决〔2026-08-21「不入围」之由是「需新 wire」,属里程碑末的范围裁量而非语义否证〕。纪律:不铸调用边〔函数体内 foo() 除非该文件 import 绑定过 foo,否则不是边——文件内调用本就不影响文件级存活性〕、任何处不做同名匹配、动态引用构造在场则该文件符号退 unresolved_dyn 永不判 dead;落码前须过与杀死 R6 的同一把尺——import 绑定符号边独立 N 站点审计 ≥0.90,不过则整片回滚。绑定名 ≠ 目标声明(2026-08-24 对抗验证实证:四语言提取规格各派一名反驳者,四驳全中,19 条发现含 8 条 breaks-correctness)——import 路径的叶子在语法上不可区分「目标文件内的声明」与「子模块 / 再导出」:Python from . import certs(certs 是子模块)与 from . import X(X 真在 __init__.py 声明)同形,Rust use crate::{churn, dedup, join, scan}(皆模块)与 use crate::config::Config(叶子是条目)同形,from m import Y 的 Y 也可能是 m 的再导出而非声明。故符号边判据加一条必要条件:绑定名须在解析出的目标文件的 symbols 表里命中一个声明(该表已持每文件命名单元,可见性片起并持 vis 位),命中不了即判为模块或再导出,退回文件级边。这不是语法猜测而是对实测事实的连接,退化方向诚实——宁可少一条边,不可铸错边(R6 之死正是铸错边)。别名两侧都要取:本地绑定名供本文件的使用点,目标侧名供查表。②per-class 棘轮——原不做之由是「改一下 glob 就悄悄放松全部上限,基线随配置漂而非随树漂」,此忧属实,但现行以截肢〔禁类归属进基线〕防之过重;正解是把漂移检测出来:基线加标量 classDigest〔对 [[rules.class]] 规范化声明〔名 + 声明序 glob + 旋钮〕的哈希〕,ce check 时 digest 不符即硬拒并要求 CE_ACCEPT_BASELINE=1 具名重立——与分数地板漂移同一机制,「悄悄放松」自此从可能变为硬停。围栏立起后 per-class ratchet_tolerance 方为安全〔vendored/夹具可冻结为 0;今日真缺陷正是它们享用着不该有的增长额度、吃掉手写代码需要的预算〕;棘轮行仍三列只记树事实——进基线的是指纹不是旋钮,v2.13「baseline 永三列」字面保住。per-class weights/判决表/软线 S 仍为非目标〔各有其因不变〕。三次 wire 演进按 §2 分开走,与 3.0.0→3.1.0→3.2.0 同律:4.0.0〔纯裁除 major:graph 节点行 pre-2.28 legacy flags 列删除、erase class 0 退役、CLASS_NAMES 去二义〕→ 4.1.0〔符号表加性——只上 symbols 一表,symEdges 缓议之由见 K7 条〕→ 5.0.0〔graph 节点行 pre-2.28 legacy flags 列裁除;档位按 §2 修正 2026-08-25:原文写「顺延至符号表落地后的 minor」,但 contracts/VERSIONING.md §2 写死「schema 不兼容变更(删字段/改字段形状)必须 bump major」,删列正是改行形状,故走 major 而非 minor——这不是范围变更,是把本仓自己的规则施于本条。代价为零:4.x 全程未发布(v1.1.0 出货的是 3.2.0),用户看到的仍是一次协商断代。行降为三列 [lang,kind,roles],与旧三列同元不同义——major 的信封拒绝正是使这种复用安全的机制,K1 由此从「按行元拒」改为「按 major 拒」〕→ 5.1.0〔classDigest 加性 + per-class 棘轮容差;已落地 2026-08-25,K11–K14 四腿俱全,指纹编码首版被自带的腿抓到 NUL 分隔碰撞、改长度前缀〕→ 6.0.0〔指纹拓宽 major,已落地 2026-08-25:52-agent 对抗审查实证 classDigest 范围判错——[score] viol_cost = 0 使 939/1000 FAIL 变 1000/1000 pass、tol_abs=100000 抹掉棘轮容差、exclude 静默移走棘轮行,三者皆挪同样的门却都不碰类表。改为对整份解析后配置打指纹(knobsDigest),「挑表来围」这一失效模式自此从设计中消失;改键名属 schema 变更故按 §2 走 major。用户拍板 2026-08-25 采纳 knobsDigest 方案〕 → 6.1.0〔RG10 抵达会动手的两个面,加性 minor,已落地 2026-08-25:4.1.0 让判决码 2/4 首次点火后,ce erase 的 class 3 仍只看置信度、join 格仍合成 pFlags=0,于是导出面成了可擦除行、delete 可以指着导出面提出——erase golden 第 6 对把前者冻在契约里(原答「公开未引用 API 可擦」),e2e 夹具把它演在真树上(copy.py 声明 def compute_total 即导出面)。改法两片加性:verdict/1 收 symbols〔graph/1 同一张表改按 tier 下标,过线的是原始可见性字,「哪一位算导出」仍是核的判决〕+ erase 理由码位 6 public_surface。K15 五腿:缺席=空表=旧路字节相同、导出死侧则 delete 退位、导出活侧不动〔否则是静音不是防火墙〕、可见性字不含导出位则不动〕;各片反事实证表 K1–K14 为验收正典(4.0.0:K1 旧三列节点行整表拒、K2 class 0 请求自此答边界拒绝而 class 3 路字节不变、K3 CLASS_NAMES 四元唯一任何面可辨两路、K4 未受影响八族回复逐字节相同;4.1.0:K5 无符号两表的旧请求字节恒等、K6 符号名零过线〔wire 断言只有整数下标〕、K7 非 import 绑定的同名符号不产生边〔反 R6 腿;已在生产者侧夹具化(cli/tests/symbol_visibility.rs 的 other.rs 同名不同元 + refuser.rs 路径调用两条拒绝)〕〔口径再定 2026-08-24,用户三度交本代理裁断:symEdges 本轮不上 wire。K10 审计量的是精度(铸出的边有多少为真:683/683),而任何「无引用」断言吃的是召回(真引用有多少被看见)。实测自仓:1064 条 Rust 导出声明中仅 170 条被 import 绑定覆盖,补上「模块绑定 → 该模块 mod_decl 站点再跳一跳 → 成员查表」也只到 248 条,召回 ~23%。手工双端复核 13 条样本 ≥7 条确凿在用,其引用点全是 crate::graph::md::is_md_path(dst)(cli/src/graph/wire.rs:111)这类全路径调用与 idx.resolve_refreshed(..)(cli/src/dedup/mod.rs:212)这类方法调用——两者都不是 import 点位,绑定表结构性看不见(方法调用更需类型推断,tree-sitter 前端做不到,召回无天花板可言)。故符号层「无引用」即便只出 reported 也是 ~90% 噪声,不落——K8 修正案说的是「reported 档与枚举完备性无关地成立」,不是「证据不足也可以出行」。唯一方向可靠的仪器是否决式的:「该标识符在语料库其他文件是否出现过一次 token」——不出现 ⇒ 确无静态引用(注释/字符串命中即弃权,过保守方向安全),自仓真候选 ~101 条且多为「pub 但只在本文件用」的可见性缩窄;但它完全包含 symEdges(有符号边必然意味着某 import 语句里出现过该 token),故两条路下 symEdges 皆不上线。该否决器另需 mentions 每文件标识符表〔SCHEMA_VERSION + GRAPH_REV 双升、全体用户索引重建〕,且其可靠方向取决于「注释/字符串字面量算不算提及」这类未经对抗审查的口径,塞进本片正是 K8 刚惩罚过的赶工,故单列为步 3b 符号层顾问:符号行加第 3 列 mentioned,走「列数即 road」的加性小版本(node 行 3/4 列、dead 行 2/3 列先例),核侧出 export_unmentioned 自有类(不进 dead 码域——RG10 同律:库的公开 API 无人引用不是死)。symedges.rs 与其 K10 审计留库内不上 wire,去留随步 3b 定〕、K8 动态引用构造在场则该文件符号退 unresolved_dyn 永不 dead〔口径两定 2026-08-24,用户两次交本代理裁断。①先定「置信列而非静音」:原文「该文件」四读法均不取——护该文件自己的符号护错了端(getattr(mod,x) 是 F 指向别人的引用,威胁的是目标的符号判决);护 F 能到达的文件在最要紧处沉默(importlib.import_module(s)、__all__ 再导出、插件注册表都不需要一条已解析的 import 边);同语言全域静音把分级事实压成二值;只做信息层是弃判决而非解之。取 2.32.0 同一办法:per-language 动态点位台账与 unres 台账同形,同一个 Cost.confidence 消费,不新造判据。②随即一轮 10-agent 对抗审查推翻了「可枚举」这个前提(5 语言各一份规格 + 各一名反驳者,5 份全驳,31 条正确性/漏报发现,全档 .ccm/k-dynsite-specs.md):84 条构造写完,反驳者又找出 19 条漏的——//go:wasmexport(Go 1.24 新增)、doc-test 代码围栏、#[cfg_attr(feature=…, derive(…))]、instance-only import Data.Aeson ()、globalThis.Function、pickle __getstate__ 族……该集合开放且随语言版本增长。更要命的是同一轮暴露出第二个、更大的类:约定式可达——pytest 的裸 def test_*、Go 的 TestXxx/BenchmarkXxx/FuzzXxx/ExampleXxx/TestMain、main、#[no_mangle]/extern "C"、foreign export、框架装饰器、DI 注册——它们根本不是「动态构造」,却同样让「无人引用」成为假命题。结论:符号层 dead 判决无法靠枚举变可靠,故本轮符号判决只出 reported 信息行、永不让门失败——该档与枚举完备性无关地成立(reported 行不作门断言),正是 RG9 dead/reported 分家下沉一层。K8 因此本轮不约束任何判决(没有可失败的判决需要保护);①的置信列是将来晋级为可失败档时的机制,晋级须按 §4.2 走 FPR 证据,不得凭枚举自称完备〕、K9 unref_public 在有导出面且文件层零入边时首次可达〔此前结构性不可达——cli/src/graph/deadcode/flags.rs:9 起 bit 0 在文件粒度永不置位,判决码 2/4 从无一次机会。导出面由 symbols 表派生:「本文件是否声明了导出符号」是与召回无关的声明事实,而「无引用」仍由阶梯全覆盖的文件层边集裁定,故这条不吃 K7 的召回问题〕、K10 独立 N 站点审计 ≥0.90 不过则整片回滚〔已核 2026-08-24:自仓 754 条边,站点表与源码独立重算的连接与实现逐条集相等;全量机检——每条边的绑定名都实见于其引用点的 import 语句,0 例外;种子随机 30 条双端人工复核 30/30 真。唯一系统性错类 = 71 条指向 Rust mod 声明(units.rs 因 kinds::extra 收录 mod_item 而把子模块记成命名单元),计为假则 0.9058 —— 刚过线不入账,按根因修:目标文件自己的 mod_decl 站点即权威,命中即拒,零新存储;修后 683 条零已知错类,且该 71 条全中、好边零误伤。理论上的 R6 侧门(花括号 use 树里带自有路径段的叶子落在前缀文件上)本仓实测 0 例;L 轮步 #8 立反事实守卫——searcher_lib::{searcher::Binary…} 两行钉 ok(门面,4):走法止于花括号、前缀文件即边、绑定器只读走法未消费的前缀段永不读花括号段,symEdges 退役后侧门结构上已闭〕;4.2.0:K11 无类声明仓 digest 缺席且基线与判决字节恒等、K12 改 glob 即 digest 变而 ce check 硬拒并印具名重立指令〔不是静默放松〕、K13 具名重立后新 digest 入册而棘轮行仍三列、K14 per-class ratchet_tolerance=0 的类文件一增即 fail 且全局容差不救它)。已落地 2026-08-26,K 轮 12/12 全交付(wire 4.0.0→6.1.0 四演进 + guard novel 语义根修 + SARIF 复活 + dedup 结果缓存全落 main;发版链 draft 32937349986 → pin 9567cc5 → verify-publish 绿门根修 d8a49e2 → tag publish 32966421482;四渠道齐上 v1.2.0——GitHub Release 十资产、crates.io、codeeraser.dev 8 页 sha256 对拍、npm 用户 passkey 亲发 latest=1.2.0;bench 7 行 dirty=false@d8a49e2 入列 503bcf3;发版夜挂账的 daemon 冷启丢边稀发竞态〔CI 32964681934〕随后同批根修——掉边与记债同事务的 resolve_pending 债务行〔index schema v13,弃建/被杀的 run 留账、任一后续 run 结清;flush-on-exit 变体经对抗核验三组 A/B eject 复现否证后撤除,Bye⇒即刻放手是承重契约〕,确定性重现入 store_tests,ADR-003 v1.7 收敛契约补上崩溃调度这一面)。)。v2.15 = 呈现散文不铸于测量层修正案(用户拍板 2026-08-25:问题 = ADR-008 的「判决出码、呈现出词」在两处未守住——churn_unit::GRAPH_CAVEAT 是 Rust 侧铸出的整句英文散文,随 join 报告 JSON 一路带到 GUI 与 MCP;health::index_summary / daemon_status 的 385 files、not running (…)、unreachable (DEGRADED: …) 同理进 doctor 文档。i18n.rs 章程写着「报告 JSON 永不翻译——schema 是机器面」,于是这些字按构造够不着 --lang zh,中文读者必见英文,而 M8-G3b「en 默认 + zh 查表切换」的承诺在这几处落空。修法 = 测量层只出编号(code)与机器可读的结构化事实,文字由各面自己的表渲染,与 erase 的 reason 码 0..6、join 的判决码同形——这不是新原则,是把 ADR-008 既有原则应用到未守住的几处。代价 = report schema 断代(ce.join-report / ce.doctor-report 升 id),GUI 与 MCP 同批改,golden 机器再生。边界 = anyhow 错误链里的英文不在本案范围〔那是生产者自己的话,逐条编号化的收益不抵成本〕,如实标注为 residue,并由 cli/tests/it/zh_surface.rs 的行级规则在其模块文档里具名暴露该盲区。同批书面结账:K 轮步 8 的「拆分顾问单位可读化」经核为 batch 9 P15 议决并落地的原文(recover N vs cost M 不带单位词;milli 刻度已公布于方法学 08 册与 benefitMilli/costMilli 字段名),用户 2026-08-25 拍板维持现状、不推翻,该项以「已议决」结账而非「已交付」。已落地 2026-08-25(b883b5a,随 v1.2.0 出货)。);v2.16 = 长测量停止静默修正案(用户 2026-08-25 授权「最彻底、最高质量、最优雅、最正确的做法」,K 轮步 8 末项)。病灶 = 一次跑满数十至数百秒的测量在结束前不吐一个字节(本机实测 ce churn . --days 1 = 102 s、stderr 0 字节;PERF-BUDGET 已录 --days 14 = 278.4 s、ce join = 265.0 s),操作者无从把「在跑」与「卡死」分开;而 main_cli.rs 首段自陈 help 要回答「它值多少代价」,churn / join / trend 三条恰恰不答。立场(与 v2.15 同源):测量只发阶段码 + 两个计数,词由各面自持;进度走 stderr,stdout 永远只承报告,故 --format json 与全部机器面按构造字节不变。闸门 = 仅当 stderr 是终端才绘制,CE_PROGRESS=0/1 双向覆写(CI 与门测取证走这条);由 main 一次性武装,与 i18n::init 同形——把 sink 穿过 churn::run 的五个调用点,会把两个机器面的沉默降格为「每个调用点记得传 None」的自觉,而不是结构保证。收尾 = RAII progress::span(),与开始同函数、覆盖 ? 早退,故无须在各命令喉口逐个补 finish。范围 = churn(窗口/提交/blame 三相)、join(索引/图/装配)、trend(逐提交测量);三条 about 各补代价句并同步 main_lang zh 表与双语 README,docs/reference/cli.md 由 docs_gate 机器重生成。边界 = 不新增全局 flag:--lang 之外再加一个全局开关会落进每条子命令的 help,而其中只有三条会绘制;环境变量是显示类开关的既有形制(CE_LANG / CE_BLESS / CE_ACCEPT_BASELINE 同族)。已落地 2026-08-25(0c420be,随 v1.2.0 出货)。);v2.17 = L 轮收口修正案(用户拍板 2026-08-26,四问 + 七条逐条裁定:起因 = 用户重定义「收口」= 完全没有、绝对没有、零可继续推的内容;据此以 7 路只读读者 × 逐条核验清点全部残余前沿——182 项(计划本体/横幅/本地设计册/方法学 caveat/代码标记/契约+CHANGELOG/发布分发七源,最大单源 47 < cap 50 零截断),87 项仍开放、95 项已落地或已明确裁掉,其中 134 项双票复核 118 一致、16 分歧经逐条仲裁〔6 条自「已关」翻入计划〕;台账 .ccm/frontier-2026-08-26.{md,json}(依 85f9308 关架令不入库)。范围(三批零耦合、可并行):甲 = ADR-008 细则第三期步 3b 符号层顾问全链——口径对抗审查先行〔「注释/字符串字面量算不算提及」+ 两道必答题:约定式可达类(K8 ②)须免疫,嵌套可见性(visibility.rs 交给图而图在文件粒度从不问)须定;甲-1 已封版 2026-08-27——口径规格 .ccm/l-mention-criterion-spec.md v9(615 行,依 85f9308 关架令不入库,本条即其持久结论)经九轮对抗审查:第一轮七镜头〔五语言 + wire + 语料〕对 v0,第二轮 wire/storage/xlang 三镜头 56 条,第三至九轮 wire + language 双把各攻上一版增量 41/43/33/31/26/17/16 条,第七轮起每条 finding 及其修法另派独立核验者 Workflow 推翻式复核〔13/11/11 把:19+15+12 CONFIRMED、7+2+4 PARTIAL、0 REFUTED;报告自带修法 20/26、14/17、14/16 有错,只落核验者修正后的修法〕,第九轮两把双零 breaks-correctness 即封版。口径定案:① 提及 = 判决文件之外任何 U 文件(自有 walk、纳入生成/供应目录——用户拍板 ③;前 8000 字节 NUL 判二进制、4 MB 上限)出现同一 token,注释/字符串字面量算,同文件例外按语言分治(Go {{}} 模板、TS 模板串递归采集、Python doctest 行、Rust 宏体/文档围栏、Haskell haddock 围栏);token = 扩张字母表 run(start = 字母|_|$)经脚本边界切分与 $ 两臂分档(JS 族整 run only / 其余 union),存 fnv1a64 不存明文,≥7 字符另填 folded_hash,Q1 折叠只对 Rust 声明开(≥2 段 ∧ ≥7);声明名须自身是一个 token 否则出域(foo'/(<+>)/r#type/图_report 皆安全侧);② 约定式可达免疫 = 每声明一个 conv 类别字(bit 0..11:MAIN/TEST/FFI/REGISTRATION/PROTOCOL/MEMBER/MEMBER_DISPATCH/MEMBER_API/DEFAULT_EXPORT/AMBIENT/ALLOW/CFG;判据 = 性质不是名单,bit 9 仅宽容解析可达形以 tsc 报错号免见证);③ 嵌套可见性 = 新表 mounts(每节点恒一行 [node,private,total,bits],bit 0 再导出目的、bit 1 包私有,覆盖面由建造者全量 enumerate().map() 承)+ vis bit 2 restricted,核侧 code 全序 1>2>3>0(private/restricted/reexported/public_unmentioned);④ wire = graph/1 6.2.0 加性 minor:请求加 unmentioned=[[node,vis,conv]](去重升序,软 cap 131072 生产者自限、硬阀 524288 入 famOverCap)与 mounts(自有 mountCap 131072),两表同生同死(第六/七条具名拒绝占 violation asum 最前),回复加 exportUnmentioned=[[node,vis,conv,code]] + 掉表位 unmentionedDropped;symbols wire 表与 verdict/1 一字不动;核侧 CE.Graph.Advisory 具名谓词可消融;名字永不过线(K6 第三腿);⑤ 存储 = mention_files/mentions 两表 + MENTION_REV 自有 meta,SCHEMA 13→14 wipe,GRAPH_REV 11/12/13 逐片,mention pass 自有入口只由 deadcode 路触发(六消费者路仅一路传是);⑥ 片序 (1) symEdges 退役〔用户拍板 ①:删〕→ (2) visibility 拆目录 + T3/H2/H4/H5 守卫修复〔用户拍板 ②:随甲批各带 K27 差分 + release note〕→ (3) mention walk/store → (4) conv 列 → (5) mounts → (6) 6.2.0 三面原子 + Advisory.hs/Cost.hs → (7) 渲染/report 0.3.0/GUI/MCP → (8) K23 四语料处置 + PERF + 方法学册;验收腿 K16–K47 与 K 腿劈半纪律、残余风险台账(§6 19 条具名,含晚 NUL .ai 进 U、单字符 sigil 永久 mentioned、md.rs:172 唯一幻影铸造路、fold 通道数字起头键缺口)、折叠纪律(文本锚不写册内行号 + 四道回证)全在册〕→ 落码按 ⑥ 片序 (1)→(8) 走(计划对齐 2026-08-27,用户裁「不再问、按优雅/高质量/完整/彻底取效果最好的做法」:原「symbols 第 3 列 mentioned」形经 W2-F10 档位引证改定为 ④ 两表、symbols 出口面不动,核侧 export_unmentioned 仍为自有类(不进 dead 域,RG10 同律);原「symEdges 终裁」随拍板 ① 定删并依 W3-F12 提到片 (1);ccm 计划同日换版重锁,处置记录在 .ccm/.plan_history/)→ 提取面补强全做〔Go/Haskell named forms、Python __all__ + Python 下划线模块 / if TYPE_CHECKING: 私有性(用户裁 2026-08-28 入 #8:片 (8) K23 requests _types.py:157 具名)、K3b 四限档(TS import-equals / __future__ / hs-boot / Haskell type forms)、R6 侧门守卫、Markdown 锚点四限档全建模、cabal common stanza 展开、R4/R5 梯级召回拓宽(用户裁 2026-08-27,片 (5) 落 mounts 时具名:rs_use::bound 不绑 uniform-path 门面 pub use source::Thing〔裸头按 crate 名走 R4 即止;自仓 cli/src 26 处无边 use〕、不绑 lib+bin 同包内自非根模块走到根为止的 use crate::Thing〔两根两终点 AmbiguousRoot;2/217〕,自仓索引 0 条 via_reexport 边 ⇒ mounts bit 0 恒 0;拓宽 = 裸头先读本地模块再读 crate 名 + 根终端在同包内绑定,作 spec §4 修正案随 K 系差分 + R5 精度册重跑 + RG3 具名;片序不变、#6 先行)〕→ 验收 = 自仓 ~101 条可见性候选逐条处置〔顾问落地后实测 38 行(rust 36 + haskell 2;K23 的 ~101 是仪器前估计,差额在否决通道账上),裁定流 wf_a0724240-731 九判官九核验者:21 转私有、4 pub(crate)、4 pub(super)、2 内联、1 删、6 保留具名——pub(crate)/pub(super) 仍带 VIS_EXPORTED 故行改码不消行,只有去 pub 才消行〕→ GUI 符号级下钻纯渲染(随片 (7))→ 减法批(v2.18 用户裁 2026-08-28:「rs 能否瘦身」经勘察 wf_9bba332a-39e〔5 读者 20 候选、25 agent 逐条反驳〕实证体量是 7 语言 × 梯级 × wire 的承载,可安全去掉的只有 7 条 ≈116 行 = 0.3 %,13 条推翻〔最大一条 696 行语言表改数据文件是项目早裁不做的方向〕;落 7 条 + 反驳者顺手证实的 3 处真缺陷〔u64-LE blob 解码截断尾静默丢、PairVerdict.legs_mask/.reasons 存而不读、DirEdges.inter/intra 只喂自己的单测〕,dedup 预算随之具名下调、棘轮具名重立;已落 2026-08-28:7 条全落 + whole_rows 守卫、预算 185→182、四语料 deadcode 字节恒等、自仓逐家族 HEAD/新二进制字节对拍,记账见 CHANGELOG 步 #10 段)→ 测试子仓(v2.18 用户裁 2026-08-28:「测试能否改 Haskell」经量化否决——cli/tests/it 80 文件中 44 个白盒直接调 Rust 库 API〔125 测试、7.2k 行〕、3.0k 行 cfg(test) 按语言规则离不开 crate,黑盒 42 % 改写只换语言比重观感且要倒置 CI 顺序;故立 public 子仓 skymanbp/CodeEraser-tests 承载 cli/tests 全树 + gui/tests 四脚本〔迁 cli/tests/gui〕,主仓 submodule 挂 cli/tests 原路径〔ADR-006 成员 id、引文标签、crates.io exclude 全不动;gui 四脚本 REKEYED 账本〕,CI checkout / ce trend 回放 worktree / mention_universe U 公式三处皆初始化 submodule,子仓只当读者、不当被测者(用户裁 2026-08-28 晚,改前句「自仓分数继续含测试」:主仓门实测 480 判决文件 / 77,462 行中 cli/tests 占 120 / 17,050 = 22 %,分离即失义;判决 walk 在声明 submodule 与嵌套仓止步——scan/check/score/dedup/structure/churn 行集不含子仓文件,索引/图边/mentions 仍含〔测试提及产品符号仍算提及、仍给图供边,graph 节点 ROLE_FOREIGN 位 7 经核 roleBits 表为入口位、顾问候选排除〕;子仓自带 ce.toml + ce-baseline.json 并在主仓 CI 过同样六门;主仓分数与 1.2.0 不可比、发版声明;ccm 插为步 #12,围栏/丙批/发版顺延;已落 2026-08-28:wire 6.3.0 bit 7 + schema v15 files.owner + gitmodules::owner 三态〔真 git 锚〕+ [graph] crate_roots + 自带 ce.toml 的嵌套项目守卫/审计委托 + 零克隆块 --check 根修,dedup 182→65〔行集对拍 184 = 65 ∪ 119 零差〕、check 952→943 地板重锚 940、子仓 979 / 地板 975 / dedup 118 / deadcode 0 dead,RM14 第二代账本 REKEYED_SUITE 22 对;对抗审查 codex 10 条 8 确认全修〔stale_doc_rows 外来 md、T3/docdup owner 谓词、唯一就位谓词 seated_at、crate_roots 按名拒绝、地板 940 三面〕1 推翻 1 过程态,记账见 CHANGELOG 步 #12 段),git filter-repo 保留历史;2026-08-28 再裁(用户,主仓已推 d7f71f8 后实测判决 361 文件 / 60,983 行中 cli/src 内 #[cfg(test)] 单元测试仍占 23 独立文件 3,176 行 + 64 内联块 3,119 行 ≈ 10 %):单元测试亦迁子仓 unit/(镜像 cli/src 路径),源文件以 #[cfg(test)] #[path = "../tests/unit/…"] mod tests; 挂载——主仓分数只量产品代码,单元测试在子仓自带门下被量;Haskell 电池 core/test(22 文件 3,802 行)裁定不迁(用户拍板 2026-08-31,指令彻查扫出这句「再议」仍活;它是判决核自己 cabal 包内的 test-suite,与「子仓只当读者」不同构,包外 hs-source-dirs 属非标准布局风险);ccm 插为步 #13,围栏/丙批顺延为 #14–#15,发版后移(v2.20 重锁后为 #20);#13 已落 2026-08-28:64 内联块 + 23 独立文件 + 2 零散项 + testutil 确定性迁移(逐字抽出、fmt 归一、87 项记号序列零差)、子仓 entry_globs 加 unit/、dedup 65→64 / 118→119 同行对迁、check 949 地板 946 / 子仓 987 地板 983、引文 18 条重瞄再签、册 13 §8 自仓行重取,记账见 CHANGELOG 步 #13 段;「打包单文件上传」否决:合成 .rs 撞自家 scan 硬门与 E01,tar 资产多一条会断的链而公开仓 CI 免费;已落 2026-08-28:filter-repo 230 提交/135 文件、子仓 README/LICENSE/.gitignore、submodule 挂 cli/tests,三处 submodule 语义 = walk/cut 学 .gitmodules 声明〔声明是被跟踪内容,一提交一 U 不变〕+ ce trend 按 gitlink 在超仓 submodule checkout 上挂嵌套 worktree〔未初始化具名拒绝〕+ K23 公式每仓各问 git,两条第一方腿,U 627→633、dedup 182 恒、check 通过,记账见 CHANGELOG 步 #11 段);乙 = 围栏收尾 19 条〔k4 围栏攻击册 14 条:removal 无 fail 条件、digest 单读者、trend 逐点误报、无 digest-only 重立、类容差公制盲、第 64 类 off-by-one、subdir 重写基线、缺档无名重立、round-trip echo、console 具名、拼写敏感、注释夸张、冻结测试向量、--min-distinct 无界;同域 5 条:golden 三元组门、daemon 客户端 reader 线程泄漏、glob 两方言统一到 globset(v2.13 之债)、sccFloor 出 ce.toml 旋钮〕;丙 = 文档/记账/实录清欠 9 条〔v2.15/v2.16 落地戳与 §6 K–L 行(本条同批完成)、zh_surface 路径、DAEMON.md 重放清单、VERSIONING §4 freeze 措辞、pre-2.18 死兼容裁除、CHANGELOG 维持窄章程 + 指路句、空 import specifier 进 unres 台账(到期承诺)、PreToolUse 全链延迟一次实录、竞品复扫并立为每次 plan-set 例行项——例行项已于 2026-08-29 经用户令退役(「不用管竞品」;§2 与 R5 行留作最后一次复扫的记录,不再更新)〕。具名后置:丁-1 评分/评测束 12 条 → M 轮(docdup 轴恒 0、stacking 落点、GT 31/37、re-fire 判定、clone/dup 二次质量、min_distinct 出处、budget_breach 例外、structure 无地板、S3+ 边表不上 wire、daemon 重启预算、§7.2 nth 退化、dupehound 作 T1/T2 召回对拍方〔R5 裁定 2026-08-29〕);丁-2 分发束 20 条 → N 轮(provenance / draft 门 / concurrency / dependabot / SARIF 消费者与 PR lane / bootstrap HTTPS / 气隙 / crates / pin 手抄 十条 automation;两平台键资产 / deb-rpm / AppImage-dmg 接线 / perMachine / npm 源仓 / 站点手动链 / marketplace 渠道 / updater / macOS 每推覆盖 / 安装器动态腿 十条平台扩张);丁-3 证据门 4 条(符号可失败档、guard 档位晋级、zone_tiers 翻档、R-L2-4 多文件 FPR 仪器)——§4.2 铁律不动;丁-4 产品小项 7 条(复核后 +2 = 9,见 §6 K–L 行)→ M 轮(why 英文、erase advisory 家族、P17 断点、erase-log 渲染、t1_twin 演练、[ui] 路、UserPromptSubmit 钩评估);软著 eCO 为外部等待。原拟「永久立场」8 条经逐条再议全部入轮〔用户令「按最完整、最彻底、最优雅、最高质量做,不省成本,做正确的不做简单的」,记 cc-memory directive quality-over-cost〕。判定式 = 87/87 具名归属(甲 18 + 乙 19 + 丙 9 + 丁 11+18+3+7+1 + O44 自偿)。落地序 = 本条 → ccm 退役 K 计划立 L 计划 → 才动代码;工期 3–4 周 ±。);v2.21 = 文档事实派生修正案 + 架构图(用户三令 2026-08-29:「把所有会跟着版本变动的文档都改成生成式或者半生成式,免得每次都全量校对」,AskUserQuestion 拍板「先做生成器,v1.3.0 顺延」;「用 archify 画一张整体的架构图(或局部),放在 readme 和网页上,展示我们的方法和设计」;顺序令「生成器做好之后,更新 readme,做一轮文字瘦身,然后更新网页,最后推送并发布新 release,二进制记得用 github action 生成」)。起因 = v1.3.0 发版前置的全量文档审计(14 面 61 条确认项,32b23c2 就地修)中约 4/5 是可派生事实:版本号、计数词、wire/schema/report id、门刻度、载体表、布局树、方法学册 file:line 标签——而 M8 生成器只覆盖 cli/ce-toml/bench/parity/demo/consts/nav/citations 八处,引文门 bless 先写后判(assert_ledger 在 ledger_errors 前 return,CE_BLESS=1 无声重钉已移动的引文、丢掉超 EOF 的引文)、#L 与 file:a-b 标签靠人校(v2.14 教训:417 条标签无声漂移时门是绿的)。设计流 wf_d6820d55-dd9(13 面盘点 1561 条事实 → 3 方案 × 3 判官 → 综合 → 2 路对抗批评 34 条〔18 + 16〕全部折入下文;journal 与审计台账 .ccm/release-1.3.0/ 依 85f9308 关架令不入库,本条即持久结论)。ADR-009 文档事实派生(本条即 ADR 正文,不另立段——本文件行数棘轮):① 一个登记册 cli/tests/it/facts/(it 是 crate 外测试目标,无 cli/tests/Cargo.toml),id 文法 family:key#form,forms = #v / #vminor〔README 「tree-sitter 0.26」〕/ #schemaver〔ce.baseline/1 非 semver〕/ #digits〔含千分逗号,README 「4,096」〕/ #word / #count〔(单数,复数) 名词对随数渲染,复数不再落在芯片外〕/ #list / #code;两层:linked = 经 codeeraser lib 的 pub 门(Lang::judged_mask() 等)、契约 JSON serde、cargo metadata 的类型化读——crate 私有常量(SCHEMA_VERSION、LOG_SCHEMA、TOOLS、LANGS)不为登记册放宽可见性(步 #9/#10 刚把顾问行 38→0),由 cli/tests/unit/<镜像>/ 内 crate 内解析器读值写入投影;scraped = 具名文件正则,每行必带 debt: 说明何物可晋级,scraped 行数为只降不升的棘轮事实(MCP 工具数 tool!( 切片今日即属此层,地板取实测非零)。report id 走扫描器非名册:^ce\.[a-z0-9-]+/\d 值形匹配全 cli/src 字面量(20 const + churn/report.rs:60、report.rs:114 两处 inline json! 先提为具名 const;六条 SQL DDL 串按形不中)。投影 contracts/docs-facts.json(id 排序,行 {id,form,value,tier,source,debt?},bless 写、CI 字节比)——每次发版的人工校点从 14 面全文校收敛为这一份 diff。② 渲染五通道:标记块(13 处 <!-- id:begin/end -->:README 三块 ×2 语、demo/README、site index/bench/stack ×2 语;三写者 bench_render / bench_render_dashboard / face_parity 合一 splicer facts::block::splice;demo 族今日无写者——demo/bless.js 新文件〔run.js 267 行顶棘轮上限 277;JS 工具语言不改 Rust〕)、行内芯片(三种拼写 = 三种媒介:新增可移植 <!--ce:id-->值<!--/ce--> 双侧定界供散文;既有 data-const——实测 6 芯片 3 名只在 stack 页且一页一名;how 页 <ul class="consts">;三者单一 facts::resolve 解析,越界读 = 硬失败非截断)、派生表(parity;README CLI 载体表 10 行覆盖 23 个 Cmd 中 17 个,Daemon/Ping/Probe/Audit/Health/Precommit 六者具名省略成完备腿;布局树;MCP 工具表;bench 仪表盘;ce:allow(docdup) 尾注作 trailer 字段随渲染原样输出)、引文文本锚(③)、源字面断言(不可 bless 的第五通道,source_contains 形:钉 score/model.rs:35、gui/ui/score.js:19、site/assets/methodology.svg:147 三处仍写 950 的注释/<text>,失败只能手修——bless 永不改写注释);SVG <text> 节点按 id 属性 splice(stack.svg 两份 + methodology.svg——后者今日无 docs 孪生、无门:入 :73-76 常量含检,不入孪生对)。③ 引文门翻转:锚文本为事实,#L 与 file:a-b 由 bless 渲染;键 = citing|target|sha256(text)[..16]|nth(实测 1373 条按 (target,text) 只剩 1255 键、}/空行 9 路撞——citing 不可去);LedgerEntry 加 end(935 条区间标签的尾行只存在于标签,先一次迁移 bless 存入;渲染 a-b 自 (line,end),B≥A ∧ B≤EOF 成门(range_errors),旧 label_errors 连 (Some,Some) 死臂一并退役);四分法 moved / renamed〔须 CE_ALLOW_RENAME=1 具名〕/ ambiguous〔n>1:取距台账行最近者并写明所选〕/ vanished〔n==0 唯一硬红,bless 亦红;丢弃须 CE_DROP_VANISHED=<hash16> 具名〕;空白锚 harvest 即拒;past-EOF 拒不丢;两阶段播种(先人工重瞄围栏内 8 条门看不见的标签:册 06:223-238 ×7、册 11:36 ×1,其中 graph/deadcode/flags.rs 四条超 EOF/错角色——独立提交;再自动播种,锚 = 自被引行向下扩至 ≥12 非空字符且在目标唯一的窗〔EOF 处改向上扩、记 head〕,扩不成者入 needs_human 硬红——S6 落地:1373 条 111 窗多行、needs_human 零);面集派生(docs/ 全部 tracked md + README ×2 + CHANGELOG + plugin/README + demo/README − contracts/docs-citations-optout.json 带理由)。④ bless 单读者 facts::blessing()(自 eval_support/mod.rs:62 迁出),六处 CE_BLESS 读 + CE_REFREEZE 归一,CE_BLESS=1 ∧ CI 即拒,ci.yml 不得出现二者(腿钉)——「bless 写、bless 不裁」。⑤ 双语:#word 新表 1..20 双语 + 中文量词变体(两/二);docs_lang 只管 README ×2 与 site(语言切换行按精确串豁免、生成块整块豁免——块内语言归渲染器,只管手写散文;docs/ 内部台账不在范围);docs/reference 与 BENCH.md 维持英文(CLI 中文面 = --lang zh 本身、站点 zh/bench 是中文面;不生成 cli.zh.md——判决 md 每行进棘轮,第二份 443 行无独立事实)。⑥ 闭合三值 resolved / allowlisted-with-owner〔既有 30 名带 owner + why 作数据〕/ error。⑦ 冻结集 CHANGELOG.md、docs/EVAL-SET*.md、FIELD-TEST.md 永不被扫写(历史值是当时事实)并设门防再入。⑧ EOL:新读者一律 \r\n 归一;.gitattributes 加 contracts/**/*.json、docs/**、site/** eol=lf(ndjson 金样保留自身 -text 规则、PNG 显式 binary)并同提交 git add --renormalize,子仓首置 .gitattributes(* text=auto eol=lf)。⑨ 账本纪律:新行全落子仓(预算 119 / 地板 983),先以桩文件试价 ce check tests 与 ce dedup tests --check(九族解析器同形即克隆——表驱动单渲染器);棘轮/dedup 任何上调具名入账;串行律(全量 it 与基线重立不并跑);两仓序(子仓先推)。⑩ 非目标:不生成散文;不为占比改产品 wire;不自动修 vanished;不做通用模板引擎/第二真源。片序 S1 bless 单读者 + docs_consts_stack 陈旧 repo_root 清理 → S2 产品暴露只提两处 inline id 为 const(零 pub 放宽)→ S3 登记册 + 投影 + 版本扇出 + 第五通道(发版阻断类漂移在此死)→ S4 计数与数词 → S5 派生表 + 单 splicer + demo 写者 → S6 引文翻转(两阶段,docs_citations_parts 拆 anchor/ledger/render)→ S7 双语 + demo 双语捕获(run.js 按 CE_LANG 两捕,README.zh 不再带英文审计句)+ SVG 标题 → S8 同文档复述形 restate:(册 13 散文数对自身表格)→ S9 债务清偿与拆分(docs_consts 338 / face_parity 294)。架构图(用户令,排在生成器之后、README 更新之前):工具 = tt-a1i/archify(MIT,Node ≥18 零依赖 CLI,JSON IR → 自包含 HTML 恰一内联 SVG;deliver 验证 + spec/artifact sha256 收据,本机实测同输入两次 sha256 相同)钉 commit e1ac748(v2.15.0);不 vendor 不 submodule——任何 tracked 树按裁定 ③ 进提及宇宙 U(template.html 13k 行会「提及」我们的符号名把顾问信号遮掉),其 JS/HTML 又入 scan 尺寸臂;改由 scripts/diagram.mjs --fetch(Node 工具脚本,与 deploy_site.js / demo/run.js 同类)浅克隆到 ignored 缓存 cli/target/archify/,rev-parse HEAD 不等于钉 commit 即拒。图源 = docs/diagrams/architecture.{en,zh}.json 双语 IR(几何对拍腿:id/pos/size/连接集相同、只有标签异;组件 sources 记仓路径);deliver 后按 viewer 自身 serializeSvg 规则抽 SVG(语义类规则 + 主题变量子集内联 <style>、dark 默认 + prefers-color-scheme: light、local() 字体回退)→ docs/assets/architecture.{en,zh}.svg 与 site/assets/ 孪生字节相同(替换现手绘 architecture.svg,入 docs_lang 的 SVG 孪生/<title> 名册);README 双语首屏 + site index ×2 各挂本语言;局部图一张 judgment.{en,zh}.json(dataflow 三阶段:Rust 测量五行 → Haskell 判决五行〔每行以 tag 记其 wire 家族,十族齐〕→ 门 / 报告与顾问;源与三面由阶段标签与架构图承载)挂 README「具体实现」节 + site how ×2(methodology.svg 保留为泳道图)。门 docs_diagrams.rs:缓存缺席按名拒并印 fetch 命令(判不了的门永不通过)、提交 SVG == 现抽取字节、双语几何对拍、IR 内每条 sources 路径存在;CI 加 fetch 步。落地序 = 本条 → ccm 重锁(v2.20 步 #20 发版 carry 至末位)→ S1–S9 → 架构图 → README 双语更新 + 文字瘦身 → 站点八页 + sha256 对拍 → 两仓推送 CI 绿 → v1.3.0 发版链(RELEASE.md §1–§3,十资产只出自 Actions)。);v2.22 = 结项令(用户 2026-08-31:「后续步骤全部清掉,彻底收尾项目」)。三个具名后置束 M 21〔评分/评测 12 + 产品小项 9〕/ N 20〔分发〕/ 证据门 4,共 45 条,一次性裁定不做——不是遗忘、不是无限期后置:v1.3 的形态即成品形态,此后只做维护(缺陷修复、依赖与实测数字随实际更新、文档随之同步)。读者可见的那几条从「路线图」改写为「已知限制」的永久立场并写进两个 README,逐条今日复核而非照抄 2026-08-26 台账(该台账已至少一处过时:O83「桌面无应用内更新通道」在 v2.20 被逆转并已交付为 ce update,本机实测答 latest: 1.3.1 — up to date):符号层 dead 只出顾问行、永不使门失败(ce deadcode 末行自陈 an advisory, never a verdict);除两条 FPR 晋级类外守卫默认 observe(docs/reference/ce-toml.md 的 mode 行);ce structure 不设分数地板故该族不守门(cli/src/structure/judge.rs:6 自陈 the CLI gates nothing here);发布资产只出三键(release.yml 矩阵 x86_64-windows / x86_64-linux / aarch64-macos),而启动器 plat_key 还能算出 x86_64-macos 与 aarch64-linux 两键(plugin/bin/ce.sh:83-92)——这两键无 pin,按名降级到源码安装;Claude Code marketplace 条目 source 指 ./plugin 无版本锚,跟 main HEAD 而非发布渠道。45 条的逐条归属保留在 .ccm/frontier-2026-08-26 与 .ccm/plan-v2.17-draft.md 二节作历史记录;任何一条日后复活须走一次新的 plan-set,不得默认继承。同批裁掉的还有提及宇宙增量快路(用户 2026-08-30 曾裁定要做,2026-08-31 按令先量 ROI:净上限 = 读 155 ms − stat 32 ms = 123 ms ≈ ce deadcode 暖跑的 10 %,且 Advisory::Yes 全树仅 graph/deadcode.rs:88 一处生产点,门 / scan / 钩子皆不付费,故划掉,见 docs/PERF-BUDGET.md 读法行与 40dea42)。v2.23 = CoC 递归增量修正案(2026-08-31 两拍板:口径站规范侧、环限于能证明的那部分调用关系;细则见 ADR-008 第四期)。v2.24 = 复杂度硬线修正案(2026-09-01 用户三问拍板:硬线维持声明式不重开、复杂度给墙不给曲线、四条维护缺陷全修;细则见 §4.1 complexity 行)。v2.25 = 收尾修正案(2026-09-01:O23 复活修掉、erase 站点数、措辞对齐、两条引文/绑定门、v1.5.0 四渠道发布;不改评分与 wire 判决面,报告 schema 只加键)。v2.26 = 墓碑残留修正案(2026-09-04:guard 第三规则类 tombstone 第一段——度量 + 两语料回放 FPR,零 wire、不发版;细则见 §4.2 / §4.3 / ADR-008 第五期 / §6 T 轨)。 本文件行数以锁定时为棘轮上界:只准变短,不准变长;更新必须就地改写;调研依据:2026-08-06 七路并行实证调研(GitHub API / 官方文档 / 论文原文),关键事实附 URL。

0. 一句话定位

在 LLM 写入代码/文档的当轮拦截熵增 —— diff 级、实时、可强制。 "可强制"指能力而非默认值:deny 能力从 M3 起存在,默认档位按 §4.2 的演进路线随证据升级。

1. 问题与证据(立项依据)

  • GitClear《The Maintainability Gap》(6.23 亿次变更,2023–2026,指标按变更行归一化): 重复代码块 40.3 → 73.0/百万变更行(+81%,历史最高);moved/重构占比 21%(2022) → 3.8%(2026);copy/paste 升至 15.7%。https://www.gitclear.com/the_ai_code_quality_maintainability_gap
  • 「Volume-Quality Inverse Law」(arXiv 2605.02741):代码总量与架构级 smell 计数相关 ρ=0.94 (p<0.001)(相关非因果、smell 计数含规模效应——只主张强相关,不主张因果)。
  • 反证诚实纳入:arXiv 2603.27130 发现代码层差异极小 → 卖点锚定在编辑/提交行为层 (重复、堆叠、净增长、churn),不是"AI 代码天生更烂"。

2. 竞争格局与差异化

先例 占据的位置 没做的(= 我们的空位)
jscpd v5.0.16(Rust;master 2026-08-19 合入 --baseline/--fail-on-new-clones 全树指纹 diff 门,未发版) T1 查重 + 事后/提交时报告 T3 near-miss;写入当轮拦截;结构度量(--summary 仅体量)
desloppify(3k★,停更 2026-05) 全库健康扫描 "True incremental or diff-only scanning is not the supported model yet"(README 原文,2026-08-29 仍在;见 R5)
CodeScene PR 级 Code Health 门;MCP 提交前 staged pass/fail(代理自调) 商业闭源;不做写入时拦截
colbymchenry/codegraph(68.6k★) 代码图谱喂 LLM 不做克隆判定
mizchi/similarity(TSED,停更 2026-04) T3 跨文件相似 仅批扫门(--fail-on-duplicates)、无写入时拦截、无插件面、文档查重仅实验
fuck-u-code(7.3k★) 快照评分 + 幽默输出 重复仅文件内、签名正则;无时间维度
betterer(停更 2024-12) 棘轮范式(JS) 无跨语言主导者
新入场(复扫 2026-08-29,亲核 README):dupehound(89★,同栈 tree-sitter + winnowing k10/w17 + Jaccard,15 语言)、nose(69★,语义 IL)、vibeguard(41★)、slopo(366★,embedding) dupehound check = 变更函数 diff 门(退 1)+ MCP + 月度 history;nose base=origin/main PR 门;vibeguard = Claude Code/Codex/Gemini PreToolUse 写入时拒绝(800 行 / 未读先改 / 破坏性 bash);slopo review 变更 diff 报告 无一把克隆判定放进写入当轮:dupehound/nose/slopo 是提交/PR 时批扫,vibeguard 有拦截无查重(重名符号仅 warn);三信号 join 与四分类仍无人做

空位(调研 agent 逐 README 核对):「每次编辑判定真修改 vs 堆叠新增」无人在做。 三个差异化判决:

  1. 写入当轮拦截:编辑落盘当轮完成判定与强制(PreToolUse 廉价门 + PostToolUse/Stop 深判与阻断,见 ADR-004),超限时给出量化依据并指回既有实现;
  2. 三信号 join:克隆相似度 × 依赖图位置 × git 历史(co-change/churn)联合给出 "删除/合并候选"判决——调研确认没有任何项目同时具备三者;
  3. 编辑四分类:把一次 diff 分解为 matched / novel / moved / deleted,直接度量 "是更新还是堆叠"。

3. 产品形态

形态 载体 里程碑
主动:ce CLI 单二进制(Rust),codeeraser 为等价 alias;24 个子命令——判决族、运行时面与 update,完整清单见 reference/cli.md M1 起(check/baseline 落地于 M5-3B、structure M6、eject M7——2026-08-13 拍板⑩;update v1.3.0)
被动:Claude Code 插件 hooks(as-built 四钩:SessionStart/PreToolUse/PostToolUse/Stop——PostToolUse 只记 ask 档写入的落地、不判不说,v2.30 步 5b)+ skills(erase 删除引导,2026-08-19)+ bin/ 垫片;PostToolUse 深判退役(职责归 Stop 审计+CI) M3
被动:通用 agent 集成 pre-commit、CI(退出码 + --fail-under)、最小 MCP server(M3)、完整 MCP(M7) M3/M7
GUI Tauri(复用 Rust 前端) M6
分发 M3 后 0.x 预览(air-gapped 手动放置,D2-3);M7 起已公开(as-built 2026-08-19):marketplace + GitHub Releases + crates.io(cargo install codeeraser)+ npm 指针 + 官网 codeeraser.dev M3/M7

4. 功能规格

4.1 主动模块(用户按需启用,ce.toml 配置,纯声明式)

模块 检查项 默认阈值(出处经核实) 里程碑
size 文件 LOC;函数长度;参数个数 文件 300 警告 / 750 阻断(ESLint max-lines=300;Sonar S104=750);函数 50/75(ESLint=50;Sonar S138=75);参数 5(Pylint)。尺寸门语言臂(v2.5):js/jsx/css/scss/less/html/vue/svelte/sh/yml 仅入本模块 + guard 硬预算 + 棘轮,不入任何判决族。v2.6(as-built v0.6.0):scan 双档不变;score size 轴改软区间凸罚(S=基线 softLine,缺则回落 300;H=750)+ ce structure --split-candidates 顾问面,契约见 reference/size-advisory.md M1
complexity Cognitive Complexity 主判罚;Cyclomatic 辅助 CoC 15(Sonar S3776);CC 10–15(Sonar S1541=10 / lizard=15)。证据边界如实声明:ESEM 2020 元分析中 CoC 仅在理解耗时(r=0.54)与主观评分轴有支持,正确率轴无支持(r=−0.13 CI 跨零);arXiv 2303.07722 中 CC 略优于 CoC。选 CoC 主判罚的理由是其对嵌套的惩罚正对准"堆叠"形态,而非"已证明的可维护性代理"。v2.24(2026-09-01)补 cognitive_fail:此前复杂度轴没有任何绝对上限——CE.Scan.Cost.gradeTable 的 code 2..6 fail 列字面量为 0、guard 对复杂度零命中(§4.2 明令 PreToolUse 不做 AST,故写入时不接)、ADR-006 棘轮按设计只止涨(新实体 bootstrap 取自身值,Ratchet.hs 自陈 not a violation)。本键把 fail 档补齐,默认 0 = 无硬线(gradeTable 的既定语义)、纯 opt-in——理由就是本行上面那条证据边界:不为一个自陈"正确率轴无支持"的指标设默认拦截。作用面 = ce scan fail 档 + [[rules.class]] knobs.cognitive_fail;不进评分(score 复杂度轴仍只读 cocCeil),故分数与 1.4.x 完全可比 M1
readability 命名规范、嵌套深度、注释密度 不用 Maintainability Index 作主分(van Deursen 批判:1994 系数从未重标定、与 LOC 共线)。主判罚永远 = LOC + CoC + 重复率 M1
clone 跨文件 T1/T2(热路径);T3 near-miss(冷路径);不承诺 T4(arXiv 2606.25272:SOTA 在 T4 全线退化) T1/T2 min-tokens 50(jscpd 默认);T3 TSED 0.85(定义与阈值仓内自定义并文档化——2026-08-13 拍板②;对照物读出值作分歧入册不改数) M2/M5-3
docdup Markdown/纯文本段落 + 代码注释/docstring 查重(与 clone 联动):shingle + MinHash/LSH 粗筛 → Jaccard 复核 段落粒度;逐字下界 50 tokens(Lee et al. 2107.06499) M5-3
churn 函数级追加 vs 重写比例、两周 churn、co-change 纠缠对 先例:GitClear 指标 + ops-codegraph-tool co-change M4
graph import/调用边抽取、跨文件符号解析、入度/环 工程量锚点:ops-codegraph-tool 用 6 级 import 解析达 precision 94.9%/recall 66.7%——这不是一行验收能带过的子系统 M5-2
deadcode 无引用符号/文档段落(图入度 = 0 ∧ 非入口) 依赖 graph M5-2
score 综合评分 + 棘轮基线(语义见 ADR-006) 权重表配敏感性测试:扰动任一权重断言总分变化(fuck-u-code 的真实 bug 是权重字段从未被评分路径读取——"权重和=1"断言测不到死字段) M5-3

评分极性全程统一"越高越好"。幽默评语彩蛋 as-built:ce check --roast(i18n 查表,2026-08-19)。

排除模型(M1 起内置,A2d):默认排除 lockfile、minified/生成物(*.min.js、 protobuf/OpenAPI 产物)、vendored、快照测试、migration、二进制/数据文件;叠加 .gitignore、.ceignore 与 ce.toml 的 glob。类别级豁免(D2-5):license 文件头、 结构化 docstring 骨架(Args:/Returns: 等模板行)不入 docdup 语料。豁免三条路:行内 ce:allow(<rule>) -- <why>(无 why 即违规)、.ceignore、基线豁免存量(JSON 等无注释语法文件用后两条)。

4.2 被动模块(guard,Claude Code 插件)

拦截点依据官方 hooks 文档(https://code.claude.com/docs/en/hooks.md,2026-08-06 核实; PostToolUse 不能阻断工具执行,但可反馈;强制阻断点 = PreToolUse 与 Stop):

Hook 职责(与 ADR-004 混合强制点一致)
PreToolUse(Edit|Write) 只做廉价检查与 flow 腿的单文件降表(判决在核):路径排除、目标文件当前 LOC 预算、new_string 片段对指纹索引的 T1/T2 探针。超限 → permissionDecision:"deny"/"ask" + 指回既有 file:line。不做 AST diff(避免重放 Edit 落盘语义这一隐藏子系统,评审 A2a)。v2.26 第三条:墓碑残留度量(feed-only)——本次被抹除名字集 R(盘上 / 应用后)∪ 会话级 R(feed 尾窗内本 session 的被删名哈希并集)对本次新增标题 / 单元名 / 散文段匹配否定框与回溯标记,仅当 R ≠ ∅ 写 tombstone 事件;v2.27 步 4 起按 [tombstone] tier 在核 tombstone/1 判、核答 over 才出声(deny 拒写),现行行为见 plugin/README 钩子表,deny 晋级仍只走 §6 M4 FPR 门;v2.31 flow 腿:写入前后两侧各用 tree-sitter 降表、经核 flow/1 判,按 [flow] tier(出厂 observe)只在新增发现时出声
PostToolUse(Edit|Write)/ FileChanged 深判退役(裁定 2026-08-19)——官方语义不能阻断只能反馈,深判职责由 Stop 审计(git diff 净效果)与 CI 门承担;再加一层反馈面即上下文熵源(B4 立场)。只记不说的 settle 腿(2026-09-27 用户裁,v2.30 步 5b):PreToolUse 答 ask 后工具真跑了,PostToolUse 以同一 tool_use_id 触发,ce settle --hook 只往 feed 追加一行 settled、零输出——ask 档下 applied 为 null 的记录由此闭合;FileChanged 仍不用
Stop 本轮净效果审计(基于 git diff,因此对 Bash/>> 写入同样生效):净 LOC、新增重复块、(M4 起)四分类汇总。引入净冗余而声称完成 → decision:"block" 要求返工。v2.26:加墓碑残留度量——按改动集(基准 blob / 工作树,含未跟踪新文件;外来所有者与 .ce/ 除外)算被抹除名字集 R,标签残留 L 与论证残留 J 以加性键 tombstone 入 stop_audit / precommit 行;changelog 定位文档(路径约定 / 版本-日期标题台账形两见证)整体豁免且每次入账;第一段只报告不阻断,v2.27 步 4 起按 [tombstone] tier 在核里判、deny 档拦停(见 plugin/README 钩子表)
SessionStart 引导二进制(见 §5.9);注入 guard 健康状态一行(daemon 是否存活、索引 freshness、guard 档位;降级计数归 ce doctor,§5.9-5)
UserPromptSubmit(可选) 廉价启发式标记本轮意图(更新 vs 新增),仅作 §4.3 的可选辅助信号,非判定前提——未实现,随 M 束经 v2.22 结项令裁定不做(O08)

诚实边界(A2b):PreToolUse 是行为塑形层,不是安全边界——agent 可用 Bash: echo >>/sed -i 绕过。兜底 = Stop 审计走 git diff(与写入工具无关)+ CI 门禁。 文档必须如实写明这一点,不得宣传为"不可绕过"。

默认档位演进路线(A1,写死在此,不许默认永远 warn):

  1. 0.x(M3–M4):默认 warn;deny 能力存在,用户可按规则开启;
  2. M4 的 FPR 门(§6)通过后:T1/T2 精确重复写入与**硬预算超限(文件 >750 行)**两类 规则默认升为 ask;
  3. 1.0(M7):上述两类默认 deny;其余规则 as-built 默认 observe(无各自 FPR 记录即无晋级资格,如实缺席——2026-08-17 切换生效,和解记录见 CHANGELOG)。 每次默认档位变更在 CHANGELOG 记录依据(FPR 数据)。v2.26 第三规则类 tombstone 第一段 as-built observe(feed-only),晋级前置 = docs/FPR-TOMBSTONE.md 回放 ≤ 1%,与前两类同一道门;2026-09-04 六轮回放实测 requests 0/400、自仓 3/530 = 0.57 %,门达成;v2.27 第二段:类得自己的档位键 [tombstone] tier(默认 observe;步 4 起合取与预算条件在核 tombstone/1,三腿按该键定档、核答 over 才出声),deny 晋级仍走本条 FPR 门——回放台账即证据,默认档位不随第二段改变。

4.3 F4「更新监督」判定模型(核心创新)

四分类:matched / novel / moved / deleted。借鉴 difftastic 代价模型思想但自研 (https://difftastic.wilfred.me.uk/diffing.html;其 JSON unstable、有硬上限、且 不识别 moved——moved 恰是关键健康信号):整数常数代价模型,跨文件开站成本推导出 ≥2 行证据地板,站点另须一条 ≥19-alnum 锚证据行(M5-1c-ii 双语料影子消融,拍板 2026-08-11:单行锚地板唯一保 547/547 满召回且清零 requests 发明;freq/chain/flow/图 分配全以数据除名——目的地竞争被删侧归因吸收零错误,F4 删侧宽松以数据结案维持)。

Fallback 阶梯(B3c,先易后难,各级都是上一级的对照组): L0 = git diff --numstat -M -C --find-copies-harder(零自研);L1 = L0 + 函数边界 对齐(tree-sitter 符号表);L2 = 跨文件来源判定(自研整数代价模型;AST 单元用于归属 与搬迁登记)。M4 从 L0/L1 建立 baseline,L2 须证明相对 L1 的增量收益,不达标退 L1。

判定规则(意图无关,A2c 修复;意图信号仅可选增强):

  • novel 内容与仓库既有代码/段落结构指纹相似度超阈值 → 重复实现嫌疑(主规则, 不依赖任务意图;写新测试/新 endpoint 等正常新增不含相似既有实现,不触发;as-built = 守卫写入前的 T1/T2 探针 guard/probe.rs,册 09);
  • novel ≫ deleted 且 novel 与被修改函数同名/同签名/高相似 → 堆叠嫌疑 (旧实现没删、新实现又写一份的典型形态;as-built = 四分类唯一在核的规则 FourClass/Verdict.hs);
  • 文档编辑中新增段落与既有段落 MinHash 相似 → 重复陈述嫌疑(as-built = docdup 族,MinHash/LSH 候选 + shingle 精确 Jaccard 80/100,ce docdup / ce check 读,不在四分类);v2.26 墓碑残留嫌疑:改动集抹除名字 X(R 只收文本自己声明为名字的 run——单元键、非注释行且字面量之外的标识符、md 标题 / 列表首项;md 代码跨度只保活不声明;否定框内的窗口两侧都不是名字;中文名字只在这些边界处可测,如实写进已知限制)且同一改动新增的标题 / 单元名 / 文件名以否定框重新命名 X(标签残留 L),或新增散文句同时含回溯标记与 X(论证残留 J,合取即精度;六轮回放逐轮修定义见 FPR-TOMBSTONE.md);出处叙事按用户裁定算残留,changelog 定位文档按两见证整体豁免并入账;v2.27:第三见证 = 段级(被触段自身 ≥ K 个版本 / ISO 日期 / 短哈希记号,K 由回放定,只豁免该段并入账)+ [tombstone] ledger 声明路径兑底(整文件、入账);单词名字继续算,ASCII 3 字符地板不动;
  • 每个判定输出量化依据(novel/moved/deleted 行数、相似度、指回位置), 绝不输出裸"感觉太长"。不承诺语义级矛盾检测。

4.4 CLI UX 与输出

  • 退出码:0 通过 / 1 违规 / 2 内部错误;--fail-under <score>(与棘轮合成语义见 ADR-006)。ce update 例外——退出码即判定(0 最新 / 1 有更新 / 2 未知,见 §6 v2.20 条与 CHANGELOG v1.3.0);ce setup 亦例外(0 接上 / 5 已接过 / 10 无 Claude / 11 add 失败 / 12 install 失败 / 13 提权账户不是登录用户,cli/src/setup/mod.rs Exit)。
  • 格式(as-built):console、JSON 全命令,SARIF 限 scan/dedup 两个发现形命令(--format sarif,v2.14 复活、2026-08-25 落地:纯投影+CI 上传腿);Markdown 维持退役(裁定 2026-08-19)。
  • 分工(as-built):CLI 只出结构化事实(报告族 JSON + ce mcp 只读面 + erase skill 引导删除),解读归消费方 LLM。
  • hook 输出 token 预算(B4,anti-bloat 工具不得自己成为上下文熵源): warn 注入 ≤ 200 tokens/事件;同一 (rule, file) 每会话只报一次,后续静默累积; 深度报告落盘 .ce/,由 skill 按需读取;Stop 汇总 ≤ 400 tokens。预算进 M3 验收。

5. 架构

┌ Claude Code / 其他 agent ──────────────────────────────────┐
│ hooks(SessionStart/PreToolUse/Stop) · MCP 只读面 · bin/ce  │
└──────────────┬(hook 每次触发 = 短命 ce 进程)─────────────┘
               ▼
┌ 前端 ce (Rust 单二进制) ───────────────────────────────────┐
│ CLI/配置/排除 · tree-sitter 解析(官方 Rust 绑定) · 热路径  │
│ 廉价检查 · hook I/O · GUI(Tauri) ──┐                       │
└────────────────────────────────────┼───────────────────────┘
              named pipe(Win)/UDS ─► ▼
┌ ce daemon (同一 Rust 二进制, per-project, 懒启动) ─────────┐
│ 指纹索引(SQLite WAL, 多写收敛) · git 历史抽取 · 文件监听   │
│ 子进程: ce-core (Haskell) ↕ NDJSON over stdio(均长驻)      │
│   判决层: 规则引擎(hlint 式双层) · 四分类(L2) · TSED       │
│   依赖图/三信号 join · 评分与棘轮                          │
└────────────────────────────────────────────────────────────┘

职责边界(B1 采纳后):延迟敏感的热路径(PreToolUse 廉价检查、索引探针)完全在 Rust 进程内完成,不跨语言;一切"判决"(四分类 L2、规则引擎、评分、棘轮、图分析、 TSED)在 Haskell——这些全部位于放宽预算的路径上(Stop 秒级 / 批扫), Haskell 承重且不背 1s 预算。

架构决策记录(ADR,偏离须先改本文件)

ADR-001 前端语言 = Rust(Go 落选)。 tree-sitter Rust 绑定是官方一等公民(核心 crate 0.26.x,语法 crate 各按其 ABI 锁定);最近先例(difftastic、 mizchi/similarity、jscpd v5 引擎、ast-grep)全是 Rust,可参考复用(ast-grep-core,MIT); GUI 由 Tauri 覆盖。Go 无以上任何优势。

ADR-002 Haskell 不拥有解析层;职责 = 判决层(2026-08-12 拍板细化:判定半落 Haskell)。 实证:Hackage tree-sitter 停在 0.9.0.3(2022-04-12),包描述自劝退 (https://hackage.haskell.org/package/tree-sitter);github/semantic 已 archived; 唯一活跃替代 hs-tree-sitter 是 AGPL-3.0-only + 单人维护。→ Rust 止于解析/抽取/索引并输出 归一化 IR(符号、span、结构指纹、import 边;token 流只入本地索引,不出本机——A6;2026-10-04 起测量侧读到的文本可经 ce → ce-core 的本机管道送核,§5.9-6); 图算法(入度/环/SCC)与 docdup 复核判定在 Haskell。wire format 借鉴 ast-grep --json=stream。

ADR-003 进程模型(A3 拆分后)。

  • hook 触发 = 短命 ce 进程;重活委托给 per-project daemon(同一二进制 ce daemon, 首次使用懒启动,空闲 30 min 自动退出)。
  • 通道:Windows named pipe / Unix domain socket,管道名 = 项目路径哈希;连接本身不设防, 凭据 = <root>/.ce/daemon.token(每次 serve 在 bind 之后重铸——能力边界 = 读得到项目 即可连;契约与协议版本见 contracts/DAEMON.md,daemon proto 1.1.0 起)。
  • 索引=收敛式多写者缓存(v1.7,审计实证唯一写者从未成立):写路径全内容门控+幂等+IMMEDIATE 锁内自检,WAL 逐事务串行 ⇒ 并发写者对静止树收敛于串行序终态(验收=concurrent_writers 双进程电池); daemon 角色=性能(热缓存+探针热路径)非正确性,M6 GUI 直写同库有据。
  • 版本 skew:连接握手带协议版本,不匹配 → daemon 自杀重启(新二进制路径由客户端传入)。
  • 冷启动:首次索引后台异步构建;未就绪期间 guard 显式降级为廉价检查档(降级状态 进 SessionStart 健康行与 Stop 汇总,不静默——A9f)。
  • Haskell core 是 daemon 的长驻子进程,NDJSON over stdio,全程 ByteString + hSetBinaryMode(规避 GHC #10762/#15021 的 Windows code page 坑); 禁止 Haskell DLL(GHC #16429/#23644 未解决;foreign export+DllMain 官方警告冻结)。

ADR-004 强制点 = 混合(B3a 采纳,替代 v1.0 的 PreToolUse 独担)。 PreToolUse 只做廉价检查与 flow 腿的单文件降表、判决在核(见 §4.2);AST 深判在 Stop 审计(已落盘全文,无需重放 Edit 语义);强制力 = PreToolUse(廉价规则)+ Stop(深判结果)。 否决"PreToolUse 独担":需自建与 Claude Code 逐字节等价的 Edit 落盘语义重放器(unique 匹配、replace_all、空白/CRLF 归一化),任何偏差 = 判定错文件;且 new_string 片段常含 ERROR 节点无法可靠建树。代价(文件短暂脏后被要求返工)在 agent 工作流中可接受。

ADR-005 克隆检测两层;自研 winnowing 而非复用 jscpd(否决理由记录,B3b)。 热路径:归一化 token 流 winnowing/Rabin-Karp 指纹倒排索引(Schleimer et al. SIGMOD'03 的无漏检下界保证),SQLite 分片、增量失效。冷路径:候选集 → AST 结构指纹 → TSED(T3)。 不复用 jscpd 引擎:①需进程内毫秒级探针(jscpd=批扫 CLI/Node);②需增量失效常驻索引; ③避免 Node 运行时依赖。代价:自研索引正确性风险,用"增量 ≡ 全量重建"property 覆盖(§7)。 检出能力对齐 jscpd 可检出集(验收含配对精度,§6 M2)。embedding 只进离线报告。 排除:后缀数组(构建不增量)、全仓 pairwise 树编辑、全仓 embedding。

ADR-006 棘轮语义(B5 修复)。

  • 连续型指标(文件 LOC、函数 CoC):per-file/per-function ceiling = 基线值; 超 ceiling 即 fail,低于 ceiling 自动收紧到新值。修 bug 需要加行时:ceiling 有 单次编辑 +2% 或 +10 行(取大)的容差——复杂度行 +2% 或 +1 点(取大,9.0.0)——容差消耗计入 ce check 棘轮行。具名重立(CE_ACCEPT_BASELINE=1 ce baseline)时,每个超容差上升的文件与每个新入表实体都必须在 CHANGELOG 该提交段逐个具名(文件、旧→新行数),无名即违规——靠纪律执行、不设门(2026-08-28 用户裁)。ce baseline 只在项目根持久化,缺基线不再无声建立——须 CE_ACCEPT_BASELINE=1(v2.18 步 #14 O30/O31)。
  • 离散型违规(clone 实例、deadcode 符号):基线是违规集合(指纹标识); 新增成员即 fail,移除成员自动收基线。
  • 旋钮围栏(v2.14 起;4.2.0 classDigest 只钉 [[rules.class]],6.0.0 拓宽为整份解析 ce.toml 并改名 knobsDigest,v2.18 步 #14 O39 起为规范树 = 与出厂默认不同的有效旋钮集,类名是标签不入树〔af45fcf 复核收口〕):基线另存标量 knobsDigest。 digest 不符 → 棘轮硬拒并要求具名动作——CE_ACCEPT_FENCE=1 只接受围栏条件、上限与旧值取 min(v2.18 步 #14 O35),CE_ACCEPT_BASELINE=1 整体重立——规则集变更不得被无声吸收。 围栏在场时容差可按类声明(ratchet_tolerance,以及仅对 CoC 行的 cognitive_ratchet_tolerance〔6.4.0〕,vendored/夹具可为 0=冻结);棘轮行仍三列只记树事实, 进基线的是指纹而非旋钮。缺省无 digest = 判决等于出厂默认,这样的仓字节恒等(K11)。
  • 与 --fail-under 合成:有基线的仓库以棘轮为主门,--fail-under 为下限保险; 两者任一 fail 即 fail,控制台按核心序逐名报出成立条件(v2.18 步 #14 O36)。ce-baseline.json 提交进仓库(betterer 范式)。

ADR-007 插件工程约束(官方文档核实,2026-08-06)。

  • 布局:plugin/.claude-plugin/plugin.json(省略 version 则 commit SHA 即版本;显式 version——D2-2);仓根 .claude-plugin/marketplace.json(source "./plugin":owner/repo 一键添加只认仓根清单——官方文档核实 2026-08-18)。
  • 安装拷贝进 ~/.claude/plugins/cache → 禁止越界相对引用。
  • 二进制分发路径唯一化(A9a):仓库 bin/ 只放轻量启动脚本;真身二进制由 SessionStart 从 GitHub Releases 下载到 CLAUDE_PLUGIN_DATA(跨版本保留), HTTPS + SHA256 pinned 在插件清单内,校验失败拒绝执行并明示;校验按会话一次—— 已验证的绝对路径写入 CLAUDE_PLUGIN_DATA 下按清单版本命名的绑定戳,后续 hook 经戳直接 exec,清单或二进制比戳新即重走全链、SessionStart 的 health 恒全链;信任边界不变(戳与 二进制同目录同属主),省下的只是每 hook 两次 SHA256 与 ~15 次 fork(Windows 全链 2.0–2.3 s → p95 0.50 s,O52,2026-08-29,PERF-BUDGET 全链注)。五目标二进制(v1.7.0 起,O70;此前三) 预期 8–19 MB/个(shellcheck 7.69 MB ~ hlint 18.99 MB 区间),不塞仓库。 air-gapped 模式:允许用户手动放置二进制 + 本地校验。二进制只出自 release.yml 目标矩阵(用户令 2026-08-28,RELEASE.md §1 铁则;本地构建物永不上传、永不 pin)。代码签名/公证裁定不做 (2026-08-19,成本/收益不成立;有商业需求再议)——SHA256 链为永久信任锚,README 明示。
  • DENY 协议:exit 2 + stderr,或 exit 0 + {"hookSpecificOutput":{"permissionDecision":"deny",...}}; 自设 timeout 并按 R3 fail-open + 显式记录。
  • ⚠️ 官方文档无 Edit/Write hook payload 逐字示例 → M0 用 echo-hook 实测 dump 固化 fixture。

ADR-008 策略即数据 = Haskell 规则 DSL(2026-08-12 拍板;细则 v1.8 三拍板 2026-08-17)。 判决·豁免判定·预算·棘轮·阻断语义在 ce-core 以"位台账+判决表"求值(具名谓词产条件位,判决=有序数据表);测量语义(指纹/掩码豁免/截断/上限执行)留 Rust,须单点声明+knobs 回显钉住;判据=需源文本或行级内容过 wire 即测量侧(§5.9.2 一票否决);热路径 guard 与 hook 协议映射按 §5 边界留 Rust(两判例)。分工句修正(2026-10-03 立项,2026-10-04 文本过线修正案定稿,v2.33):凡是在测量侧已读到的事实——整数或文本——上做的计算(算法、判定、定义、文档、文字)都在核;Rust 只做碰世界的事(文件系统、tree-sitter、SQLite、git、进程、管道、clap / MCP / daemon / 钩子接线)并把读到的交给核,只有 tree-sitter 能做的词法(CST)留 Rust;上句的「测量语义留 Rust」与「判据=需源文本或行级内容过 wire 即测量侧」据此只指碰世界的那一半,纯字符串上的切分 / 分词 / 词干 / 掩码与其上的判定都是算法、归核;§5.9.2 一票否决由 §5.9-6 的线规则取代——文本可过 ce → ce-core 的本机管道,§5.9 的隐私保证一条不动。细则第五期 = 墓碑残留(2026-09-04,v2.26):R / S⁺ / P⁺ / 否定框与回溯标记匹配 / changelog 定位检测里对源文本的切分与匹配是「降」,居 Rust cli/src/tombstone/,TOMBSTONE_REV 单点声明(v2.33 改写:切分与匹配是字符串上的算法、归核,随 W6 搬;墓碑文本管线在钩子热路径上,守住 PERF-BUDGET 的钩子预算才落地);第二段每段只送 [kind, marks, erasedNames] 三整数,合取与地板 floor = 1 居 Haskell CE.Tombstone(stacking 三信号合取先例,非 audit/1 单位析取);第二段(v2.27)wire = tombstone/1 族 proto 6.6.0 加性,Rust 送行、Haskell 判行,回执只有下标与 over;豁免是 ce.toml 声明([tombstone] ledger,整文件)或定位检测(路径 / 台账形状整文件、段级记号密度只豁免该段,K 由回放定——三者都是需源文本的测量故居 Rust,且只产 exempt 计数、永不产条件位),永不是被判文件里的标记(ce:allow(tombstone) 刻意不接线——对论证残留而言,一条解释「为何可写缺席论证」的 why 本身就是缺席论证)。细则第六期 = 同角色顾问 + 稀疏检索(2026-09-05,v2.29):分词 / 词干是词法(「降」)、倒排表的存储在 SQLite,居 Rust cli/src/similar/(v2.33 改写:BM25 分子分母与 PPMI 计数原判为测量,实为词哈希 / tf / df 上的算法,归核,随 W3 搬;分词、词干与词袋随 W6 搬),SIMILAR_REV 单点声明(分词路一处:查询与索引同函数,负向探针改一处两边同红);过线只有整数——查询袋 [termHash, weight]、候选 [nHit, pHit, cHit, dHit, sHit, lHit, shapeEqual, bm25Num, bm25Den](九整数;shapeEqual 是步 5 落码时补的第七位:idf 为 0 的形状词既不计分也不计证据,pHit 复原不出「形状全等」,而合取第二臂读的正是它——步 2 仪器量的也是这一位)——排序(有理数)与「同角色」合取居 Haskell CE.Similar,回执 = 候选下标序 + role 位;名字与词文本永不过线;顾问永不产条件位(册 13 先例),故无 tier、无 §4.2 晋级门。细则第七期 = 分析轨四家族(2026-09-29 立项,v2.31):程序文本的词法、glob 展开、函数体的降表(语句类 / 变量 / 读写序)、树的叶子哈希与位置类、目录树与包粒度边全是需源文本或文法的测量,居 Rust cli/src/{query,flow,merge,arch}/;Datalog 的文法 / 安全性 / 分层 / 半朴素求值 / 推导链、控制流图 / 可达 / 活性、反统一 / 参数计数 / 可行性、分层 / 最小反馈弧集 / 聚类 / 影响面全居 Haskell CE.{Query,Flow,Merge,Arch};过线只有整数(记号流 [kind,value]、稠密 id、fnv1a64、枚举码),回执只有下标;query/1 的 assert 是门、flow/1 逐语言精度 ≥ 99 % 才成门、merge/1 与 arch/1 是顾问永不产条件位;四次 proto minor 7.3.0–7.6.0 各随其步。细则全文 = reference/analysis-track.md。细则第八期 = 权威轨(2026-10-01 立项,v2.32):语言的定义(语句 / 表达式位置 / 循环 kind、标准库名、构建产物规则、secrets 排除……——描述语言或产品语义、与文件系统状态无关、改一处就改判决的文本)由核的 CE.Lang.* 持有、经 tables/1 一次答整包,Rust 仍是执行者(解析、走查、文件系统不动;GRAMMARS 与以代码写成的 kind 启发式留 Rust);报告文档的骨架与双语消息目录由核在应答里给出,字符串位一律符号引用、符号表只送计数,Rust 只绑定与打印——名字、路径、源文本仍永不过线;无核或旧核 = 具名拒绝,不留内嵌副本。细则全文 = reference/authority-track.md。细则第九期 = 算法轨(2026-10-03 立项,v2.33):分工句修正(见本段首)的落码——按波把今天仍在 Rust 的算法搬进核:W1 镜像退役 + 冷路径小件、W2 引用阶梯(新族 resolve/1,路径以段 id 序列过线、段文本不过线)、W3 候选与排序(既有族加性表)、W4 CST 行导出(新族 cst/1,每单元前序行 [kind, field, parent, named, line, identHash])及其上的算法、W5 flow 降表;2026-10-04 文本过线修正案(§5.9-6)后加 W2a′(resolve/1 的段 id 换成字符串、删掉那层降)、W2b(其余七个阶梯连同配置面逻辑,以文本过线)、W6 文本规则(墓碑文本管线、提及分词、Markdown 掩码 / slug、similar 词干 / 词 / 词袋、docdup shingle)、W7 报告渲染胶水(v2.32 留在 Rust 的绑定与符号表);不搬:dedup 的 winnow / pairs(钩子热路径)、tree-sitter 的词法、碰世界的代码与 GUI;每族以新旧二进制十语料逐字节同为门。细则全文 = reference/algorithm-track.md。 Rust 解析 ce.toml 原样过 wire 不解释语义。四片:P4 配置面与表化→P1 判决权回迁(is_clone/verbatim 半边/degraded→FAIL)→P2 棘轮统一(budget 比较入 core)→P3 scan 分级入 core(scan 获 --core,PERF 超标单片回滚)。 验收 = 产品判决面字节等价(上报集/退出码/报告行,golden 全绿)+每片反事实证表承重;wire 按 proto minor 加性演进。按分工句修正(2026-10-03,v2.33)搬迁现有算法是分工的兑现,每次搬迁仍须过本族的逐字节门;语言条目标 = 用户令(2026-10-03)「haskell占比比rust高。不固定比例阈值。」,取代 2026-09-25 的 Haskell ≥ 40 %(那时走新功能轨、不改写现有代码——见横幅 v2.31 条)与 v2.32 步 9 的口径类裁定(见横幅 v2.33 条)。全档:reviews/2026-08-17-adr-008-policy-dsl.md(git 历史)。细则第二期 = 规则包 DSL v1 路径类分参(2026-08-24 拍板,v2.13):glob→classId 指派居 Rust 测量侧(与 exclude 同一解析器 scan/globs.rs,v2.18 步 #14 O42/O20 合一),类尺求值居 Haskell(classKnobs 数据表,码域 = {0,1,2} ceilings 类影子 + 3/4 棘轮容差〔4 = 仅 CoC,6.4.0〕);类名与 glob 永不过线,线上只走整数(continuous 第 4 列 classId + classKnobs 三元组);声明序首中、classCap 64、baseline 永三列;四片 P1→P4 与反事实证表 C1–C9 为验收正典(全文见 v2.13 banner 条)。细则第三期 = 符号事实搭 import 绑定(2026-08-24 拍板,v2.14):符号的导出性是每文件本地语法事实(pub/export/__all__),指派居 Rust 测量侧;符号存活性求值居 Haskell(4.1.0 先上 symbols 一表派生文件层导出位,判决码域沿用 graph/1 四态不新造;步 3b 符号层顾问 = v2.17 L 轮甲批(口径对抗审查册 v9 已封版 2026-08-27——提及口径 / 约定式可达免疫 / 嵌套可见性三题定案,见 v2.17 banner 条;symEdges 终裁 = 删,用户拍板 ①),缓议因由见 v2.14 K7 条)。判据仍是 §5.9.2 一票否决——符号名属文本形物故永不过线,线上只走下标;边只从 import 绑定派生,不由名字搜索铸造(R6 判例:同名匹配铸边精度 0.576,永久关闭不复议),且须在目标文件的 symbols 表命中声明方成符号边,否则退回文件级边(对抗验证 2026-08-24:语法无法分辨叶子是声明还是子模块/再导出,详见 v2.14 ① 条)。细则第四期 = 递归增量的调用关系(2026-08-31 两拍板,v2.23):CoC 的递归 +1(S3776 §1,M1 起挂账至今)口径站规范侧——白皮书 v1.7 p.8 与 Appendix B1 皆写 each method in a recursion cycle, whether direct or indirect,Change log v1.1(2017-02-06)「include indirect recursion」证其为刻意扩宽;而 SonarSource 自家 java/python/js 三 analyzer 均零实现(各自源码 recurs 命中 0),故落地后与 SonarQube 真实分数的系统性差走 crosscheck DIVERGENCES「归因保留」栏。形态 = 能证明的那部分调用关系上的精确 SCC:调用边是每解析单元内的词法作用域事实(各语言按其文法解析,判据不是「体内出现自己的名字」——实测同名不同类型是主要假阳性源),指派居 Rust 测量侧,解析不到即不建边(欠计单调,宁可少计不可错计);环的判定居 Haskell,SCC 用与图面同一个 Data.Graph.scc,自环语义沿用 CE/Graph/Cycles.hs 已钉的 cyclic [v] = member (v,v) arcs(直接递归 = 环长 1 的特例),但不复用 CE.Graph.Cycles 本体——它自陈 cycles are REPORTED never judged(RG9),本期是判决,两面不得混。跨文件环具名不做,据两个量过的数:名字铸边精度 0.576(R6,永久关闭不复议)、绑定派生符号边召回 ~23%(v2.14 K7,symEdges 因此退役)——低召回对死码用途致命而对本用途只是欠计,低精度才对本用途致命(误加 +1 直接污染 ce check 分数与 E01 敕令),故不为 23% 召回复活已删的符号面。ce scan 自足不破:CoC 只由该文件这一份 AST 决定,永不依赖索引/图是否跑过,否则同一文件会因索引冷热得出不同分数。wire = scan/1 加性表 + 新增可测不变量「一个文件的行不得跨 chunk」——现有分块论证 rows grade independently 对跨行判决不成立。

5.9 安全与隐私(A9,上市场的准入条件)

  1. 网络承诺:ce 与 ce-core 在分析路径上绝不联网;网络行为只有两种且都可关:SessionStart 二进制下载,与 ce update 检查(v2.20:读 GitHub 发布索引 + tag 上已提交的 manifest.env,不发送任何项目数据;SessionStart 通知缓存一天,CE_UPDATE_CHECK=0 关闭;--yes 只放置 pin 校验通过的字节——O83 自更新以此逆转延期,信任锚 = pin 提交而非签名)。embedding 特性仅限本地模型;任何云 API 需按仓库显式 opt-in。
  2. 索引隐私:SQLite 索引只存 token 哈希指纹、span、符号名,不存源代码文本(提及表 §5.1 亦只存 fnv1a64 哈希);位置恒为项目 .ce/index.db(入 .gitignore);CLAUDE_PLUGIN_DATA 只放钉版启动二进制。 默认排除 secrets(内置 glob .env*/*.pem/*.key/id_*/.npmrc/.pypirc/.netrc/*credentials*——v2.17 S-A9 自四条加宽,判决 walk 与提及宇宙 walk 同一张表 + .gitignore 项)。
  3. 配置信任模型:ce.toml 纯声明式(阈值/开关/glob),不可指定可执行命令—— clone 恶意仓库不产生代码执行。
  4. 卸载:ce eject 清除基线、.ce/ 与 CLAUDE_PLUGIN_DATA 下的 ce-* 启动 二进制;插件卸载文档含 eject 指引。
  5. 可见性:ce doctor(daemon 健康、索引 freshness、降级计数);SessionStart 健康行; 降级事件计入 Stop 汇总——fail-open 但绝不静默失效。
  6. 核线(wire)(v2.33 修正案 2026-10-04,取代 ADR-008 据 2 立的「需源文本或行级内容过 wire 即测量侧」一票否决):测量侧读到的文本可送核、核也可答文本,但线只是同机 ce 与子进程 ce-core 之间的 stdio 管道,ce-core 不开文件、不开套接字、不联网(1 不变);核不持久化、不记日志,请求文本只活一个请求;索引隐私(2)不变;observe feed、trend、基线、SARIF 与每份报告的字段不变,不因此多出任何持久化或用户可见的文本;contracts/ 的 golden 与夹具只带合成文本、不抄第三方仓库;secrets 排除在读之前由走查施行,被排除文件的文本到不了管道。设计权威 = reference/algorithm-track.md §3。

5.10 仓库布局(M0 建立)

CodeEraser/
├── plugin/       # 插件根:.claude-plugin/plugin.json + hooks/hooks.json(marketplace 清单在仓根 .claude-plugin/,source "./plugin")
├── cli/          # Rust workspace:ce(CLI+daemon,含 hookio/probe/audit)
│   └── tests/    # git submodule → skymanbp/CodeEraser-tests(Rust 集成套件 + gui/ 四节点门;v2.18 用户裁 2026-08-28,历史经 filter-repo 保留)
├── gui/          # Tauri 外壳 + vanilla JS 界面(消费 CLI 同一报告 schema)
├── core/         # Haskell cabal:ce-core(判决层)
├── contracts/    # 契约版本化机制 + 双语言共享 golden fixtures
├── docs/         # 本计划、协议文档、评审记录
├── demo/         # 仓内真实 demo:seed + Node 驱动 + 冻结产出(`demo_replay` 门)
├── site/         # 官网十页(codeeraser.dev;stack 页与首页的生成块由门生成,`scripts/deploy_site.js` 部署)
├── scripts/      # 发布工具(deploy_site.js / shoot_gui.js 等 Node 脚本,不进判决族)
├── npm/          # npm 指针包(package.json + README,只转发 Releases、零二进制;版本等 crate 版本由子仓 health_plugin.rs 守)
├── packaging/    # 包管理器投影(Homebrew 公式 + winget 三清单):scripts/packaging.js 从 plugin/bin/manifest.env 的 pin 生成,子仓 it/packaging.rs 守字节并反读 pin,永不手编
├── .github/      # CI 与 release 工作流 + bootstrap e2e 脚本
├── .claude-plugin/ # marketplace 清单(plugin/ 注释所指的仓根清单)
└── .ccm/         # cc-memory 本地状态(原 memory/,插件 2026-08-30 改名;.gitignore 排除,不入库)

6. 里程碑(工期为单人 + agent 协作的粗估,标 ± 者不确定度高)

# 内容 工期 验收标准(量化、可复跑、防作弊)
M0 契约机制与骨架 License 已拍板 Apache-2.0(LICENSE 已入库);ce 命名撞名核查(crates.io/npm/brew);契约版本化机制(信封格式 + SemVer 协商,内容不冻结——B1);echo-hook 实测 Edit/Write payload 固化 fixture;双工程骨架 + 三平台 CI(私有仓计费额度评估:macOS 10× 倍率,限 tag/夜间触发——D2-8);工具链锁定并实测依赖可解(C3:cabal build 全依赖集在 GHC 9.14 LTS 通过,Stackage 快照记录在案);热路径延迟分解表(fork→ce 冷启动→探针→回传各项预算) 1–2 周 CI 三平台绿;ce --version↔ce-core --version 握手;payload fixture 入库;ce 冷启动实测 < 100ms(Windows 含 Defender 首扫除外,单列记录)
M1 度量 MVP size+complexity+readability+排除模型;首发语言 TypeScript / Python / Rust / Go / Markdown(Markdown 仅 size;Haskell 支持后移 M5——无外部对照物,B2);ce scan console/JSON 3 周 ± fixtures 从钉死 commit 的真实仓库随机抽样(清单入 contracts/);CC 与 lizard(TS/Py)、rust-code-analysis(Rust)、gocyclo(Go) 一致率 100%;CoC 与 gocognit(Go) 对拍且分歧全部清单化归因(规范差异注明出处,无未解释分歧——D2-6);CoC 过 Sonar 白皮书共通例题 + 自建 golden;分歧 case(短路、装饰器、可选链)显式收录不回避
M2 克隆热路径 + 进程模型 winnowing 指纹索引(token 归一化覆盖全部五门首发语言——D2-4)、ce dedup、daemon(ADR-003 全项:懒启动/握手/WAL/冷启动降级) 3 周 ± 10 万 LOC 全量索引 < 30s;单文件增量 < 200ms;探针往返(含管道)p95 < 150ms;对 jscpd 可检出集召回 ≥ 95%(属 docdup 域〔docstring/注释重复〕或阈值测度差异的条目可逐条证据归因排除,排除项入册——用户拍板 2026-08-07)且在同一真实仓库上精度 ≥ 90%(召回必配精度,B2);property:增量 ≡ 全量重建
M3 被动 guard v1 插件成型:PreToolUse 廉价门(预算+T1/T2 探针)、Stop 审计 v1(git diff 净 LOC + 新增重复块,不含四分类——A4)、SessionStart 引导+健康行、hook 输出 token 预算、pre-commit 模式、最小 MCP server(check_duplication/scan,对标 jscpd 已在位的位置——A8);收尾发 0.x 预览(本地/私有 marketplace,自有真实项目 dogfood;部分会话跑静默观察档——只记录判定不注入不拦截,为 M4 积累未被 guard 塑形的 transcript;plugin.json 自此带显式 version) 2–3 周 ± 本地 marketplace 安装 → 测试仓库端到端拦截 T1 重复写入(transcript 为证)+ 500 次真实正常编辑重放误拦 ≤ 1 次(N=1 演示不算数,B2);hook 端到端 p95 < 1s 且分解表各项达标;会话累计 hook 延迟中位数 < 15s/百次编辑;0.x 预览在干净环境安装成功,dogfood 会话 ≥ 10(其中观察档 ≥ 5——D2-2)
M4 更新监督 + Haskell 判决层引入 四分类 fallback 阶梯 L0→L1→L2(L2 = Haskell 承重首战);churn;契约内容随真实需求定稿为 1.0 3–4 周 ± 预注册评估集(实现前冻结、≥200 编辑样本、≥50% 来自真实 agent transcript,样本纯净度(D2-1):只采观察档会话与 M3 前无 guard 历史会话,被 guard 干预过的编辑排除并报告排除比例——否则 FPR 被 guard 塑形向下偏,deny 准入门自证);主门 = FPR:500 次真实正常编辑误报 ≤ 1%;recall 报告但不设作弊性 100% 门;moved 以 git -M -C 交叉 + 人工标注为 ground truth(difftastic 不识别 moved,不能当对照——A5);L2 需证明对 L1 的增量收益,否则产品走 L1
M5-2 图 + 死码 graph(独立子系统,验收对齐 ops-codegraph-tool 锚点;调用边=import-绑定层,R6 全仓同名匹配为条件项:须独立 100 调用点审计 ≥90% 方开——2026-08-12 拍板;实测铸边精度 38/66=0.576 < 0.90,按本判据永久关闭(RG10 收案 2026-08-17,见 ADR-008))、deadcode 3–4 周 ± import 边 precision ≥ 90%(抽样人工核对 100 条,覆盖五门首发语言——D2-4;TS/Go 语料=crosscheck 已钉 zod/cobra commit);unreferenced_public 独立报告类不并入 dead;本仓库 deadcode 发现全处置;core 判定不变量属性电池入 CI(2g 起——2026-08-12 拍板)
M5-3A 深度去冗·检测 T3 冷路径(TSED 定义仓内自定义并文档化)、docdup(含代码注释/docstring 域),各配预注册评估仪器 3 周 ± T3 recall 对 mizchi/similarity 可检出全集(分母永不缩减;检出按 ce 全层记功——T1/T2 已报 = 产品真阳非排除项;miss 按封闭词表归因入冻结台账,增长需显式 accept;recall_incremental 并列发布,书面处置触发器 <0.50——2026-08-13 拍板③;v1.6 修正案(2026-08-14 拍板):字面门 ≥0.90 经仪器实证在仓内 TSED 定义下对该对照物可证不可达〔miss 100% 定义性:size_bound/below_floor/judged_not_clone,候选盲区已由 S5 全对候选源根修清零〕,门改挂只升不降回归地板(冻结 epoch zod 3/6、requests 67/425、cobra 1417/9205;门 eval_t3_recall 与冻结件随 v0.5.0 加码批退役(EVAL-SET.md),全档在 git 历史)〕);T3 精度 ≥ 85%(四源冻结候选宇宙 + 独立审计 GT + 只对已答行 + 输出量地板——拍板⑤);docdup:LSH 对暴力精确 Jaccard oracle 召回 ≥ 99%(硬)+ 审计精度 ≥ 85%(in-corpus GT 分母 ≥5 才逐语料设门)+ license/骨架豁免类零行进上报集(拍板④)
M5-3B 深度去冗·判决 三信号 join、score+棘轮(check/baseline 子命令归此)、Haskell 语言支持全套(size+CC+CoC+注释域 + graph 阶梯按 M5-2f 每 rung fixture 纪律;先决 = tree-sitter-haskell 0.26 ABI 可得性 spike——拍板⑧) 3 周 ± join 不设数值门(验收 = 诚实包 + 图腿缺席发 null 绝不编造——拍板④);score 敏感性电池绿(非空性 + 互异性双前置);本仓库自身跑通棘轮入 CI;Haskell 阶梯每 rung fixture 全绿(grammar 不可得 ⇒ size-only 落回并公开记录,CoC 与阶梯顺延)
M6 GUI+结构管理器(已收口 2026-08-17,v2.0 修正案) structure/1 家族(树尺度熵判决:C 自参照地板+A 声明覆盖、七轴 S0-S6、判决全 Haskell 测量复用 Rust——设计册 reviews/2026-08-17-m6-structure-manager.md(git 历史) 四切片)+ ce structure JSON 树报告 + Tauri 可视化(树图首屏消费同一 schema) 3–4 周 熵原语过穷举参照电池 ✓;每轴 F16 非真空前置 ✓;每片反事实杠杆+golden 手算 ✓;对 10 万 LOC 仓库从冷启动 scan 到首屏 < 60s、已扫描报告打开 < 3s(实测 zod 71.6k 冷 8.36s/暖 2.66s,PERF-BUDGET.md M6 节)✓;Windows 实包(NSIS)+三平台编译门 ✓(Linux/macOS 实件=M7)
M7 发布(已收口 2026-08-18) marketplace 上架、未签名明示(签名/公证裁定不做——2026-08-19,见 ADR-007/R1)、Releases 自动化(含 Linux/macOS 实包——v2.0)、完整 MCP(只读报告面——章程拍板③)、许可证合规(NOTICE/第三方 MIT 署名清单——D1-7)、文档、GUI 二期:趋势面板+删除候选浏览(v2.0 移入)、M7.5 清理批(v2.3,P6 前置):休眠评估仪器深度瘦身走 EVAL-SET 修正案 + trend/1 趋势判决入核(Haskell 合约内抬占比——2026-08-18 拍板 ccm #1152) 1–2 周 陌生机器一条命令可用 ✓;二进制 SHA256 校验链路端到端验证 ✓;仓库转公开前全历史审计(历史内 cli/memory/memory.db 三处 blob〔64780b9/e296178/d3f48df〕必须 filter-repo 清除、transcript、密钥、路径泄漏——D2-7)✓;文档过 docdup 自检 ✓;默认档位切换依据(各规则 FPR 数据)发布在 CHANGELOG ✓;M7.5 后 CI 活门集合零缺员(普查测试级二分实证)✓
M8 成长轨(已收口 2026-08-19,随 v0.3.0 发布) IP(软著 eCO 已递交待批 + 商标裁定不注册:™ 主张即可,用户拍板 2026-08-20——G1)、全量文档对齐 + 生成器门控(docs/reference/{cli,ce-toml}.md 由二进制/schema 生成,docs_gate.rs CI 门)、i18n(en 默认 + zh 查表:CLI/GUI/roast,机器面永不翻译)、GitHub 可见度(README 徽章、官网 codeeraser.dev、crates.io + npm 指针、应用图标);契约=reviews/2026-08-17-m8-growth-track.md(git 历史) 1–2 周 生成式参考漂移即 CI 红 ✓;--lang zh 全行覆盖且 JSON/FAIL 词汇不译 ✓;v0.3.0 发布链十资产 + 六 pin 四重复验全绿 ✓
M9 打磨与完整面(v2.8 立项 2026-08-21) 批 0 v0.7.3 出货批:spawn 全站点无窗化(单一 helper 统一 corelink/churn/fourclass/daemon 四站点——unified fix)+ 裸 ce 印 help 退 0 + trend 默认分批渲染进度,随后完整发版链;批 1 两车道审阅 113 条全量落地(台账=项目 memory audit-2026-08-21-two-lane-findings.md;CONFIRMED 33 优先、minors 全清、与后续批重叠项归并不重复干)+ 全 md 防漂移扫尾;批 2 方法学册 docs/reference/methodology.md(每判决族数学实现——winnowing 指纹/TSED/结构熵七轴/评分与棘轮/图存活性/三信号 join/ROI 缝价,公式逐条引 file:line 禁凭印象)+ 细节版原理图 + 官网 How-it-works 页 + README 挂链;批 3 ce erase 两段式(契约册 docs/reference/erase.md 先行);批 4 GUI 完整化:全报告族入面、erase 预览-应用、长任务进度事件、root 选择器/记忆(装机版 CWD=安装目录之弊)、设计系统翻新(v2.9 起并入终版不单发);批 5 bench dashboard:eval/ 回放 harness 产 bench.json 单源(延迟 P50/P95、精度、召回、FPR),per-tag 回填 + 官网/README/GUI 三面同源渲染;批 6 实战检验:≥2 真实仓库全家桶实测入案例册(反哺批 5 与缺陷修复);批 7 判决回迁第三弹(盘点 Rust 内残余判决性逻辑→迁移清单→逐片入核,wire 按 proto minor 加性;禁止为占比写代码——ADR-008 纪律沿用);批 8 架构级全仓代码审查(v2.10 用户令 1.0 前置:模块边界与依赖结构〔import SCC 清单为线索〕、wire 十族契约一致性、核模块架构、GUI/测试架构、错误处理与降级路径;多 agent+逐条对抗核验,修复或书面 disposition 不悬空);批 9 全域优雅性终打磨(数学/算法/架构/GUI 再设计思考,含 GUI 美化挂账项;提案册先行,契约/门槛变更走拍板;v2.11 增补:GUI Graph 可视化收进本批 GUI 波——文件级引用图 canvas 视图+死码/环判决叠加,复用 deadcode 判决运行的 Rust 投影零 proto 变更,符号级下钻不入围,2026-08-21 拍板) 分批推进 每批五门+CI 全绿;批 0 发 v0.7.3,批 1–9 落 main,终版 v1.0.0 走完整发版链收口(v2.9/v2.10);erase 触碰用户文件必 dry-run 默认+干净工作区前置+补丁与判决同源可审计;dashboard 每个数字可由回放复现(禁手填);回迁片产品判决面字节等价 golden 承重;FPR 纪律与 guard 档位 opt-in 不破;弹窗根修以 windowed 进程实测零弹窗验收(已收口 2026-08-22:批 0–9 + 终扫〔113 对账 81 修 29 处置、716 断言终核、截图/官网真值重取〕全清,v1.0.0 发版链走毕即项目收口)
K–L 收口轨(K 轮 v2.14 已交付 2026-08-26 随 v1.2.0;K+1 CI 减重批 7dc391d→cd4ea86 用户拍板;L 轮 v2.17 立项 2026-08-26,甲-1 封版 2026-08-27) 甲 步 3b 符号层顾问全链 + 乙 围栏收尾 19 条 + 丙 文档/记账/实录清欠 9 条(全文见 v2.18 banner 条)+ v2.18 两步:减法批(7 条 ≈116 行 + 3 缺陷,已落 2026-08-28)+ 测试子仓(cli/tests + gui/tests → skymanbp/CodeEraser-tests submodule,已落 2026-08-28);具名后置束 M(评分/评测 12 + 产品小项 9)/ N(分发 20)/ 证据门 4 经 v2.22 结项令一次性裁定不做(2026-08-31,45/45 具名),读者可见的永久立场已写入两个 README 的「已知限制」 3–4 周 ± 甲:口径对抗审查册已封版(v9,2026-08-27:九轮双把、第七至九轮核验者 Workflow 零 REFUTED、第九轮双把零 breaks;定案见 v2.17 banner 条)→ 片序 (1)→(8):symEdges 退役(SCHEMA 14 wipe,已落 dd20947)→ 可见性三位字 + bit 0 三修 T3/H2+H4/H5(GRAPH_REV 11,wire 掩码 bit 0,K27 差分入 CHANGELOG,已落 2026-08-27)→ mentions 表(自有第二 walk + 三发射器分词 + 两加性表存 fnv1a64、MENTION_REV 1 自有版本行、自有入口 ce graph --mentions,K39–K42 四腿 + secrets 表八条加宽同表,已落 2026-08-27)→ conv 类别字列(symbols.conv 存 AST 半八位、名表半 wire 时算,mention_name 域抽取器 + ce:allow 解析合一 crate::allow,GRAPH_REV 12,K24/K25/K28/K37 生产者半,已落 2026-08-27)→ mounts 表生产者 + cabal 两字段 + TS export_star 站点(GRAPH_REV 13,冻结自仓切片一行改签,K30 生产者半 e2e 六格 + 再导出/Go/cabal/无 lib 包,R5 梯级召回界具名——用户裁同日入提取面补强步作梯级修正案〔见本条 v2.17 提取面补强句〕,已落 2026-08-27)→ graph/1 6.2.0 加性两表 unmentioned/mounts(symbols 不动、legacy 请求字节恒等)+ export_unmentioned golden 反事实(约定式可达名零误报腿 K33;CE.Graph.Advisory 自有类 + Rust 候选生产者 mention/candidates + report 0.3.0 三面原子,已落 2026-08-27)→ 渲染面 + K23 四语料 + K45 双腿 + 方法学册 13(0.3.0 第三键 unmentioned_cut、GUI 符号级下钻、ce graph --mentions 0.2.0 rates 普查、U 公式钉 + 258 行外部处置零 veto 缺陷,已落 2026-08-28)+ 自仓 101 条候选逐条处置;乙:19 条各一腿红/绿反事实(已落 2026-08-29,片 (a)(b)(c));丙:9 条就地改 + PreToolUse 全链实录数入 PERF-BUDGET + §2 复扫除新入场行外只变短(已落 2026-08-29,复扫例行随后经用户令退役);收口判定式 87/87 具名(复核 2026-08-29:46 条已交付经 codex 四路只读审计逐条取证——35 落地 / 8 具名澄清 / 2 修补〔O42 类名出指纹、O43 注释〕/ 1 退役,41 条后置束计数与台账一致),台账 .ccm/frontier-2026-08-26;v2.20 三步(用户四令 2026-08-29):更新功能三面等价(ce update 检查 = 退出码 0/1/2、--yes 就地替换 ce + ce-core,pin 来自 tag 上已提交的 manifest.env——O83 逆转,信任锚 = pin 提交而非签名;插件/cargo 所有的副本按名拒绝并指出各自的更新命令;GUI 第十屏 update 同一文档同一 apply 入口;插件 SessionStart 通知缓存一天 + /codeeraser:update;MCP 第十四工具 update_check 只到检查;ce.update-report/0.1.0;e2e 经 file:// 端点 + CE_UPDATE_TARGET_DIR 隔离)→ 三面等价表由代码派生(clap 枚举 / Tauri 命令与屏 / MCP 目录 / hooks.json / plugin commands+skills)并逐字节门控(face_parity,具名省略写在表内)→ README 双语九节重构 + 仓内 demo(demo/:同一任务两跑只差 hook,七步真实判决,demo_replay 门)+ 全量文档同步(文档三律:中英分立 / 精简 / 全量)〔#16–#19 已落 485f108,2026-08-29;全量文档审计 14 面 61 条确认项同日就地修〕;v2.21(2026-08-29 晚):ADR-009 文档事实派生 S1–S9(登记册 + 投影 + 五通道 + 引文文本锚 + bless 单读者,已落 2026-08-29~30:2b1ee4e / d4416d3 / b128c9e / 7d5c7e5 / b1d50fc + f758cfb / 086939c / 4257221 / 70e3deb)→ archify 架构图两张双语(e1ac748 钉版、ignored 缓存、docs_diagrams 门,已落 6eba4cb)→ README 双语更新 + 瘦身(190→145 行,已落 d59134e)→ 途中两件计划外根修:demo 收敛弧(每个循环跑到自己的终点,已落 8c12f96)、guard 双语(守卫全部句子收进 guard/say.rs,README 加两景展览,已落 991b42f)→ 站点八页(首页终端块改由测试生成、两语先量后写故为不动点,裸事实审计零发现,已落 ab5871a 并已部署,线上 8/8 与 git blob 逐字节相同)→ v1.3.0 四渠道已发(2026-08-30:pin 29007de → 投影 045a121 → tag 6da4463〔首打被 verify-publish 按名拒 build-macos=failure,子仓 3e4645d 根修〕→ Release 十资产 + crates.io 1.3.0 + 官网 deploy + npm 1.3.0;发版后三轮自查全修 da4df74 / 194dd89 / 7e23591)→ 首页三张 GUI 图改由产品自己生成(ADR-009 最后一个未派生面:scripts/shoot_gui.js 用无头 Edge——即应用自身的 WebView2 引擎——跑真 gui/ui,喂 CLI 出的三份报告文档,而那正是 webview 会收到的那份〔ce … --format json 与 faces::* 调同一个 report_json,跑在同一次 judge::run 上〕;it/site_screenshots.rs 五腿钉住 git 祖先关系〔界面动过而图没重拍即红〕、整窗尺寸、alt 文本不得手抄数字、收据 contracts/gui-shots.json 的 schema 等于代码当下的三个 SCHEMA_ID〔界面不动而报告形状动了的那条路,第一腿拦不住〕、site/assets/ 每个文件都有门认领〔即本缺陷所属的类〕。手摆的旧图曾同时错报八格页签、ce.join-report/0.1.0、把已是子模块的 cli/tests 量在树内、以及 alt 文本里一个结构分数 854〔实为 832;与首页终端块的 953 不是同一个面,勿混〕;发版前自查又抓出取景器不可复现——每张图以点按钮开场而按钮有 0.12s 过渡,同一份报告集连拍三次出三个摘要,修法用应用自己就应答的 prefers-reduced-motion,第六腿 it/site_shoot_motion.rs 守住这对分处两文件的耦合,gui-candidates.png 随之重拍,收据只在拍进 site/assets 时才写);T 轨 v2.26 墓碑残留第一段(2026-09-04 立项):步 1 计划书修正案 + ccm 重锁 → 步 2 度量层 cli/src/tombstone/(frames / names / surfaces / role / mod)+ 子仓单元测试 → 步 3 Stop/precommit 报告腿(feed 0.8.0)→ 步 4 PreToolUse feed-only 腿(会话级 R)→ 步 5 it 腿与 19 条夹具 → 步 6 it/tombstone_replay.rs 两语料回放 + docs/FPR-TOMBSTONE.md → 步 7 记账与门电(不发版);第二段只在 ≤ 1% 后另起 plan-set;第二段 v2.27(2026-09-04 立项,用户三裁):步 1 计划书修正案 + ccm 重锁 → 步 2 段级台账见证(role.rs 第三见证,K 由两语料回放定,FPR 台账第七轮)→ 步 3 [tombstone] 节(tier / budget / ledger / terms,canonical 进 knobs_digest,ce-toml 参考再生)→ 步 4 wire 6.6.0 tombstone/1 + CE.Tombstone(合取 / 地板 / 预算)+ golden + 三腿档位路由(guard / Stop / precommit)+ guard/say.rs 双语 + feed 0.9.0 → 步 5 ce commitmsg <file>(parity 表具名)→ 步 6 方法学册 14 + 十三→十四全扫 + 判决图两语重渲 → 步 7 docdup /// 合段修复(v2.28 修正案:merge_comments / node_seg 按节点最后内容行、DOCDUP_REV 5、五语料仪器重冻结、四语料 + 自仓前后对拍、FPR 第九轮、册 03 / 14 改写)→ 步 8 文档记账(README 双语 / plugin README / 参考再生 / CHANGELOG / PERF-BUDGET Stop A/B / VERSIONING)→ 步 9 门电 + 两仓推送 CI 绿 → 步 10 v1.6.0 发版链 + bench 入列 + 官网重部署(十步全交付,v1.6.0 发布 2026-09-05);T 轨 v2.29 语义层(2026-09-05 立项,用户三裁):步 1 计划书修正案 + ccm 重锁 → 步 2 ROI 度量(similar_replay 只读仪器:自仓 + 四语料每单元 top-1 与六通道证据整数,人工仲裁 ≥ 100 对冻结为 oracle,报 top-1 同角色精度 / recall@5;不达标即在此止步入账)→ 步 3 词袋与倒排表(cli/src/similar/ 分词 / 词干 / 六通道 / SCHEMA 16 三表 / 增量差分刷新 / SIMILAR_REV)→ 步 4 PPMI 联想(仓内共现表 + 查询扩展 top-m)→ 步 5 wire 6.7.0 similar/1 + CE.Similar + golden + SimilarProps 电池 → 步 6 三面(ce similar / MCP similar_units / GUI similar.js / parity 门 / Stop 审计加性 feed 键)→ 步 7 方法学册 15 + 十四→十五全扫 + 判决图两语重渲 + PERF-BUDGET → 步 8 复活批 A 判决正确性 7(O46 评分侧补 docdup 对生产者 / O22 克隆与文档轴质量改被判定对触及的文件数、分母改各自机会宇宙〔代码文件 / 文档文件〕 / O47 堆叠 join novel 落点〔dupSpans,wire 7.0.0 major〕 / O51 t1_twin 正向验收 / O63 daemon 核失败退避恢复 / §7.2 nth 改容器链锚〔fnv1a(外层单元键链)#序,ce.baseline/2,/1 按名拒绝并具名重立迁移〕 / O21 硬预算对拍腿;分数不可比随 CHANGELOG 声明)→ 步 9 复活批 B 发布信任链 9 + 产品小项 6 + O87 dependabot + macOS 每推(O84 两提交树哈希 provenance / O77 scripts/pin_release.js / O74 npm/ 入库 + 版本门 / O86 并发键常量 / O85 占位说明拒发 / O76 部署脚本串 verify_site / O79 气隙腿 / O78 HTTPS 周程腿 / O81 dedup SARIF 上传 / O24 / O50 ce erase --log 三面 / O25 实测断点 / O61 [ui] lang / O45 校准复现 / O49 重叠证明腿)→ 步 10 复活批 C 分发与证据门(O72 ce setup 跨平台接线、NSIS 钩子改调它 / O73 提权账户检测 / O70 两键产物〔先核 runner 可得〕/ O71 Homebrew tap + winget / O82 marketplace release 通道〔先核 ref 支持〕/ O75 crates 腿〔需用户放 token〕/ C-installer 动态腿〔先核可行〕/ O54 S3+ 目录边表 / O48 边级 GT 覆盖 / C-zone_tiers FPR 台账 / C-R-L2-4 多文件 FPR 仪器)→ 步 11 发版前全仓清点(codex 中转站 Workflow,只读 + 逐条双人反驳;补核 45 条中未具名的 2 条)→ 步 12 清点项逐条落实 → 步 13 全量文档(README 双语「已知限制」结项句改写 / plugin README / 参考再生 / CHANGELOG / PERF-BUDGET / VERSIONING / 官网八页)→ 步 14 门电 + 两仓推送 CI 绿 → 步 15 v1.7.0 发版链(Release / crates.io / 插件 / npm / 官网 / 本机三份齐平)+ bench 全序列同一坐下入列(含 v1.6.0 行);T 轨 v2.30 语言扩展(2026-09-24 立项,用户三裁):步 0 计划修正 v2.30(横幅句 + 本表 + 设计册 §14 拍板记录)+ ccm 重锁 → 步 1 骨架(七 crate 钉版〔Ruby 那一个已随范围撤回〕+ 两份 Cargo.lock + NOTICE、Lang 六行保留码 15–20〔无扩展名、scan_only、无文法;翻位随各语言自己的步、HTML 在步 5——理由记在设计册 §1〕、fingerprints()、judgedMask 上 scan/graph 请求〔proto 7.2.0〕、核两处边界改读 mask、golden 重生、hs_grammar_pin 扩为 grammar_pins 十三文法〔今十二〕;门 = 既有五语言四语料 16 家族报告逐字节不动;已交付 2026-09-24)→ 步 2 C/C++(LangSpec 共表、Declarator 命名〔scan/declarator.rs:定义须有 body / 形参表 / 名叶,体内嵌套定义吸收,类内无 type 须特殊成员,名去模板实参——D24–D28〕、可见性、include 站点 / 阶梯 / compile_commands.json / [graph.search_roots]、编译单元角色位、电池 + lizard 对拍〔lua 116/118、fmt 394/420 join,两侧独有 18 条全归因〕、D 表落册;已交付 2026-09-24)→ 步 3 Java(call_fields 机制、按文件头声明的包建类索引〔javac 的读法;设计初稿写的是从目录反推源根〕、type_ref 站点 + JDK 名表、注解 Registration、可见性;精度三件套先于阶梯——slice + sample 冻结提交 → 独立代理盲判 GT 提交 → 阶梯与精度册,type_ref 单独出行;提交 A〔表、站点、可见性、电池、对拍与考题冻结,考题两语料 gson + jsoup——册 §14 第 15 条〕已交付 2026-09-24;提交 A′〔盲评真值:四个独立 Opus 代理各判 25 道,100/100 零失配,external 63 / 语料内 36 / none 1〕已交付 2026-09-24;条件不抬嵌套〔用户裁「条件都不算」,全语言,coc_nesting_kinds 的项带语句体位置,设计册 D31〕已交付 2026-09-24;提交 B〔阶梯四级 + JDK 名表 + 精度册:gson 12/12、jsoup 22/23,整体 34/35 = 0.971,type_ref 26/26〕已交付 2026-09-25)→ 步 4 Lua + R(调用站点表 CallSite〔每行只写 callee 名、实参名与标签,调用结点与 callee 字段读 LangSpec 的 call_kinds / call_fields;设计初稿写的是每语言一条 CallArg〕、各自阶梯 / 可见性 / Protocol 表;R 的具名逗号在 ast::entries 一处读作分隔符〔设计初稿的形参旋钮不设〕;各自三件套先于阶梯,两语言考题各两语料〔册 §14 第 17 条〕;提交 A〔表、函数值命名、站点、可见性、电池、lizard 对拍与考题冻结〕已交付 2026-09-25——查重预算 54 → 59 具名入账:新多的五处都是 LangSpec 表与表同形,..BARE 缺省底座实测只消两处且会拆掉逐字段的完整性检查,不采〔ce.toml 台账〕;提交 A′〔八个独立代理盲评两语言各 100 道,四张真值表;R 的包目录真值与宇宙外的候选漏检各入审阅门〕已交付 2026-09-25;Lua 考题第二代〔用户裁「现在支持」:pcall / xpcall 保护的加载读成它保护的那次调用,站点宇宙 luarocks 607 → 702、koreader 5,025 → 5,058;顺序门读首个提交、原地重写会留旧提交,故整门换代:第一代五份档按名退役,第二代重新盲评后阶梯才上〕已冻结 2026-09-25;A2′〔四个新起的独立代理盲评第二代 100 道,与第一代共有的 97 道判词 97/97 相同,两张 v2 审阅表冻结〕已交付 2026-09-25;B〔ladder/lua.rs 三级:搜索目录 = 仓根 / src / lua / 声明根 + 树里文件写进 package.path 的字面模板(lua_path.rs,遍历时读、进 resolve_key)、dofile 同目录再仓根、标准库与 LuaJIT 内建 18 名先答 External;ladder/r/ 三级:source 同目录 → 仓根 → 声明根、library / requireNamespace / pkg:: 按在域 DESCRIPTION 的 Package: 答包目录、无则 External;DESCRIPTION 入解析器配置,其 Collate / R/ 直属文件入 ROLE_DECLARED,R 入口目录按包根读,R 包结点只展开到它的代码;三条阶梯共用 paths.rs;九语料 90 面对拍七种既有语言字节同〕642e919 + B′〔精度册 luarocks 10/10、koreader 75/75、covid19model 18/18,stringr 站内真值为零由宇宙台账检验(55 站点解出 100 %);在 B 之上生成——顺序门要 generated_from 严格晚于 Lua 第二代审阅表的提交 f473c39〕已交付 2026-09-25;步 4 收口)→ 步 5 HTML(Attr 站点、html.rs 阶梯〔三件套先于它〕、节锚单元、docdup kind 3 + shed 与骨架前缀表〔同一次 DOCDUP_REV +1〕、自食 site/ 八页与 gui/ui;提交 A〔判决集、站点、节锚、docdup 第四种段与 DOCDUP_REV 6、考题冻结,连同步 2–4 遗留的根修:走查的构建产物规则〔scan/outputs.rs〕、Java 源集〔java_sets.rs〕与 own_unit、Lua 的 require 多找引用文件自己的目录、按走查判分、精度册的新鲜度门与发版重放〕;Java / Lua / R 的精度册随 A 删档,与 HTML 的一起在阶梯之后重生成一次;A″〔盲评真值 100/100〕与 B〔html.rs / html_head.rs 阶梯〕已交付 2026-09-26;B′〔九份精度册在 5b 收口后的 92ed92e 上生成、dirty = false:Java 36/36、Lua 86/86、R 18/18、HTML 75/76,宇宙解出率与上一代的移动记在 EVAL-SET-LANGS.md「B′」一节〕已交付 2026-09-28;步 5 收口)→ 步 5b 边界清零(v2.30 修正案 2026-09-26,用户裁「1.8.0 之前修完」——另两个选项「1.8.0 先按原计划发」「先只修新语言相关的」;理由:1.8.0 本就因加语言分数不可比,一起进只断一次可比性:全仓普查写明的 215 条边界〔立场 132、用户裁定 42、待定 9〕里能按规范修对的 35 条全修——19 条在引用阶梯〔Rust 手折 use 与顶层组、pub use x::* 与 pub extern crate 门面,TS 的 Node 内建与 node_modules 逐级上找、exports 子路径模式、extends 链不设跳数上限与数组形、extends 目标入 resolve_key,Haskell 跨包导入与 PackageImports,Java 断行导入、继承来的成员类型、同文件第二个顶层类型,Go 注释同行的包子句,C compile db 按 clang / GCC 规范补全,R 的 base::source 与形参部分匹配,Markdown setext 标题、多行原始 HTML 锚点、列表内缩进代码〕,其余在扫描〔C++ 原始字符串一记号、Lua 局部遮蔽、Go 成组形参〕、docdup、四分类〔setext 与 ATX 规范、Python __all__ 字面变更、K&R 定义〕、提及〔URL 说明符去凭据与查询串、Go 包级 const / var〕、churn 锚、结构分的同引代理、GUI 同一快照、墓碑 commentChar=auto;每条配电池与负向探针,受影响的冻结件按复活协议具名重冻结,待定 9 条按原则逐条裁定;九个提交全部交付 2026-09-26~28〔5b-1 f607787 / 5b-2 b84a423 / 5b-3 5259fac / 5b-4 e094a84 / 存疑批 cabbb45 / 5b-7 cbfeaeb / 5b-8 2263995 / 5b-9 04e9723 / 5b-6 92ed92e〕)→ 步 6 评估(C/C++ 三件套补做〔阶梯已随步 2 提交,盲判靠流程;提交 A = 考题冻结,c / cpp 各一语料 lua/lua · fmtlib/fmt、各 100 题,顺序门对 ladder_first 的两门改核反转本身,已交付 2026-09-28;提交 D = sonar_whitepaper 扩表〔四张表 22 行〕+ cognitive.rs 两处泛化的等价证明〔十一套文法 node-types〕,已交付 2026-09-28、提交 B = 盲评真值两张表〔四个独立 Opus 代理各判 25 道,lua 25 / 74 / 1、fmt 83 / 17,C 行改 reach: Tree〕已交付 2026-09-28、提交 B′ = C 族阶梯第四级 include/ 惯例〔真值 fmt 11/17 要它;只问无编译链的文件、不读构建脚本;External → R5,GRAPH_REV 22〕已交付 2026-09-28、提交 C = 精度册〔lua 73/73 · fmt 15/15 = 1.000,召回 73/74 · 15/17,宇宙解出 98.1 % / 96.2 %,考题两行 stage 翻 Scored〕已交付 2026-09-28、提交 E = 逐语言 FPR 台账〔六语料各 400 提交,按真阳判据误拦全 0,严格口径 r 4.71 % 来历入账,fpr_lang_gate.rs 钉 judged_mask 每一位〕+ PERF-BUDGET 文法体积〔+5,748,224 B / +28.9 %〕已交付 2026-09-28〕;步 6 已交付)→ 步 7 文档与事实(已交付 2026-09-28:四份只读审计的确认项全落——README 双语 / 官网四页与技术栈图 · 架构图 / 册 01·02·06·09·11·13·14·15 与索引 / VERSIONING 7.2.0 条 / 生成页 ce-toml / 评估台账 / 计划横幅 / CHANGELOG 三处笔误;册 01 六十四处两段式区间统一为区间写法、十三处倒序纠正;count:grammars 升为 Lang::with_grammar 面、刮取层 21 → 20;引文重签)→ 步 7b 判决回迁三件(v2.30 修正案 2026-09-24,用户两裁「搬前两处,随 1.8.0」+「塞进 1.8.0」:① erase 的 close_targets + licence 择优〔cli/src/erase/mod.rs〕→ erase/1 加性 targets / kept;② structure 的 STYLE + pattern_code〔cli/src/structure/tree.rs〕→ structure/1 加性 patternShapes;③ CoC / 圈复杂度 / 最大嵌套的规则应用进核——Rust 只送 LangSpec 表分类后的结构事件流,核算三数,白皮书电池改 Haskell props;每件以五语料分数逐字节等价为门,wire 按 proto minor 加性;解析不搬〔硬约束 1〕、禁止为占比写代码〔ADR-008 纪律〕;①② 已交付 2026-09-28〔erase/1 加性 targets / kept——核算目标闭包 CE.Erase.Cost.keptRows;structure/1 加性 patternShapes——核 CE.Structure.Shape 查表分类;golden +9 = 144 对;十语料十面旧 / 新对拍 100/100 字节同;查重预算 57 → 51 具名下调〕,③ 已交付 2026-09-29〔scan/1 加性 events(十三位事件流,第七个上限维度)/ derived(每单元三行、递归之后);核 CE.Scan.Complexity 折三数、CE.Scan.Events 十六条拒绝按名;Rust metrics/{cognitive,cyclo}.rs 与 scan/coc.rs 删除、metrics/events.rs 只列事件;白皮书册 contracts/fixtures/scan/whitepaper.ndjson 38 行两半共读;golden +8 = 152 对;十语料 + 自仓干净树十面对拍 110/110 字节同;查重预算主 51 → 50、子 119 → 91 具名下调〕;步 7b 至此收口)→ 步 8 v1.8.0 发版(分数不可比声明、基线具名重立、bench 入列、渠道齐平;已交付 2026-09-29:bump 12e4bf21〔CI 36561146302 三平台绿〕→ draft 36564044813 五目标十六资产〔Windows ce sha256sum -c OK、--version 1.8.0〕→ pin 2f0ef4c4〔pin_release.js --bless 十五枚 = SHA256SUMS 两向相符;CI 36566057572 三平台绿〕→ 说明先写到 draft → tag = pin → verify-publish 36568493789 绿、2026-09-29T12:53:53Z 发布、release → 2f0ef4c4;三条可选腿无 secret 只印 notice,手动补齐:crates.io 1.8.0(registry newest)、tap Formula/codeeraser.rb 逐字节 = 仓内文件、winget PR microsoft/winget-pkgs#443270「New package … 1.8.0」〔1.7.4 的 #437832 按「一版本一 PR」撤掉并写明去向;bot 挂 Needs-CLA,用户裁后代贴 agree〔comment 5891663540〕即摘,转 Azure-Pipeline-Passed + Validation-Completed〕、官网 deploy_site.js 首跑 8/8 无 beacon、插件 data bound-1.8.0.env 两枚 sha 等 pin、桌面 1.7.4 的 ce update 读到 1.8.0 pins verified;post-publish dispatch 36571472817十三工位全绿(三 build + rehearsal 五目标 + packaging-live 双平台 + setup-wiring 双平台 + starter-https);bench 七行在 tag 后同一坐次单量(2f0ef4c4 干净树、2026-09-29、空闲 5.7 h、CPU 9 %;p50 ms check 4643 / deadcode 1482 / dedup 冷 13929 暖 650 / docdup 2137 / hook 50 / scan 907,check 行的 max 8340 = 索引重建后第一跑填 T3 判决缓存),七面重生成、README 双语芯片随祝福;npm 与桌面装机等用户在场);依赖 1 先于一切,2/3/4/5 可并行,5b 在 5 之后、6 之前,6 随各语言步收口,7/7b/8 最后;T 轨 v2.31 分析轨(2026-09-25 立项记录,2026-09-29 细则立、十二步锁定;设计权威 = reference/analysis-track.md §12):0 细则与立项(已交付 2026-09-29)→ 1 查询 A(已交付 2026-09-29:核 CE.Query.* 十三模块 + QueryProps 十二腿 + ReferenceQuery 200 例等价 + golden 六对 + 7.3.0 + Spec.hs 拆 SpecProbes.hs〔四条探针腿;设计名 Batteries.hs 按搬出的内容改〕+ 子仓 fixture_contract::regen 腿)→ 2 查询 B(已交付 2026-09-29:Rust cli/src/query/ 词法 / 图例 / 事实装配 / wire / 回标、ce query / ce rules、[rules] file、前奏八条、MCP 两工具、GUI Query 屏、自仓 ce.rules 九条 + 子仓三条 + CI 两根第七腿、册 16 + 官网 analysis 页对、golden 六 → 八对)→ 3 死代码 A(已交付 2026-09-29:核 CE.Flow.* 八模块 + FlowProps 六十腿 + ReferenceFlow 轨迹参考 200 例 + golden 六对 + 7.4.0)→ 4 死代码 B(提交 A 已交付 2026-09-30:Rust 十语言 FlowSpec 表 + 降表十三模块 + flow/1 接线;提交 B 已交付 2026-09-30:考题仪器 + 二十一份冻结档 + 登记册 EVAL-SET-FLOW;提交 B′ 已交付 2026-09-30:盲判 1,197 题 + 十份审阅档;提交 C 已交付 2026-09-30:十份精度册 + 四态门 + 出处门,judged = Python / TSX / Go / C / Java / Lua / R;提交 E 已交付 2026-09-30:降表回修八类、第一代精度册退役;提交 F 已交付 2026-09-30:第二代考题(cpp / r / rust / typescript)的宇宙与样本 + 批次提示读法一节;提交 D1 / D1′ 已交付 2026-09-30:回放台账仪器 + 执行者(台账阶段 Pending;D1′ 让三台账的冻结件经 CE_FPR_OUT 写到仓外);提交 F′ 已交付 2026-09-30:第二代盲判四门 20 批 454 道 + 四份第二代审阅档、登记册拆出第一代归档册;提交 G 已交付 2026-09-30:十份精度册在 F′ 的干净树上重生成、十语言全部 judged、掩码十位全填(§13 第 30 条);提交 D2 已交付 2026-09-30:回放台账十行冻结件 + 三张表(台账阶段 Frozen);步 4 至此收口)→ 5 死代码 C(已交付 2026-09-30:ce flow、守卫腿 daemon 2.2.0、Stop 行、[flow] tier、MCP、GUI 报告枢纽 flow 族、册 17)→ 6 合并 A(落地第一部分已交付 2026-09-30,与步 7 同一提交:核 CE.Merge.* 七模块、Ted 回映射、MergeCases / MergeRefusals / MergeProps、golden 六对、7.5.0 含 clone/1 可选 leaf 列)→ 7 合并 B(落地第一部分已交付 2026-09-30:Rust 叶子哈希 / 位置类列〔slot 表住 cli/src/merge/〕、组装配、ce merge、MCP、GUI、冻结建议集 + 对判决盲的抽样与批次、册 18;落地第二部分已交付 2026-09-30:四个独立判官的盲判、审阅档与精度册〔同一提交,§13 第 36 条〕、登记册 docs/EVAL-SET-MERGE.md,feasible_agree 83 / 100、reason_agree 77 / 100、params_agree 45 / 100;第二代第一部分 2026-10-01:九条裁定落进核与位置类表、冻结集 / 抽样 / 批次第二代;第二代第二部分 2026-10-01:四个新判官的盲判、审阅档与精度册〔同一提交〕,feasible_agree 96 / 100、reason_agree 92 / 100、params_agree 87 / 100,可行性精度 46 / 50、召回 46 / 46)→ 8 架构 A(已交付 2026-09-30,与步 9 同一提交:核 CE.Arch.* 八模块、ArchCases / ArchRefusals / ArchFasProps / ArchProps、golden 七对、7.6.0)→ 9 架构 B(已交付 2026-09-30:Rust 表装配含 pkgEdges、ce arch、MCP、GUI、册 19;冻结自仓读数 arch-self-v1.json 在落地提交的干净树上重生成,是落地后的下一提交)→ 10 全量文档与事实 + 语言条实测记账 + 官网新页对 → 11 发版 1.9.0;依赖 0 先于一切,1→2、3→4→5、6→7、8→9 四条链按序落地(2026-09-30 用户令「加速推进,并行开发」:链可在工作树车道并行开发,落地仍按此序,一条链的落地提交才带它的 proto / golden / 事实与 parity)、每链收口时既有家族十语料十面对拍同;10 / 11 排在 T 轨 v2.32 步 0–7 之后(2026-10-01 用户裁 1.9.0 推迟到 v2.32 做完再发:文档面随 v2.32 步 8、发版即 v2.32 步 10);T 轨 v2.32 权威轨(2026-10-01 立项,十一步;设计权威 = reference/authority-track.md §12):0 计划修正案与立项(2026-10-01)→ 1 定义进核 A(核 CE.Lang.* 数据模块 + 契约 + LangProps + tables/1 golden,7.7.0)→ 2 定义进核 B(Rust tables.rs + 缓存 + 消费者改读 + 定义文本删除,十语料十面字节同)→ 3 文档骨架样板(新五族 + 绑定器 + 切换门)→ 4 骨架 (a)(b)(check / score / structure / join;graph 四面)→ 5 骨架 (c)(d) + CE.Text 双语目录 + 守卫句 → 6 删旧 face / console / ZH_TSV、8.0.0 退役旧键、parity 门改读骨架 → 7 老家族参考实现与电池(六族,可与 3–6 并行车道)→ 8 全量文档 + 语言条读数记账 → 9 口径类裁定(2026-10-03 由 T 轨 v2.33 取代)→ 10 发版 1.9.0(等 v2.33 达标:Haskell > Rust);依赖 0 先于一切,1→2、3→4→5→6 按序,7 可并行开发,8 在 0–7 之后,10 在 v2.33 达标之后;T 轨 v2.33 算法轨(2026-10-03 立项;设计权威 = reference/algorithm-track.md §6):0 立项(计划修正案:ADR-008 分工句、横幅、本行;零代码改动)→ W1 镜像退役 + 冷路径小件(query / structure / arch / config / update,既有请求加性)→ W2 引用阶梯(新族 resolve/1,十三语言精度册重生成)→ W3 候选与排序(T3 / docdup 候选、BM25 / PPMI、fourclass L1、score / join / merge 装配,既有族加性表)→ W4 CST 行导出 + 其上的算法(新族 cst/1:calls / callees、declared / visibility、mention)→ W5 flow 降表(flow/1 改送 CST 行,钩子探针 p50 增量 ≤ 10 ms);2026-10-04 文本过线修正案(零代码):W2a′ 简化 resolve/1(路径与说明符以字符串过线)→ W2b 其余七个阶梯 + 配置面逻辑,新增 W6 文本规则(钩子路径成员守 PERF-BUDGET 才落地)与 W7 报告渲染胶水;W1 / W2 / W3 并行车道、W4 导出器同时起、W5 等 W4;每波落地实读语言条、Haskell 字节数超过 Rust 即停;步 10 三面等价(ca057291)、步 11a 去碎片化(5efc9096)、步 11b 打磨纠错(ce3e7d4a)已落,语言条目标已达成(ce3e7d4a:Rust 2,216,787 / Haskell 2,317,409 B = 51.11 %)

依赖:M2←M1;M3←M2;M4←M3;M5-2←M4(churn 是三信号一腿,串行——A4);M5-3A←M5-2;M5-3B←M5-3A;M6 可与 M5 并行;M7 收尾;M8←M7(成长轨,契约在册——v2.2;G1 IP 材料可与 M7 并行,商标先于 P6);M9←M8(批 0 先行,批 1–7 依批序,批 6 可与 4/5 并行;批 8←批 7,批 9←批 8,终扫←批 9——v2.10;K+1/L 为收口后轨:L←K,甲乙丙三批可并行;M←L(评分束吃甲的符号事实),N 独立——v2.17)。总计粗估 4–6 个月。

7. 质量与测试策略

  1. 跨语言契约测试:contracts/ 同一批 golden fixtures,Rust 生成 IR、Haskell 判决, round-trip 断言;schema 变更必须 bump 版本(机制 M0 起,内容 M4 定稿)。
  2. 交叉核对:度量与 lizard / radon / rust-code-analysis / Sonar 例题对拍, fixtures 来自钉死 commit 的真实仓库随机抽样,分歧 case 显式收录。
  3. property-based:Rust 侧 proptest(索引增量 ≡ 全量重建);Haskell 侧 M4 用 base-only 确定性测试;M5-2g 起判定不变量属性电池(caps 单调/边表严格升序/SCC 性质/Cost 消融; 固定种子 base-only 生成器,不动 freeze——2026-08-12 拍板,取代"推迟 M5 再评")。
  4. 评分敏感性测试(B2):扰动任一权重断言总分变化——直接针对 fuck-u-code 的 死字段 bug 形态。
  5. Dogfooding:M1 起 CI 对仓库强制 ce scan 退出码门;M5 起 core/(Haskell 支持就位)+ 棘轮(--fail-under 属 ce check)。本文件受行数棘轮与 docdup 约束。
  6. 性能预算进 CI 基准,回归即 fail。锚点如实标注:jscpd 3.44s/17K 文件是批扫 数据,只锚定 M2 的全量索引预算;热路径预算不由它推出,由 M0 分解表实测建立(A6)。

8. 风险登记册

# 风险 缓解
R1 Haskell/Windows 工具链 GHC 9.14 LTS 锁版 + M0 实测依赖可解;CI 必含 windows-latest;stdio 全程 binary mode;禁 DLL;未签名二进制的 Defender/EDR 误报风险 → 签名裁定不做(2026-08-19),SHA256 链承重,README 明示
R2 tree-sitter 语法 crate 漂移 核心锁 0.26.x、语法 crate 按 lockfile 钉住;升级走独立 PR + golden 全绿
R3 hook 延迟劣化 → 用户关插件 daemon + 增量索引;分解表预算进 CI;超时 fail-open:探针不可达时不输出任何决定(guard.rs 的 reasons 为空即早返),该次运行以 degraded 记入 observe feed 并进 doctor 降级计数——A9f;「降级为 warn」只发生在 ce.toml 无法解析这一条路上
R4 误报 → 信任崩塌 分级 warn/ask/deny + 演进路线(§4.2);deny 准入 = M4 FPR 门(≤1%);豁免带 why;每判决附量化依据
R5 竞品挤压(触发器式,A8;复扫例行已退役——用户令 2026-08-29「不用管竞品」,本行封存) 触发器 = 竞品发布写入当轮拦截 + 克隆判定两者兼备(2026-08-29 改写:原「diff 级 gating」已被 jscpd master / dupehound 达成而空位未失)→ 届时差异化收缩至三信号 join + 四分类、热路径查重改评估复用竞品引擎。复扫 2026-08-29(v2.18 步 #15 O11,67-agent 核验工作流 + 亲核 README):击发,带两条保留——① jscpd master 2026-08-19 合入 --baseline/--fail-on-new-clones/--baseline-from-ref(commit 251544b/4a72a70),CHANGELOG 仍在 Unreleased、最新发版 v5.0.16(2026-08-18)不含;② 触发器未点名的新入场 dupehound 已发布变更函数级 diff 门(check 退 1 + MCP check_duplication,同栈 winnowing),但不做写入时拦截;desloppify 原句仍在;Claude Code 2.1.251 无内置查重(#10170、#34535 均 closed not-planned)。裁定(用户委托取效果最好最优雅,2026-08-29):击发-观察,路线不动——三信号 join 早已随 H 批交付、四分类自 M4 在线,写入当轮 + join + 四分类的空位无人占;引擎复用不做:ADR-005 三条否决理由对 dupehound 逐字成立(批扫 CLI/MCP 进程、无常驻增量索引、外部运行时),dupehound 转 M 轮作 T1/T2 召回对拍方
R6 双语言成本先于价值支付(B1) Haskell 承重首战后移到 M4(判决层),M0 只付骨架+握手的最小成本;契约内容不提前冻结;core 不依赖跟随 GHC 版本发布的库(stan 教训)
R7 "处处 deny"招致反感 默认档位演进路线写死在 §4.2,不是永久 warn 也不是上来就 deny;排除模型 M1 内置
R8 四分类(L2)不达标 fallback 阶梯:退 L1(git+函数边界)仍可交付;deny 降级 ask 如实标注

9. 已拍板决策(2026-08-06 grill 问答,12 项,用户逐项确认)

License=Apache-2.0(LICENSE 已入库)· 前端=Rust 定案 · 仓库私有开发、M7 公开 · guard 默认档位=渐进路线(§4.2)· M1 语言集=TS/Python/Rust/Go/Markdown · 集成优先级=Claude Code 优先 · GUI=按 M6 · 发布节奏=M3 后 0.x 预览 · Haskell 边界=判决层(ADR-002 确认)· docdup 域=Markdown/纯文本 + 代码注释/docstring · CLI=ce(codeeraser 作 alias,M0 撞名核查)· 幽默评语=默认关闭彩蛋(--roast 开启)。

里程碑推进以本计划锁定版为准;任何"顺手先写点代码"的行为违反本计划。