# nexify 0.2.2 × graphify 图谱质量对比报告（黑名单补丁后复测）

- **日期**: 2026-09-02
> **注记（2026-09-03）**：验证基建已迁移，本文旧路径 `~/workspace/...` 现为 `~/clawspace/nexify-verify/...`（graphify-codewhale → comparison）。正文路径保留为历史事实。
- **对象**: `~/workspace/codewhale-snapshot`（Rust workspace，21 成员 crate，979 `.rs` + 286 `.ts`，476MB 源码快照）
- **工具版本**: nexify **0.2.2**（extract_version=7，含裸标签 fallback 常见名黑名单）× graphify 0.9.53（同前报告）
- **触发补丁**: 上一份报告（`COMPARISON-nexify-4219072.md`）定位的 ~2,484 条 std/builtin/DOM 碰撞名误绑
- **补丁内容**: `src/extract/builtin.rs` 四语义词表（CONSTRUCTOR / GENERIC_ACCESSOR / CONVERSION / RESULT_CONSTRUCTOR，≤2 字符一律拦截）+ `resolve_pending_calls` / fallback 候选双层拦截 + test 候选优先过滤 + vendored 目录（`patches/|vendor/|third_party/|vendored/`）排除 + `extract_version` 6→7

## 1. 总量与性能

| 指标 | nexify 0.2.1（补丁前） | nexify 0.2.2（本次实测） | graphify 0.9.53 |
|---|---:|---:|---:|
| 冷建图耗时 | 38.1s | **38.8s**（extract 22.1 + resolve 16.6） | 51.0s |
| 节点 / 边 | 153,640 / 224,557 | **153,640 / 224,557（不变）** | 52,415 / 153,295 |
| 跨文件绑定 calls 边（INFERRED resolved） | 24,860 | **21,423**（−3,437） | 5,122 |
| AMBIGUOUS | 306 | 252 | —（静默丢弃） |
| UNRESOLVED（落库可查） | 103,989 | **107,480**（+3,491） | 不产生边 |
| 性能回归基准 | — | cache_spike 单文件读取 **139.6µs**（µs 级达标） | — |

补丁**没有用召回换任何误绑以外的边**：节点/边总量、EXTRACTED 边（40,676）完全不变，减少的 3,437 条全部是 fallback 误绑转 UNRESOLVED（仍可查），召回仍为 graphify 的 **4.2 倍**。

## 2. 误绑簇清零验证（补丁核心目标）

| 误绑簇（补丁前） | 补丁前 | 补丁后 |
|---|---:|---:|
| `Err(...)` → `protocol/src/ids.rs::Err`（type alias） | 2,351 | **0** |
| `Response.json()` → `github.test.ts::json` | 48 | **0**（残余 2 条为 test 文件自身同文件 EXTRACTED，合法） |
| `Response.text()` → `*.test.ts::text` | 8 | **0**（同上） |
| `.write()` → vendored `patches/`/test 文件 | 77 | **2**（残余 2 条为 `integrations/verifiers-codewhale/` 内部非 vendored 路径的 INFERRED，`patches/` 目录规则不覆盖，量级无害） |
| **合计** | ≈2,484 | **≈0**（100% 目标达成） |

新增拦截的连带收益：长度 ≤2 名（`tr` 825 条）与其它 common-name（128 条）不再唯一命中误绑，共 −3,437。

## 3. 抽查回归（能力不回退）

| 抽查项 | 补丁前 | 补丁后 | graphify |
|---|---|---|---|
| `callers user_home` | 16（13 跨文件/跨 crate INFERRED） | **16（不变）**，含 `crates/tui/src/config/home.rs:34` 跨 crate 重命名依赖 | 3（全缺） |
| `path effective_home_dir path_env` | 3 hop 有向路径 | **3 hop（不变）** | No directed path |
| `tr()` 调用边 | 877（76 文件） | 338 保留（同文件 EXTRACTED + 限定/接收者绑定）；825 条裸标签转 UNRESOLVED | 23 |
| 同名符号聚合 `defines/defined-by` | 25 个同名定义聚合 1 逻辑实体 | 不变 | 无实体视图 |

`tr` 说明：825 条被 ≤2 字符规则拦截。其中大部分经上次抽样证明是真调用——按"宁漏勿错"原则可接受；后续可为项目内高频短名开白名单例外（未做，属可选增强）。

## 4. 精度定位（补丁前后）

| | graphify | nexify 0.2.1 | nexify 0.2.2 |
|---|---|---|---|
| 抽样误绑 | 0/30 | ~10% | **目标 0%（误绑簇实测清零）** |
| 召回 | 5,122 | 24,860 | 21,423 |
| 绑定手段 | 仅裸标签唯一命中 | + 限定路径 / workspace crate / 接收者感知 / 实体去重 | 同前 + 常见名/测试/vendored 三道闸 |

nexify 补丁后同时拿到 graphify 的"零误绑"长处（在同等误绑簇上）和自身 4.2× 召回 + 状态诚实（AMBIGUOUS/UNRESOLVED 可查）的全部优势。graphify 仍独有：references 类型使用边、Leiden 社区、多语言覆盖（~40 种）与导出生态。

## 5. 结论

- 补丁精确命中目标：**2,484 条系统性误绑 → ≈0**，残余 2 条 INFERRED 为非 vendored 路径的正常唯一命中，量级无害
- 零性能损失（38.8s vs 38.1s，µs 级查询达标），零有效召回损失（减少的边全部为已证实的误绑）
- 唯一已知副作用：`tr` 类短名 825 条真调用降级为 UNRESOLVED，可选白名单为后续增强
-nexify 相对 graphify 的差距只剩"宽知识图谱"维度（references/社区/生态），调用图质量维度已全面反超

## 附：产物位置

- 本次复测缓存：`~/workspace/codewhale-snapshot/.nexify/cache.db`（extract_version=7，38.8s 冷扫）
- 上一轮 v7 缓存备份：`/tmp/nexify-v7-cache.db`（可删）
- graphify 图谱：`~/workspace/graphify-codewhale/graphify-out/graph.json`（80MB，未重跑，数字沿用上轮报告）
- 补丁提交：nexify `2c2db25 feat: bare-label builtin name guard for cross-file fallback binding`（0.2.2）
