# JSONMend 真值评测报告（I-4）

本文件由 `code/tests/eval/run_eval.py` 生成，请勿手工编辑。

| 项 | 值 |
|----|----|
| 登记 | [EVAL_REGISTRATION.md](EVAL_REGISTRATION.md) sha256 `848538910dd60b6c` |
| 生成器 | `code/tests/eval/corpus.py` eval-2，种子 20261015 |
| 语料 | `code/tests/eval/corpus.jsonl`，1200 条，sha256 `c528375a0d996a78` |
| 生成跳过 | 1203 次尝试因算子不适用而丢弃（登记 §5） |
| 被测二进制 | `./_build/native/release/build/cmd/jsonmend/jsonmend.exe`（sha256:30ba263133108f6f, 896320 bytes） |
| 工具链 | `moon 0.1.20261012 (748b63c 2026-10-12)` |
| 运行时刻 | 2026-10-15T18:06:26Z |
| 退出码 | 0（0 = 全部验收判据通过） |

## 1. 总体

| 指标 | 值 |
|------|----|
| 用例数 N | 1200 |
| 恢复率（value == truth） | 100.00%（1200/1200） |
| 失败率（rc != 0） | 0.00%（0） |
| 差异数（value != truth） | 0 |
| **漏标率**（差异中标签为 exact/cosmetic） | n/a（0/0） |
| 诚实标红率（差异中标签为 lossy） | n/a（0/0） |

## 2. 分标签

| 标签 | 用例数 | 其中恢复 | 该标签下的恢复率 |
|------|--------|----------|------------------|
| `exact` | 180 | 180 | 100.00% |
| `cosmetic` | 769 | 769 | 100.00% |
| `lossy` | 251 | 251 | 100.00% |

标签是「可执行性」的承诺：`exact`/`cosmetic` 表示结果可以直接执行，
`lossy` 表示修复过程发明或丢弃了信息。上表说明该承诺是否成立。

## 3. 分族

| 族 | N | 恢复 | 恢复率 | 差异 | 漏标 | exact | cosmetic | lossy |
|----|---|------|--------|------|------|-------|----------|-------|
| `clean` | 60 | 60 | 100.00% | 0 | 0 | 60 | 0 | 0 |
| `ws` | 60 | 60 | 100.00% | 0 | 0 | 60 | 0 | 0 |
| `quotes` | 60 | 60 | 100.00% | 0 | 0 | 0 | 60 | 0 |
| `trailing_comma` | 60 | 60 | 100.00% | 0 | 0 | 0 | 60 | 0 |
| `double_comma` | 60 | 60 | 100.00% | 0 | 0 | 0 | 60 | 0 |
| `delete_comma` | 60 | 60 | 100.00% | 0 | 0 | 0 | 60 | 0 |
| `delete_colon` | 60 | 60 | 100.00% | 0 | 0 | 0 | 60 | 0 |
| `fence` | 60 | 60 | 100.00% | 0 | 0 | 0 | 60 | 0 |
| `prose` | 60 | 60 | 100.00% | 0 | 0 | 0 | 60 | 0 |
| `comment` | 60 | 60 | 100.00% | 0 | 0 | 0 | 60 | 0 |
| `bom` | 60 | 60 | 100.00% | 0 | 0 | 60 | 0 | 0 |
| `dup_key` | 60 | 60 | 100.00% | 0 | 0 | 0 | 60 | 0 |
| `mismatched_closer` | 60 | 60 | 100.00% | 0 | 0 | 0 | 60 | 0 |
| `extra_closer` | 60 | 60 | 100.00% | 0 | 0 | 0 | 60 | 0 |
| `literal_case` | 60 | 60 | 100.00% | 0 | 0 | 0 | 49 | 11 |
| `control_char` | 60 | 60 | 100.00% | 0 | 0 | 0 | 60 | 0 |
| `missing_value` | 60 | 60 | 100.00% | 0 | 0 | 0 | 0 | 60 |
| `ellipsis` | 60 | 60 | 100.00% | 0 | 0 | 0 | 0 | 60 |
| `truncate_child` | 60 | 60 | 100.00% | 0 | 0 | 0 | 0 | 60 |
| `truncate_string` | 60 | 60 | 100.00% | 0 | 0 | 0 | 0 | 60 |

## 4. 预登记验收判据

| 判据 | 结果 | 证据 |
|------|------|------|
| 漏标率为 0（结果 ≠ 真值不得标为 exact/cosmetic） | PASS | 0 条差异中有 0 条被标为 exact/cosmetic |
| clean 族全部 exact 且恢复率 1 | PASS | 60 条中 60 条 exact，60 条恢复 |
| 记法族恢复率 1 且标签不为 lossy（`null`→`None` 见判据 3b） | PASS | 889 条中 889 条恢复，889 条标签为 exact/cosmetic |
| 3b：`literal_case` 的 `null`→`None` 恢复原值且标签为 lossy | PASS | 11 条中 11 条恢复，11 条标签为 lossy |
| 丢信息族恢复率 1 且标签为 lossy | PASS | 240 条中 240 条恢复，240 条标签为 lossy |

## 6. 修订历史

| 版本 | 时间 | 语料 sha256 | N | 恢复率 | 差异 | 漏标 | 关键修订 |
|------|------|-------------|----|--------|------|------|----------|
| `eval-1` | 2026-10-15 | `5a435447f28eee72` | 1200 | 91.58% | 101 | 16 | — |
| `eval-2` | 2026-10-15 | `c528375a0d996a78` | 1200 | 100.00% | 0 | 0 | 语料：撇号歧义、裸 token 合并、标量根 prose、截断的祖先语义；实现：R015/R017/R021 降为 Info、新增 R022、R018 判等（[EVAL_REGISTRATION.md](EVAL_REGISTRATION.md) §10） |

`eval-1` 的 16 条漏标与 84 条语料缺陷的完整归因见
[EVAL_REGISTRATION.md](EVAL_REGISTRATION.md) §10。

## 7. 结论与限制

见 [EVAL_REGISTRATION.md](EVAL_REGISTRATION.md) §9：本轮只覆盖合成语料的
单点变异，不覆盖真实模型分布、多处变异组合与 >1 MiB 文档；性能与内存见
[BENCHMARK.md](BENCHMARK.md)。

