Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 112 additions & 0 deletions docs/games/24_miracle_evaluation_protocol.v0.3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
{
"protocol_version": "0.3-pre-registered",
"status": "PRE_REGISTERED_NOT_AUTHORIZED",
"_doc": "24_miracle 正式评测协议预注册草案。状态 DRAFT_NOT_AUTHORIZED:未冻结、未执行、未创建正式矩阵目录或 progress 文件。仅当局人明确授权后冻结并启动。",
"_generated": "2026-07-21",

"matrix_meaning": {
"status": "USER_DECIDED_PLAN_A",
"chosen": "A_ifelse_vs_16(用户正式选择:if-else 对 rank01–16,每对手换阵营各 1 局,共 32 局)",
"evidence": "高翔 historical lessons 明确研究目标为 'if-else bot vs 每位人类决赛选手'('Test against unchanged human finalists');战力记录均为 if-else vs rankNN。16×16 round-robin 在 SKILL.md 中被列为与 '完整16人矩阵' 不同的独立禁项。但精确协议(每对手局数/批量结构/timeout)材料未唯一确定。",
"options": [
{"id": "A_ifelse_vs_16", "desc": "if-else Agent 分别对 16 个决赛策略,双方换 camp(最符合历史研究目标)", "estimated_games": "16 对手 × 2 camp × m 局/配置;m=1→32 局,m=5→160 局"},
{"id": "B_round_robin_16x16", "desc": "16 策略间完整 round-robin(与 A 不同,规模大得多)", "estimated_games": "16×15=240 配对 × 换 camp × m 局;m=1→480 局,m=5→2400 局"},
{"id": "C_other", "desc": "其他用户指定矩阵"}
],
"do_not_conflate": true,
"total_attempts": 32,
"games_per_opponent": 2,
"camps_per_opponent": [0, 1],
"games_per_opponent_per_camp": 1
},

"frozen_identities": {
"evaluated_agent": {"name": "miracle_ifelse", "source": "高翔 ifelse_bot/main.py", "sha256": "98199fae8875de63b41d2eacd92ad5c58b4d5aa95b01b05aeacedd0b55402f4b", "modifiable": false},
"judge": {"source": "external_asset:judge_dev_logic", "main_py_sha256": "104f77bf4ec59b96b46ffc05e20482319f40fc83401a9becd785d0be98a7fc09", "modifiable": false},
"opponents": "见 docs/games/24_miracle_roster_manifest.json(16 策略 archive_sha256)",
"build_artifacts_win64_mingw": {
"_note": "阶段9A 预检隔离编译产物 SHA256(g++ 15.2.0 MinGW, GNU Make 4.4.1,策略自带 makefile 原样编译)",
"rank01": "b451d4f99b694c4ac446749d904901b1235a1f8b7a52d4b06e738ceecc4b0347",
"rank02": "5c731a794eb8282f242defee099685fb20fbd7f2d7644046b5fba0385ad555f4",
"rank03": "84cdb1344104060e6341efea691077d0e3962ef60ad523e25126b18365d581eb",
"rank06": "b10de17f886ca930a8bad9a4136c1643780f26916018715486f6195332c3e704",
"rank08": "249b9c6f7bcea4b384089a0093eebed29fb67530a078fbf217cb7c274e8c6c4f",
"rank09": "3c7c822cec8cf613ff32210f61faa95b157225c51069e450d54ca1e39178be0f",
"rank10": "ae0c24618b1fdc3e88f64a3b5b61ab0edfd144fd5259f26aa2c40ef5d6467287",
"rank11": "6c8c169c1f23dc876969ac7f50f17aa05f3932bd51f7142d56c06f0757242037",
"rank12": "e92fe57054968b7b35f8e61a7fb2ac591e801b92f447e2043f9f0fa793c4c2ab",
"rank13": "d2e8ff65eaed3c979d1a5c2deb5a9e2cfafa7a3a8105690908bd4e08d4d647e9",
"rank14": "bb0f1b171251edc39a9b424c50207b529bb318dc0e82186551d899f24a26cc01",
"rank15": "c570d1807402b9fcfe9db841d88420c3cac8a5bbf1f9a2ec9e3a2b51cb7a6fb3",
"rank16": "ed92b36ba411cd52c1408762bbb6cedfc54a7a62ecb16f7d2d98cb95458372db",
"rank04_rank05_rank07": "Python,无需编译(main.py)",
"rank16_blocker": "已解除(阶段9B):rank16 隔离构建副本内创建空 build/(构建环境准备,非策略修复;源码/Makefile 哈希编译前后一致),原 Makefile 编译成功。rank16 main.exe SHA256 已补入。编译警告 'control reaches end of non-void function' 保留为运行风险(不修复/不隐瞒,见 known_runtime_risks)。",
"rank03_note": "编译+启动成功,但保留历史运行时崩溃风险(invalid_now);编译/启动成功 ≠ 比赛可用。"
}
},

"seed_policy": {
"requested_seed": null,
"effective_seed": null,
"deterministic_seed_supported": false,
"reproducible_from_seed": false,
"recorded_only": "realized_randomization={map_type, day_time}(Replay 头读出,不表述为 seed)",
"rationale": "Judge 用 random.randint 选 map_type/day_time,不读外部 seed;不修改 Judge"
},

"timeouts": {
"per_ai_operation_s": 8.0,
"wrapper_per_game_s": 120.0,
"note": "MAX_ROUND=100;最坏单局≈ wrapper_per_game_s;if-else 局可更长(smoke g2_01=630 steps 仍在限内)"
},

"validity": {
"valid_game": "合法 end_info + result-json 与 trace 分数一致 + raw_winner 符合 Judge 规则 + end_info 前无 ai_error/ai_timeout + Judge 未在 end_info 前崩溃 + Replay 存在且合法 + cleanup 完成",
"invalid_game": "AI crash / AI timeout / Judge crash / wrapper timeout / evidence_mismatch / replay_missing / replay_corrupt / result_json_missing / result_json_corrupt",
"rank03": "invalid_now(对手程序崩溃),不计入有效胜率"
},

"classification": {
"ai_crash": "AI 在 end_info 前自然异常退出,或 trace 出现 ai_error",
"ai_timeout": "trace 出现 ai_timeout,或对应 AI 在动作期限内未响应",
"runner_cleanup_nonzero": "end_info 后 runner 主动终止 AI 产生的非零 returncode —— 视为正常 cleanup,不判 AI 崩溃",
"judge_crash": "Judge 在 end_info 前异常退出,或无合法 end_info 且 Judge 非正常退出",
"wrapper_timeout": "vendor 及 Judge/AI 树未在 wrapper_per_game_s 内结束",
"infra_failure": "result-json 缺失/损坏、证据三向矛盾、Replay 损坏等基础设施层失败"
},

"scoring": {
"raw_winner_rule": "end_info={'0':s0,'1':s1}; winner = 0 if s0>s1 else 1",
"tie": "score0==score1 时 Judge 判 player1 获胜(judge_tiebreak_applied=true),记为 win/loss 而非 draw",
"win_rate": "wins / valid_games(分母仅 valid games);valid_games==0 时 win_rate=null, evaluation_status=NO_VALID_GAMES(不报 0%)",
"draw": "仅用于异常输入/未来协议防御;当前 Judge 不产生 draw"
},

"execution": {
"no_rerun_successful": true,
"recovery": "失败恢复必须使用新 game_id 并注明 recovery_of=<原 game_id>;本轮不自动恢复",
"batching": "分批执行;每批设停止门槛(残留进程/证据矛盾/winner 映射不一致/数据损坏即停,不进入下一批)",
"camp_swap": "每对手双方各占 camp0/camp1(换边)",
"pid_createtime_residual_check": "每局后按精确 PID + psutil create_time 独立核验 judge/ai0/ai1 无残留;PID 复用不杀",
"cross_validation": "Replay 头/哈希、trace、result-json、events、summary、网页六处可相互追溯;任一权威字段冲突即 evidence_mismatch",
"failure_evidence_permanent": true,
"smoke_not_competitiveness": "4 局 smoke 仅为基础设施验证,不作为 if-else 竞争力结论"
},

"estimate": {
"time": "取决于 matrix_meaning 选择与 m:A 方案 32 局≈0.5–1.5h,160 局≈2.5–7h;B 方案 480 局≈4–12h,2400 局≈1–2 天(含 C++ 编译)",
"storage": "每局≈ trace+replay+result-json+stdout+stderr(KB–数十 KB 级);A 方案<50MB,B 方案可达 GB 级",
"worst_case": "每局逼近 wrapper_per_game_s;总时间≈总局数×wrapper_per_game_s"
},

"known_runtime_risks": [
{"id": "rank03_crash", "strategy": "rank03", "risk": "历史运行时崩溃(SKILL.md 记载当前环境对手程序崩溃)", "handling": "保持原策略不变;正式对局若在 end_info 前崩溃则记 invalid 并保留原始证据;不补跑;不计入 Agent 有效胜率(不进 win_rate 分母)", "not_an_infra_blocker": true},
{"id": "rank16_compiler_warning", "strategy": "rank16", "risk": "编译警告 control reaches end of non-void function(ai-sample.cpp 等)", "handling": "属运行风险,不修复、不隐瞒、不改源码;正式对局异常按 invalid 处理并保留证据"},
{"id": "general_cpp_warnings", "risk": "多个 C++ 策略编译产生 -Wreturn-type 等警告(非错误)", "handling": "未修改任何策略源码/Makefile/优化;警告仅记录,运行时异常按分类规则处理"}
],
"blockers_before_matrix": [
"FORMAL_32_GAME_MATRIX_NOT_AUTHORIZED"
],

"not_authorized": ["完整16人矩阵执行", "16×16 round-robin", "RL/Round81/hidden eval", "修改 if-else 策略", "push/PR/上传 Results/合并 main", "删除或重跑 smoke 证据"]
}
39 changes: 39 additions & 0 deletions docs/games/24_miracle_roster_manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"_doc": "24_miracle 16 决赛策略运行时兼容性静态盘点。仅静态检查与轻量入口审计;未编译、未启动任何 Judge/AI 比赛/完整策略。每个策略的 verification_status 标注为 static_only,绝不写成已成功运行。",
"_generated": "2026-07-21",
"_source_extracted": "external_asset:24_miracle_final/extracted",
"_source_archives": "external_asset:24_miracle_final/archives",
"_toolchain_observed": {
"g++": "MinGW 15.2.0 (x86_64-win32-seh) available at /c/Program Files/mingw64/bin/g++",
"make": "GNU Make 4.4.1 available",
"note": "本机有 g++/make,可编译 C++ 策略;但 MinGW `g++ -o main` 产出 main.exe,而 vendor/上游 run_match.resolve_ai_command 只探测 ./main(无扩展名),故 Windows 下编译后仍无法按现 runner 协议启动 C++ 策略。"
},
"_runner_launch_gap": "vendor/miracle_local/run_match.py::resolve_ai_command 仅识别 ./main 与 main.py;MinGW 产出的 main.exe 不被识别。C++ 策略需显式 --p0-cmd/--p1-cmd main.exe、或适配层补 main.exe 探测、或在 Linux/WSL 运行。",
"strategies": [
{"rank": 1, "username": "Bruce", "display_name": "朱昱熹", "entity": "Maiev", "language": "make", "version": 10, "type": "cpp_source", "entry": "makefile -> main (g++ -std=c++11 gameunit.cpp calculator.cpp ai_client.cpp ai.cpp -o main)", "archive_sha256": "b4603d7197447a3df9bfff126da9340659ea6977d320814febb79a5df0df4fed", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only"},
{"rank": 2, "username": "wiku30", "display_name": "赵梓硕", "entity": "碧海潮生曲", "language": "make", "version": 18, "type": "cpp_source", "entry": "makefile -> main (含 backup.bat,仅为 git 操作非构建)", "archive_sha256": "6b440894709982433cddbe047bae211e7b45988c3d1cfd2dd0bf4e91c38b7708", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only"},
{"rank": 3, "username": "nzhtl1477", "display_name": "李欣隆", "entity": "深浅值藏的第六分块", "language": "make", "version": 1, "type": "cpp_source", "entry": "makefile -> main", "archive_sha256": "6c526e491ccc5090ece014ababde0c5c021acc3c789981cf50cd204262e7547e", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only", "invalid_now": true, "invalid_reason": "SKILL.md 记载当前环境对手程序崩溃,不能算 Agent 胜利"},
{"rank": 4, "username": "SuperJasper", "display_name": "宋子萌", "entity": "K", "language": "python_zip", "version": 1, "type": "python_script", "entry": "main.py", "runnable_sha256": "1dfe69738141f80f7d2fb5ce1a8321126141360d86d515caf66d3f4010d86f88", "archive_sha256": "ec7c574c21625736ae38dede760e0cdb796b9cb375216f9086b28c00fe07d2e2", "windows_native_runnable": true, "needs_compile": false, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": true, "verification_status": "static_only", "skill_note": "有效战胜(SKILL.md)"},
{"rank": 5, "username": "zex18", "display_name": "周恩贤", "entity": "zex的人工智障", "language": "python_zip", "version": 56, "type": "python_script", "entry": "main.py", "runnable_sha256": "4166a54d042e9e2e5b37cf172705dbf7617872ffb1184adb3ceb697bcc6b9707", "archive_sha256": "363d68c5fbdf1e6d869ca3a3612fd67b76fae8abc051b3ad164a8942bed0ec87", "windows_native_runnable": true, "needs_compile": false, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": true, "verification_status": "static_only", "skill_note": "较接近的强对手"},
{"rank": 6, "username": "robinliu", "display_name": "刘子奇", "entity": "Mooncell", "language": "make", "version": 78, "type": "cpp_source", "entry": "makefile -> main", "archive_sha256": "dc25d4357ebee7aa6274f8b54cee885c5387a62e1ec62dcc71446f4309cd4806", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only"},
{"rank": 7, "username": "blazingBonfire", "display_name": "陈英发", "entity": "守护者", "language": "python_zip", "version": 22, "type": "python_script", "entry": "main.py", "runnable_sha256": "eab339ef43fcc521ec8eb7bcb39859e35e8ea4681bb00661a8faf91c5d63816c", "archive_sha256": "410269e658407193786328505fb0bdf8b585c295ed5322315d6ac35a8c755ba1", "windows_native_runnable": true, "needs_compile": false, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": true, "verification_status": "static_only", "skill_note": "接近但未解决"},
{"rank": 8, "username": "wenyi", "display_name": "洪文逸", "entity": "yyy", "language": "make", "version": 1, "type": "cpp_source", "entry": "makefile -> main", "archive_sha256": "81e4d6a21a5790d7384be8cf9c8fe172b7fdc97933186204a05fe28e52914461", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only"},
{"rank": 9, "username": "hsiachi", "display_name": "夏奇", "entity": "タチコマ(na)", "language": "make", "version": 8, "type": "cpp_source", "entry": "makefile -> main", "archive_sha256": "48e2db35e6804ba4e0b8717fd2fd4b50d9ea931dd33a158fbe914838b69a2701", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only"},
{"rank": 10, "username": "SD_le", "display_name": "杨卓毅", "entity": "AK", "language": "make", "version": 8, "type": "cpp_source", "entry": "makefile -> main", "archive_sha256": "efab49207a2f89509ebf64dc286b31f1147e1af65a4fd0bedca28d66d1539f50", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only"},
{"rank": 11, "username": "jasonvictoryan", "display_name": "颜杰龙", "entity": "Halcyon", "language": "make", "version": 14, "type": "cpp_source", "entry": "makefile -> main", "archive_sha256": "656d009766064a096f135a8aca6b6a7d2f695e5c0eed2f3b85aba7b6d3ed812e", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only"},
{"rank": 12, "username": "omegafantasy", "display_name": "刘家宏", "entity": "星之梦", "language": "make", "version": 27, "type": "cpp_source", "entry": "makefile -> main", "archive_sha256": "ea7be1c136d39404e9e788d609a16f0563762acb1cb542645049d05d1352dc67", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only", "skill_note": "接近但未解决"},
{"rank": 13, "username": "ZarkLngeW", "display_name": "张龙文", "entity": "啥都没改", "language": "make", "version": 1, "type": "cpp_source", "entry": "makefile -> main", "archive_sha256": "3f0e72b410e1d065414327e1018a973aa98992240442d41466b0adea41c1a976", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only", "skill_note": "Archer lattice 研究断点之一"},
{"rank": 14, "username": "ccz181078", "display_name": "蔡承泽", "entity": "sample", "language": "make", "version": 21, "type": "cpp_source", "entry": "makefile -> main", "archive_sha256": "1b1abdc0c8e619f20688627b6b49d41862dbac72c6ffd1a0671a9acb19abf256", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only"},
{"rank": 15, "username": "tshoigyr", "display_name": "高宇睿", "entity": "a_idoit", "language": "make", "version": 21, "type": "cpp_source", "entry": "makefile -> main", "archive_sha256": "5170538ce62fbeacd7d837c2b2f3c6f8fe41a373c46ef1f497fa1bb2ac6773de", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only"},
{"rank": 16, "username": "MoebiusMeow", "display_name": "郭佳琪", "entity": "起床大失败", "language": "make", "version": 1, "type": "cpp_source", "entry": "makefile -> main", "archive_sha256": "5f606babd6f99c8f1fe6b62ad959c233af01b44d6cc4e063510684db8785268a", "windows_native_runnable": "not_without_compile_and_mainexe_fix", "needs_compile": true, "needs_wsl_or_linux": false, "compiled_artifacts_present": false, "missing_files": false, "runner_launchable_via_current_protocol": false, "verification_status": "static_only", "skill_note": "Archer lattice 研究断点之一;由大败改善到接近平局但仍未获胜"}
],
"_summary": {
"total": 16,
"python_script": ["rank04", "rank05", "rank07"],
"cpp_source": ["rank01", "rank02", "rank03", "rank06", "rank08", "rank09", "rank10", "rank11", "rank12", "rank13", "rank14", "rank15", "rank16"],
"windows_native_runnable_now": ["rank04", "rank05", "rank07"],
"needs_compile_plus_mainexe_fix_or_wsl": "13 (all cpp_source)",
"invalid_now": ["rank03"],
"runner_launchable_via_current_protocol": ["rank04", "rank05", "rank07"]
}
}
Loading
Loading