[{"timestamp":"2026-10-25T22:52:51Z","commit_sha":"dec1050655946406817dc64256441f60e44362b4","commit_message":"Add motion.c, flags.c and model.c (34 of 39 functions matching)\n\nThree files from the module after text.c, as NonMatching units until every\nfunction in each file matches:\n- motion.c: Ninja motion keyframe playback (9 of 11 match).\n- flags.c: table accessors and the story-flag bitset (8 of 11).\n- model.c: model object draw, motion blend and per-frame update (17 of 17\n  so far; the file continues past 0x801E6148).\nfdiff: also mask `sym+0xN@sda21` operands when aligning.","measures":{"fuzzy_match_percent":9.2479315,"total_code":2782996,"matched_code":253476,"matched_code_percent":9.1080265,"total_data":658516,"matched_data":89568,"matched_data_percent":13.601492,"total_functions":7117,"matched_functions":906,"matched_functions_percent":12.7300825,"complete_code":230876,"complete_code_percent":8.295952,"complete_data":183380,"complete_data_percent":27.847464,"total_units":211,"complete_units":116}},{"timestamp":"2026-10-25T22:32:17Z","commit_sha":"89e30179cd566937d641d70f57d69075112e109a","commit_message":"Count unsplit code towards its progress category, add a Ninja category","measures":{"fuzzy_match_percent":8.888082,"total_code":2782996,"matched_code":244764,"matched_code_percent":8.794982,"total_data":658516,"matched_data":89568,"matched_data_percent":13.601492,"total_functions":7117,"matched_functions":872,"matched_functions_percent":12.252354,"complete_code":230876,"complete_code_percent":8.295952,"complete_data":183380,"complete_data_percent":27.847464,"total_units":208,"complete_units":116}},{"timestamp":"2026-10-25T22:12:16Z","commit_sha":"4d727d51f60060c327470825fb90988cb6522928","commit_message":"Match TextPrintNumber, add a decomp-permuter setup script\n\n- TextPrintNumber: hold flags & 0x8000 in start for the test, which gives\n  the original's reuse of the zero register (29 of 33 in text.c now).\n- tools/match/permsetup.py builds a decomp-permuter directory for one game\n  function, without needing cpp, so it also runs on Windows.","measures":{"fuzzy_match_percent":8.888082,"total_code":2782996,"matched_code":244764,"matched_code_percent":8.794982,"total_data":658516,"matched_data":89568,"matched_data_percent":13.601492,"total_functions":7117,"matched_functions":872,"matched_functions_percent":12.252354,"complete_code":230876,"complete_code_percent":8.295952,"complete_data":183380,"complete_data_percent":27.847464,"total_units":208,"complete_units":116}},{"timestamp":"2026-10-25T21:26:45Z","commit_sha":"d9e2bed8e173beb382b3b9bddbbbc09a2f9ab175","commit_message":"Remove the example workflow and document the self-hosted CI","measures":{"fuzzy_match_percent":8.887909,"total_code":2782996,"matched_code":244148,"matched_code_percent":8.772848,"total_data":658516,"matched_data":89568,"matched_data_percent":13.601492,"total_functions":7117,"matched_functions":871,"matched_functions_percent":12.238303,"complete_code":230876,"complete_code_percent":8.295952,"complete_data":183380,"complete_data_percent":27.847464,"total_units":208,"complete_units":116}},{"timestamp":"2026-10-25T21:21:56Z","commit_sha":"adbb266d461ed3c51b9c9d65d82eaaf6e5184f0f","commit_message":"CI: rerun after installing ninja on the runner","measures":{"fuzzy_match_percent":8.887909,"total_code":2782996,"matched_code":244148,"matched_code_percent":8.772848,"total_data":658516,"matched_data":89568,"matched_data_percent":13.601492,"total_functions":7117,"matched_functions":871,"matched_functions_percent":12.238303,"complete_code":230876,"complete_code_percent":8.295952,"complete_data":183380,"complete_data_percent":27.847464,"total_units":208,"complete_units":116}}]