CodeEraser
架构

技术栈

度量在 Rust,判决在 Haskell,中间只有一条版本化 wire:ADR-002 划下、由 ADR-008 继续压实的边界。解析、抽取、索引止于策略之前;分数、棘轮与授权留在核内。

判决核GHC 9.14.1
wireNDJSON · proto 7.10.0 · SemVer 协商
CodeEraser 详细技术栈:Rust 度量面、NDJSON wire 与十六个判决族、Haskell 判决核、五个产品面,以及 SHA256 发布钉扎链
组件地图。每个框都对应 cli/、core/、 gui/、plugin/、contracts/ 或发布工作流中的实现边界。打开原尺寸 SVG。
数学

数学在哪一层

Rust · 度量
滚动哈希是 Rabin-Karp,h = (h - t[i-k]*top)*BASE + t[i],跑在 FNV-1a 叶子哈希之上。
wire
过 wire 的是原始计数、绝不是比值,否则「复核发生在 Haskell」就是一句空话。
Haskell · 判决
证据与判决之间没有任何采样温度,判决层里没有浮点数,回路里没有模型。
产品面
同一棵树在任何机器、任何时刻都产出同样的字节;因此关于代码健康度的分歧靠重跑那个数、读它指向的 file:line 来收场。
发布
release.yml 先为 draft 工件计哈希,再由提交的 pins 绑定这些字节。
纪律

靠什么守住诚实

项目给自己把门

每次 push,ci.yml 都在本仓运行七条产品腿:scan、dedup 棘轮、地板 911 的 check、deadcode、docdup、erase 与 rules。

棘轮只缩不涨

ADR-006 把逐文件上限与离散违规集冻结在 ce-baseline.json:增长必须具名重立,日常清理会自动收紧基线银行。

尺寸线可按路径类声明

ce.toml 的 [[rules.class]] 为一组 glob 声明自己的尺寸与复杂度线和棘轮容差(至多 64 类,声明序首中),分数、ce scan 阶梯与守卫钩子读的都是文件自己那条;过线的只有类下标、其 knobs 与整份解析配置的 knobsDigest,类名与 glob 永不过线。

05 · 评分一节的各列

文档各有权威

docs_gate.rs 从二进制生成 CLI 与配置参考;引文、导航和常数测试检查方法学,所有 benchmark 表面由同一 JSON 合约逐字节门控。

误报纪律

判定层:600 个样本命中 0 个(门 ≤ 1%);写入探针:0/630 误报。其余规则保持 observe。每次晋级都须写入 CHANGELOG 台账。

擦除是确定性的

erase/gather.rs 组装事实,CE.Erase 只授权满足安全谓词的行;应用前逐目标验哈希,落笔后重跑来源家族,幸存判决响亮失败。没有 LLM 负责重写。

发布分成两段

release.yml 先为 draft 工件计哈希,再由提交的 pins 绑定这些字节;tag 作业下载同一批工件,检查 CI 与每个 pin,拒绝计划外资产,全程不重建;SHA256SUMS 覆盖全集可离线核对。同一组 pin 投影出 Homebrew 公式与 winget 三清单,verify-publish 随后把插件 marketplace 跟随的 release 分支快进。代码签名被刻意排除在设计外。

方法可以逐行检查

十九册方法学把每条公式链接到实现它的 file:line;docs_citations.rs 查引文台账,docs_nav.rs 查册集与导航。

Haskell 真正承重

只有核能计算分数与棘轮判决、授权 erase 行、决定 cycle 轴成员;属性电池会扰动这些判决,并以参考实现对拍小规模情形。

边界见 ADR-002 与 ADR-008; wire 见 contracts/VERSIONING.md;判决公式见 方法学索引。