{
  "added_at": "2026-10-27",
  "additional_evidence_urls": [
    "https://x.com/i/status/2110963427791487391"
  ],
  "category": "community-case-studies",
  "description_en": "A Chinese article breaks three versions of a Python CSV exporter that reproduces the Notes teaching app shipped with REA. It shows that a simple export-and-read-back test passes all three, while byte comparisons against the official JavaScript formatter on 215 fixed inputs catch each one. The author also connects REA 6.5.0 over MCP, reruns its JavaScript analysis and checks that an edited evidence record is rejected on import; this is a study of acceptance checks, not a new reconstruction.",
  "description_zh": "一篇中文文章把复刻 REA 自带 Notes 教学应用的 Python CSV 导出器故意改坏三个版本，展示简单的“导出再读回”测试能让三者全部通过，而以官方 JavaScript 格式化函数为参照、在 215 组固定输入上逐字节比较则能逐一识破。作者还通过 MCP 连接 REA 6.5.0，重新运行其 JavaScript 分析，并验证被改动的证据记录在导入时会被拒绝；这是对验收检查的研究，而非新的重建。",
  "entry_url": "https://awesomerea.org/resources/rea-notes-csv-oracle-mutation-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/rea-notes-csv-oracle-mutation-case/",
  "evidence_url": "https://x.com/i/article/2110962506604929025",
  "group": "rea",
  "id": "rea-notes-csv-oracle-mutation-case",
  "json_url": "https://awesomerea.org/resources/rea-notes-csv-oracle-mutation-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/rea-notes-csv-oracle-mutation-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/rea-notes-csv-oracle-mutation-case/index.md",
  "name": "Notes CSV export: an author-reported REA check of reconstruction oracles",
  "name_zh": "Notes CSV 导出：作者报告的 REA 重建验收器检查",
  "record_type": "resource",
  "relationship": "community-reported-mixed-workflow",
  "requirements": [
    "The 2026-10-16 article by @superfang119 follows the author’s earlier walkthrough, in which a Python reimplementation of the Notes app’s CSV export reportedly matched the original byte for byte on 215 inputs. It used Windows, Node 22.19.0 and rea-agents 6.5.0 through a temporary stdio client that listed 207 tools; the JavaScript analysis returned 6 files, 32 nodes and 45 edges. The author notes that this static graph locates the export path.",
    "The frozen byte contract quotes every title, doubles inner quotes and ends lines and the file with LF, for safe-integer ids and string titles. Each mutant changes one rule: quoting only when needed, leaving inner quotes unescaped, or dropping the final LF. A one-note read-back test passed all three. Against references from running the official JavaScript formatter on 15 fixed edge cases and 200 seeded inputs, the baseline matched 215/215 and the mutants differed on 26, 166 and 215 inputs.",
    "Changing one evidence field from 6 to 999 while keeping its evidence_id made the same REA server reject the import with evidence_integrity_mismatch and leave session evidence unchanged; the author adds that this detects tampering but cannot show an interpretation is correct. The article also cites, without rerunning it, a TH08 project fix in which a comparator missed a 128.0 constant written as 0.0.",
    "Analysis and implementation ran in the same Codex context, so the author states this is not clean-room separation, and the handoff prompts offered are proposals rather than a tested protocol. Scripts, mutants and outputs are not published; the three probes do not cover permissions, write failures, concurrency or the full interface. The target is REA’s own teaching sample, not a third-party product."
  ],
  "requirements_zh": [
    "这篇 2026-10-16 的文章由 @superfang119 撰写，承接作者此前的实测：其中 Notes 应用 CSV 导出功能的 Python 复刻版据称在 215 组输入上与原版逐字节一致。本次环境为 Windows、Node 22.19.0 和 rea-agents 6.5.0，经由临时 stdio 客户端连接，服务端列出 207 个工具；JavaScript 分析返回 6 个文件、32 个节点和 45 条边。作者指出，这张静态图能定位导出路径。",
    "冻结的字节契约要求每个标题都加双引号、标题内部的双引号写成两个，行尾和文件末尾都使用 LF，输入限定为安全整数 id 和字符串标题。三个变异版本各只改一条规则：仅在需要时加引号、不转义内部引号、删去末尾 LF。单条笔记的读回测试让三者全部通过。以官方 JavaScript 格式化函数在 15 组固定边界输入和 200 组固定种子输入上的输出为参照，基线 215/215 一致，三个变异版本分别有 26、166 和 215 组不一致。",
    "把一条证据中的字段从 6 改为 999 并保留其 evidence_id 后，同一个 REA 服务端以 evidence_integrity_mismatch 拒绝导入，会话证据保持不变；作者补充说，这能发现篡改，却不能证明解释正确。文章还引用了 TH08 项目的一次修复：比较器曾漏掉一个被写成 0.0 的 128.0 常量，作者未重新运行该项目。",
    "分析与实现在同一个 Codex 上下文中完成，作者明确表示这不是洁净室隔离，文中的交接提示词只是建议，并非经过测试的流程。脚本、变异版本和输出均未公开；三个探针也不覆盖权限、写盘失败、并发或完整界面。分析对象是 REA 自带的教学示例，而非第三方产品。"
  ],
  "targets": [
    "app"
  ],
  "url": "https://x.com/i/article/2110962506604929025",
  "verification": "source-reviewed",
  "verified_at": "2026-10-18"
}
