{
  "added_at": "2026-10-18",
  "additional_evidence_urls": [
    "https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/benchmarks/README.md",
    "https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/docs/verification/rea-engine/game-report-current-2026-10-14.json",
    "https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/scripts/recover-tictactoe-replica.mjs",
    "https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/scripts/verify-tictactoe-reconstruction.mjs",
    "https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/scripts/benchmarks/TicTacToeProbe.cs",
    "https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/benchmarks/tictactoe/LICENSE",
    "https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/README.md",
    "https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/THIRD_PARTY_NOTICES.md",
    "https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/LICENSE",
    "https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/package.json",
    "https://github.com/tatlead/TicTacToe-AI/tree/ce0f81b05e190dcfb72ea68c5fbb1114fa994a5a"
  ],
  "category": "community-case-studies",
  "description_en": "The author’s REA fork, posted as rea-engine and since renamed RE-Agent, decompiles the shipped .NET executable of the GPL-licensed TicTacToe-AI game, recompiles the recovered C# and resources, and repairs one decompiler error against the original IL. A differential probe runs original and rebuilt code on all 19,683 board assignments for one status method and compares six form renders. The report passes only that method; the whole game remains partial.",
  "description_zh": "作者的 REA 分叉（发帖时名为 rea-engine，后更名为 RE-Agent）反编译 GPL 许可的 TicTacToe-AI 游戏所发布的 .NET 可执行文件，重新编译恢复出的 C# 与资源，并依据原始 IL 修复一处反编译错误。差分探针在一个状态判定方法的全部 19,683 种棋盘赋值上运行原版与重建代码，并比较六张窗体渲染图。报告只判定该方法通过，整个游戏仍属部分重建。",
  "entry_url": "https://awesomerea.org/resources/rea-engine-tictactoe-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/rea-engine-tictactoe-case/",
  "evidence_url": "https://github.com/heaven-hm/re-agent/blob/a84c61e8baa65d445485722420a57ff4132b90d3/benchmarks/native-windows-ports/reports/targets/tictactoe.md",
  "group": "rea",
  "id": "rea-engine-tictactoe-case",
  "json_url": "https://awesomerea.org/resources/rea-engine-tictactoe-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/rea-engine-tictactoe-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/rea-engine-tictactoe-case/index.md",
  "name": "TicTacToe-AI: a bounded REA-fork reconstruction of one game method",
  "name_zh": "TicTacToe-AI：REA 分叉对单个游戏方法的有限重建",
  "reconstruction_method": "decompilation",
  "record_type": "resource",
  "relationship": "community-reported-mixed-workflow",
  "requirement_facets": [
    "testing",
    "scope",
    "prerequisites",
    "testing",
    "license"
  ],
  "requirements": [
    "The reviewed develop commit (2026-10-15) reports Feature PASS for CheckGameStatus over its declared 3^9 board domain and PARTIAL for the whole game. AI move selection and RNG, menus, timing and sound are unverified, the executables are not byte-identical, and raw terminal captures differ by one carriage return. The posts’ “byte for byte” wording applies to structured board records and six render PNGs.",
    "The input is the published TicTacToe-AI executable from tatlead’s GPL-3.0 repository, identified by SHA-256 in the report. The repository redistributes it with the GPL text and a source archive kept for license compliance; the statement that this source was not consulted during reconstruction is author-reported.",
    "The fork needs Node.js 22.19+ or 24.11+; recovery uses ilspycmd plus a host Roslyn compiler and Mono references, with script defaults pointing at Homebrew paths on macOS. Verification needs a local X11 display and Mono/libgdiplus. The recorded run used macOS 15.3.1 on ARM64 with Xvfb, so both renders come from the same Mono runtime rather than native Windows.",
    "Scripts recover a fresh replica, then a probe executes the original and rebuilt assemblies, compares return values and indicator bytes for every board, and captures Form.DrawToBitmap images after button sequences. The current result JSON records zero board-record mismatches and terminalBytesEqual false.",
    "The fork is MIT with morluto’s REA copyright retained and lists optional engines such as Ghidra and Frida under their own licenses; the game and its reconstruction carry GPL-3.0 obligations. Fork-specific code is not part of upstream REA releases, and the repository was renamed after the posts, whose rea-engine link now redirects to RE-Agent."
  ],
  "requirements_zh": [
    "所审阅的 develop 提交（2026-10-15）报告 CheckGameStatus 在其声明的 3^9 棋盘输入域上功能通过（Feature PASS），整个游戏为部分重建（PARTIAL）。AI 落子与随机数、菜单、计时和声音均未验证，可执行文件并非逐字节相同，原始终端捕获也相差一个回车符。帖子中“逐字节一致”的说法仅适用于结构化棋盘记录和六张渲染 PNG。",
    "输入是 tatlead 的 GPL-3.0 仓库所发布的 TicTacToe-AI 可执行文件，报告以 SHA-256 标识。仓库随 GPL 文本一并再分发该文件，并为履行许可义务保留一份源码归档；“重建过程中未参考该源码”属于作者报告。",
    "该分叉需要 Node.js 22.19+ 或 24.11+；恢复步骤使用 ilspycmd 以及本机 Roslyn 编译器和 Mono 引用，脚本默认指向 macOS 上的 Homebrew 路径。验证需要本地 X11 显示和 Mono／libgdiplus。记录的运行环境是 ARM64 上的 macOS 15.3.1 加 Xvfb，因此两张渲染图都来自同一 Mono 运行时，而非原生 Windows。",
    "脚本先重新恢复出副本，再由探针执行原版与重建程序集，逐一比较每种棋盘的返回值和指示状态字节，并在按钮操作序列后捕获 Form.DrawToBitmap 图像。当前结果 JSON 记录棋盘记录零差异、terminalBytesEqual 为 false。",
    "该分叉采用 MIT，保留 morluto 的 REA 版权声明，并列出 Ghidra、Frida 等可选引擎及其各自许可；游戏及其重建负有 GPL-3.0 义务。分叉特有的代码不在上游 REA 版本中；仓库在发帖后更名，帖子中的 rea-engine 链接现会重定向到 RE-Agent。"
  ],
  "targets": [
    "game"
  ],
  "url": "https://github.com/heaven-hm/re-agent/tree/develop/benchmarks/tictactoe",
  "verification": "source-reviewed",
  "verified_at": "2026-10-18"
}
