[{"timestamp":"2026-10-29T19:58:19Z","commit_sha":"5211a83ea8a24b0a69953fd2fb50ab5f4664fd9d","commit_message":"Keep unmatched functions as NONMATCH assembly with their C attempt\n\nThe 14 functions that still came from the ROM as .incbin are now NONMATCH\nfunctions, as in the Minish Cap and Sonic Advance 2 decompilations: the\nbuild assembles their original code from asm/non_matching/, and the\nclosest C attempt sits alongside in src/non_matching/ as type-checked dead\ncode (-DNON_MATCHING compiles it instead). Code no longer needs the ROM;\nonly the header logo does. The full ROM stays byte-identical.\n\ntools/nonmatch.py generates the assembly with every symbol resolved against\nthe last matching build. Progress, the objdiff report and the target tools\ncount NONMATCH as unmatched (still 3,526 of 3,540 functions), and\nm2c_integrate.py replaces the entry once a function matches. Register pins\nuse a FORCE_REGISTER macro, and docs/NONMATCHING.md lists every open\nfunction with its problem plus the fake matches, in the style of the\nMetroid Zero Mission and Fire Emblem 6 decompilations.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":98.1244,"total_code":487736,"matched_code":478588,"matched_code_percent":98.1244,"total_data":7900872,"matched_data":7900872,"matched_data_percent":100,"total_functions":3540,"matched_functions":3526,"matched_functions_percent":99.60452,"complete_code":478588,"complete_code_percent":98.1244,"complete_data":7900872,"complete_data_percent":100,"total_units":1197,"complete_units":1183}},{"timestamp":"2026-10-29T19:07:24Z","commit_sha":"dd09fb86cfd496d274680ac085a4815d08ab03f3","commit_message":"Give the progress chart legend its own row\n\nWith a single history point the first and last date labels sit in the\nmiddle of the x axis, on the same row as the legend, and overlapped it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":98.1244,"total_code":487736,"matched_code":478588,"matched_code_percent":98.1244,"total_data":7900872,"matched_data":7900872,"matched_data_percent":100,"total_functions":3540,"matched_functions":3526,"matched_functions_percent":99.60452,"complete_code":478588,"complete_code_percent":98.1244,"complete_data":7900872,"complete_data_percent":100,"total_units":1184,"complete_units":1183}},{"timestamp":"2026-10-29T18:52:11Z","commit_sha":"5abfdccdb17f04a2224cc0be5acb76da4fc3a6de","commit_message":"Fix progress chart axis at full coverage\n\nThe axis picked the first step at least 115% of the peak, so a whole-ROM\ncoverage above 87% found none and the Progress workflow crashed after\nwriting history.csv. The axis now tops out at 100%, and the workflow step\nuses pipefail so a crash behind `tee` fails the step.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":98.1244,"total_code":487736,"matched_code":478588,"matched_code_percent":98.1244,"total_data":7900872,"matched_data":7900872,"matched_data_percent":100,"total_functions":3540,"matched_functions":3526,"matched_functions_percent":99.60452,"complete_code":478588,"complete_code_percent":98.1244,"complete_data":7900872,"complete_data_percent":100,"total_units":1184,"complete_units":1183}}]