[{"timestamp":"2026-10-16T16:44:52Z","commit_sha":"e663063a10b7c80d9e2d9f0249e2fef351248b6d","commit_message":"Merge pull request #88 from vetusmagnus/match/claude-wave2b\n\nMatch/wave2b","measures":{"fuzzy_match_percent":93.00363,"total_code":3712808,"matched_code":3427760,"matched_code_percent":92.32258,"total_data":699072,"matched_data":3064,"matched_data_percent":0.43829533,"total_functions":5109,"matched_functions":4725,"matched_functions_percent":92.48385,"complete_code":758280,"complete_code_percent":20.423357,"complete_data":2452,"complete_data_percent":0.3507507,"total_units":141,"complete_units":95}},{"timestamp":"2026-10-16T11:58:46Z","commit_sha":"b1406dc5e4a77997fce6399a9daf7a882b0c0e00","commit_message":"Merge pull request #87 from OpenRAC/feat/to-95\n\nfeat: match func_L12_002E8640","measures":{"fuzzy_match_percent":90.86786,"total_code":3712808,"matched_code":3346540,"matched_code_percent":90.13502,"total_data":699072,"matched_data":3040,"matched_data_percent":0.43486223,"total_functions":5109,"matched_functions":4674,"matched_functions_percent":91.48561,"complete_code":758280,"complete_code_percent":20.423357,"complete_data":2452,"complete_data_percent":0.3507507,"total_units":141,"complete_units":95}},{"timestamp":"2026-10-16T11:37:26Z","commit_sha":"50860bf79e9b7766ca1d7eb815abe709afe5f056","commit_message":"Merge pull request #86 from OpenRAC/feat/to-90\n\nto 90%: matches, CPU helpers, core jump tables","measures":{"fuzzy_match_percent":90.76357,"total_code":3712808,"matched_code":3342668,"matched_code_percent":90.03072,"total_data":699072,"matched_data":3040,"matched_data_percent":0.43486223,"total_functions":5109,"matched_functions":4673,"matched_functions_percent":91.46604,"complete_code":758280,"complete_code_percent":20.423357,"complete_data":2452,"complete_data_percent":0.3507507,"total_units":141,"complete_units":95}},{"timestamp":"2026-10-16T06:48:26Z","commit_sha":"b5b4af3f3a48030935149780a9ff6143630d86c3","commit_message":"Merge pull request #82 from OpenRAC/feat/to-90\n\nanother batch","measures":{"fuzzy_match_percent":90.331894,"total_code":3712808,"matched_code":3313604,"matched_code_percent":89.247925,"total_data":699072,"matched_data":2804,"matched_data_percent":0.40110317,"total_functions":5109,"matched_functions":4632,"matched_functions_percent":90.663536,"complete_code":756604,"complete_code_percent":20.378216,"complete_data":2216,"complete_data_percent":0.31699166,"total_units":141,"complete_units":94}},{"timestamp":"2026-10-16T06:35:22Z","commit_sha":"4ba640acde31a48aace4ff9e96abaf58b478694f","commit_message":"Merge pull request #83 from cnobis/feat/hard-3\n\nfeat(overlays): four matches, two catalogue joins, near-miss repairs","measures":{"fuzzy_match_percent":89.80012,"total_code":3712808,"matched_code":3293860,"matched_code_percent":88.71614,"total_data":699072,"matched_data":2568,"matched_data_percent":0.36734414,"total_functions":5109,"matched_functions":4613,"matched_functions_percent":90.29164,"complete_code":749496,"complete_code_percent":20.18677,"complete_data":1884,"complete_data_percent":0.26950014,"total_units":141,"complete_units":91}},{"timestamp":"2026-10-16T06:03:14Z","commit_sha":"a8958bb8414ded7231725af85bf65d7192c8693b","commit_message":"Merge pull request #81 from vetusmagnus/match/claude-wave1\n\nmatch wave1","measures":{"fuzzy_match_percent":89.771645,"total_code":3712808,"matched_code":3293268,"matched_code_percent":88.700195,"total_data":699072,"matched_data":2568,"matched_data_percent":0.36734414,"total_functions":5109,"matched_functions":4608,"matched_functions_percent":90.19378,"complete_code":749496,"complete_code_percent":20.18677,"complete_data":1884,"complete_data_percent":0.26950014,"total_units":141,"complete_units":91}},{"timestamp":"2026-10-15T22:13:00Z","commit_sha":"9ce9f0d18098436cd05e12fa2d0476cd2b599d44","commit_message":"Merge pull request #80 from OpenRAC/feat/functional-report\n\nci(progress): upload the functional C list beside the report","measures":{"fuzzy_match_percent":89.474594,"total_code":3712808,"matched_code":3278504,"matched_code_percent":88.30254,"total_data":699072,"matched_data":2568,"matched_data_percent":0.36734414,"total_functions":5109,"matched_functions":4595,"matched_functions_percent":89.93932,"complete_code":749496,"complete_code_percent":20.18677,"complete_data":1884,"complete_data_percent":0.26950014,"total_units":141,"complete_units":91}},{"timestamp":"2026-10-15T21:47:45Z","commit_sha":"3c552b887547e2258ea9e47868de457cdaa9272e","commit_message":"chore(progress): regenerate the report after merging PRs 76, 77 and 79\n\n4,595/5,109 functions finished, 88.30% of the code.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":89.474594,"total_code":3712808,"matched_code":3278504,"matched_code_percent":88.30254,"total_data":699072,"matched_data":2568,"matched_data_percent":0.36734414,"total_functions":5109,"matched_functions":4595,"matched_functions_percent":89.93932,"complete_code":749496,"complete_code_percent":20.18677,"complete_data":1884,"complete_data_percent":0.26950014,"total_units":141,"complete_units":91}},{"timestamp":"2026-10-15T18:10:11Z","commit_sha":"28982c1a4641fc5395a20d1d45a3b72222f53cf6","commit_message":"Merge pull request #78 from OpenRAC/feat/data-progress\n\nfeat(progress): measure the executable's data","measures":{"fuzzy_match_percent":87.78853,"total_code":3712808,"matched_code":3199668,"matched_code_percent":86.17919,"total_data":699072,"matched_data":2568,"matched_data_percent":0.36734414,"total_functions":5109,"matched_functions":4526,"matched_functions_percent":88.58877,"complete_code":611816,"complete_code_percent":16.478525,"complete_data":1884,"complete_data_percent":0.26950014,"total_units":141,"complete_units":89}},{"timestamp":"2026-10-15T06:50:26Z","commit_sha":"8a6b2d309ff7d9f2e8d70fbae4459701955a5617","commit_message":"Merge pull request #75 from OpenRAC/feat/to-90\n\nFeat/to 90","measures":{"fuzzy_match_percent":87.78853,"total_code":3712808,"matched_code":3199668,"matched_code_percent":86.17919,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4526,"matched_functions_percent":88.58877,"complete_code":611816,"complete_code_percent":16.478525,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":89}},{"timestamp":"2026-10-15T06:20:40Z","commit_sha":"ccae6cce0de06320e3eb380e9cb248901b48ea6c","commit_message":"Merge pull request #74 from OpenRAC/feat/round3\n\nMatch func_00221380, func_L08_002D4B80, func_L07_0030E370","measures":{"fuzzy_match_percent":87.73948,"total_code":3712808,"matched_code":3197040,"matched_code_percent":86.10841,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4523,"matched_functions_percent":88.530045,"complete_code":611816,"complete_code_percent":16.478525,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":89}},{"timestamp":"2026-10-14T23:02:04Z","commit_sha":"9a8143337c49794a9b6588d253f79683ad1484ce","commit_message":"Merge pull request #73 from OpenRAC/feat/pure-c-round2\n\nfeat(overlays): 38 more functions in C, qcopy helpers allowed","measures":{"fuzzy_match_percent":87.652756,"total_code":3712808,"matched_code":3193820,"matched_code_percent":86.02168,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4520,"matched_functions_percent":88.47133,"complete_code":611816,"complete_code_percent":16.478525,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":89}},{"timestamp":"2026-10-14T21:21:20Z","commit_sha":"9d10e94620095d1b530dffc7ddded4da3aebd265","commit_message":"Merge pull request #72 from OpenRAC/feat/pure-c-lombyte-ports\n\nfeat(overlays): 50 pure-C ports, plus #69, #70 and #71 merged","measures":{"fuzzy_match_percent":85.98189,"total_code":3712808,"matched_code":3131784,"matched_code_percent":84.35082,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4482,"matched_functions_percent":87.72754,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-14T20:59:35Z","commit_sha":"3e53c2d696f551aa5a612d466660ea8543e5c4f5","commit_message":"Merge pull request #69 from cnobis/feat/ports-2\n\nfeat(overlays): fifteen functions adapted from the NTSC decomp","measures":{"fuzzy_match_percent":84.53805,"total_code":3712808,"matched_code":3069448,"matched_code_percent":82.671875,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4389,"matched_functions_percent":85.90722,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-14T11:53:57Z","commit_sha":"e1ee2ee37ba5b1ad8110132c1717ef94cb39acb0","commit_message":"Merge pull request #67 from cblackler19/codex-exact-matches-oct14\n\nfeat(overlays): exact-match Gaspar and Rilgar functions","measures":{"fuzzy_match_percent":84.35374,"total_code":3712808,"matched_code":3059008,"matched_code_percent":82.390686,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4372,"matched_functions_percent":85.57448,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-14T11:52:45Z","commit_sha":"70f7489d678883cddf346746db62d7e783ba1e5c","commit_message":"Merge pull request #66 from OpenRAC/feat/port-backfill\n\nFeat/port backfill","measures":{"fuzzy_match_percent":84.35374,"total_code":3712808,"matched_code":3059008,"matched_code_percent":82.390686,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4372,"matched_functions_percent":85.57448,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-14T08:34:56Z","commit_sha":"9498e87737ad3b145bba6f8ad577f6030220b6a6","commit_message":"Merge pull request #65 from OpenRAC/feat/port-backfill\n\nfix(nonmatching): func_0020E3D0 reads a key's infinite rate as the EE…","measures":{"fuzzy_match_percent":82.19137,"total_code":3712808,"matched_code":3015512,"matched_code_percent":81.21918,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4363,"matched_functions_percent":85.398315,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-14T07:30:30Z","commit_sha":"f6193776480e7a1f14dfa065fe4e5076744789d2","commit_message":"Merge pull request #63 from cblackler19/codex-exact-matches\n\nfeat: Match three functions (2,396 bytes) and update progress","measures":{"fuzzy_match_percent":82.19137,"total_code":3712808,"matched_code":3015512,"matched_code_percent":81.21918,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4363,"matched_functions_percent":85.398315,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-14T07:30:20Z","commit_sha":"f2c62b33f3c405703bd35f210d8167b190dff550","commit_message":"Merge pull request #64 from OpenRAC/feat/port-backfill\n\nfix(nonmatching): func_0020E3D0 reads a key's infinite rate as the EE…","measures":{"fuzzy_match_percent":82.13707,"total_code":3712808,"matched_code":3013116,"matched_code_percent":81.15464,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4360,"matched_functions_percent":85.3396,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-14T06:21:32Z","commit_sha":"08e96018c5d0d42dffa3936dd2f4ee13b8579c7a","commit_message":"feat(nonmatching): func_L14_002F2778 functional\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":82.13707,"total_code":3712808,"matched_code":3013116,"matched_code_percent":81.15464,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4360,"matched_functions_percent":85.3396,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-14T02:04:38Z","commit_sha":"7b776c9ab9db456378cdcdc5653e9c9e3f089576","commit_message":"Merge pull request #62 from OpenRAC/chore/stale-functional\n\nchore(nonmatching): drop functional C for 42 functions that are matched now","measures":{"fuzzy_match_percent":82.13707,"total_code":3712808,"matched_code":3013116,"matched_code_percent":81.15464,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4360,"matched_functions_percent":85.3396,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-14T02:00:46Z","commit_sha":"361e1d3f2fddbbbc8431dc8b0b3e4656bb63543d","commit_message":"Merge pull request #60 from cnobis/feat/ports-1\n\nfeat(overlays): seven split functions adapted from Lombyte","measures":{"fuzzy_match_percent":82.13707,"total_code":3712808,"matched_code":3013116,"matched_code_percent":81.15464,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4360,"matched_functions_percent":85.3396,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-14T01:50:35Z","commit_sha":"713a0b9a6bedef597e357b3e06fbd467d792eda6","commit_message":"Merge pull request #58 from cnobis/feat/jumpers-1\n\nfeat(overlays): thirteen functions that return through shared fragments","measures":{"fuzzy_match_percent":82.13111,"total_code":3712808,"matched_code":3012860,"matched_code_percent":81.14774,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4349,"matched_functions_percent":85.12429,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-14T01:41:39Z","commit_sha":"ddeaaefe224085d2216302c94149ab7938c9d487","commit_message":"Merge pull request #57 from cblackler19/feat/sol-three-exact\n\nfeat(overlays): exact-matched three shared overlay functions","measures":{"fuzzy_match_percent":82.11969,"total_code":3712808,"matched_code":3012436,"matched_code_percent":81.13633,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4336,"matched_functions_percent":84.869835,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-14T01:28:48Z","commit_sha":"9ab7db5109a90babde98761e60a6011425ee24fb","commit_message":"Merge pull request #56 from cnobis/feat/func_L00_002347B8\n\nfeat(overlays): two ammo functions and func_L00_002347B8","measures":{"fuzzy_match_percent":82.10644,"total_code":3712808,"matched_code":3011496,"matched_code_percent":81.11101,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4333,"matched_functions_percent":84.81112,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T22:40:01Z","commit_sha":"45abcbb75a28a22a1e06a1b744c21630a3980a2c","commit_message":"Merge pull request #61 from Veradictus/main\n\nfeat: 35 more matches, 149 functions of functional C for the port, 22 fragments joined","measures":{"fuzzy_match_percent":82.09971,"total_code":3712808,"matched_code":3011244,"matched_code_percent":81.10422,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4329,"matched_functions_percent":84.73283,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T16:41:16Z","commit_sha":"0b5b7faaaee9b017de98909c09e5cd77d2e396cc","commit_message":"Merge pull request #59 from Veradictus/main\n\nPorting Stuff","measures":{"fuzzy_match_percent":81.19001,"total_code":3712808,"matched_code":2980628,"matched_code_percent":80.27962,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4294,"matched_functions_percent":84.04776,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T14:45:08Z","commit_sha":"8fb34dc873fa892ef1694a985dafffb9e4c20dfe","commit_message":"Merge pull request #54 from cnobis/feat/func_L00_0024BD18\n\nfeat(overlays): func_L00_0024BD18 exact match","measures":{"fuzzy_match_percent":81.19001,"total_code":3712808,"matched_code":2980628,"matched_code_percent":80.27962,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4294,"matched_functions_percent":84.04776,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T14:26:16Z","commit_sha":"a56867603220b91490c439c99520207f63bd4331","commit_message":"feat(nonmatching): func_L09_002EEF80 functional","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T14:19:56Z","commit_sha":"fa8029a395547ab7398f0218992294ff4a3fa6bf","commit_message":"feat(nonmatching): func_L07_003121D0 functional","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T14:12:55Z","commit_sha":"6a7e4af729eaa25e18c02f704e9b725581a60e19","commit_message":"feat(nonmatching): func_L08_00259040 and func_L12_002E43A8 functional","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T14:05:59Z","commit_sha":"e0f1ebdeaf05bd556ae4506de59653f2eb83e29e","commit_message":"feat(nonmatching): func_L03_002DDEF8 and func_L01_0022D688 functional","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T13:53:46Z","commit_sha":"361f52d7aebeb279570662713b9b3874ba87b7a6","commit_message":"feat(nonmatching): func_L01_00262FE8 and func_L01_0030F318 functional","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T13:30:48Z","commit_sha":"716f462dc62b4d37b8a0dc6ab87790723000a6a2","commit_message":"feat(nonmatching): accept 154 clean near misses and 3 functional moby updates","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T12:02:22Z","commit_sha":"66189a07ddfcbb7130164480349377b27bb31712","commit_message":"feat(nonmatching): func_L12_0030A880 and func_L11_00310058 near misses accepted\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T11:47:12Z","commit_sha":"6881bbbd0bd221040eac07b7fb6bbd6f9354f599","commit_message":"docs(nonmatching): func_L01_0030C090 is medium until it runs\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T11:34:13Z","commit_sha":"b6d3bbc4b7f0a86b2dcc94a173ed79fbc1b2896e","commit_message":"docs(nonmatching): func_L12_00307DB0 is medium until it runs\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T11:30:57Z","commit_sha":"65e0493addd08312d0949c9f194b41f844c38048","commit_message":"feat(nonmatching): func_L03_002DBC38 functional, level 3 Helga update and head-look tail\n\nFixes the near miss: the 0x1F4 timer test uses func_001F9908's result, func_001FA898 stays int, +0x84 is re-read.\nequiv: only register, scheduling, branch-shape and frame differences remain.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T11:13:40Z","commit_sha":"cd7c23be7be81f84eabdab483631d734534b85f6","commit_message":"feat(nonmatching): func_L01_002F6540 functional, rail-following moby update (path mover state machine)\n\nPlain C with the same reads, writes and calls; equiv: only compiler-choice differences and two FLT_MAX division guards.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T11:09:32Z","commit_sha":"ea2fc65429bd99ddbf3fcfc8e474d9bfdf6b2841","commit_message":"feat(nonmatching): func_L11_0030E620 functional, Pokitaru cutscene helper moby posing\n\nPoses the 0x480-0x483 helper mobys of func_L11_0030DBF8 from the eased progress globals.\nequiv: only select/branch forms and argument-credit artifacts differ, all checked against the asm.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T11:01:37Z","commit_sha":"b296aee81bc04307798a104269a1ec0c6b4a3e5a","commit_message":"feat(nonmatching): func_L01_002F0040 functional, Novalis moby hit and target-search helper\n\nRepaired from the near miss: float distance result, the 0/0x800 argument of func_L00_002584A8.\nequiv.py: remaining differences are W copies, branch polarity and register choice only.\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T07:31:34Z","commit_sha":"d4b2723f2262e850f55810daeeaa5ff29f1e35e0","commit_message":"feat(nonmatching): func_L12_002EB2E8 functional, Hoven flying-enemy update\n\nSeven-state moby update (setup, trigger, charge, chase, waypoint, fall, die). equiv: DIFFERENT only by code shape.\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T07:15:21Z","commit_sha":"c3b7dd1213522b5869d2f6699b377e8ffa572de7","commit_message":"fix(nonmatching): no blank line at the end of functional.tsv\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T07:06:28Z","commit_sha":"7b93d75e11cecc50b2f767773c6f4a6088e6a844","commit_message":"docs(nonmatching): the confidence line on the four functional files written for the port\n\nhigh for the two predicates, medium for the level 12 and level 4 ones (a near miss\nrepaired, and one written from the instructions; neither run far in its level),\nas docs/workflow/BACKFILL.md asks.\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01HnBWRX56NfvfSTkUri24bZ","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T06:02:25Z","commit_sha":"d79fffdba5779a3d55d96bc49c0e637fcbe3b12f","commit_message":"notes: func_0012C8B0 first candidate (216/224), three-mult cse blocker\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T05:58:58Z","commit_sha":"f59b0340a86bacd2c9e24d5c6e73df9bf147e7a9","commit_message":"notes: func_0012AC80 more shift=0 variants, no gain\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-13T05:57:58Z","commit_sha":"a264bcdb6308e5ffd65f08fd652e4ca7f6ee94d9","commit_message":"Merge branches 'main' and 'main' of github.com:OpenRAC/rac1-decomp","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T22:06:08Z","commit_sha":"efe37c0ebd8127585da04ec537e60687dde41803","commit_message":"Merge pull request #55 from Veradictus/main\n\nfeat: 27 more functions (4,291 of 5,109), fragment joins and functional C for the port","measures":{"fuzzy_match_percent":81.18505,"total_code":3712808,"matched_code":2980444,"matched_code_percent":80.27466,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4291,"matched_functions_percent":83.98904,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T20:11:40Z","commit_sha":"802c91880654a864d4b6aa33fa636502667813fe","commit_message":"nonmatching: func_L09_002F1198 now 18/500 bytes (was 55)\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.76777,"total_code":3712808,"matched_code":2963672,"matched_code_percent":79.82293,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4264,"matched_functions_percent":83.460556,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T19:49:19Z","commit_sha":"351dacdb464b53be8e68c0e8c7c928ae0cb02aca","commit_message":"Merge PR #53: func_L00_002C6720 exact match\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.76777,"total_code":3712808,"matched_code":2963672,"matched_code_percent":79.82293,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4264,"matched_functions_percent":83.460556,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T15:42:44Z","commit_sha":"4449aaff13edf6634dc31f3bfda6017b097834a6","commit_message":"nonmatching: func_L09_002F1198 now 55/500 bytes (was 95)\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.71078,"total_code":3712808,"matched_code":2961596,"matched_code_percent":79.76701,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4263,"matched_functions_percent":83.44099,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T15:12:52Z","commit_sha":"45e34967aa96625762137c042385f2bf84e62d16","commit_message":"vendor_00298BB8.c: func_L15_002A3B98 exact match\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.71078,"total_code":3712808,"matched_code":2961596,"matched_code_percent":79.76701,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4263,"matched_functions_percent":83.44099,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T15:01:44Z","commit_sha":"33cdd36eabe21a1e4ce2f5fad0dc3c7434f83c70","commit_message":"nonmatching: drop two rows for matched functions\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.69547,"total_code":3712808,"matched_code":2961028,"matched_code_percent":79.75172,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4262,"matched_functions_percent":83.42141,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T15:01:36Z","commit_sha":"c10f11c287c3879cb6bfa8e8cec5e928a4ffda1b","commit_message":"nonmatching: func_L15_002A3B98 now 568 bytes, 25 off (was an unlinkable 572)\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.69547,"total_code":3712808,"matched_code":2961028,"matched_code_percent":79.75172,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4262,"matched_functions_percent":83.42141,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T14:27:27Z","commit_sha":"c5d247e45b181f717ef13b462a166233efccc7b4","commit_message":"help_0020CDF0.c: func_L00_00211D28 exact match\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.69547,"total_code":3712808,"matched_code":2961028,"matched_code_percent":79.75172,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4262,"matched_functions_percent":83.42141,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T13:34:23Z","commit_sha":"4aa43deda767a655a6f3a6dbf2ed03e15cfb2dbc","commit_message":"help_00203E98.c: func_L00_00207220 exact match, file built with -fno-sched-interblock\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.69534,"total_code":3712808,"matched_code":2960580,"matched_code_percent":79.73965,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4261,"matched_functions_percent":83.40184,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T11:45:40Z","commit_sha":"d10bd3fc75c4cf9ece9f78f57fbcc6c702522bf5","commit_message":"nonmatching: func_L15_002A3B98 near miss, 572/568, builds again\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T11:38:54Z","commit_sha":"d4a6254ffb9a0a8e5d7d7cbbc39b4ecd47a6a052","commit_message":"nonmatching: func_L00_00227F48 near miss, 552/564\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T11:32:57Z","commit_sha":"84abd0aab067b3b8ad7854d2101d410d4bb339e3","commit_message":"nonmatching: func_L01_00303810 near miss, 464/524\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T11:20:49Z","commit_sha":"860e2984c87ef38bf7f859d0beeee8e10b6e7d01","commit_message":"nonmatching: func_L09_002F1198 near miss, 95/500\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T11:17:38Z","commit_sha":"771fe76990c6608d7cfebaacb6b9864dba3844d3","commit_message":"notes: near misses func_00238F98, func_0023D340, func_00232B90, func_00204918; level notes refreshed\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T10:35:08Z","commit_sha":"70396998749286a61a11d038356893fa32259c02","commit_message":"refactor(overlays): drop two repeated externs in draw_001F3A78.c\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T10:29:05Z","commit_sha":"e9253c39053a562c48d8fcf90490deacbc9efcf7","commit_message":"refactor: include/callees.h shares 47 engine prototypes; fix Vec4A clash in help_0020CDF0\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T10:23:20Z","commit_sha":"cdca44d498e9918a4bcf2b8418a606372565a923","commit_message":"refactor: include/records.h for DispatchRec, PadSlots, AnimSeq in 60 files\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T10:13:15Z","commit_sha":"8927700612ca72d206f4e6ff323e214edcbd5a20","commit_message":"refactor(overlays): Vec4A in vector.h replaces 21 private aligned xyzw copies\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T10:10:16Z","commit_sha":"5539a45b061a6eecd75026dee83fe14972883be2","commit_message":"refactor(game): merge same-form aliases of one symbol in 9 files\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T10:09:51Z","commit_sha":"9db6ca9f73d5cfc48bce01e57aeccd596ab87612","commit_message":"refactor(overlays): merge same-form aliases of one symbol in 52 files\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T10:08:22Z","commit_sha":"c0525310a5c126423f39a2c9b6c6f8345751a63c","commit_message":"refactor(game): drop repeated identical extern lines in 36 files\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T10:01:19Z","commit_sha":"4c7231adf482d23e7228c2b51587ba8fb9bd03f2","commit_message":"Match func_L00_001F5C60 in the shared draw overlay (the debug menu draw) (#49)\n\nfunc_L00_001F5C60, 4,884 bytes, replaces its INCLUDE_ASM stub and is checked\nwith the strict overlay check. The starting point was the staged near miss\n(one byte off); decomp-permuter found the two temporaries that close it:\nthe format-string pointer cached in a local on its first use, and the\nconstant 16 held in a local. The staged nonmatching/ file is removed and\nnonmatching/README.md and progress/report.json are regenerated\n(4,226 functions, 78.76% matched code).\n\nThe US counterpart is Lombyte FUN_L00_001f58e0 (draw_debug_menu), which is\nstill a pending draft there.\n\nCo-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67797,"total_code":3712808,"matched_code":2960340,"matched_code_percent":79.733185,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4260,"matched_functions_percent":83.38226,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T09:32:35Z","commit_sha":"edbd95cb64035980843ac46bfa45e5e1e97c9a63","commit_message":"refactor(overlays): drop repeated identical extern lines in 126 files\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67762,"total_code":3712808,"matched_code":2955444,"matched_code_percent":79.60132,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4258,"matched_functions_percent":83.34312,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T08:10:11Z","commit_sha":"4a46a47401e61b6ae6c9e86bfce3aebf337787d2","commit_message":"refactor(game): shared moby and vector headers in update, pause, transition\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67762,"total_code":3712808,"matched_code":2955444,"matched_code_percent":79.60132,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4258,"matched_functions_percent":83.34312,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T08:09:49Z","commit_sha":"3e6174f63b3a379136a138c90a54969b5c8edac8","commit_message":"refactor(overlays): shared moby, hero, vector headers in 16 more level files\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67762,"total_code":3712808,"matched_code":2955444,"matched_code_percent":79.60132,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4258,"matched_functions_percent":83.34312,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T07:27:09Z","commit_sha":"85cfe927dbd455e34a7f68aff6c3711089a70c21","commit_message":"audiodec.c: func_0023C390 exact match\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":80.67762,"total_code":3712808,"matched_code":2955444,"matched_code_percent":79.60132,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4258,"matched_functions_percent":83.34312,"complete_code":482572,"complete_code_percent":12.997494,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":88}},{"timestamp":"2026-10-12T05:33:13Z","commit_sha":"fc9d8e0b06aa0896c425b12d2784e20dff3df36d","commit_message":"Merge pull request #52 from Veradictus/main\n\nfeat(report): shared level code is one unit, as each level is","measures":{"fuzzy_match_percent":80.66178,"total_code":3712808,"matched_code":2954856,"matched_code_percent":79.58548,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4257,"matched_functions_percent":83.32355,"complete_code":480996,"complete_code_percent":12.955047,"complete_data":0,"complete_data_percent":0,"total_units":141,"complete_units":87}},{"timestamp":"2026-10-12T04:27:16Z","commit_sha":"a584fe47440f47108b9ca538a1dcd2ba5bca5288","commit_message":"Merge pull request #50 from Veradictus/main\n\nfeat: 32 functions ported from the NTSC decomp (4,257 of 5,109)","measures":{"fuzzy_match_percent":80.66178,"total_code":3712808,"matched_code":2954856,"matched_code_percent":79.58548,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4257,"matched_functions_percent":83.32355,"complete_code":618092,"complete_code_percent":16.647562,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":144}},{"timestamp":"2026-10-11T19:54:22Z","commit_sha":"ae2da5f22dbbbc3143ca6aabdd50a8d118c4814e","commit_message":"chore(report): 4,225 of 5,109 functions\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.844505,"total_code":3712808,"matched_code":2919340,"matched_code_percent":78.6289,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4225,"matched_functions_percent":82.697205,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T19:39:31Z","commit_sha":"dc7b22e42d1f613def569d2c357bd43c911b89ba","commit_message":"chore(report): 4,221 of 5,109 functions\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.81509,"total_code":3712808,"matched_code":2918248,"matched_code_percent":78.59949,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4221,"matched_functions_percent":82.618904,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T19:08:17Z","commit_sha":"f33964c1a30c3e0b46544a551cd56a776833d2d3","commit_message":"refactor(overlays): include/moby.h in place of anonymous moby copies\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T19:06:00Z","commit_sha":"eb79fba207cf85f3a6c50bab6132730089537d3a","commit_message":"refactor(overlays): include/pad.h in place of private pad copies\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T19:03:22Z","commit_sha":"65676a1f8f4e4275ce5fcdcdf52462a2b3bdbb02","commit_message":"refactor(game): shared Hero and Vec4 in sound.c and space.c\n\nObjects identical to before but for the symbol table's size of D_0013F450.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T19:00:05Z","commit_sha":"26db96845bccef7584cc071850f73b8c23da67a7","commit_message":"refactor(overlays): include/vector.h in place of private Vec4f copies\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T18:58:38Z","commit_sha":"e98e43269a5c53a9c372f34fa7946c1cbd67e6f9","commit_message":"refactor(include): Vec4f moves to vector.h, which moby.h includes\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T18:55:40Z","commit_sha":"5205827fa27584436789f098d58cb62376f751ee","commit_message":"refactor(overlays): drop quadword typedefs nothing uses\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T18:54:22Z","commit_sha":"65e21103747df6ea21f6852ae1bc76ceba3047c5","commit_message":"refactor(overlays): include/vector.h in place of private Vec4 copies, shared\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T18:50:03Z","commit_sha":"a7940857fdd5074518e856aa5de284e60b8bbd13","commit_message":"refactor(overlays): the hero in loaders_00240398.c is struct Hero\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T18:48:32Z","commit_sha":"c6f40359d8cb8efb834d9a2a0a425a75c98f8bba","commit_message":"refactor(overlays): the hero in vendor_00293720.c is struct Hero\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T18:46:53Z","commit_sha":"7e98880e91c9736c65fc98a411d667688a5b1dbf","commit_message":"refactor(overlays): include/hero.h in vendor_002C12B0.c\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T18:45:16Z","commit_sha":"71780e646ab55d3b6457c8b3f9f867ab2a07be1e","commit_message":"refactor(hero): name more item-slot fields, read retyped fields by value\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T18:40:50Z","commit_sha":"5b305a2130e9450bc5beea3e6761707dc8e04408","commit_message":"refactor(overlays): include/hero.h in more files, shared\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T18:37:35Z","commit_sha":"2f331e0adb0df32de486cba8a03f26a7ccf1d1ef","commit_message":"refactor(overlays): include/hero.h in more files, shared\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T18:24:47Z","commit_sha":"d9b8a96b937c6ebf586422c7cca8492195814b1b","commit_message":"refactor(overlays): include/hero.h in place of private hero copies, shared\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T18:07:22Z","commit_sha":"7644c67f24b2d452d48607a3573730adf598ae0e","commit_message":"refactor(overlays): include/moby.h in place of 58 private moby copies, shared (20 files)\n\nThe private moby and moby class structs of these files become the shared\nMoby and MobyClass, and vector types identical to Vec4f become Vec4f. An\naccess whose old type differs from the shared field at the same offset\nkeeps that type through a cast on the shared field's address, so no\ncompiled byte changes.\n\nVerified: overlay_file_check, 0 problems.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-11T16:47:36Z","commit_sha":"cf5e8ad6dc972bd3768ce290d2584c5d03a0ae7e","commit_message":"Merge pull request #48 from Veradictus/main\n\nFive more matches (4,220 of 5,109) and a first-person camera fix for the port","measures":{"fuzzy_match_percent":79.804855,"total_code":3712808,"matched_code":2917868,"matched_code_percent":78.58925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4220,"matched_functions_percent":82.599335,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-10T20:34:21Z","commit_sha":"ae5490f717e9a508933e38f79f23623ffd6d8462","commit_message":"Merge pull request #47 from Veradictus/main\n\nPort support: functional C for the native build, plus a handful of matching fixes","measures":{"fuzzy_match_percent":79.79022,"total_code":3712808,"matched_code":2914880,"matched_code_percent":78.50877,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4215,"matched_functions_percent":82.501465,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-10T03:40:35Z","commit_sha":"4b86e4fca5bc81eabda107454e0262d76be6398b","commit_message":"Merge pull request #46 from Veradictus/main\n\nMatch 508 functions, add a moby struct and functional C for the native port","measures":{"fuzzy_match_percent":79.779335,"total_code":3712808,"matched_code":2914476,"matched_code_percent":78.497894,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":4214,"matched_functions_percent":82.481895,"complete_code":608216,"complete_code_percent":16.381563,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":143}},{"timestamp":"2026-10-09T20:35:28Z","commit_sha":"0fe9b5129b831024e5372b05e52c0279f4fe54ab","commit_message":"Merge pull request #45 from dev-gian/feat/four-overlay-matches\n\nMatch 4 functions in Rilgar, Pokitaru, Gemlik and shared overlays","measures":{"fuzzy_match_percent":63.130333,"total_code":3712808,"matched_code":2273016,"matched_code_percent":61.22094,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3706,"matched_functions_percent":72.53866,"complete_code":566668,"complete_code_percent":15.262518,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":131}},{"timestamp":"2026-10-09T07:30:30Z","commit_sha":"48bbff8ed606c7aba7e7e93050fc875e5af1d778","commit_message":"Decompile 5 functions in movie player without inline asm","measures":{"fuzzy_match_percent":63.103775,"total_code":3712808,"matched_code":2271268,"matched_code_percent":61.173862,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3702,"matched_functions_percent":72.460365,"complete_code":566668,"complete_code_percent":15.262518,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":131}},{"timestamp":"2026-10-09T06:13:01Z","commit_sha":"0da680d7a13884a5531b1eb574e4bf9cd3f59e1f","commit_message":"Revert pseudo-functions using register pinning and inline asm to INCLUDE_ASM","measures":{"fuzzy_match_percent":63.07221,"total_code":3712808,"matched_code":2270096,"matched_code_percent":61.142296,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3698,"matched_functions_percent":72.38207,"complete_code":566668,"complete_code_percent":15.262518,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":131}},{"timestamp":"2026-10-08T22:18:05Z","commit_sha":"6ded75da99da1d7dec69bf76af7e46dc24b3c14c","commit_message":"Decompile 25 small functions (menu, help, vendor, sound, and vibuf helpers)","measures":{"fuzzy_match_percent":63.085136,"total_code":3712808,"matched_code":2270576,"matched_code_percent":61.155224,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3717,"matched_functions_percent":72.75397,"complete_code":566668,"complete_code_percent":15.262518,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":131}},{"timestamp":"2026-10-08T21:06:25Z","commit_sha":"d9cf6452a5923102855152d08d6963b1c653fcf9","commit_message":"Decompile 5 small functions (menu card state helpers, vibuf CHCR/tag)","measures":{"fuzzy_match_percent":63.071884,"total_code":3712808,"matched_code":2270084,"matched_code_percent":61.14197,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3699,"matched_functions_percent":72.40164,"complete_code":566668,"complete_code_percent":15.262518,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":131}},{"timestamp":"2026-10-08T20:52:20Z","commit_sha":"5fb90abd2c1ce2b3e9c4d822003ebba94be4964b","commit_message":"Merge pull request #44 from dev-gian/feat/eight-overlay-matches\n\nMatch 8 functions in Batalia, Pokitaru, Hoven and Gemlik overlays","measures":{"fuzzy_match_percent":63.06359,"total_code":3712808,"matched_code":2269776,"matched_code_percent":61.133675,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3694,"matched_functions_percent":72.30378,"complete_code":566668,"complete_code_percent":15.262518,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":131}},{"timestamp":"2026-10-08T17:40:42Z","commit_sha":"a35ffbee49bb74c70b7b3e3492085d415f652038","commit_message":"Merge pull request #42 from dev-gian/feat/rilgar-batalia-matches\n\nMatch 8 functions in Rilgar and Batalia overlays","measures":{"fuzzy_match_percent":62.940693,"total_code":3712808,"matched_code":2264244,"matched_code_percent":60.984676,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3686,"matched_functions_percent":72.147194,"complete_code":566668,"complete_code_percent":15.262518,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":131}},{"timestamp":"2026-10-08T17:25:37Z","commit_sha":"b8f9355792ac169d9cc3e6ab786320222053e564","commit_message":"Merge pull request #43 from Veradictus/main\n\nFour big ones from Lombyte, courtesy of GPT","measures":{"fuzzy_match_percent":62.81397,"total_code":3712808,"matched_code":2257800,"matched_code_percent":60.811115,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3678,"matched_functions_percent":71.99061,"complete_code":566668,"complete_code_percent":15.262518,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":131}},{"timestamp":"2026-10-08T16:30:06Z","commit_sha":"57a67ccdd944b987f26790d24217a42af6c1a232","commit_message":"Decompile func_L00_00274788 in partupd_00272158.c","measures":{"fuzzy_match_percent":62.200954,"total_code":3712808,"matched_code":2235040,"matched_code_percent":60.198105,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3674,"matched_functions_percent":71.912315,"complete_code":542832,"complete_code_percent":14.620524,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":128}},{"timestamp":"2026-10-08T15:30:53Z","commit_sha":"66e8846af3bd18674896ee3e8f3d32bc45543b34","commit_message":"Match func_L00_0024A490 and func_L00_0024A5C0 (menu coordinate checks) with joined fragments","measures":{"fuzzy_match_percent":62.200848,"total_code":3712808,"matched_code":2234656,"matched_code_percent":60.18776,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3673,"matched_functions_percent":71.89274,"complete_code":542832,"complete_code_percent":14.620524,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":128}},{"timestamp":"2026-10-08T15:10:49Z","commit_sha":"bc6fc23b2470ecfca26a7fe43f276864e6707973","commit_message":"Match func_L10_002DB278 in l10_orxon vendor (1040 bytes)","measures":{"fuzzy_match_percent":62.1995,"total_code":3712808,"matched_code":2234380,"matched_code_percent":60.18033,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3669,"matched_functions_percent":71.814445,"complete_code":542832,"complete_code_percent":14.620524,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":128}},{"timestamp":"2026-10-08T14:24:12Z","commit_sha":"7eb3f264198a7265a148987e523bbb53da69730c","commit_message":"overlay: decompile func_L00_00247478 (joined with func_L00_002474C4) and clean up matched remnants","measures":{"fuzzy_match_percent":62.19936,"total_code":3712808,"matched_code":2233340,"matched_code_percent":60.152317,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3668,"matched_functions_percent":71.79487,"complete_code":542832,"complete_code_percent":14.620524,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":128}},{"timestamp":"2026-10-08T14:02:57Z","commit_sha":"60263b55d39059ed7aa83f6cb9691dcdffbe2a4d","commit_message":"Merge pull request #41 from Veradictus/main","measures":{"fuzzy_match_percent":62.19863,"total_code":3712808,"matched_code":2233240,"matched_code_percent":60.149624,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3666,"matched_functions_percent":71.75572,"complete_code":542832,"complete_code_percent":14.620524,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":128}},{"timestamp":"2026-10-08T13:48:00Z","commit_sha":"6f599e083e76c26186a6f583773247c35ae0d059","commit_message":"overlay(l15): decompile func_L15_002F8D30 (joined with func_L15_002F8D9C)","measures":{"fuzzy_match_percent":61.16411,"total_code":3712808,"matched_code":2213212,"matched_code_percent":59.61019,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3625,"matched_functions_percent":70.95322,"complete_code":536416,"complete_code_percent":14.447718,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":121}},{"timestamp":"2026-10-08T13:34:07Z","commit_sha":"0689a769d0a9a4cbdec59b7b5cad1e528c1800dd","commit_message":"overlay: decompile func_L00_001EBDA0 (UpdateAllCameras__Fi)","measures":{"fuzzy_match_percent":61.164032,"total_code":3712808,"matched_code":2213092,"matched_code_percent":59.60696,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3623,"matched_functions_percent":70.91407,"complete_code":536416,"complete_code_percent":14.447718,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":121}},{"timestamp":"2026-10-08T12:45:27Z","commit_sha":"2856ebe3d23688064486b6cefe4d876bffe2cd9e","commit_message":"Match func_L05_0030D3F0 (UpdateMoby_812) in Rilgar overlay","measures":{"fuzzy_match_percent":61.16393,"total_code":3712808,"matched_code":2212824,"matched_code_percent":59.599743,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3622,"matched_functions_percent":70.8945,"complete_code":536416,"complete_code_percent":14.447718,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":121}},{"timestamp":"2026-10-08T12:35:38Z","commit_sha":"7c1b32b84030acf93c6658efb994ae4c5e90e2e4","commit_message":"Decompile func_L03_002ECD40 (ActivateCamera_14) in Kerwan overlay","measures":{"fuzzy_match_percent":61.16393,"total_code":3712808,"matched_code":2212824,"matched_code_percent":59.599743,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3622,"matched_functions_percent":70.8945,"complete_code":536416,"complete_code_percent":14.447718,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":121}},{"timestamp":"2026-10-08T08:43:05Z","commit_sha":"b098a97227cb25a9299c3436020bc84dcd3af54f","commit_message":"Match func_L13_002EE8E0 (UpdateMoby_404) in Gemlik overlay","measures":{"fuzzy_match_percent":61.16387,"total_code":3712808,"matched_code":2212452,"matched_code_percent":59.58972,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3621,"matched_functions_percent":70.87492,"complete_code":536416,"complete_code_percent":14.447718,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":121}},{"timestamp":"2026-10-08T08:34:04Z","commit_sha":"392b2a1eae171f3ae7053e4bc9fa125d32a99b89","commit_message":"Match func_L15_002EC8B0 (UpdateMoby_1419) in Quartu overlay","measures":{"fuzzy_match_percent":61.16371,"total_code":3712808,"matched_code":2211864,"matched_code_percent":59.573887,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3620,"matched_functions_percent":70.855354,"complete_code":536416,"complete_code_percent":14.447718,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":121}},{"timestamp":"2026-10-08T08:16:50Z","commit_sha":"10eb5bd562d87685a61b22e359c6dec7b9801c26","commit_message":"Match func_L04_002E4458 (UpdateMoby_1190) in Eudora overlay","measures":{"fuzzy_match_percent":61.163578,"total_code":3712808,"matched_code":2211364,"matched_code_percent":59.560417,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3619,"matched_functions_percent":70.83578,"complete_code":536416,"complete_code_percent":14.447718,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":121}},{"timestamp":"2026-10-08T08:03:22Z","commit_sha":"b6f4ade74d75a7603136a6072026c3c732d8ac4c","commit_message":"Match func_L03_002D4CE0 in Kerwan overlay","measures":{"fuzzy_match_percent":61.16344,"total_code":3712808,"matched_code":2210812,"matched_code_percent":59.54555,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3618,"matched_functions_percent":70.81621,"complete_code":536416,"complete_code_percent":14.447718,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":121}},{"timestamp":"2026-10-08T07:48:12Z","commit_sha":"50a1635c44693d9be70b5f6065626e041e75f054","commit_message":"Match func_L10_002DA678 in Orxon overlay","measures":{"fuzzy_match_percent":61.163307,"total_code":3712808,"matched_code":2210008,"matched_code_percent":59.523895,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3617,"matched_functions_percent":70.79663,"complete_code":536416,"complete_code_percent":14.447718,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":121}},{"timestamp":"2026-10-08T06:28:39Z","commit_sha":"7026fdfeb9818c816a8b1d5320075019a4543cf7","commit_message":"Merge pull request #40 from Veradictus/main\n\nStop helping the compiler, plus another 1.9% of the game","measures":{"fuzzy_match_percent":61.163227,"total_code":3712808,"matched_code":2209344,"matched_code_percent":59.506012,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3616,"matched_functions_percent":70.77706,"complete_code":536416,"complete_code_percent":14.447718,"complete_data":0,"complete_data_percent":0,"total_units":280,"complete_units":121}},{"timestamp":"2026-10-08T06:16:28Z","commit_sha":"60f32549bc5daff717fa02539718f5fb0e1ff713","commit_message":"Merge pull request #37 from OpenRAC/qwen-fixes-and-matches\n\nqwen trying to decompile","measures":{"fuzzy_match_percent":59.116108,"total_code":3712808,"matched_code":2134528,"matched_code_percent":57.490932,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3446,"matched_functions_percent":67.4496,"complete_code":481164,"complete_code_percent":12.959571,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":85}},{"timestamp":"2026-10-08T06:03:34Z","commit_sha":"de7820be7881ddfbdb9929065fc9e21b54e7b3ac","commit_message":"Merge pull request #39 from dev-gian/feat/overlay-4-matches\n\nfeat(overlays): four overlay functions, exact matches","measures":{"fuzzy_match_percent":59.089874,"total_code":3712808,"matched_code":2133792,"matched_code_percent":57.47111,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3431,"matched_functions_percent":67.156,"complete_code":481164,"complete_code_percent":12.959571,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":85}},{"timestamp":"2026-10-08T06:03:15Z","commit_sha":"ed9c4e920b531cf47f4128a22dd34fb668d6b5dc","commit_message":"Merge pull request #38 from OpenRAC/qwen-experiment\n\nadd func_L03_002E99F0.c","measures":{"fuzzy_match_percent":59.057446,"total_code":3712808,"matched_code":2132588,"matched_code_percent":57.438683,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3427,"matched_functions_percent":67.077705,"complete_code":481008,"complete_code_percent":12.95537,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":84}},{"timestamp":"2026-10-07T22:03:51Z","commit_sha":"d3e29a16035dddb0ceadba9b4a58e1170cd6dd96","commit_message":"chore(report): update progress report for libgcc matching modules","measures":{"fuzzy_match_percent":59.057446,"total_code":3712808,"matched_code":2132588,"matched_code_percent":57.438683,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3427,"matched_functions_percent":67.077705,"complete_code":481008,"complete_code_percent":12.95537,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":84}},{"timestamp":"2026-10-07T00:07:21Z","commit_sha":"661bb60c1fb2e8f4e335a577193b8ee4a165b8fc","commit_message":"Merge pull request #36 from Veradictus/main\n\nfeat: level 0 and game/menu complete, 46 more functions, a prototype sweep","measures":{"fuzzy_match_percent":58.936996,"total_code":3712808,"matched_code":2128116,"matched_code_percent":57.318233,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3424,"matched_functions_percent":67.01899,"complete_code":476536,"complete_code_percent":12.834922,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":81}},{"timestamp":"2026-10-06T19:26:26Z","commit_sha":"10c89aa51c19bb4f84364ca8db2fdc2354edee3d","commit_message":"Merge pull request #34 from Veradictus/main\n\nfeat(overlays): level 16 complete, 19 more functions","measures":{"fuzzy_match_percent":58.86824,"total_code":3712808,"matched_code":2090144,"matched_code_percent":56.295506,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3373,"matched_functions_percent":66.020744,"complete_code":455656,"complete_code_percent":12.272544,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":78}},{"timestamp":"2026-10-06T19:03:17Z","commit_sha":"9ed862d89963415428d26dd7c8bc63288971d207","commit_message":"Merge pull request #30 from OpenRAC/qwen-fixes-and-matches\n\ntrying some small to medium functions","measures":{"fuzzy_match_percent":58.78499,"total_code":3712808,"matched_code":2083972,"matched_code_percent":56.12927,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3357,"matched_functions_percent":65.70757,"complete_code":323316,"complete_code_percent":8.708126,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":77}},{"timestamp":"2026-10-06T12:42:19Z","commit_sha":"7bdba056d50dfb33fc81928b01981385bded170c","commit_message":"Merge pull request #33 from Veradictus/main","measures":{"fuzzy_match_percent":56.978325,"total_code":3712808,"matched_code":2034864,"matched_code_percent":54.806606,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3275,"matched_functions_percent":64.10256,"complete_code":322676,"complete_code_percent":8.690888,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":76}},{"timestamp":"2026-10-05T22:31:30Z","commit_sha":"05da3217a4046ac01dec3ac74f051a348f063155","commit_message":"Merge pull request #32 from Veradictus/main\n\nfeat(overlays): level 17 complete, 29 more functions, and two report rules for level units","measures":{"fuzzy_match_percent":56.62688,"total_code":3712808,"matched_code":2020920,"matched_code_percent":54.431038,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3186,"matched_functions_percent":62.36054,"complete_code":313604,"complete_code_percent":8.446545,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":71}},{"timestamp":"2026-10-05T18:23:11Z","commit_sha":"c1ad36eb9f33643a59f6a46585bf11db664d0729","commit_message":"Merge pull request #31 from Veradictus/main\n\nfeat(include): qcopy_nc() and qzero(), and the 17 functions they unlock (51.63% to 53.10%)","measures":{"fuzzy_match_percent":55.6527,"total_code":3712808,"matched_code":1971340,"matched_code_percent":53.09566,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3131,"matched_functions_percent":61.284008,"complete_code":172928,"complete_code_percent":4.657607,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":69}},{"timestamp":"2026-10-05T17:36:24Z","commit_sha":"aa08a845ec548a21d1b94998f9cf77c5933c4a9d","commit_message":"Merge pull request #29 from Veradictus/main\n\nfeat(overlays): 140 functions, 1.08 MB: matched code goes from 22.59% to 51.63%","measures":{"fuzzy_match_percent":55.515984,"total_code":3712808,"matched_code":1916880,"matched_code_percent":51.62885,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":3114,"matched_functions_percent":60.951263,"complete_code":172928,"complete_code_percent":4.657607,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":69}},{"timestamp":"2026-10-05T15:45:15Z","commit_sha":"cb22f0b0d3a171d1fd4b6851b86fe214a22c9822","commit_message":"Merge pull request #28 from OpenRAC/qwen-fixes-and-matches\n\nREADME update","measures":{"fuzzy_match_percent":25.120625,"total_code":3712808,"matched_code":838628,"matched_code_percent":22.587433,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2974,"matched_functions_percent":58.211,"complete_code":97220,"complete_code_percent":2.6185033,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":64}},{"timestamp":"2026-10-05T13:18:31Z","commit_sha":"3848fd664493bf701dde7c9b3eeba846b9efd0f8","commit_message":"Merge pull request #27 from OpenRAC/qwen-fixes-and-matches\n\nQwen fixes and matches","measures":{"fuzzy_match_percent":25.120625,"total_code":3712808,"matched_code":838628,"matched_code_percent":22.587433,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2974,"matched_functions_percent":58.211,"complete_code":97220,"complete_code_percent":2.6185033,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":64}},{"timestamp":"2026-10-05T07:07:56Z","commit_sha":"893bc3bca00ee785a1c05327b34b9bd1a79330c0","commit_message":"feat(overlays/l08_batalia): func_L08_002DBD88 exact match\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":24.925005,"total_code":3712808,"matched_code":829760,"matched_code_percent":22.348583,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2945,"matched_functions_percent":57.643375,"complete_code":97116,"complete_code_percent":2.6157022,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":63}},{"timestamp":"2026-10-05T07:04:42Z","commit_sha":"d553dd3d6b930705f9aea720b3a0dc736873bcbb","commit_message":"fix(tools): ps2eeas_nops: spell out the FP hazard nop after a label between c.cond and bc1\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":24.924852,"total_code":3712808,"matched_code":829284,"matched_code_percent":22.335764,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2944,"matched_functions_percent":57.623802,"complete_code":97116,"complete_code_percent":2.6157022,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":63}},{"timestamp":"2026-10-05T06:47:30Z","commit_sha":"2aaf1ff98333e4a46ab132dd6481ba1aae544e8a","commit_message":"feat(overlays/l04_eudora): func_L04_002D48B8 exact match\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":24.924852,"total_code":3712808,"matched_code":829284,"matched_code_percent":22.335764,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2944,"matched_functions_percent":57.623802,"complete_code":97116,"complete_code_percent":2.6157022,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":63}},{"timestamp":"2026-10-05T06:35:47Z","commit_sha":"3d030bf24fb1e7efefd9b8f9bb59c6c3dda60347","commit_message":"Merge pull request #26 from Veradictus/main\n\nSeems okay, good work","measures":{"fuzzy_match_percent":24.92485,"total_code":3712808,"matched_code":829136,"matched_code_percent":22.331778,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2943,"matched_functions_percent":57.60423,"complete_code":97116,"complete_code_percent":2.6157022,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":63}},{"timestamp":"2026-10-04T21:23:51Z","commit_sha":"4a59734a3869f570901364df42bf4d01bb64481b","commit_message":"Merge pull request #25 from Lynder063/readme-refresh\n\nRefresh the README: how it works, contributing and license sections","measures":{"fuzzy_match_percent":22.884912,"total_code":3712808,"matched_code":751292,"matched_code_percent":20.235144,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2834,"matched_functions_percent":55.470737,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T11:49:50Z","commit_sha":"9ca0f7f71f8881c8bbc5b388f48327af9dd43be2","commit_message":"Add .recomp.json for recomp.fyi\n\nCo-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":22.884912,"total_code":3712808,"matched_code":751292,"matched_code_percent":20.235144,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2834,"matched_functions_percent":55.470737,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T09:32:16Z","commit_sha":"7502ff0e5cb286538859e9d107452ca185bfc3b8","commit_message":"Merge pull request #24 from Lynder063/lombyte-ahead-ports\n\nPort 36 functions Lombyte has matched (exact, +16 KB)","measures":{"fuzzy_match_percent":22.884912,"total_code":3712808,"matched_code":751292,"matched_code_percent":20.235144,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2834,"matched_functions_percent":55.470737,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T08:40:22Z","commit_sha":"7ea55a7995536aa8d22e8db7a56339bad907c8ec","commit_message":"docs(credits): remove removal note and credit GFI Discord community","measures":{"fuzzy_match_percent":22.71606,"total_code":3712808,"matched_code":735236,"matched_code_percent":19.802694,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2798,"matched_functions_percent":54.766098,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T06:09:07Z","commit_sha":"bdc09bc86bafb3013728fb825c96e17f15187d70","commit_message":"feat(core/text): func_0023E478 exact match\\n\\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.71606,"total_code":3712808,"matched_code":735236,"matched_code_percent":19.802694,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2798,"matched_functions_percent":54.766098,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T00:31:45Z","commit_sha":"f781de5e1c9cc47c5e7e37ce5fe3ce92464acbea","commit_message":"feat(core/text): func_0023BF70 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.714554,"total_code":3712808,"matched_code":735180,"matched_code_percent":19.801186,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2797,"matched_functions_percent":54.746525,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T00:29:36Z","commit_sha":"e0b123f0a757df1a86f46f9fa018edadb7e55784","commit_message":"feat(core/text): func_0023BB60 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.713367,"total_code":3712808,"matched_code":735136,"matched_code_percent":19.800001,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2796,"matched_functions_percent":54.72695,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T00:20:53Z","commit_sha":"405cddd940d700c59aec48c7e162ee229eeb5ea5","commit_message":"feat(core/text): func_0023C2C0 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.712183,"total_code":3712808,"matched_code":735092,"matched_code_percent":19.798815,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2795,"matched_functions_percent":54.70738,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T00:18:12Z","commit_sha":"9d95031df4b061c87fbaf751d30e8a2a34b315e2","commit_message":"feat(core/text): func_0023BF48 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.711214,"total_code":3712808,"matched_code":735056,"matched_code_percent":19.797846,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2794,"matched_functions_percent":54.687805,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T00:10:04Z","commit_sha":"bfb4cdd6deec6cccdb0941c0bb2f386c3eb063e0","commit_message":"feat(core/text): func_0023DFA0 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.710243,"total_code":3712808,"matched_code":735020,"matched_code_percent":19.796877,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2793,"matched_functions_percent":54.668232,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T00:07:58Z","commit_sha":"717e3b84bfb8df91581744359f86d54862e49f7e","commit_message":"feat(core/text): func_0023C060 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.709381,"total_code":3712808,"matched_code":734988,"matched_code_percent":19.796015,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2792,"matched_functions_percent":54.64866,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T00:05:28Z","commit_sha":"92c090b590fecf4871b615fa7137984683f2462b","commit_message":"feat(core/text): func_0023E0B0 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.70852,"total_code":3712808,"matched_code":734956,"matched_code_percent":19.795153,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2791,"matched_functions_percent":54.629086,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T00:03:23Z","commit_sha":"e41048dfd75766e50b0cd30766b890e59a35559a","commit_message":"feat(core/text): func_0023DFE0 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.707766,"total_code":3712808,"matched_code":734928,"matched_code_percent":19.794397,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2790,"matched_functions_percent":54.609512,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-04T00:01:19Z","commit_sha":"d2d5af0453fb3a394ebe9a6a7505880b3d72d6f1","commit_message":"feat(core/text): func_0023DFC0 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.707012,"total_code":3712808,"matched_code":734900,"matched_code_percent":19.793644,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2789,"matched_functions_percent":54.58994,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T23:59:14Z","commit_sha":"d1e8299c39f5571c2664c952f98b802b42cee285","commit_message":"feat(core/text): func_0023BB40 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.706257,"total_code":3712808,"matched_code":734872,"matched_code_percent":19.79289,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2788,"matched_functions_percent":54.570366,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T23:57:11Z","commit_sha":"cdde31fcfb7974c22e8fd0581d59275e2ff03ffd","commit_message":"feat(core/text): func_0023CE18 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.705503,"total_code":3712808,"matched_code":734844,"matched_code_percent":19.792135,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2787,"matched_functions_percent":54.550793,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T23:54:35Z","commit_sha":"588421219bd15c437bff5a61c6a95c8c0bd5aeb2","commit_message":"feat(core/text): func_0023C9B0 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.705072,"total_code":3712808,"matched_code":734828,"matched_code_percent":19.791704,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2786,"matched_functions_percent":54.53122,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T23:50:59Z","commit_sha":"213c53d4c4808f13a2a3830b7808368e0dd310cf","commit_message":"feat(core/text): func_0023C2B0 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.704641,"total_code":3712808,"matched_code":734812,"matched_code_percent":19.791273,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2785,"matched_functions_percent":54.511646,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T23:47:54Z","commit_sha":"2cf8211ca607d6014894885d823d84ac33822a07","commit_message":"feat(core/text): func_0023E698 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.70421,"total_code":3712808,"matched_code":734796,"matched_code_percent":19.790842,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2784,"matched_functions_percent":54.492073,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T23:45:48Z","commit_sha":"95ad22c94871c58663ba5288800569d784972ac5","commit_message":"feat(core/text): func_0023E058 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.703888,"total_code":3712808,"matched_code":734784,"matched_code_percent":19.79052,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2783,"matched_functions_percent":54.4725,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T23:43:39Z","commit_sha":"cac647327642bee964444cceb68ce250aa249c42","commit_message":"feat(core/text): func_0023E040 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.703564,"total_code":3712808,"matched_code":734772,"matched_code_percent":19.790197,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2782,"matched_functions_percent":54.452927,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T23:41:32Z","commit_sha":"4c0928a7e50456f358d67cdcd849626e25567b38","commit_message":"feat(core/text): func_0023E5B0 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.703241,"total_code":3712808,"matched_code":734760,"matched_code_percent":19.789873,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2781,"matched_functions_percent":54.433353,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T23:39:26Z","commit_sha":"904afcace24b05a446dedd9070dbca99c74d1382","commit_message":"feat(core/text): func_0023E050 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.703026,"total_code":3712808,"matched_code":734752,"matched_code_percent":19.789658,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2780,"matched_functions_percent":54.41378,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T23:37:21Z","commit_sha":"b3620c8e0271b1d2a0edd85a6ad0ee2b1cf7a4cd","commit_message":"feat(core/text): func_0023E000 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.70281,"total_code":3712808,"matched_code":734744,"matched_code_percent":19.789442,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2779,"matched_functions_percent":54.394207,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T23:35:09Z","commit_sha":"7be232f8085790b5499f31071d9590e0a88d07e5","commit_message":"feat(core/text): func_0023CE28 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.702595,"total_code":3712808,"matched_code":734736,"matched_code_percent":19.789227,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2778,"matched_functions_percent":54.374634,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T23:25:56Z","commit_sha":"0378fb215b29e6d5ae8f8fd31dfb271785f27393","commit_message":"feat(core/text): func_0023CD28 exact match\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.70238,"total_code":3712808,"matched_code":734728,"matched_code_percent":19.789011,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2777,"matched_functions_percent":54.35506,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T22:18:36Z","commit_sha":"859bfd30051abcdba972d374421dde0026195a16","commit_message":"pvars","measures":{"fuzzy_match_percent":22.701841,"total_code":3712808,"matched_code":734720,"matched_code_percent":19.788795,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2776,"matched_functions_percent":54.335487,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T20:57:03Z","commit_sha":"e67fe2010ed1265b4411dc7c2cd44df7df9639d1","commit_message":"nonmatching: func_L04_002D48B8 - add exact match\n\n- Spawn moby with field copies - key fix: load 0x32 before store 0x31\n- EXACT match found by reordering store operations\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.701841,"total_code":3712808,"matched_code":734720,"matched_code_percent":19.788795,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2776,"matched_functions_percent":54.335487,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T20:42:08Z","commit_sha":"13675d41326be565c0d9b548e3c5b6b6bc272028","commit_message":"nonmatching: func_0023E068, func_0023E478 - add known wall notes\\n\\n- func_0023E068: size 60 vs 72 - delay-slot threading (known wall)\\n- func_0023E478: size 52 vs 56 - delay-slot threading (known wall)\\n\\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.701841,"total_code":3712808,"matched_code":734720,"matched_code_percent":19.788795,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2776,"matched_functions_percent":54.335487,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T20:39:42Z","commit_sha":"178bbccf15d52f374251f47fcc8ea3897aa8546f","commit_message":"nonmatching: func_0023BF70 - add exact match\\n\\n- 44-byte MACRO_ADDR function loading global + constant\\n- EXACT (masked) match found via candidate with proper argument\\n\\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.701841,"total_code":3712808,"matched_code":734720,"matched_code_percent":19.788795,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2776,"matched_functions_percent":54.335487,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T20:38:10Z","commit_sha":"d0c2726ce721e6be436117adb249a5e94c161c5e","commit_message":"nonmatching: func_0023E5B0 - add exact match\\n\\n- 8-byte stub function (return with delay slot nop)\\n- EXACT (masked) match found via minimal candidate\\n\\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.701841,"total_code":3712808,"matched_code":734720,"matched_code_percent":19.788795,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2776,"matched_functions_percent":54.335487,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T20:36:49Z","commit_sha":"ad03dabb6eade06a8a662e9d90d413166c33c815","commit_message":"nonmatching: func_0023CD28 - add exact match\\n\\n- 8-byte stub function (return with delay slot nop)\\n- EXACT (masked) match found via minimal candidate\\n\\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.701841,"total_code":3712808,"matched_code":734720,"matched_code_percent":19.788795,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2776,"matched_functions_percent":54.335487,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T20:26:18Z","commit_sha":"bf5b1c51d161668697b4bf4fab66168da6e02465","commit_message":"chore(nonmatching): func_L07_00320CD0, func_L18_002D74F8: add notes, known walls\\n\\n- func_L07_00320CD0: addu operand order (idx,g vs g,idx) - register allocation\\n- func_L18_002D74F8: beql annulled delay slot - compiler reoptimizer\\n\\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.701841,"total_code":3712808,"matched_code":734720,"matched_code_percent":19.788795,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2776,"matched_functions_percent":54.335487,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T19:59:08Z","commit_sha":"e7cd4b19f3f311f2d5c16c8c1184474be3255111","commit_message":"chore(nonmatching): func_L18_002F1420 staged, update config/overlays/joined.tsv\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.701841,"total_code":3712808,"matched_code":734720,"matched_code_percent":19.788795,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2776,"matched_functions_percent":54.335487,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T19:56:56Z","commit_sha":"69ee8e453c7d56ef3bd2ceb517c4059fdd95ed77","commit_message":"chore(nonmatching): func_L17_002ED498: add permuter notes\n\n- register allocation tie on loop min/max (v/s3 vs t0/a3)\n- best scores 35, 45; no score 0 found\n\nCo-Authored-By: qwen3-coder-next","measures":{"fuzzy_match_percent":22.701841,"total_code":3712808,"matched_code":734720,"matched_code_percent":19.788795,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2776,"matched_functions_percent":54.335487,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T10:26:29Z","commit_sha":"837c00b01d7bc895f20b2656a90053959b30452b","commit_message":"Merge pull request #23 from Lynder063/level-18-veldin2\n\nLevel 18: restage 13 near-misses after the merges (fuzzy 26.1% -> 34.2%)","measures":{"fuzzy_match_percent":22.701841,"total_code":3712808,"matched_code":734720,"matched_code_percent":19.788795,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2776,"matched_functions_percent":54.335487,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T07:45:23Z","commit_sha":"a32bc8887ca39e268cc93b45db59f54471a3f026","commit_message":"Merge pull request #22 from Lynder063/merge-pr21\n\nMerge #21 (Veradictus/main) with the Lombyte ports and L18 size-exact work","measures":{"fuzzy_match_percent":22.362127,"total_code":3712808,"matched_code":734720,"matched_code_percent":19.788795,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2776,"matched_functions_percent":54.335487,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T07:40:59Z","commit_sha":"dabbcadd13511590c96655691d124fe354bb9eec","commit_message":"Merge pull request #19 from Lynder063/lombyte-pr66-ports-v2\n\nPort 9 shared level functions from Lombyte PR #66 (+2 near-misses)","measures":{"fuzzy_match_percent":22.108276,"total_code":3712808,"matched_code":723332,"matched_code_percent":19.482075,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2751,"matched_functions_percent":53.846153,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T07:36:22Z","commit_sha":"34a4e1ba7d1e3e5eb790988df5643efecefa6b69","commit_message":"Merge pull request #18 from Lynder063/level-18-d7310-size-exact\n\nLevel 18: func_L18_002D7310 to size exact (77.9% fuzzy)","measures":{"fuzzy_match_percent":22.085625,"total_code":3712808,"matched_code":722452,"matched_code_percent":19.458372,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2744,"matched_functions_percent":53.70914,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-03T00:13:01Z","commit_sha":"d79a0f134941b7bea662c4d97db6f6c16757620b","commit_message":"Merge pull request #20 from Veradictus/main\n\nLevel code: 145 functions (19.46%), Level 16, near misses restaged, parallel salvage","measures":{"fuzzy_match_percent":22.075472,"total_code":3712808,"matched_code":722452,"matched_code_percent":19.458372,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2744,"matched_functions_percent":53.70914,"complete_code":90120,"complete_code_percent":2.4272733,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":59}},{"timestamp":"2026-10-02T22:20:59Z","commit_sha":"ec5e159038e1cd0ce31260836c4ab6c31ac06ea1","commit_message":"John Doe requested removal","measures":{"fuzzy_match_percent":19.122536,"total_code":3712808,"matched_code":629768,"matched_code_percent":16.96204,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2609,"matched_functions_percent":51.066746,"complete_code":89752,"complete_code_percent":2.4173617,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":58}},{"timestamp":"2026-10-02T22:10:52Z","commit_sha":"3d739f05748f3337b3f8400e744caf60dc995362","commit_message":"John Doe removal request","measures":{"fuzzy_match_percent":19.122536,"total_code":3712808,"matched_code":629768,"matched_code_percent":16.96204,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2609,"matched_functions_percent":51.066746,"complete_code":89752,"complete_code_percent":2.4173617,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":58}},{"timestamp":"2026-10-02T22:08:34Z","commit_sha":"ce571f0f19716dd67958fdef27ff9918ba83635f","commit_message":"Merge pull request #17 from Lynder063/level-18-veldin2\n\nLevel 18 veldin2","measures":{"fuzzy_match_percent":19.122536,"total_code":3712808,"matched_code":629768,"matched_code_percent":16.96204,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2609,"matched_functions_percent":51.066746,"complete_code":89752,"complete_code_percent":2.4173617,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":58}},{"timestamp":"2026-10-02T13:12:02Z","commit_sha":"c24e5fcd9df7a60dc84ed322539b9176c57fe2b5","commit_message":"Merge pull request #16 from Lynder063/level-18-veldin2\n\nfix(nonmatching): level 18: func_L18_002D93C0 from a size mismatch to…","measures":{"fuzzy_match_percent":18.982775,"total_code":3712808,"matched_code":628996,"matched_code_percent":16.941248,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2604,"matched_functions_percent":50.96888,"complete_code":89752,"complete_code_percent":2.4173617,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":58}},{"timestamp":"2026-10-02T10:05:27Z","commit_sha":"5d1b84b01a0735bb9680939b8dcd44ad25023a59","commit_message":"docs/include: add SaveGameBlockId and SaveLevelBlockId IFF chunk enums and reverse engineering notes","measures":{"fuzzy_match_percent":18.982775,"total_code":3712808,"matched_code":628996,"matched_code_percent":16.941248,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2604,"matched_functions_percent":50.96888,"complete_code":89752,"complete_code_percent":2.4173617,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":58}},{"timestamp":"2026-10-02T09:37:05Z","commit_sha":"27af2b42cd558d2e92b6c8d7ab9b72c92b47ce3e","commit_message":"docs/include: add rac2-decomp cross-game intelligence, MobyInstance and Gadget types","measures":{"fuzzy_match_percent":18.982775,"total_code":3712808,"matched_code":628996,"matched_code_percent":16.941248,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2604,"matched_functions_percent":50.96888,"complete_code":89752,"complete_code_percent":2.4173617,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":58}},{"timestamp":"2026-10-02T09:06:43Z","commit_sha":"0810719ac528215b8f89389e7b3d335ee7e75a39","commit_message":"feat(stash,names): implement authentic Stash structures from IOPSTASH.IRX and define gGameMode","measures":{"fuzzy_match_percent":18.982775,"total_code":3712808,"matched_code":628996,"matched_code_percent":16.941248,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2604,"matched_functions_percent":50.96888,"complete_code":89752,"complete_code_percent":2.4173617,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":58}},{"timestamp":"2026-10-02T08:52:10Z","commit_sha":"cd38e5f7b5d2dfd012afd92bef301ca1e40f33ae","commit_message":"docs: add September 9, 2002 review prototype analysis","measures":{"fuzzy_match_percent":18.982775,"total_code":3712808,"matched_code":628996,"matched_code_percent":16.941248,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2604,"matched_functions_percent":50.96888,"complete_code":89752,"complete_code_percent":2.4173617,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":58}},{"timestamp":"2026-10-02T08:25:04Z","commit_sha":"9b68c36cd120013b58f70fe98cac4716f7639106","commit_message":"docs(notes): update research with deep data mining discoveries","measures":{"fuzzy_match_percent":18.982775,"total_code":3712808,"matched_code":628996,"matched_code_percent":16.941248,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5109,"matched_functions":2604,"matched_functions_percent":50.96888,"complete_code":89752,"complete_code_percent":2.4173617,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":58}},{"timestamp":"2026-10-02T08:21:29Z","commit_sha":"dab290ad7268f24d16f7cd58e23c19be2ab0c0c7","commit_message":"docs(notes): add research report on beta builds, demos and prerelease findings","measures":{"fuzzy_match_percent":18.161512,"total_code":3713628,"matched_code":606928,"matched_code_percent":16.343264,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5111,"matched_functions":2566,"matched_functions_percent":50.20544,"complete_code":89752,"complete_code_percent":2.416828,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":58}},{"timestamp":"2026-10-01T21:21:34Z","commit_sha":"db9614c78261c8c7457edf3ba4cb36bcd848ceb8","commit_message":"Merge pull request #15 from Veradictus/main\n\nLevel 17 batch, Level 16 (GPT agent), near misses shared in nonmatching/, checker and build fixes","measures":{"fuzzy_match_percent":18.161512,"total_code":3713628,"matched_code":606928,"matched_code_percent":16.343264,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5111,"matched_functions":2566,"matched_functions_percent":50.20544,"complete_code":89752,"complete_code_percent":2.416828,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":58}},{"timestamp":"2026-10-01T06:10:33Z","commit_sha":"3772980d4b97ad7e2e7d062b620de043dc44ebb2","commit_message":"Merge pull request #13 from Veradictus/main\n\nLevel code: 643 matches, 112 functions ported from Lombyte, one box per level on decomp.dev","measures":{"fuzzy_match_percent":15.616265,"total_code":3713628,"matched_code":579300,"matched_code_percent":15.5993,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5111,"matched_functions":2532,"matched_functions_percent":49.540207,"complete_code":89752,"complete_code_percent":2.416828,"complete_data":0,"complete_data_percent":0,"total_units":278,"complete_units":58}},{"timestamp":"2026-09-30T17:08:01Z","commit_sha":"8e3593b93ac160ef06b3e64add552e468b0e19cd","commit_message":"Merge pull request #12 from Veradictus/main\n\nfeat(overlays): 156 level-code matches, variant catalogue, queue-wave workflow","measures":{"fuzzy_match_percent":8.732108,"total_code":3713628,"matched_code":323648,"matched_code_percent":8.715143,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":5111,"matched_functions":1777,"matched_functions_percent":34.768147,"complete_code":86152,"complete_code_percent":2.3198876,"complete_data":0,"complete_data_percent":0,"total_units":383,"complete_units":61}},{"timestamp":"2026-09-30T15:22:55Z","commit_sha":"4060048fb1dc5bb9bf80f380d1cf7858692e23ef","commit_message":"Merge pull request #11 from Lynder063/refactor/planet-levels-and-names\n\nPlanet-named level dirs, readable symbol names (names.h), overlay regression fix","measures":{"fuzzy_match_percent":7.9444017,"total_code":3692336,"matched_code":292704,"matched_code_percent":7.927339,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1621,"matched_functions_percent":32.504513,"complete_code":85152,"complete_code_percent":2.3061824,"complete_data":0,"complete_data_percent":0,"total_units":379,"complete_units":55}},{"timestamp":"2026-09-30T09:12:16Z","commit_sha":"c7e8326ca3b25d8c3f2c23f0558947fb51bb8080","commit_message":"Merge pull request #10 from Veradictus/main\n\nfeat(overlays): 76 level-specific exact matches across 17 levels","measures":{"fuzzy_match_percent":8.205375,"total_code":3692336,"matched_code":302340,"matched_code_percent":8.188313,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1699,"matched_functions_percent":34.068577,"complete_code":91128,"complete_code_percent":2.4680312,"complete_data":0,"complete_data_percent":0,"total_units":379,"complete_units":62}},{"timestamp":"2026-09-29T06:47:36Z","commit_sha":"55f1201a6865dcd0d93d0cab47dc51037c7d2ece","commit_message":"Merge pull request #9 from Veradictus/main\n\nfeat(overlays): 23 level-specific matches across 9 levels","measures":{"fuzzy_match_percent":7.9848094,"total_code":3692336,"matched_code":294196,"matched_code_percent":7.967747,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1623,"matched_functions_percent":32.544617,"complete_code":91128,"complete_code_percent":2.4680312,"complete_data":0,"complete_data_percent":0,"total_units":379,"complete_units":62}},{"timestamp":"2026-09-29T00:00:54Z","commit_sha":"2833d5125b364c41b303683e3aa1435ab36db6e7","commit_message":"feat(overlays): func_L00_002D9340 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.7100782,"total_code":3692336,"matched_code":284052,"matched_code_percent":7.693016,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1550,"matched_functions_percent":31.08081,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:57:26Z","commit_sha":"15dae0aa3ce2302a8c6e4f95a81605e033eda01e","commit_message":"feat(overlays): func_L00_002617B0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.705637,"total_code":3692336,"matched_code":283888,"matched_code_percent":7.6885743,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1549,"matched_functions_percent":31.060759,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:53:59Z","commit_sha":"66886eac2e5598b9df485aee54dd5330d42014f7","commit_message":"feat(overlays): func_L00_0025D038 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.7016287,"total_code":3692336,"matched_code":283740,"matched_code_percent":7.684566,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1548,"matched_functions_percent":31.040707,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:50:32Z","commit_sha":"f700d52bae004597c683c82aab080378fb4a543a","commit_message":"feat(overlays): func_L00_002BC668 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.697187,"total_code":3692336,"matched_code":283576,"matched_code_percent":7.6801243,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1547,"matched_functions_percent":31.020653,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:47:05Z","commit_sha":"918fdd814a6f3f30e5182854fb2a80a948bc841c","commit_message":"feat(overlays): func_L00_002751A8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6928535,"total_code":3692336,"matched_code":283416,"matched_code_percent":7.6757913,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1546,"matched_functions_percent":31.0006,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:43:38Z","commit_sha":"cb5734213bfbfa01bb613fe9dd133bd2e3541a15","commit_message":"feat(overlays): func_L00_00259428 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6885204,"total_code":3692336,"matched_code":283256,"matched_code_percent":7.671458,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1545,"matched_functions_percent":30.980549,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:40:11Z","commit_sha":"d8770ea5c259f66ce79434c5a01bd5fbf83cdc86","commit_message":"feat(overlays): func_L00_0025A4A0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.684187,"total_code":3692336,"matched_code":283096,"matched_code_percent":7.6671247,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1544,"matched_functions_percent":30.960497,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:36:43Z","commit_sha":"36880dfeeaf728b9c46d646f3d52bfee5a72af96","commit_message":"feat(overlays): func_L00_00272A88 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6798534,"total_code":3692336,"matched_code":282936,"matched_code_percent":7.6627913,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1543,"matched_functions_percent":30.940445,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:33:16Z","commit_sha":"cfeb9fbaaf7b5c88cd5b47e2dfc2fd46f0c37a14","commit_message":"feat(overlays): func_L00_00272E60 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.675737,"total_code":3692336,"matched_code":282784,"matched_code_percent":7.6586747,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1542,"matched_functions_percent":30.920393,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:29:49Z","commit_sha":"4e64a4235f0e82679c5f43e38d49d0fe3bdb7892","commit_message":"feat(overlays): func_L00_00272B28 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.671512,"total_code":3692336,"matched_code":282628,"matched_code_percent":7.6544495,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1541,"matched_functions_percent":30.900341,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:26:22Z","commit_sha":"40ee7fb942d0b906f7ea9fff202d71b093c38365","commit_message":"feat(overlays): func_L00_0025A540 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6673956,"total_code":3692336,"matched_code":282476,"matched_code_percent":7.650333,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1540,"matched_functions_percent":30.88029,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:22:55Z","commit_sha":"791d81318ae5b7520e1b1d0e13419d179ba26f8b","commit_message":"feat(overlays): func_L00_00213970 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6632786,"total_code":3692336,"matched_code":282324,"matched_code_percent":7.6462164,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1539,"matched_functions_percent":30.860237,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:19:29Z","commit_sha":"c92a5add32fbabf7e5c1df32cb744ea684f20aec","commit_message":"feat(overlays): func_L00_002EC7D0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.659162,"total_code":3692336,"matched_code":282172,"matched_code_percent":7.6421,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1538,"matched_functions_percent":30.840185,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:12:41Z","commit_sha":"ff479d286d571b9482a6ce0554a7c44f50814878","commit_message":"feat(overlays): func_L00_0025AFA8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.655262,"total_code":3692336,"matched_code":282028,"matched_code_percent":7.6382,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1537,"matched_functions_percent":30.820133,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:09:14Z","commit_sha":"90cde2610f2fc10fe55efb0a4c9c88dadd49c68c","commit_message":"feat(overlays): func_L00_0026ECA0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6512537,"total_code":3692336,"matched_code":281880,"matched_code_percent":7.6341915,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1536,"matched_functions_percent":30.80008,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:05:47Z","commit_sha":"c6e7cc1aee58c04e24e35c750ba98342cf4dfcff","commit_message":"feat(overlays): func_L00_00203F20 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6473536,"total_code":3692336,"matched_code":281736,"matched_code_percent":7.6302915,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1535,"matched_functions_percent":30.780027,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T23:02:20Z","commit_sha":"2a30cde80718d3dd54d480a1d6a6b467416e683e","commit_message":"feat(overlays): func_L00_002A27C8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6433454,"total_code":3692336,"matched_code":281588,"matched_code_percent":7.626283,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1534,"matched_functions_percent":30.759975,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:57:08Z","commit_sha":"534129a33db6e5a39a47e5f57730708f06c31559","commit_message":"feat(overlays): func_L00_0025D308 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.639446,"total_code":3692336,"matched_code":281444,"matched_code_percent":7.622383,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1533,"matched_functions_percent":30.739923,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:53:47Z","commit_sha":"7e1ff52b5d8d22ca4e5f2f1a315679613cefa157","commit_message":"feat(overlays): func_L00_0028F0B0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6358705,"total_code":3692336,"matched_code":281312,"matched_code_percent":7.6188083,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1532,"matched_functions_percent":30.719872,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:50:26Z","commit_sha":"0354adeaca1d8d800de23c2877a699784674c554","commit_message":"feat(overlays): func_L00_002EED60 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.632079,"total_code":3692336,"matched_code":281172,"matched_code_percent":7.6150165,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1531,"matched_functions_percent":30.69982,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:47:05Z","commit_sha":"4c073a0d5ea67b6dbce3486a0443b1db89ab2d13","commit_message":"feat(overlays): func_L00_002E5D50 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.628504,"total_code":3692336,"matched_code":281040,"matched_code_percent":7.6114416,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1530,"matched_functions_percent":30.679768,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:43:45Z","commit_sha":"18a24f2ede74019a1d9fbcb6a2279d191eff333b","commit_message":"feat(overlays): func_L00_002DB480 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6247125,"total_code":3692336,"matched_code":280900,"matched_code_percent":7.60765,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1529,"matched_functions_percent":30.659716,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:37:10Z","commit_sha":"47ae4418bcced7ff04f09df65ae7ef86c2355ce4","commit_message":"feat(overlays): func_L00_0025EAC8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6211376,"total_code":3692336,"matched_code":280768,"matched_code_percent":7.604075,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1528,"matched_functions_percent":30.639664,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:33:49Z","commit_sha":"6022011b6bfd08b75299c837f5f39445a85fcf47","commit_message":"feat(overlays): func_L00_0020ED30 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6172376,"total_code":3692336,"matched_code":280624,"matched_code_percent":7.600175,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1527,"matched_functions_percent":30.619612,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:30:29Z","commit_sha":"b9b3f1b10bdf38fb19bf8c30cd92bbb60310c82d","commit_message":"feat(overlays): func_L00_002EB0D8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6133375,"total_code":3692336,"matched_code":280480,"matched_code_percent":7.5962753,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1526,"matched_functions_percent":30.59956,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:27:08Z","commit_sha":"2b450056e6605d2a0d269e82b9e36821bad4dbf6","commit_message":"feat(overlays): func_L00_00203FB8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6095457,"total_code":3692336,"matched_code":280340,"matched_code_percent":7.5924835,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1525,"matched_functions_percent":30.579506,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:23:47Z","commit_sha":"bd54eee17f906e2b188a0aa47c2745ffa00a4427","commit_message":"feat(overlays): func_L00_002644E0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.6058626,"total_code":3692336,"matched_code":280204,"matched_code_percent":7.5888,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1524,"matched_functions_percent":30.559454,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:20:27Z","commit_sha":"15bf89169e73ed6e7b52d5271f5ecbd8b3f0648e","commit_message":"feat(overlays): func_L00_00260B68 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.602071,"total_code":3692336,"matched_code":280064,"matched_code_percent":7.5850086,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1523,"matched_functions_percent":30.539402,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:17:07Z","commit_sha":"a537ef9f14f856d0fe2e2f5e702768a6048bc720","commit_message":"feat(overlays): func_L00_00227E08 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5983877,"total_code":3692336,"matched_code":279928,"matched_code_percent":7.581325,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1522,"matched_functions_percent":30.51935,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:13:46Z","commit_sha":"71c927252c074a8d010cdde176c4109d5c3df764","commit_message":"feat(overlays): func_L00_0025D140 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.594704,"total_code":3692336,"matched_code":279792,"matched_code_percent":7.577642,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1521,"matched_functions_percent":30.499298,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:10:25Z","commit_sha":"7d97e890f9f4558a99c8e7fc48f7c826deb8d9f4","commit_message":"feat(overlays): func_L00_002098B8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5911293,"total_code":3692336,"matched_code":279660,"matched_code_percent":7.574067,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1520,"matched_functions_percent":30.479246,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:07:05Z","commit_sha":"315263acdb00461437d5b1c03659e9b97eb5bc7c","commit_message":"feat(overlays): func_L00_0025D0E0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5875545,"total_code":3692336,"matched_code":279528,"matched_code_percent":7.570492,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1519,"matched_functions_percent":30.459194,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:03:44Z","commit_sha":"0d0c89c88000e47377d72e6114a6cda8b6106b48","commit_message":"feat(overlays): func_L00_00280740 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5850625,"total_code":3692336,"matched_code":279436,"matched_code_percent":7.5680003,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1518,"matched_functions_percent":30.439142,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T22:00:23Z","commit_sha":"204536cd8b505a61c9380fa1f5cf0935af9f2c00","commit_message":"feat(overlays): func_L00_002C2A20 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.582571,"total_code":3692336,"matched_code":279344,"matched_code_percent":7.565509,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1517,"matched_functions_percent":30.41909,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:57:09Z","commit_sha":"c3c8a56bf618c2b790f5dd8045c678bf33de7c90","commit_message":"feat(overlays): func_L00_00267C48 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5800796,"total_code":3692336,"matched_code":279252,"matched_code_percent":7.563017,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1516,"matched_functions_percent":30.399038,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:54:01Z","commit_sha":"424eba14aab7b2e00068e40d4a6f2018fe93b6f0","commit_message":"feat(overlays): func_L00_002B6E10 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.576613,"total_code":3692336,"matched_code":279124,"matched_code_percent":7.5595503,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1515,"matched_functions_percent":30.378984,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:50:59Z","commit_sha":"9dd07aa343b83240840dc3662fb9eae0ec2fd210","commit_message":"feat(overlays): func_L00_00260958 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5731463,"total_code":3692336,"matched_code":278996,"matched_code_percent":7.5560837,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1514,"matched_functions_percent":30.358932,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:40:51Z","commit_sha":"219935326834d75b636e4a914c197bf7025f84c3","commit_message":"feat(overlays): func_L00_0028FFB0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5696793,"total_code":3692336,"matched_code":278868,"matched_code_percent":7.552617,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1513,"matched_functions_percent":30.33888,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:37:49Z","commit_sha":"69614a1bbc88754d7b441c406d53d6fc4c49aa9a","commit_message":"feat(overlays): func_L00_0025D288 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5663214,"total_code":3692336,"matched_code":278744,"matched_code_percent":7.5492587,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1512,"matched_functions_percent":30.318829,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:34:47Z","commit_sha":"8623056c1f58e5b37fe355a050e868407feacc46","commit_message":"feat(overlays): func_L00_00205598 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.562963,"total_code":3692336,"matched_code":278620,"matched_code_percent":7.5459003,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1511,"matched_functions_percent":30.298777,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:31:46Z","commit_sha":"755f7784c900b70b8451ceeac8802a0874d60f09","commit_message":"feat(overlays): func_L00_00264E28 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5594964,"total_code":3692336,"matched_code":278492,"matched_code_percent":7.5424337,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1510,"matched_functions_percent":30.278725,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:28:18Z","commit_sha":"c4a32b525d9fbab7b045d760227380488809b812","commit_message":"feat(overlays): func_L00_00263B78 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.556138,"total_code":3692336,"matched_code":278368,"matched_code_percent":7.5390754,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1509,"matched_functions_percent":30.258673,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:20:05Z","commit_sha":"e3a4c1453422c2169f73418cc98d58b2b6b6b711","commit_message":"feat(overlays): func_L00_0028BBF8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.546063,"total_code":3692336,"matched_code":277996,"matched_code_percent":7.5290008,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1506,"matched_functions_percent":30.198517,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:17:03Z","commit_sha":"2663fcd0cf19793e564beca92017ea93309649cf","commit_message":"feat(overlays): func_L00_002123B0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.542813,"total_code":3692336,"matched_code":277876,"matched_code_percent":7.5257506,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1505,"matched_functions_percent":30.178465,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:14:08Z","commit_sha":"b759d7940070d688041330ccf7ebc47c49068142","commit_message":"feat(overlays): func_L00_001ED9B0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5394545,"total_code":3692336,"matched_code":277752,"matched_code_percent":7.5223923,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1504,"matched_functions_percent":30.158411,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:11:13Z","commit_sha":"2da0abea9d6059f3edec88f46f277cc98bb31e78","commit_message":"feat(overlays): func_L00_002D95E8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.536205,"total_code":3692336,"matched_code":277632,"matched_code_percent":7.519142,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1503,"matched_functions_percent":30.13836,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:08:24Z","commit_sha":"8e6d46d95531e961e030bee6874dd6c0f35dbf68","commit_message":"feat(overlays): func_L00_002394A8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.533063,"total_code":3692336,"matched_code":277516,"matched_code_percent":7.5160007,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1502,"matched_functions_percent":30.118307,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:05:35Z","commit_sha":"488e5dc61107690522c2065cb6b071a908936fb0","commit_message":"feat(overlays): func_L00_00208000 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5302463,"total_code":3692336,"matched_code":277412,"matched_code_percent":7.513184,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1501,"matched_functions_percent":30.098255,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T21:02:47Z","commit_sha":"ceb6208bac86d674e705d02b692a9ab826fdc314","commit_message":"feat(overlays): func_L00_002EB060 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.527213,"total_code":3692336,"matched_code":277300,"matched_code_percent":7.510151,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1500,"matched_functions_percent":30.078203,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:59:58Z","commit_sha":"bf84057bf1dcbcfa3355275116cdca285ba1e6a6","commit_message":"feat(overlays): func_L00_0026D690 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.524288,"total_code":3692336,"matched_code":277192,"matched_code_percent":7.507226,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1499,"matched_functions_percent":30.058151,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:57:09Z","commit_sha":"07b90973ea521cf57454d3f35ce6440c620c7c9e","commit_message":"feat(overlays): func_L00_002124E8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5213633,"total_code":3692336,"matched_code":277084,"matched_code_percent":7.5043006,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1498,"matched_functions_percent":30.0381,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:54:20Z","commit_sha":"797e9a186ec9c7e6587dd0223dc9005c8612608e","commit_message":"feat(overlays): func_L00_002D4C80 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5185466,"total_code":3692336,"matched_code":276980,"matched_code_percent":7.501484,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1497,"matched_functions_percent":30.018047,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:51:31Z","commit_sha":"a06e93e9f42c3fd9acb43dd52cc503a1b6ed7d40","commit_message":"feat(overlays): func_L00_002B5428 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5159464,"total_code":3692336,"matched_code":276884,"matched_code_percent":7.498884,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1496,"matched_functions_percent":29.997995,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:48:42Z","commit_sha":"ec43aa557773c39564fbf7d629cdf53e462fbaf0","commit_message":"feat(overlays): func_L00_00204130 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5133467,"total_code":3692336,"matched_code":276788,"matched_code_percent":7.496284,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1495,"matched_functions_percent":29.977943,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:46:00Z","commit_sha":"2dca13034abc53320b99d7af709151bf9ac5bcd3","commit_message":"feat(overlays): func_L00_00275C80 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5107465,"total_code":3692336,"matched_code":276692,"matched_code_percent":7.4936843,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1494,"matched_functions_percent":29.957891,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:43:15Z","commit_sha":"a986e8e1b202905138a2cefcbf895fc9f1d04727","commit_message":"feat(overlays): func_L00_00265558 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.508147,"total_code":3692336,"matched_code":276596,"matched_code_percent":7.491084,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1493,"matched_functions_percent":29.937838,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:40:33Z","commit_sha":"a94d01d1a4da102c7e6c11fb48d71e63373c87f5","commit_message":"feat(overlays): func_L00_001F9D40 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5055466,"total_code":3692336,"matched_code":276500,"matched_code_percent":7.4884844,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1492,"matched_functions_percent":29.917786,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:37:50Z","commit_sha":"231707a35107765e1caa9360091348f3f883133d","commit_message":"feat(overlays): func_L00_001F91B0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.502947,"total_code":3692336,"matched_code":276404,"matched_code_percent":7.485884,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1491,"matched_functions_percent":29.897734,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:35:08Z","commit_sha":"fe87c65aa1f8dcca4eb2db3482bb676e0b3097db","commit_message":"feat(overlays): func_L00_00222520 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.5003467,"total_code":3692336,"matched_code":276308,"matched_code_percent":7.4832845,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1490,"matched_functions_percent":29.877682,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:32:25Z","commit_sha":"baa25c7f7939e5d391611a8290ca8f900f7bf0a1","commit_message":"feat(overlays): func_L00_002E17F0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.497855,"total_code":3692336,"matched_code":276216,"matched_code_percent":7.4807925,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1489,"matched_functions_percent":29.85763,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:29:43Z","commit_sha":"3e9cd391e1a1b3e896977d9667f52c0382ee84c2","commit_message":"feat(overlays): func_L00_0024A570 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4954715,"total_code":3692336,"matched_code":276128,"matched_code_percent":7.4784093,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1488,"matched_functions_percent":29.837578,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:27:00Z","commit_sha":"04d3af6ec5d5896d9ced530b96a25df89367e98d","commit_message":"feat(overlays): func_L00_002EC6C8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4934134,"total_code":3692336,"matched_code":276052,"matched_code_percent":7.476351,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1487,"matched_functions_percent":29.817526,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:24:18Z","commit_sha":"fd45be5400af868e76622939e22cc13b7ad6f11f","commit_message":"feat(overlays): func_L00_002E9DC8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4911385,"total_code":3692336,"matched_code":275968,"matched_code_percent":7.474076,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1486,"matched_functions_percent":29.797474,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:21:35Z","commit_sha":"9a488c196cdee1da3befdb9878f5c8456fc24cfe","commit_message":"feat(overlays): func_L00_00258BC8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4888635,"total_code":3692336,"matched_code":275884,"matched_code_percent":7.4718013,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1485,"matched_functions_percent":29.777422,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:18:53Z","commit_sha":"56033920e028133e33fcca39af48fc0126ade9d7","commit_message":"feat(overlays): func_L00_0025F3C0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4865885,"total_code":3692336,"matched_code":275800,"matched_code_percent":7.4695263,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1484,"matched_functions_percent":29.75737,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:16:10Z","commit_sha":"11d4d87e8774411b958f2431559f2ca42006fad5","commit_message":"feat(overlays): func_L00_002E0AE8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.48453,"total_code":3692336,"matched_code":275724,"matched_code_percent":7.467468,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1483,"matched_functions_percent":29.737316,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:13:28Z","commit_sha":"cace0557efa4d54734e571438313fbb04368a6df","commit_message":"feat(overlays): func_L00_002A9030 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.482255,"total_code":3692336,"matched_code":275640,"matched_code_percent":7.465193,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1482,"matched_functions_percent":29.717264,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:10:45Z","commit_sha":"ee4d95d38ac593a478142ab82d8fe0b0faf21985","commit_message":"feat(overlays): func_L00_002766B0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4800887,"total_code":3692336,"matched_code":275560,"matched_code_percent":7.463026,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1481,"matched_functions_percent":29.697212,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:07:58Z","commit_sha":"48aa942179a26ad259b940e5af4cb1483f57b251","commit_message":"feat(overlays): func_L00_002D93E8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4782467,"total_code":3692336,"matched_code":275492,"matched_code_percent":7.4611845,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1480,"matched_functions_percent":29.67716,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:05:16Z","commit_sha":"30b399545858f39206b3141e33e9fcc1c57eef5a","commit_message":"feat(overlays): func_L00_002CC210 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4761887,"total_code":3692336,"matched_code":275416,"matched_code_percent":7.459126,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1479,"matched_functions_percent":29.657108,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:02:40Z","commit_sha":"549c94ae1dd8599d74c14a9825434c835ad443ce","commit_message":"feat(overlays): func_L00_002607A8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.47413,"total_code":3692336,"matched_code":275340,"matched_code_percent":7.457068,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1478,"matched_functions_percent":29.637056,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T20:00:02Z","commit_sha":"3f9c6e1021922f452faa82b7f69e8a1741fdc60a","commit_message":"feat(overlays): func_L00_00208318 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4720716,"total_code":3692336,"matched_code":275264,"matched_code_percent":7.4550095,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1477,"matched_functions_percent":29.617004,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:57:26Z","commit_sha":"22a576cb56df8b829f3bb6f37dacf33dad98e6ba","commit_message":"feat(overlays): func_L00_002E9A40 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4703383,"total_code":3692336,"matched_code":275200,"matched_code_percent":7.453276,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1476,"matched_functions_percent":29.596952,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:54:51Z","commit_sha":"58ec30f29516ed86eb2a78c84beef737ae20ca3c","commit_message":"feat(overlays): func_L00_0029AF70 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4683886,"total_code":3692336,"matched_code":275128,"matched_code_percent":7.4513264,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1475,"matched_functions_percent":29.5769,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:52:14Z","commit_sha":"17c4689306841b4dd1ecd91b08487e11cc485ef4","commit_message":"feat(overlays): func_L00_0028EB98 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.466439,"total_code":3692336,"matched_code":275056,"matched_code_percent":7.449376,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1474,"matched_functions_percent":29.556849,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:49:38Z","commit_sha":"923333002b3fb11a57798701c9002f758a8c76b4","commit_message":"feat(overlays): func_L00_002715B0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4644885,"total_code":3692336,"matched_code":274984,"matched_code_percent":7.4474263,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1473,"matched_functions_percent":29.536797,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:47:03Z","commit_sha":"58bc4338a1997dad15c21d4dddb07fa6010bd241","commit_message":"feat(overlays): func_L00_0025A468 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4625387,"total_code":3692336,"matched_code":274912,"matched_code_percent":7.445476,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1472,"matched_functions_percent":29.516743,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:43:41Z","commit_sha":"2503081bfa8dc8f45dc647a761f48513b08b4a93","commit_message":"feat(overlays): func_L00_0023FA70 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.461022,"total_code":3692336,"matched_code":274856,"matched_code_percent":7.4439597,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1471,"matched_functions_percent":29.49669,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:38:21Z","commit_sha":"8c9aa2b0719dfdd27b94782b2d27fdd4028c95e2","commit_message":"feat(overlays): func_L00_002A9080 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.459072,"total_code":3692336,"matched_code":274784,"matched_code_percent":7.4420094,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1470,"matched_functions_percent":29.476639,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:35:51Z","commit_sha":"bbafb2b64b5556cc1063e4e5de0eb18d07139826","commit_message":"feat(overlays): func_L00_00299108 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.457339,"total_code":3692336,"matched_code":274720,"matched_code_percent":7.440276,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1469,"matched_functions_percent":29.456587,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:33:21Z","commit_sha":"89471d0c5e7d27166aedcdfc169d6c3783b6dff3","commit_message":"feat(overlays): func_L00_002BFF08 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4556055,"total_code":3692336,"matched_code":274656,"matched_code_percent":7.438543,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1468,"matched_functions_percent":29.436535,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:30:57Z","commit_sha":"812f61c7c15fe68c359ef4acca2911376779cfd0","commit_message":"feat(overlays): func_L00_00263D68 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4537635,"total_code":3692336,"matched_code":274588,"matched_code_percent":7.4367013,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1467,"matched_functions_percent":29.416483,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:27:06Z","commit_sha":"c05a416de37f61101ab7d347670a610df511163f","commit_message":"feat(overlays): func_L00_002666C8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.451922,"total_code":3692336,"matched_code":274520,"matched_code_percent":7.4348598,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1466,"matched_functions_percent":29.396431,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:24:42Z","commit_sha":"44b36b95622b38fbcd7955870d574c0bf8a31600","commit_message":"feat(overlays): func_L00_0025C7A8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4501886,"total_code":3692336,"matched_code":274456,"matched_code_percent":7.4331264,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1465,"matched_functions_percent":29.376379,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:22:25Z","commit_sha":"c41e08a62b182def376ace9f7767878e1dd3d893","commit_message":"feat(overlays): func_L00_00276180 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.448347,"total_code":3692336,"matched_code":274388,"matched_code_percent":7.431285,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1464,"matched_functions_percent":29.356327,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:20:08Z","commit_sha":"7e278d1d45d1fc760bab0e3b4df8521c1d14f361","commit_message":"feat(overlays): func_L00_002E9E20 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.446722,"total_code":3692336,"matched_code":274328,"matched_code_percent":7.42966,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1463,"matched_functions_percent":29.336275,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:17:57Z","commit_sha":"8347e5c5cecd72a57bbc1fce46ec9d2e457ead5a","commit_message":"feat(overlays): func_L00_002E9900 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.445097,"total_code":3692336,"matched_code":274268,"matched_code_percent":7.428035,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1462,"matched_functions_percent":29.316221,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:15:43Z","commit_sha":"6d2999256e502c9ab16cf3fa14f737bb19489aa3","commit_message":"feat(overlays): func_L00_002DB690 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.443472,"total_code":3692336,"matched_code":274208,"matched_code_percent":7.4264097,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1461,"matched_functions_percent":29.29617,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:13:32Z","commit_sha":"eb6885ba9d8b3e629bd8f202d305d3773fd82bce","commit_message":"feat(overlays): func_L00_0026FEE8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4419556,"total_code":3692336,"matched_code":274152,"matched_code_percent":7.424893,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1460,"matched_functions_percent":29.276117,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:11:22Z","commit_sha":"c6c6f8bb42127d9073f5b4981dbe7d64673f5ebd","commit_message":"feat(overlays): func_L00_00258E58 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4404387,"total_code":3692336,"matched_code":274096,"matched_code_percent":7.4233766,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1459,"matched_functions_percent":29.256065,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:07:31Z","commit_sha":"13648b57dfea4da506d3279eaeab64e0f3648097","commit_message":"feat(overlays): func_L00_002EDC60 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.438922,"total_code":3692336,"matched_code":274040,"matched_code_percent":7.4218597,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1458,"matched_functions_percent":29.236013,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:05:20Z","commit_sha":"7c9d0dfcfd8f79adcb1c094d1eaef4ace8a69e4a","commit_message":"feat(overlays): func_L00_002E9968 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.437514,"total_code":3692336,"matched_code":273988,"matched_code_percent":7.4204516,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1457,"matched_functions_percent":29.215961,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:03:16Z","commit_sha":"0e7d9bbf6cdd3134a47853638c27907e0ef6a2e2","commit_message":"feat(overlays): func_L00_002BFF50 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4361057,"total_code":3692336,"matched_code":273936,"matched_code_percent":7.419043,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1456,"matched_functions_percent":29.19591,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T19:01:12Z","commit_sha":"fe983f2349e066b7f2e285dabd7cf8e3a7f0a8fc","commit_message":"feat(overlays): func_L00_002BFED0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.434697,"total_code":3692336,"matched_code":273884,"matched_code_percent":7.417635,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1455,"matched_functions_percent":29.175858,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:59:08Z","commit_sha":"6776c3c977e5a7a7ba70676497f148642958e964","commit_message":"feat(overlays): func_L00_002BFE98 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.433289,"total_code":3692336,"matched_code":273832,"matched_code_percent":7.4162264,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1454,"matched_functions_percent":29.155806,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:54:03Z","commit_sha":"a0c8d993c89c6c5106e848de7b7cf3a2dabc6532","commit_message":"feat(overlays): func_L00_002E9B30 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4318805,"total_code":3692336,"matched_code":273780,"matched_code_percent":7.4148183,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1453,"matched_functions_percent":29.135754,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:51:40Z","commit_sha":"8a6f90c444844f43f18a9c49ce0e75024e119312","commit_message":"feat(overlays): func_L00_0024A460 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4305806,"total_code":3692336,"matched_code":273732,"matched_code_percent":7.413518,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1452,"matched_functions_percent":29.115702,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:48:19Z","commit_sha":"c4670f9f60d869077e34263e1b2451c951c556aa","commit_message":"feat(overlays): func_L00_002512D8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4292808,"total_code":3692336,"matched_code":273684,"matched_code_percent":7.412218,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1451,"matched_functions_percent":29.095648,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:45:33Z","commit_sha":"c9d10e7544c26b4d4c168be24bb7d8d35d909919","commit_message":"feat(overlays): func_L00_0020BFA8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4280887,"total_code":3692336,"matched_code":273640,"matched_code_percent":7.4110265,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1450,"matched_functions_percent":29.075596,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:42:57Z","commit_sha":"8cca4d5e94f14a190e7c06a0a055bc0fd274e968","commit_message":"feat(overlays): func_L00_0028FC68 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.426897,"total_code":3692336,"matched_code":273596,"matched_code_percent":7.409835,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1449,"matched_functions_percent":29.055544,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:40:27Z","commit_sha":"2b90470c71ec1bbb4a74d038ed22f38035e76b3b","commit_message":"feat(overlays): func_L00_00263578 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4257054,"total_code":3692336,"matched_code":273552,"matched_code_percent":7.4086432,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1448,"matched_functions_percent":29.035492,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:38:01Z","commit_sha":"733ea603cb663da53a31a7474b8540543ef6ab44","commit_message":"feat(overlays): func_L00_002E5740 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.424622,"total_code":3692336,"matched_code":273512,"matched_code_percent":7.40756,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1447,"matched_functions_percent":29.01544,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:36:02Z","commit_sha":"a3b26ae620c1e224444aa74f3e7fdbf560da160e","commit_message":"feat(overlays): func_L00_0025A890 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4234304,"total_code":3692336,"matched_code":273468,"matched_code_percent":7.4063683,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1446,"matched_functions_percent":28.995388,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:34:03Z","commit_sha":"d67e95fb7421a43cd56371c7741e9c4d8452a252","commit_message":"feat(overlays): func_L00_002CC360 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.422239,"total_code":3692336,"matched_code":273424,"matched_code_percent":7.4051766,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1445,"matched_functions_percent":28.975336,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:30:10Z","commit_sha":"415ffd7fa7adfb7d3394aca84338fb69b658ac26","commit_message":"feat(overlays): func_L00_002E9AF8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.421047,"total_code":3692336,"matched_code":273380,"matched_code_percent":7.403985,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1444,"matched_functions_percent":28.955284,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:28:18Z","commit_sha":"372c9ba6a72413e9ccd7dfd1f1d54ad7e081ffaa","commit_message":"feat(overlays): func_L00_002E9AD0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.419964,"total_code":3692336,"matched_code":273340,"matched_code_percent":7.4029016,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1443,"matched_functions_percent":28.935232,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:23:41Z","commit_sha":"1057e5efecdf129845cafc104b2bbb956a6f8822","commit_message":"feat(overlays): func_L00_001F92C0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4188805,"total_code":3692336,"matched_code":273300,"matched_code_percent":7.4018183,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1442,"matched_functions_percent":28.91518,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:21:49Z","commit_sha":"c011e9a9da2b494a396425cb979187333e8c8f82","commit_message":"feat(overlays): func_L00_0024A404 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.417797,"total_code":3692336,"matched_code":273260,"matched_code_percent":7.400735,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1441,"matched_functions_percent":28.895128,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:20:03Z","commit_sha":"5fde7d814f231ae68c74e624aaf783b89a77b3df","commit_message":"feat(overlays): func_L00_0024A170 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.416714,"total_code":3692336,"matched_code":273220,"matched_code_percent":7.3996515,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1440,"matched_functions_percent":28.875074,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:18:18Z","commit_sha":"1d1a83e4c2bfe171a202496bd753dc5a8a6051e0","commit_message":"feat(overlays): func_L00_002497E0 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.415631,"total_code":3692336,"matched_code":273180,"matched_code_percent":7.398568,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1439,"matched_functions_percent":28.855022,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:13:47Z","commit_sha":"47624d45283748c4f69ad1932fd5b1ce6ea8cd72","commit_message":"feat(overlays): func_L00_00264DB8 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4145474,"total_code":3692336,"matched_code":273140,"matched_code_percent":7.397485,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1438,"matched_functions_percent":28.83497,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T18:09:55Z","commit_sha":"49a09bc504378849d7183fcaec7a2d8b84ad1226","commit_message":"feat(overlays): func_L00_002E0490 exact match\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4116225,"total_code":3692336,"matched_code":273032,"matched_code_percent":7.39456,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1437,"matched_functions_percent":28.814919,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T17:41:51Z","commit_sha":"1a66714338d1dedd1e2ffe1e9e85adc9df33bded","commit_message":"feat(overlays): func_L00_00258C80 exact match\n\nRandom float in [lo, hi], randomly negated: a 12-bit RNG fraction for\nthe magnitude and bit 16 for the sign.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.408806,"total_code":3692336,"matched_code":272928,"matched_code_percent":7.391743,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1436,"matched_functions_percent":28.794867,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T17:36:37Z","commit_sha":"299d8218896357628b81fe9fe5bb7b40c849b255","commit_message":"feat(overlays): func_L00_00229778 exact match\n\nDeletes and clears any moby cached at D_0013F450+0x1614, then clears\nflag bits 0x41 on the two moby pointers cached at +0x1180 and +0x1184.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.405989,"total_code":3692336,"matched_code":272824,"matched_code_percent":7.3889265,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1435,"matched_functions_percent":28.774815,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T17:32:53Z","commit_sha":"4e87f136daf059d811fc09a307e3d5d77b11e29c","commit_message":"feat(overlays): func_L00_002E8E78 exact match\n\nGuarded edge-plane test: for arg1==1, true when\n(D_L00_00173F60 - arg2) . (arg0->+0x70 + 0x130) < 0.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.4031725,"total_code":3692336,"matched_code":272720,"matched_code_percent":7.38611,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1434,"matched_functions_percent":28.754763,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T17:28:24Z","commit_sha":"932298c1a03e034e216824ff5e791e6ddee85ff3","commit_message":"feat(overlays): func_L00_002A6070 exact match\n\nSpawns a moby of class 0x3EF, sets its +0x30/+0x34 flags, copies the\ncaller's position/orientation vector into +0x10 via qcopy, and hands\nit to func_L00_00251E30.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.400464,"total_code":3692336,"matched_code":272620,"matched_code_percent":7.383402,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1433,"matched_functions_percent":28.73471,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T17:23:11Z","commit_sha":"ce931da5b2c454030bcb0e86ec3d0347ee509847","commit_message":"feat(overlays): func_L00_00209850 exact match\n\nBuilds a {0,0,0.6,0} param vector via func_001F9BC0 and forwards it\n(plus the caller's position) to func_L00_00209748.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3977556,"total_code":3692336,"matched_code":272520,"matched_code_percent":7.3806934,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1432,"matched_functions_percent":28.714659,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T17:07:05Z","commit_sha":"894aecbdee2e2baadd41561753644b21e7ee1273","commit_message":"feat(core): _decodeOrSkipFrame (func_0012BF40) exact match\n\nSibling of func_0012C0A0 (_decodeOrSkipField): same Wrapper/Obj40\nlayout, adapted from Lombyte (MIT) for PAL.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3950477,"total_code":3692336,"matched_code":272420,"matched_code_percent":7.377985,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1431,"matched_functions_percent":28.694607,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T16:58:01Z","commit_sha":"e77c89722fba5ccb0c9792d091197568a9833785","commit_message":"feat(core): sceSifResetIop (func_0011D0D0) exact match\n\nAdapted from Lombyte (MIT), renamed to PAL's callees and D_00158540.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.387573,"total_code":3692336,"matched_code":272144,"matched_code_percent":7.37051,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1430,"matched_functions_percent":28.674553,"complete_code":90172,"complete_code_percent":2.4421396,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":53}},{"timestamp":"2026-09-28T16:35:29Z","commit_sha":"e6a4e6df72edd30784cff4adfbb21da29948e6aa","commit_message":"docs(overlays): record the flag sweep over level near-misses\n\n-G8, -mno-split-addresses and both, on the best candidate of the seven\nlevel near-misses left: no match, no improvement.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3790145,"total_code":3692336,"matched_code":271828,"matched_code_percent":7.361952,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1429,"matched_functions_percent":28.654501,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T16:32:07Z","commit_sha":"abaf4e65085141138ea1eb33db3c6d4520a9eb95","commit_message":"docs(overlays): drop the Deadlocked mention from Roles\n\nThe repository stays about Ratchet & Clank 1 only.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3790145,"total_code":3692336,"matched_code":271828,"matched_code_percent":7.361952,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1429,"matched_functions_percent":28.654501,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T16:31:55Z","commit_sha":"327c3ef7cd6cf964d9a0681462a300472f12546c","commit_message":"Revert \"feat(tools): Deadlocked debug-symbol lookup\"\n\nThis repository stays strictly about Ratchet & Clank 1: no tooling or\ndocs built on another game's data. Also drops the one mention of\nDeadlocked in docs/OVERLAYS.md.\n\nThis reverts commit 770396e.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3790145,"total_code":3692336,"matched_code":271828,"matched_code_percent":7.361952,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1429,"matched_functions_percent":28.654501,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T16:29:56Z","commit_sha":"770396e5a87e154e6aee0f13c5daa57862b2c3bf","commit_message":"feat(tools): Deadlocked debug-symbol lookup\n\nA Deadlocked prototype kept its STABS symbols; the community's dumps of\nthem (dlfuncs/dltypes/dlglobals/dlsections) live locally in baserom/dl/,\nnever committed. tools/dlsyms.py looks up a function (by our func_ name\nthrough config/symbol_names.txt, or by name), a source file's function\nlist, a type or a global. tools/dossier.py adds Deadlocked's entry\n(parameter names, locals and their registers) to CONTEXT.md: 227 of our\n259 real names are in the dump. docs/DL_SYMBOLS.md covers where the\nfiles come from, what carries over and what doesn't.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3790145,"total_code":3692336,"matched_code":271828,"matched_code_percent":7.361952,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1429,"matched_functions_percent":28.654501,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T16:27:26Z","commit_sha":"4af6ddd021551e824e4be1caf37ae8645df9a2aa","commit_message":"feat(overlays): roles from the levels' dispatch tables\n\ntools/overlays.py names reads each level's vtbl ({oClass, update,\nsub-table}), camvtbl ({id, init, activate, update, exit}) and sndvtbl\n({id, function}) records and writes config/overlays/names.tsv: 690\ncatalogued functions get a role such as UpdateMoby_809 or\nUpdateCamera_6, 610 of them exactly one (475 level and 210 shared\nfunctions, 1.03 MB). tools/dossier.py puts the role in CONTEXT.md.\ndocs/OVERLAYS.md (\"Roles\") documents the record layouts and the four\ntable pointers that land inside a catalogued function.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3790145,"total_code":3692336,"matched_code":271828,"matched_code_percent":7.361952,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1429,"matched_functions_percent":28.654501,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:31:12Z","commit_sha":"c2e4dde624eceee7373faa7e66b8c3f7647e6d9a","commit_message":"feat(tools): decomp-permuter setup for one function\n\ntools/permuter_setup.py builds a decomp-permuter directory (base.c,\ntarget.o from the retail stub, compile.sh through try_func.py's own\nbuild(), settings.toml) for an executable or level function, modelled on\nratchet-uya-decomp's script of the same name. permuter_bootstrap.sh\nvendors decomp-permuter, toml and a MIPS objdump into tools/ext/;\npermuter_run.sh runs it in the container. Usage and results in\ndocs/PERMUTER.md: its first run found func_L00_00235608's store order.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3790145,"total_code":3692336,"matched_code":271828,"matched_code_percent":7.361952,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1429,"matched_functions_percent":28.654501,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:30:44Z","commit_sha":"bdb5e51ad03f7027d22024d8353cd54b55e93303","commit_message":"feat(overlays): func_L00_00235608 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3790145,"total_code":3692336,"matched_code":271828,"matched_code_percent":7.361952,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1429,"matched_functions_percent":28.654501,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:28:54Z","commit_sha":"fb7c3e94d505f85bf262d65e3a9acb4abb7e453d","commit_message":"feat(overlays): func_L00_00213A08 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3735976,"total_code":3692336,"matched_code":271628,"matched_code_percent":7.3565354,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1428,"matched_functions_percent":28.634449,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:27:33Z","commit_sha":"351a6e32546bdec73eed3d24a043f99d476d96a3","commit_message":"feat(overlays): func_L00_00212740 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3713226,"total_code":3692336,"matched_code":271544,"matched_code_percent":7.3542604,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1427,"matched_functions_percent":28.614397,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:26:12Z","commit_sha":"7bba8442d3edf13cf4b06b07206afc75b1666b32","commit_message":"feat(overlays): func_L00_00211F28 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.369156,"total_code":3692336,"matched_code":271464,"matched_code_percent":7.3520937,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1426,"matched_functions_percent":28.594345,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:24:51Z","commit_sha":"6a7fd7d0f721cf3774e3f144faa036c3e9d1e2b7","commit_message":"feat(overlays): func_L00_00211EE8 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3674226,"total_code":3692336,"matched_code":271400,"matched_code_percent":7.3503604,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1425,"matched_functions_percent":28.574293,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:23:30Z","commit_sha":"73911e8bcdbf06b9a866c4a7bad2a910ce318de3","commit_message":"feat(overlays): func_L00_00211338 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3657975,"total_code":3692336,"matched_code":271340,"matched_code_percent":7.3487353,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1424,"matched_functions_percent":28.554241,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:19:34Z","commit_sha":"5474ea16589c44b4ed49597de9b350ef12b7c234","commit_message":"feat(overlays): func_L00_00210478 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.362981,"total_code":3692336,"matched_code":271236,"matched_code_percent":7.3459187,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1423,"matched_functions_percent":28.53419,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:17:34Z","commit_sha":"cd0e468524b51ee0e6e442dff3f263447c6ca69b","commit_message":"feat(overlays): func_L00_0020DCF0 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3583226,"total_code":3692336,"matched_code":271064,"matched_code_percent":7.3412604,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1421,"matched_functions_percent":28.494085,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:15:33Z","commit_sha":"1a0b9ea62a4ff840ce915532e448036d293fc890","commit_message":"feat(overlays): func_L00_0020D990 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3539896,"total_code":3692336,"matched_code":270904,"matched_code_percent":7.336927,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1419,"matched_functions_percent":28.45398,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:12:06Z","commit_sha":"c68bde8e7d88ad748b769b89f729b4f88fe3742d","commit_message":"feat(overlays): func_L00_0023C058 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.352473,"total_code":3692336,"matched_code":270848,"matched_code_percent":7.3354106,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1418,"matched_functions_percent":28.433928,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:09:11Z","commit_sha":"e8cfd1ab236edf43944145637d5b4e3cae17a066","commit_message":"feat(overlays): func_L00_00236468 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.341206,"total_code":3692336,"matched_code":270432,"matched_code_percent":7.324144,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1417,"matched_functions_percent":28.413876,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T12:07:18Z","commit_sha":"d5b916cac4c1cd013725cd79e76e3700b1e2376a","commit_message":"feat(overlays): func_L00_0023D9C0 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.329831,"total_code":3692336,"matched_code":270012,"matched_code_percent":7.312769,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1416,"matched_functions_percent":28.393824,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T10:17:23Z","commit_sha":"0cf444ecbc055135d14fd0d895f1fcee8f9ad1a2","commit_message":"feat(overlays): func_L00_0023AFD8 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.319973,"total_code":3692336,"matched_code":269648,"matched_code_percent":7.302911,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1415,"matched_functions_percent":28.373772,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T10:14:46Z","commit_sha":"92059cd7c5474e6cf867c3428cc9b5b5c004e066","commit_message":"feat(overlays): func_L00_00236AB8 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.3122816,"total_code":3692336,"matched_code":269364,"matched_code_percent":7.295219,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1414,"matched_functions_percent":28.35372,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T10:12:16Z","commit_sha":"5947987fb8c83232be79481b2d933397cb120860","commit_message":"feat(overlays): func_L00_0023A690 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.30394,"total_code":3692336,"matched_code":269056,"matched_code_percent":7.2868776,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1413,"matched_functions_percent":28.333668,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T10:06:05Z","commit_sha":"7f58a44411c273ca107089c085f5a3e79bd80e02","commit_message":"feat(overlays): func_L00_0023ABB0 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.297223,"total_code":3692336,"matched_code":268808,"matched_code_percent":7.280161,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1412,"matched_functions_percent":28.313616,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T10:03:38Z","commit_sha":"b59cb98ecca386b6fd12a1f22bf09803883d5c1a","commit_message":"docs(readme): track level code progress\n\nBadges for the report's level_code, common and levels categories, and a\ncollapsed row per level (level_00-level_18).\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.2923484,"total_code":3692336,"matched_code":268628,"matched_code_percent":7.2752857,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1411,"matched_functions_percent":28.293564,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T10:00:32Z","commit_sha":"fc9822cd8362d5e0347cb58bb4f32e95dd59f55f","commit_message":"feat(overlays): func_L00_0023DD70 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.2923484,"total_code":3692336,"matched_code":268628,"matched_code_percent":7.2752857,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1411,"matched_functions_percent":28.293564,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:57:46Z","commit_sha":"d1520ed13a3568efad107aca15e99b052a69db0b","commit_message":"feat(overlays): func_L00_0023B0F8 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.288665,"total_code":3692336,"matched_code":268492,"matched_code_percent":7.2716026,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1410,"matched_functions_percent":28.273512,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:56:07Z","commit_sha":"713536a63473a115ba453f08309a87764ea0b918","commit_message":"feat(overlays): func_L00_00238148 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.2868233,"total_code":3692336,"matched_code":268424,"matched_code_percent":7.269761,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1409,"matched_functions_percent":28.25346,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:53:30Z","commit_sha":"2172066e173390add1dd5b72fe5bc5fb69f5951a","commit_message":"feat(overlays): func_L00_0023B890 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.2832484,"total_code":3692336,"matched_code":268292,"matched_code_percent":7.2661858,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1408,"matched_functions_percent":28.233406,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:52:10Z","commit_sha":"fdf56c7d7b4f24c13c16a8dea35801b105459860","commit_message":"feat(overlays): func_L00_0023A658 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.2817316,"total_code":3692336,"matched_code":268236,"matched_code_percent":7.2646694,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1407,"matched_functions_percent":28.213354,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:49:54Z","commit_sha":"786ffaee9064a6a76fe1c15c78da276eba48a0a1","commit_message":"feat(overlays): func_L00_00239F40 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.280215,"total_code":3692336,"matched_code":268180,"matched_code_percent":7.2631526,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1406,"matched_functions_percent":28.193302,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:48:33Z","commit_sha":"3b2f5618d70569c1978ab892ecf1a82768cbe010","commit_message":"feat(overlays): func_L00_00236750 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.276748,"total_code":3692336,"matched_code":268052,"matched_code_percent":7.259686,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1405,"matched_functions_percent":28.17325,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:47:12Z","commit_sha":"00950124f9980ee1b67a134aa55082d04195de8d","commit_message":"feat(overlays): func_L00_00236710 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.27469,"total_code":3692336,"matched_code":267976,"matched_code_percent":7.2576275,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1404,"matched_functions_percent":28.153198,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:44:12Z","commit_sha":"6d3e46d3995bf6f82081cd55cd7f15dca0fa67af","commit_message":"refactor(overlays): widen func_L00_00236400's record to the HUD element\n\nThe neighbouring element setters use the same record: name its fields\nnow (still exact).\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.272957,"total_code":3692336,"matched_code":267912,"matched_code_percent":7.255894,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1403,"matched_functions_percent":28.133146,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:43:35Z","commit_sha":"8bd506d030b4b7a58246dc3cd80b7fa62b9d8627","commit_message":"feat(overlays): func_L00_00236400 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.272957,"total_code":3692336,"matched_code":267912,"matched_code_percent":7.255894,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1403,"matched_functions_percent":28.133146,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:40:41Z","commit_sha":"4824780b8708f26e72c16ae6f586d48497eee0f2","commit_message":"feat(overlays): func_L00_00236208 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.27014,"total_code":3692336,"matched_code":267808,"matched_code_percent":7.2530775,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1402,"matched_functions_percent":28.113094,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:38:32Z","commit_sha":"6a49a4679ecfc351ea9fe8157d3c662c8e8cadba","commit_message":"docs(overlays): drop guesses from func_L00_002326D0's comment\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.26624,"total_code":3692336,"matched_code":267664,"matched_code_percent":7.249178,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1401,"matched_functions_percent":28.093042,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:38:23Z","commit_sha":"8c048a0e3f5ff4a29728a03e8c89d040c16bf378","commit_message":"feat(overlays): func_L00_002326D0 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.26624,"total_code":3692336,"matched_code":267664,"matched_code_percent":7.249178,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1401,"matched_functions_percent":28.093042,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:35:23Z","commit_sha":"6f5a2bb4ef515e10b9ba66c8f2e459f9e9e7b941","commit_message":"feat(overlays): func_L00_00233B50 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.2559485,"total_code":3692336,"matched_code":267284,"matched_code_percent":7.2388864,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1400,"matched_functions_percent":28.07299,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:33:25Z","commit_sha":"a7c6566957c53ab8881549d443b2603c43a7919b","commit_message":"docs(overlays): correct func_L00_00233950's comment\n\nThe last test does not depend on the +0x22D8 short.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.245982,"total_code":3692336,"matched_code":266916,"matched_code_percent":7.2289195,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1399,"matched_functions_percent":28.052938,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:33:15Z","commit_sha":"a9ac1b82c7405839583b7582e591e0f6f2473fd5","commit_message":"feat(overlays): func_L00_00233950 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.245982,"total_code":3692336,"matched_code":266916,"matched_code_percent":7.2289195,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1399,"matched_functions_percent":28.052938,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:28:31Z","commit_sha":"ed3d2277f41bd5e356355a50eddeb7e5c676cc9b","commit_message":"feat(overlays): func_L00_002344B0 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.237424,"total_code":3692336,"matched_code":266600,"matched_code_percent":7.220361,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1398,"matched_functions_percent":28.032885,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:26:31Z","commit_sha":"e4d78d96f047b7c3c0be72c985365a9673e9cd4f","commit_message":"feat(overlays): func_L00_00233F88 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.23049,"total_code":3692336,"matched_code":266344,"matched_code_percent":7.213428,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1397,"matched_functions_percent":28.012833,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:24:53Z","commit_sha":"f4befef4a77fc137dfb2db578bd841fd2ee5159b","commit_message":"feat(overlays): func_L00_00233868 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.2233405,"total_code":3692336,"matched_code":266080,"matched_code_percent":7.206278,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1396,"matched_functions_percent":27.99278,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:21:00Z","commit_sha":"9464d903af136e9815e1ed8576a61bd1f3c92715","commit_message":"feat(overlays): func_L00_00233D50 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.217057,"total_code":3692336,"matched_code":265848,"matched_code_percent":7.1999946,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1395,"matched_functions_percent":27.972729,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:17:10Z","commit_sha":"1cf0c04cce5836c8a1afb31b5c91f421a91a5e8d","commit_message":"feat(overlays): func_L00_002356D0 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.2104487,"total_code":3692336,"matched_code":265604,"matched_code_percent":7.1933866,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1394,"matched_functions_percent":27.952677,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:15:48Z","commit_sha":"573bf246b4b1dd595e1297f59ef6b7784edc79e2","commit_message":"feat(overlays): func_L00_00235790 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.205357,"total_code":3692336,"matched_code":265416,"matched_code_percent":7.188295,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1393,"matched_functions_percent":27.932625,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:14:35Z","commit_sha":"2c511751712ace3e4c7effa10863a6b230e4faa2","commit_message":"feat(overlays): func_L00_00235040 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.2035155,"total_code":3692336,"matched_code":265348,"matched_code_percent":7.1864533,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1392,"matched_functions_percent":27.912573,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:12:44Z","commit_sha":"48d4750cb56b52ac4c966168a38964b19671a06f","commit_message":"feat(overlays): func_L00_00234768 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.201674,"total_code":3692336,"matched_code":265280,"matched_code_percent":7.184612,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1391,"matched_functions_percent":27.89252,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:09:58Z","commit_sha":"63d37cb067928b08b1aa4fadd7c7ff9327ff04bc","commit_message":"feat(overlays): func_L00_00232E60 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.1996155,"total_code":3692336,"matched_code":265204,"matched_code_percent":7.1825533,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1390,"matched_functions_percent":27.872469,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:08:12Z","commit_sha":"d096c51e2070d813f03e968a4062b277800553f2","commit_message":"feat(overlays): func_L00_00233AC8 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.1976657,"total_code":3692336,"matched_code":265132,"matched_code_percent":7.1806035,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1389,"matched_functions_percent":27.852417,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:06:59Z","commit_sha":"3a1750173c1663056375582403f33f6af3672176","commit_message":"feat(overlays): func_L00_00233A90 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.196149,"total_code":3692336,"matched_code":265076,"matched_code_percent":7.1790867,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1388,"matched_functions_percent":27.832365,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:05:46Z","commit_sha":"bba0e4c7eeccc6c3855f39319bf949ce0a4d8be1","commit_message":"feat(overlays): func_L00_00232EC0 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.1946325,"total_code":3692336,"matched_code":265020,"matched_code_percent":7.17757,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1387,"matched_functions_percent":27.812311,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:04:23Z","commit_sha":"5455841060a55171052f10d2ff3e8101a11adae7","commit_message":"feat(overlays): func_L00_00232DF8 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.193332,"total_code":3692336,"matched_code":264972,"matched_code_percent":7.17627,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1386,"matched_functions_percent":27.79226,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:01:49Z","commit_sha":"4dd2a75f2965ff81dd3d3a3747b902a2b2d58c07","commit_message":"feat(overlays): func_L00_00232B78 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.1905155,"total_code":3692336,"matched_code":264868,"matched_code_percent":7.1734533,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1385,"matched_functions_percent":27.772207,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T09:00:10Z","commit_sha":"082085c554d2b05b8fc8f53a95d3f7f807e023ba","commit_message":"feat(overlays): func_L00_00232B20 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.186399,"total_code":3692336,"matched_code":264716,"matched_code_percent":7.169337,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1384,"matched_functions_percent":27.752155,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:58:14Z","commit_sha":"3d0db7253dc0ae8bee582548c4af06dbc7a01e4a","commit_message":"feat(overlays): func_L00_00232850 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.1840158,"total_code":3692336,"matched_code":264628,"matched_code_percent":7.1669536,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1383,"matched_functions_percent":27.732103,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:54:51Z","commit_sha":"3e2a097c05f99c3c4a89aae74243e14101dd9d7a","commit_message":"feat(overlays): func_L00_00232608 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.1757827,"total_code":3692336,"matched_code":264324,"matched_code_percent":7.15872,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1382,"matched_functions_percent":27.712051,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:51:39Z","commit_sha":"6d089dbadca902d6e2644babd70122b17e48b783","commit_message":"Rework of README.md","measures":{"fuzzy_match_percent":7.170366,"total_code":3692336,"matched_code":264124,"matched_code_percent":7.1533036,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1381,"matched_functions_percent":27.692,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:51:38Z","commit_sha":"7d3501e7b65bac33fa045014cbef7097df976c3f","commit_message":"feat(overlays): func_L00_00234150 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.170366,"total_code":3692336,"matched_code":264124,"matched_code_percent":7.1533036,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1381,"matched_functions_percent":27.692,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:49:25Z","commit_sha":"02f848b061c7830d1b6862aa6d8377fe742eb5e1","commit_message":"feat(overlays): func_L00_00232560 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.163541,"total_code":3692336,"matched_code":263872,"matched_code_percent":7.1464787,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1380,"matched_functions_percent":27.671947,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:47:36Z","commit_sha":"9b0b94871c8f04cca79a73b066cadcc1510f84cc","commit_message":"feat(overlays): func_L00_00234090 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.158991,"total_code":3692336,"matched_code":263704,"matched_code_percent":7.1419287,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1379,"matched_functions_percent":27.651896,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:45:56Z","commit_sha":"8f48962b97b3ffb50b33af7f4982bd1a10b648c1","commit_message":"feat(overlays): func_L00_002342F8 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.153899,"total_code":3692336,"matched_code":263516,"matched_code_percent":7.136837,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1378,"matched_functions_percent":27.631844,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:44:24Z","commit_sha":"80f938a43e8e5ae6cc0ad913831e893cf9990cc2","commit_message":"feat(overlays): func_L00_00234250 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.1494575,"total_code":3692336,"matched_code":263352,"matched_code_percent":7.1323953,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1377,"matched_functions_percent":27.61179,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:42:25Z","commit_sha":"eb08bcb912633a3ed4e529bbe2a5b8d557734995","commit_message":"feat(overlays): func_L00_00233CC0 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.145016,"total_code":3692336,"matched_code":263188,"matched_code_percent":7.1279535,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1376,"matched_functions_percent":27.591738,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:39:50Z","commit_sha":"6b22d151545bf93459b1d058371d4a0f7513966c","commit_message":"feat(overlays): func_L00_00233E48 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.141116,"total_code":3692336,"matched_code":263044,"matched_code_percent":7.1240535,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1375,"matched_functions_percent":27.571686,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:38:06Z","commit_sha":"f02abed56e81cef9e327dee8c422adc02d2c1e6e","commit_message":"feat(overlays): func_L00_002345B0 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.1369996,"total_code":3692336,"matched_code":262892,"matched_code_percent":7.119937,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1374,"matched_functions_percent":27.551634,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:36:30Z","commit_sha":"25abb1a0ed6212ab6afa60584263ccd1e205985b","commit_message":"docs(overlays): drop a guess from func_L00_00233EE0's comment\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.133316,"total_code":3692336,"matched_code":262756,"matched_code_percent":7.116254,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1373,"matched_functions_percent":27.531582,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:36:18Z","commit_sha":"5df9e0e97f83806b394cbfa7b049639ed822fa9d","commit_message":"feat(overlays): func_L00_00233EE0 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.133316,"total_code":3692336,"matched_code":262756,"matched_code_percent":7.116254,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1373,"matched_functions_percent":27.531582,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:34:19Z","commit_sha":"887b1d683b2b461bb03ae64d4cad40b02699ffca","commit_message":"feat(overlays): func_L00_00234420 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.129741,"total_code":3692336,"matched_code":262624,"matched_code_percent":7.112679,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1372,"matched_functions_percent":27.51153,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:32:15Z","commit_sha":"1affeec63c5109bd8959f10bb8255ae3820fffa3","commit_message":"feat(overlays): func_L00_002343A0 exact match\n\nChecked strictly against the function's real address in level 0 with\ntools/try_func.py (docs/OVERLAYS.md). No executable build: src/overlays/\nisn't linked into it.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.1259494,"total_code":3692336,"matched_code":262484,"matched_code_percent":7.108887,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1371,"matched_functions_percent":27.491478,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:16:55Z","commit_sha":"c14551b2ad8005d44fecc5d64aee9195c3c2334c","commit_message":"notes: func_001EC2B8 near-miss (118/768)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.119016,"total_code":3692336,"matched_code":262228,"matched_code_percent":7.101954,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1369,"matched_functions_percent":27.451374,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:07:10Z","commit_sha":"e70acfb0772b70bb525cb4ddbefdc793947612b4","commit_message":"notes: func_001F69F0 near-miss (744/748)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.119016,"total_code":3692336,"matched_code":262228,"matched_code_percent":7.101954,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1369,"matched_functions_percent":27.451374,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T08:01:10Z","commit_sha":"68e5c68e0857411a4ae58e8375460be918d3121e","commit_message":"draw: func_001F5BB8 (clipped clamped sprite) exact match (1055/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.119016,"total_code":3692336,"matched_code":262228,"matched_code_percent":7.101954,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1369,"matched_functions_percent":27.451374,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T07:59:16Z","commit_sha":"becd40df93f7c85a8a6f690048c07fb107872451","commit_message":"mobyutil: func_00215CA8 (path sampler) exact match (1054/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.1006,"total_code":3692336,"matched_code":261548,"matched_code_percent":7.0835376,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1368,"matched_functions_percent":27.431322,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T07:55:25Z","commit_sha":"edd284a349321a1a72f80ce9e86ae483200f5bfe","commit_message":"notes: func_0022CC40 near-miss (57/628)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.083483,"total_code":3692336,"matched_code":260916,"matched_code_percent":7.066421,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1367,"matched_functions_percent":27.41127,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T07:47:01Z","commit_sha":"c4cb985f381e0d611f4a02727b77a314a7b81c10","commit_message":"progress: executable and level code categories\n\nTwo top-level categories so both halves are tracked as one number each:\nexecutable (game + libgcc) and level code (common + level-specific). The\nheadline stays the whole game.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.083483,"total_code":3692336,"matched_code":260916,"matched_code_percent":7.066421,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1367,"matched_functions_percent":27.41127,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T07:44:36Z","commit_sha":"c0c7d5d1b6c471e9a4d4c2c41a46bc1053c9402b","commit_message":"progress: drop source_kind from function metadata again\n\nobjdiff's report schema (and so decomp.dev) rejects unknown per-function\nmetadata fields; PR #8 brought the field back and the progress workflow\nhas failed since. --check now compares level C against the report's\nmatched level functions instead.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.083483,"total_code":3692336,"matched_code":260916,"matched_code_percent":7.066421,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":4987,"matched_functions":1367,"matched_functions_percent":27.41127,"complete_code":88644,"complete_code_percent":2.4007566,"complete_data":0,"complete_data_percent":0,"total_units":378,"complete_units":52}},{"timestamp":"2026-09-28T02:29:00Z","commit_sha":"b922b908aec4e0b4b51d8ba3c4dd1e3f97cd05c0","commit_message":"bloaders: func_001E96B8 kept near-miss down to 3/108 bytes (1051/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.49109,"total_code":465700,"matched_code":257792,"matched_code_percent":55.35581,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1354,"matched_functions_percent":80.59524,"complete_code":86948,"complete_code_percent":18.67039,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":51}},{"timestamp":"2026-09-28T02:26:46Z","commit_sha":"01061b0657060118d6b322ea51452975f4f6999a","commit_message":"notes: func_00129E30 near-miss\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.485935,"total_code":465700,"matched_code":257792,"matched_code_percent":55.35581,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1354,"matched_functions_percent":80.59524,"complete_code":86948,"complete_code_percent":18.67039,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":51}},{"timestamp":"2026-09-28T02:25:51Z","commit_sha":"4508ff9403f068f7531f302cc5dc6011031a2dcb","commit_message":"notes: func_0012BF40 near-miss (3/276)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.485935,"total_code":465700,"matched_code":257792,"matched_code_percent":55.35581,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1354,"matched_functions_percent":80.59524,"complete_code":86948,"complete_code_percent":18.67039,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":51}},{"timestamp":"2026-09-28T02:23:49Z","commit_sha":"e144c6535d7d1cb359661895e4a97cd30b27a7b3","commit_message":"libmpeg: func_00128860 (_peepBit) exact match, adapted from Lombyte (1051/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.485935,"total_code":465700,"matched_code":257792,"matched_code_percent":55.35581,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1354,"matched_functions_percent":80.59524,"complete_code":86948,"complete_code_percent":18.67039,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":51}},{"timestamp":"2026-09-28T02:20:45Z","commit_sha":"83a44fcdee11606ba4740f517ce8421a076e769d","commit_message":"docs: the wad.c nop is ps2eeas short-loop padding, no longer a wall\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.429245,"total_code":465700,"matched_code":257528,"matched_code_percent":55.299118,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1353,"matched_functions_percent":80.53571,"complete_code":86948,"complete_code_percent":18.67039,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":51}},{"timestamp":"2026-09-28T02:20:35Z","commit_sha":"6e257a83ef83adbb0b2d0094d6e8627d88ca8a48","commit_message":"wad: func_0012F3F8 and func_0012F4A8 exact; drop func_0012F348's inline nop (1050/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.429245,"total_code":465700,"matched_code":257528,"matched_code_percent":55.299118,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1353,"matched_functions_percent":80.53571,"complete_code":86948,"complete_code_percent":18.67039,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":51}},{"timestamp":"2026-09-28T02:20:30Z","commit_sha":"85bca88df0dbf44ebb6d20637a6d3a2f41a655af","commit_message":"tools: wad.o gets 989snd's ps2eeas-style passes too\n\nwad's retail code has the same short-loop padding after the poll\nloop's jal (func_0012F3F8, func_0012F4A8, func_0012F348).\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.410995,"total_code":465700,"matched_code":257148,"matched_code_percent":55.21752,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1351,"matched_functions_percent":80.416664,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-28T02:17:14Z","commit_sha":"712b611953b0864d8a37831b4fc35ded7d738a59","commit_message":"docs: levers and toolchain passes from this round\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.410995,"total_code":465700,"matched_code":257148,"matched_code_percent":55.21752,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1351,"matched_functions_percent":80.416664,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-28T02:16:05Z","commit_sha":"d23b84adee9e176b62e52a054c449eaaad3c62fc","commit_message":"notes: func_0012E820 near-miss\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.410995,"total_code":465700,"matched_code":257148,"matched_code_percent":55.21752,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1351,"matched_functions_percent":80.416664,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-28T02:13:33Z","commit_sha":"9775805c2be558bf0ce2cd3f057a635eac6e9fea","commit_message":"989snd: func_0012E688 (snd_SendIOPCommandAndWait) exact match, adapted from Lombyte (1048/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.410995,"total_code":465700,"matched_code":257148,"matched_code_percent":55.21752,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1351,"matched_functions_percent":80.416664,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-28T02:13:28Z","commit_sha":"ee8e700be0f8e06fabee421d50ee83b59dd4edd6","commit_message":"tools: run ps2eeas_nops on 989snd too; drop func_0012EC60's inline nops\n\n989snd's retail code pads short loops that contain a call, as ps2eeas\ndoes, so the object goes through ps2eeas_nops like game code. That\nsupplies the four nops func_0012EC60 was getting from inline asm, now\na plain loop. No existing match changes.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.32424,"total_code":465700,"matched_code":256744,"matched_code_percent":55.13077,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1350,"matched_functions_percent":80.35714,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-28T02:10:59Z","commit_sha":"ccb3b2d01b052df7f08ddb251be7a35486b31eb0","commit_message":"989snd: func_0012E060 (IOP command 3 and wait) exact match (1047/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.32424,"total_code":465700,"matched_code":256744,"matched_code_percent":55.13077,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1350,"matched_functions_percent":80.35714,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-28T02:10:48Z","commit_sha":"a10529e350bc13ed30e7b63c11cf3cdc525c3fe2","commit_message":"tools: fix_macro_load_delay, 989snd's load-delay nop after a lui macro load\n\n989snd's assembler put a nop after a two-instruction macro load whose\nnext instruction used the register (func_0012E060); ours adds none.\nOnly 989snd.o goes through it, and no existing match changes.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.251236,"total_code":465700,"matched_code":256404,"matched_code_percent":55.057762,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1349,"matched_functions_percent":80.29762,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-28T02:07:45Z","commit_sha":"ec2ad1884c9774e960b23d6f2039b73a143b52fd","commit_message":"notes: func_001F6668 (FontPrint) near-miss\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.251236,"total_code":465700,"matched_code":256404,"matched_code_percent":55.057762,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1349,"matched_functions_percent":80.29762,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T22:16:53Z","commit_sha":"198f37d7cc53c9c584cb82d4097383e5dda4b448","commit_message":"notes: func_00208D38 near-miss\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.251236,"total_code":465700,"matched_code":256404,"matched_code_percent":55.057762,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1349,"matched_functions_percent":80.29762,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T22:13:50Z","commit_sha":"25cfc2faff9cc3cafe7d332bb1fbe311f97d43e6","commit_message":"notes: func_002035B0 near-miss\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.251236,"total_code":465700,"matched_code":256404,"matched_code_percent":55.057762,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1349,"matched_functions_percent":80.29762,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T22:10:43Z","commit_sha":"5ca0382a1974cc1fa235b35c6039337e9028fa64","commit_message":"loaders: func_00204FC0 (update_world_object_animation) exact match, adapted from Lombyte (1046/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.251236,"total_code":465700,"matched_code":256404,"matched_code_percent":55.057762,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1349,"matched_functions_percent":80.29762,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T22:07:00Z","commit_sha":"665759a6802fab7a6026166732f712f0c4e49812","commit_message":"notes: func_0012DB68 near-miss (delay-loop folding)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.123257,"total_code":465700,"matched_code":255808,"matched_code_percent":54.929783,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1348,"matched_functions_percent":80.2381,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T22:04:16Z","commit_sha":"f968c9e66efcb53fcfe4c1eafb79b9d53c7e5800","commit_message":"989snd: func_0012DDC0 (snd_FlushSoundCommands) exact match, adapted from Lombyte (1045/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.123257,"total_code":465700,"matched_code":255808,"matched_code_percent":54.929783,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1348,"matched_functions_percent":80.2381,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T22:00:01Z","commit_sha":"1679c1d2472d377638458a9a266f4afd8f9ad139","commit_message":"notes: func_00228690 near-miss from the Lombyte draft\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.020184,"total_code":465700,"matched_code":255328,"matched_code_percent":54.826714,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1347,"matched_functions_percent":80.17857,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:56:48Z","commit_sha":"1401db74d4c1d32ea2a2613f08f612d8548fcf7c","commit_message":"notes: func_00119AA8 near-miss\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.020184,"total_code":465700,"matched_code":255328,"matched_code_percent":54.826714,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1347,"matched_functions_percent":80.17857,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:54:31Z","commit_sha":"2afc9a6f9bdb1d13fcc1063f3f2f51bf3e3b6433","commit_message":"libmpeg: func_00128F90 (_pictureCodingExtension) exact match, adapted from Lombyte (1044/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":55.020184,"total_code":465700,"matched_code":255328,"matched_code_percent":54.826714,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1347,"matched_functions_percent":80.17857,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:53:58Z","commit_sha":"97feac7713535426d7c635db996fe811962d3505","commit_message":"libmpeg: func_0012C990 (_setDefaultQM) exact match, adapted from Lombyte (1043/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.913677,"total_code":465700,"matched_code":254832,"matched_code_percent":54.720207,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1346,"matched_functions_percent":80.11905,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:53:53Z","commit_sha":"b9441ba00b5aa7d727ad8b5617d3e6bff3ac7e00","commit_message":"tools: fix_volatile_slot, a volatile store fills the next jal's slot (2.9-ee)\n\nRetail's assembler put a volatile store into the delay slot of a jal\nthat 2.9-ee left unfilled; ours never fills a slot. No existing match\nchanges.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.865578,"total_code":465700,"matched_code":254608,"matched_code_percent":54.672108,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1345,"matched_functions_percent":80.059525,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:49:23Z","commit_sha":"1f733afb54ba91e058cdc0e641cedc0de4d05353","commit_message":"memcard: func_0020BD70 (memcard_RestoreData) exact match, adapted from Lombyte (1042/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.865578,"total_code":465700,"matched_code":254608,"matched_code_percent":54.672108,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1345,"matched_functions_percent":80.059525,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:45:22Z","commit_sha":"85c67a70030082e940201f4747ed8402bdb6cb8d","commit_message":"docs: levers found this round\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.7376,"total_code":465700,"matched_code":254012,"matched_code_percent":54.54413,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1344,"matched_functions_percent":80,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:44:24Z","commit_sha":"83e5c899a60bd623f48be87950120a05d56b5a55","commit_message":"notes: func_002284E8 now 15/424 (guarded do-while)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.7376,"total_code":465700,"matched_code":254012,"matched_code_percent":54.54413,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1344,"matched_functions_percent":80,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:41:02Z","commit_sha":"8cfaeee7dab44379a163815f52126c50360d554e","commit_message":"notes: func_00239628 near-miss (spills)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.7376,"total_code":465700,"matched_code":254012,"matched_code_percent":54.54413,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1344,"matched_functions_percent":80,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:39:57Z","commit_sha":"dcd44dea60eac85b320d56252550490ecae05db6","commit_message":"notes: func_00222070 near-miss (51/644)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.7376,"total_code":465700,"matched_code":254012,"matched_code_percent":54.54413,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1344,"matched_functions_percent":80,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:38:06Z","commit_sha":"55e214772a8ddf18931ad26430b981e57c319455","commit_message":"notes: func_00220690 near-miss (21/612)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.7376,"total_code":465700,"matched_code":254012,"matched_code_percent":54.54413,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1344,"matched_functions_percent":80,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:32:13Z","commit_sha":"a410e1eb71d1a06097d56eb1f50fac9238e85ec3","commit_message":"pause: func_0021AEF8 (picture list draw) exact match (1041/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.7376,"total_code":465700,"matched_code":254012,"matched_code_percent":54.54413,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1344,"matched_functions_percent":80,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:30:27Z","commit_sha":"9eba544fa646737ef484fef9b7e04272c12150c1","commit_message":"newlib: func_00114060 (__sfvwrite) exact match, adapted from Lombyte (1040/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.62508,"total_code":465700,"matched_code":253488,"matched_code_percent":54.43161,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1343,"matched_functions_percent":79.940475,"complete_code":86396,"complete_code_percent":18.551857,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":50}},{"timestamp":"2026-09-27T21:29:00Z","commit_sha":"52d0af80457c67de0db15fa7b52362ce344ef3e5","commit_message":"notes: func_002260A8 near-miss\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.413784,"total_code":465700,"matched_code":252504,"matched_code_percent":54.220314,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1342,"matched_functions_percent":79.88095,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T21:25:49Z","commit_sha":"d98600c487b707a605e7fb8500853621d5417142","commit_message":"notes: func_002284E8 near-miss (loop reversal)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.413784,"total_code":465700,"matched_code":252504,"matched_code_percent":54.220314,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1342,"matched_functions_percent":79.88095,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T21:22:32Z","commit_sha":"3b219bef83b4eef4e294948e9c4e5a1de314c08a","commit_message":"notes: func_002224A8 near-miss (5/404)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.413784,"total_code":465700,"matched_code":252504,"matched_code_percent":54.220314,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1342,"matched_functions_percent":79.88095,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T21:18:39Z","commit_sha":"55c324d0235224a3f1333822bf0d100f7618d057","commit_message":"notes: func_00226D50 near-miss (8 bytes short)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.413784,"total_code":465700,"matched_code":252504,"matched_code_percent":54.220314,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1342,"matched_functions_percent":79.88095,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T21:13:38Z","commit_sha":"d78cb2aae4b29c25eda3853c35bcc3ac0dac75a8","commit_message":"notes: func_001F4868 near-miss (30/328)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.413784,"total_code":465700,"matched_code":252504,"matched_code_percent":54.220314,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1342,"matched_functions_percent":79.88095,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T21:03:49Z","commit_sha":"ad5f15fd3eddfaf3f68ab447a838a7fb5eb614f1","commit_message":"notes: func_00128F90 blocked on macro store in jal delay slot\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.413784,"total_code":465700,"matched_code":252504,"matched_code_percent":54.220314,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1342,"matched_functions_percent":79.88095,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T21:02:13Z","commit_sha":"c1f650e8952fe5232957bf6555f16c5c022969b1","commit_message":"draw: func_001F5368 (screen stripes) exact match, adapted from Lombyte (1039/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.413784,"total_code":465700,"matched_code":252504,"matched_code_percent":54.220314,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1342,"matched_functions_percent":79.88095,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T17:16:08Z","commit_sha":"f5646487e34d6568320bec9161317eb422b87ee1","commit_message":"camera: func_001ECC48 (camera mode update) exact match (1038/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.33133,"total_code":465700,"matched_code":252120,"matched_code_percent":54.137856,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1341,"matched_functions_percent":79.82143,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T17:12:38Z","commit_sha":"23f2cffb596db0ea77967e91dba77b38c966211b","commit_message":"notes: func_0022C5A0 near-miss (4/576)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.20335,"total_code":465700,"matched_code":251524,"matched_code_percent":54.009876,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1340,"matched_functions_percent":79.7619,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T17:07:35Z","commit_sha":"dc344e9d5fd89514e951e5943a537fe1649b43e3","commit_message":"notes: func_0022CA00 near-miss (58/572)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.20335,"total_code":465700,"matched_code":251524,"matched_code_percent":54.009876,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1340,"matched_functions_percent":79.7619,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T17:02:01Z","commit_sha":"ac91314eb0ee7532413d2f6052060d8c0c0042c4","commit_message":"notes: func_00208458 near-miss (39/560)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.20335,"total_code":465700,"matched_code":251524,"matched_code_percent":54.009876,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1340,"matched_functions_percent":79.7619,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:54:44Z","commit_sha":"fe10b7ff41403ed06a227880908bf7e1e0cfa33b","commit_message":"space: func_0022F258 (light flare quad) exact match (1037/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.20335,"total_code":465700,"matched_code":251524,"matched_code_percent":54.009876,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1340,"matched_functions_percent":79.7619,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:50:38Z","commit_sha":"745fc42e35e555ea412d9ce677c2d21e029edd21","commit_message":"draw: func_001F5988 (float textured sprite) exact match (1036/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":54.08396,"total_code":465700,"matched_code":250968,"matched_code_percent":53.890488,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1339,"matched_functions_percent":79.70238,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:49:56Z","commit_sha":"13dde327032d84f9df148d086e6f0c464146a9ae","commit_message":"draw: func_001F5148 (letterbox bars) exact match (1035/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.96371,"total_code":465700,"matched_code":250408,"matched_code_percent":53.770237,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1338,"matched_functions_percent":79.64286,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:42:30Z","commit_sha":"22b662352e1abaf014243bc77679c3e011b10dcf","commit_message":"draw: func_001F4C30 (light matrix rows) exact match (1034/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.846897,"total_code":465700,"matched_code":249864,"matched_code_percent":53.653423,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1337,"matched_functions_percent":79.583336,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:29:33Z","commit_sha":"0d47d5003cbe4a9927ebf71181c425699d5fffa7","commit_message":"notes: func_00120B28 at 6/148 with volatile handle stores\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.745544,"total_code":465700,"matched_code":249392,"matched_code_percent":53.55207,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1336,"matched_functions_percent":79.52381,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:25:46Z","commit_sha":"004c5b51891d940f03e3530247bc630e521cbe4e","commit_message":"draw: func_001F7868 (VU1 setup packet) exact match (1033/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.745544,"total_code":465700,"matched_code":249392,"matched_code_percent":53.55207,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1336,"matched_functions_percent":79.52381,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:22:20Z","commit_sha":"c53d13939a0c95d120137b1755e7fc6ad17259bd","commit_message":"notes: near-miss records for ports and new candidates\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.640755,"total_code":465700,"matched_code":248904,"matched_code_percent":53.447285,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1335,"matched_functions_percent":79.46429,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:18:22Z","commit_sha":"8eebc56d4daf92cef950af10c0d723c4111bd19f","commit_message":"docs: levers found this round, with matched examples\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.640755,"total_code":465700,"matched_code":248904,"matched_code_percent":53.447285,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1335,"matched_functions_percent":79.46429,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:17:55Z","commit_sha":"749dab77878e8108a31857e4ab42741d9d43e7b6","commit_message":"loaders: func_00205220 (ParseSpaceSceneChunk) exact match, adapted from Lombyte (1032/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.640755,"total_code":465700,"matched_code":248904,"matched_code_percent":53.447285,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1335,"matched_functions_percent":79.46429,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:17:23Z","commit_sha":"e7aceb0dca92970df985d271ddae2167c4e97eb4","commit_message":"sif: func_0011CE70 (_sceSifLoadModuleBuffer) exact match, adapted from Lombyte (1031/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.640327,"total_code":465700,"matched_code":248824,"matched_code_percent":53.430107,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1334,"matched_functions_percent":79.40476,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:15:43Z","commit_sha":"31519c169728560f89e06a303ffc122bff5f7d6e","commit_message":"memcard: func_0020BBC8 (memcard_PrepData) exact match, adapted from Lombyte (1030/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.528667,"total_code":465700,"matched_code":248304,"matched_code_percent":53.318447,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1333,"matched_functions_percent":79.34524,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:14:41Z","commit_sha":"f20f0f8a3d75ca097da6def02002009f5953f484","commit_message":"newlib: func_00113B70 (_free_r) exact match, adapted from Lombyte (1029/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.52029,"total_code":465700,"matched_code":248072,"matched_code_percent":53.268627,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1332,"matched_functions_percent":79.28571,"complete_code":85264,"complete_code_percent":18.308783,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":49}},{"timestamp":"2026-09-27T16:13:47Z","commit_sha":"4aa411818bb9a40bc858f1168722665d626c8fc3","commit_message":"libmpeg: func_0012C0A0 (_decodeOrSkipField) exact match, adapted from Lombyte (1028/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.349365,"total_code":465700,"matched_code":247276,"matched_code_percent":53.097702,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1331,"matched_functions_percent":79.22619,"complete_code":84104,"complete_code_percent":18.059694,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":48}},{"timestamp":"2026-09-27T16:12:58Z","commit_sha":"526fbbe77612a261bbe44ab7f1ee159fc22ef036","commit_message":"libmpeg: func_001299E8 (_cpr8) exact match, adapted from Lombyte (1027/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.27464,"total_code":465700,"matched_code":246928,"matched_code_percent":53.022976,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1330,"matched_functions_percent":79.166664,"complete_code":84104,"complete_code_percent":18.059694,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":48}},{"timestamp":"2026-09-27T16:11:42Z","commit_sha":"e675614c505130c20ff652c69e2b858c922ba47b","commit_message":"libmpeg: func_001286E8 (_ipuVdec) exact match, adapted from Lombyte (1026/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.133778,"total_code":465700,"matched_code":246272,"matched_code_percent":52.882114,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1329,"matched_functions_percent":79.10714,"complete_code":84104,"complete_code_percent":18.059694,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":48}},{"timestamp":"2026-09-27T16:10:53Z","commit_sha":"0ef5f37f05d0e12b00bda5c08b364fa089de1411","commit_message":"libmpeg: func_001273A0 (_waitBdecOut) exact match, adapted from Lombyte (1025/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":53.05304,"total_code":465700,"matched_code":245896,"matched_code_percent":52.801373,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1328,"matched_functions_percent":79.04762,"complete_code":84104,"complete_code_percent":18.059694,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":48}},{"timestamp":"2026-09-27T16:09:58Z","commit_sha":"dffee5c0d2fcee3ee866f33e72865c39df66bd81","commit_message":"libdma: func_001233E8 (sceDmaPutEnv) exact match, adapted from Lombyte (1024/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.943954,"total_code":465700,"matched_code":245388,"matched_code_percent":52.69229,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1327,"matched_functions_percent":78.9881,"complete_code":84104,"complete_code_percent":18.059694,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":48}},{"timestamp":"2026-09-27T16:09:20Z","commit_sha":"7b2f5df60a58ca571e684f42a46afd3128decf26","commit_message":"libgraph: func_00121B78 (sceGsResetGraph) exact match, adapted from Lombyte (1023/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.8426,"total_code":465700,"matched_code":244916,"matched_code_percent":52.59094,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1326,"matched_functions_percent":78.92857,"complete_code":84104,"complete_code_percent":18.059694,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":48}},{"timestamp":"2026-09-27T16:08:41Z","commit_sha":"b5bec64fa09b4a4a04f9c6f66a61f432e5cf56d6","commit_message":"sif: func_0011AE20 (sceSifInitRpc) exact match, adapted from Lombyte (1022/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.75671,"total_code":465700,"matched_code":244516,"matched_code_percent":52.505047,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1325,"matched_functions_percent":78.86905,"complete_code":84104,"complete_code_percent":18.059694,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":48}},{"timestamp":"2026-09-27T16:07:51Z","commit_sha":"b02c4e090d09d68fbb3f396bf7e515a82fc7ad80","commit_message":"sif: func_0011B2F8 (sceSifBindRpc) exact match, adapted from Lombyte (1021/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.66824,"total_code":465700,"matched_code":244104,"matched_code_percent":52.416576,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1324,"matched_functions_percent":78.809525,"complete_code":84104,"complete_code_percent":18.059694,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":48}},{"timestamp":"2026-09-27T16:06:53Z","commit_sha":"e1bed6cfe1dabdbe969c4123bf23480be9734cb6","commit_message":"newlib: func_001123A8 (_calloc_r) exact match, adapted from Lombyte (1020/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.59953,"total_code":465700,"matched_code":243784,"matched_code_percent":52.347862,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1323,"matched_functions_percent":78.75,"complete_code":84104,"complete_code_percent":18.059694,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":48}},{"timestamp":"2026-09-27T16:05:45Z","commit_sha":"673d1f8e3f582b7c1c0386073bff4a2a305f9889","commit_message":"loaders: func_00203038 exact match, adapted from Lombyte (1019/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.55916,"total_code":465700,"matched_code":243596,"matched_code_percent":52.307495,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1322,"matched_functions_percent":78.690475,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T16:05:02Z","commit_sha":"c9a98019009e67af04b67b651b2d7b780b76a515","commit_message":"menu: func_00208338 exact match, adapted from Lombyte (1018/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.52609,"total_code":465700,"matched_code":243376,"matched_code_percent":52.260254,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1321,"matched_functions_percent":78.63095,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T16:02:26Z","commit_sha":"db8a424387adce63cbadaf93be29e31cf8b9512b","commit_message":"sif: func_0011D248 (sceSifRebootIop) exact match, adapted from Lombyte (1017/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.52072,"total_code":465700,"matched_code":243208,"matched_code_percent":52.22418,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1320,"matched_functions_percent":78.57143,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:24:20Z","commit_sha":"8ab938ac9157333b60c3fa12dbc4f505bf105a2c","commit_message":"sif: func_0011CB40 (sceSifInitIopHeap) exact match, -fno-schedule-insns (1016/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.462315,"total_code":465700,"matched_code":242936,"matched_code_percent":52.16577,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1319,"matched_functions_percent":78.5119,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:24:03Z","commit_sha":"3f1d9ce2642b9b1c8129fdda6eb69da6c4a6278e","commit_message":"build: per-function flags for core_text objects too\n\nfunc_cflags.py now also runs after the -S of both core_text rules (2.95.3\nand 2.9-ee) and in try_func's 2.9-ee path, so an SDK function can get its\nown flags, e.g. -fno-schedule-insns, which Lombyte uses for some SDK units.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.433113,"total_code":465700,"matched_code":242800,"matched_code_percent":52.13657,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1318,"matched_functions_percent":78.45238,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:22:27Z","commit_sha":"9cc198723a19cea39b101df4c1a7d23bf5345e2c","commit_message":"libmc: func_00124650 (bind servers, version check) exact match (1015/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.433113,"total_code":465700,"matched_code":242800,"matched_code_percent":52.13657,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1318,"matched_functions_percent":78.45238,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:19:14Z","commit_sha":"35360be1d8f17191899c282948f3c366801252e2","commit_message":"libmc: func_00124068 (RPC 1, get info) exact match (1014/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.34636,"total_code":465700,"matched_code":242396,"matched_code_percent":52.049816,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1317,"matched_functions_percent":78.39286,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:17:41Z","commit_sha":"21530b68b2520616dfb74bb27074185007dc9655","commit_message":"libmc: func_001241F0 (RPC 0xD, get directory) exact match (1013/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.264763,"total_code":465700,"matched_code":242016,"matched_code_percent":51.96822,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1316,"matched_functions_percent":78.333336,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:15:20Z","commit_sha":"c8db2e255f4665c509e53a544c3d9988ec137e7e","commit_message":"989snd: func_0012E1C8 (start IOP stream) exact match (1012/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.194332,"total_code":465700,"matched_code":241688,"matched_code_percent":51.89779,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1315,"matched_functions_percent":78.27381,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:14:05Z","commit_sha":"aaa837e268f1221fae3c016ce1c28b00d97f1ebc","commit_message":"core: func_00124D18 (memory card entry read) exact match (1011/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.135925,"total_code":465700,"matched_code":241416,"matched_code_percent":51.839382,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1314,"matched_functions_percent":78.21429,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:12:13Z","commit_sha":"5ba10d5d1e03c2e55025ed89bcb111c1030d1a3a","commit_message":"core: func_00124340 (RPC 0x10) exact match (1010/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.0904,"total_code":465700,"matched_code":241204,"matched_code_percent":51.793858,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1313,"matched_functions_percent":78.15476,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:10:37Z","commit_sha":"0800f2cd4e37357ff38cf01b8e1f73a036455c52","commit_message":"core: func_001235C8 exact match (1009/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.046597,"total_code":465700,"matched_code":241000,"matched_code_percent":51.750053,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1312,"matched_functions_percent":78.09524,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:09:15Z","commit_sha":"842fb85b92b9ce4140d2ce3f4121d6612fbeed08","commit_message":"libmpeg: func_0012BB30 exact match (1008/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.024265,"total_code":465700,"matched_code":240896,"matched_code_percent":51.727722,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1311,"matched_functions_percent":78.03571,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:08:48Z","commit_sha":"2d19e741db0f4834e37053b975ae582c297d3d45","commit_message":"libmpeg: func_0012BB88 exact match (1007/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.008804,"total_code":465700,"matched_code":240824,"matched_code_percent":51.71226,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1310,"matched_functions_percent":77.97619,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:08:43Z","commit_sha":"a7706cafe0844985729f0ae5f5076e7e93957e8f","commit_message":"989snd: func_0012F1A8 exact match (1006/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":52.006226,"total_code":465700,"matched_code":240812,"matched_code_percent":51.709682,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1309,"matched_functions_percent":77.916664,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:07:26Z","commit_sha":"1f4333bf0d62391d88a1dd30c39fac76d64f0877","commit_message":"989snd: func_0012ED48 (IOP command wrapper) exact match (1005/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.993343,"total_code":465700,"matched_code":240752,"matched_code_percent":51.6968,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1308,"matched_functions_percent":77.85714,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:07:21Z","commit_sha":"1916ac111ceef5429485445fc2708803bdd44b22","commit_message":"989snd: func_0012E600 (IOP command wrapper) exact match (1004/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.97187,"total_code":465700,"matched_code":240652,"matched_code_percent":51.675327,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1307,"matched_functions_percent":77.79762,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:07:16Z","commit_sha":"89a40f98687dfc8619f22d4840b5d06f4260ab0b","commit_message":"989snd: func_0012F288 (IOP command wrapper) exact match (1003/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.95641,"total_code":465700,"matched_code":240580,"matched_code_percent":51.659866,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1306,"matched_functions_percent":77.7381,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:07:11Z","commit_sha":"3eccca04d5a7a12f851eb8d11bc6324eb1ffbcc5","commit_message":"989snd: func_0012F220 (IOP command wrapper) exact match (1002/1680 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.94696,"total_code":465700,"matched_code":240536,"matched_code_percent":51.650417,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1305,"matched_functions_percent":77.67857,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:06:09Z","commit_sha":"dbea13698590c45292b1f617a51b7044017b33db","commit_message":"989snd: func_0012F0A8 (IOP command wrapper) exact match (1001/1658 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.93923,"total_code":465700,"matched_code":240500,"matched_code_percent":51.64269,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1304,"matched_functions_percent":77.61905,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:06:04Z","commit_sha":"b5fc4f23e961e2b8cac53660e110239aa8617fbd","commit_message":"989snd: func_0012E4F8 (IOP command wrapper) exact match (1000/1658 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.925488,"total_code":465700,"matched_code":240436,"matched_code_percent":51.628944,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1303,"matched_functions_percent":77.559525,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:05:59Z","commit_sha":"b4fd417727d33894d2b917fa7f750095d3125ff9","commit_message":"989snd: func_0012E4A8 (IOP command wrapper) exact match (999/1658 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.91604,"total_code":465700,"matched_code":240392,"matched_code_percent":51.6195,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1302,"matched_functions_percent":77.5,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:05:53Z","commit_sha":"dd5cea561d855caf1779b9c7c815fb7a2adfc6b8","commit_message":"989snd: func_0012E448 (IOP command wrapper) exact match (998/1658 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.905735,"total_code":465700,"matched_code":240344,"matched_code_percent":51.60919,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1301,"matched_functions_percent":77.440475,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:05:48Z","commit_sha":"5fdfebcb2731c02ed87f9da033e8985e4cd72aa3","commit_message":"989snd: func_0012E3C0 (IOP command wrapper) exact match (997/1658 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.890274,"total_code":465700,"matched_code":240272,"matched_code_percent":51.59373,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1300,"matched_functions_percent":77.38095,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:05:42Z","commit_sha":"8c2985b196ef1b84e6afe75c7cb0aeb7105a85f2","commit_message":"989snd: func_0012E2E8 (IOP command wrapper) exact match (996/1658 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.87911,"total_code":465700,"matched_code":240220,"matched_code_percent":51.582565,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1299,"matched_functions_percent":77.32143,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T12:04:47Z","commit_sha":"646055d03b3d4ec5989e0e7f449e09c543620d56","commit_message":"split 22 core functions from the linker remnants in front of them\n\nsplat folded dead-strip remnant pairs (addiu $sp,$sp,N; nop, and the\nlike) into the following function and left the real entry as an\nalabel, so these functions could not be decompiled. The real starts are\ndeclared in config/symbol_addrs.txt; each remnant is now its own file,\nlisted in config/linker_remnants.txt and included with LINKER_REMNANT.\nThe image is unchanged. Re-run tools/setup_asm.sh after pulling.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.86966,"total_code":465700,"matched_code":240176,"matched_code_percent":51.573116,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1680,"matched_functions":1298,"matched_functions_percent":77.2619,"complete_code":83876,"complete_code_percent":18.010736,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T11:56:31Z","commit_sha":"7112b9dcd0f87a9e7c19c8516c666ed6a30460d0","commit_message":"vendor: func_0023B018 (zone at point) exact match (995/1658 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.77055,"total_code":465788,"matched_code":239760,"matched_code_percent":51.47406,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":1276,"matched_functions_percent":76.96019,"complete_code":83876,"complete_code_percent":18.007334,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T11:53:17Z","commit_sha":"50fd92de84da862d440bd5ac5636ef736d50436e","commit_message":"build: resolve orphan %hi relocations at assembly time (994/1658 exact C)\n\nLoop optimisation can hoist a global's lui and leave it without a %lo\n(func_001E9808 copies %hi(D_0013D390) to an unused saved register, as\nretail does). The assembler then emits HI16, HI16, LO16 and this ee-ld\nfills the first HI16 with the address's low half. tools/fix_orphan_hi.py\nwrites such a %hi of an address-named symbol as a constant before\nassembly; Makefile.sn and try_func.py run it. func_001E9808 is now\nexact in the full build.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.673508,"total_code":465788,"matched_code":239308,"matched_code_percent":51.37702,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":1275,"matched_functions_percent":76.89988,"complete_code":83876,"complete_code_percent":18.007334,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T11:51:18Z","commit_sha":"124565ef7a5c54f4a288e303b9cf36274bc61bc6","commit_message":"bmain: func_001E9808 (start level) exact match (993/1658 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.67308,"total_code":465788,"matched_code":238844,"matched_code_percent":51.277405,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":1274,"matched_functions_percent":76.83957,"complete_code":83876,"complete_code_percent":18.007334,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T11:45:53Z","commit_sha":"57bd6e705b17b893c9e766066932ed0018dcacc0","commit_message":"camera: func_001EDE50 comment says only what the code shows\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.57389,"total_code":465788,"matched_code":238844,"matched_code_percent":51.277405,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":1274,"matched_functions_percent":76.83957,"complete_code":83876,"complete_code_percent":18.007334,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T11:45:45Z","commit_sha":"aaa9932c27fb573e9a8455bf7d366bd1b5de2cbf","commit_message":"camera: func_001EDE50 (camera update) exact match (993/1658 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.57389,"total_code":465788,"matched_code":238844,"matched_code_percent":51.277405,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":1274,"matched_functions_percent":76.83957,"complete_code":83876,"complete_code_percent":18.007334,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T11:43:55Z","commit_sha":"f62a07320a49fcb885d6d21b727a84918ea5a688","commit_message":"draw: func_001F5800 (DrawTexturedQuad) exact match (992/1658 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.489735,"total_code":465788,"matched_code":238452,"matched_code_percent":51.193245,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":1273,"matched_functions_percent":76.77925,"complete_code":83876,"complete_code_percent":18.007334,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T11:42:03Z","commit_sha":"ecbe7a4061c3757c775a0d7b707c1613be999215","commit_message":"camera: func_001ECEA0 (camera blend step) exact match (991/1658 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.406433,"total_code":465788,"matched_code":238064,"matched_code_percent":51.109947,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":1272,"matched_functions_percent":76.71894,"complete_code":83876,"complete_code_percent":18.007334,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T11:37:00Z","commit_sha":"9c180c143b17541657719b7c877ad420103aa1d8","commit_message":"pause: func_002282D0 (basis from direction) exact match, -mno-split-addresses (990/1658 exact C)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.303383,"total_code":465788,"matched_code":237584,"matched_code_percent":51.006897,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":1271,"matched_functions_percent":76.65862,"complete_code":83876,"complete_code_percent":18.007334,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T11:24:28Z","commit_sha":"72df4cd1ee44c38e04c41cbb2653c02aa036b08b","commit_message":"progress: drop source_kind from function metadata\n\nobjdiff's report schema rejects unknown per-function metadata fields,\nso the progress workflow has failed since #7. The classification stays\nin config/ and is still validated by --check.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":51.238117,"total_code":465788,"matched_code":237280,"matched_code_percent":50.94163,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":1270,"matched_functions_percent":76.59831,"complete_code":83876,"complete_code_percent":18.007334,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":47}},{"timestamp":"2026-09-27T11:01:51Z","commit_sha":"1b21f791a50b2e763cc0b66b619e645413eccb42","commit_message":"mobyutil: func_002153E8 (matrix to Euler angles) exact match (982/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":32.578125,"total_code":465788,"matched_code":150364,"matched_code_percent":32.28164,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":982,"matched_functions_percent":59.227985,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T07:29:19Z","commit_sha":"7137440eac2e47698a7ccdcbfa839decbcc9fedc","commit_message":"hud: func_00200A90 (HUD sprite with UV origin) exact match (981/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":32.515438,"total_code":465788,"matched_code":150072,"matched_code_percent":32.21895,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":981,"matched_functions_percent":59.16767,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T07:28:28Z","commit_sha":"700d45ca6c5fcaa990142c50e6537e93df2559c2","commit_message":"hud: func_002008B8 (subpixel HUD sprite) exact match (980/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":32.40208,"total_code":465788,"matched_code":149544,"matched_code_percent":32.105595,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":980,"matched_functions_percent":59.107357,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T07:28:02Z","commit_sha":"45471549a60fa70cb29d569cec9c8390200e668a","commit_message":"hud: correct func_00200650 comment\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":32.300747,"total_code":465788,"matched_code":149072,"matched_code_percent":32.00426,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":979,"matched_functions_percent":59.047043,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T07:27:53Z","commit_sha":"cf143637bf894b489410af704a10aee1e4a92e41","commit_message":"hud: func_00200650 (mirrored HUD sprite strip) exact match (979/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":32.300747,"total_code":465788,"matched_code":149072,"matched_code_percent":32.00426,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":979,"matched_functions_percent":59.047043,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T07:12:32Z","commit_sha":"e4ff9e6a0ca4b1b9529c6f6d690d9ae55538166b","commit_message":"hud: func_00200468 (textured HUD sprite) exact match (978/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":32.171074,"total_code":465788,"matched_code":148468,"matched_code_percent":31.874586,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":978,"matched_functions_percent":58.986732,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T07:10:51Z","commit_sha":"c6e2f4f7610a8327b60fe49cd0a849faa92e82d0","commit_message":"draw: func_001F5650 (DrawRectOverlay) exact match (977/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":32.066303,"total_code":465788,"matched_code":147980,"matched_code_percent":31.769817,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":977,"matched_functions_percent":58.92642,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T07:08:19Z","commit_sha":"c69508b11a477e2c1231f3d9442734f8edd9d8ed","commit_message":"framebuf: func_001FB498 (PutDrawBufferLarge) exact match (976/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.975277,"total_code":465788,"matched_code":147556,"matched_code_percent":31.67879,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":976,"matched_functions_percent":58.866104,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T07:07:52Z","commit_sha":"573485d7e0aaaee533c7db8de6292ddfdfec225f","commit_message":"framebuf: func_001FB530 (append DMA tag) exact match (975/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.943502,"total_code":465788,"matched_code":147408,"matched_code_percent":31.647015,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":975,"matched_functions_percent":58.80579,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T07:05:02Z","commit_sha":"587503186126ee84dba21a5ad9014b0365b58213","commit_message":"mobyutil: func_00215A10 (colour to signed vector) exact match (974/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.921175,"total_code":465788,"matched_code":147304,"matched_code_percent":31.624687,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":974,"matched_functions_percent":58.745476,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T07:04:24Z","commit_sha":"8d766756986587842ae93b981254da449380c2d6","commit_message":"menu: func_00208248 (cursor near point test) exact match (973/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.892836,"total_code":465788,"matched_code":147172,"matched_code_percent":31.596348,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":973,"matched_functions_percent":58.68516,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T07:00:49Z","commit_sha":"ca4e0b074049ab9429024757a5d5ea7c9a22c66a","commit_message":"mobyutil: func_00213DE0 (set anim sequence with blend) exact match (972/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.859344,"total_code":465788,"matched_code":147016,"matched_code_percent":31.562857,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":972,"matched_functions_percent":58.624847,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:55:44Z","commit_sha":"34cde93ce16c6e2c176f88aa9a4b3fffeabf590f","commit_message":"space: func_0022F128 (movie camera keyframe) exact match (971/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.788925,"total_code":465788,"matched_code":146688,"matched_code_percent":31.49244,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":971,"matched_functions_percent":58.564537,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:52:38Z","commit_sha":"9b6c96a247487d902d9803b52a2a7244a810e39f","commit_message":"mobyutil: reindent func_00215650 comment\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.72366,"total_code":465788,"matched_code":146384,"matched_code_percent":31.427174,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":970,"matched_functions_percent":58.504223,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:52:29Z","commit_sha":"b679b49776d7760c34cd52b1d564021135108c72","commit_message":"mobyutil: func_00215650 (quaternion rotate) exact match (970/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.72366,"total_code":465788,"matched_code":146384,"matched_code_percent":31.427174,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":970,"matched_functions_percent":58.504223,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:51:06Z","commit_sha":"e86ed71e27df9f614825718bde09c753e6fa79b4","commit_message":"mobyfunc: func_0020D960 (AttachManipulator) exact match (969/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.713783,"total_code":465788,"matched_code":146244,"matched_code_percent":31.397116,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":969,"matched_functions_percent":58.44391,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:50:13Z","commit_sha":"08a98d7bf21c56578543c3245adea20aedfe8668","commit_message":"sound: func_0022D970 (line test toward target) exact match (968/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.709705,"total_code":465788,"matched_code":146124,"matched_code_percent":31.371353,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":968,"matched_functions_percent":58.383595,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:48:59Z","commit_sha":"22040b4ceaf037bb82c5a9870b6fa9c6ea16c740","commit_message":"mobyutil: func_00214550 (shadow height probe) exact match (967/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.708202,"total_code":465788,"matched_code":145968,"matched_code_percent":31.337862,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":967,"matched_functions_percent":58.32328,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:43:51Z","commit_sha":"b7d55b821c555a11c8984407bba2b083b075984d","commit_message":"transition: func_001EB338 (Transition_UpdateMovieCamera) exact match (966/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.591412,"total_code":465788,"matched_code":145424,"matched_code_percent":31.221071,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":966,"matched_functions_percent":58.262966,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:42:26Z","commit_sha":"0a29b005d8a721663f8a6d706559bc0be1c2a29f","commit_message":"lights: func_00202260 (UpdateAllPointLights) exact match (965/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.53044,"total_code":465788,"matched_code":145140,"matched_code_percent":31.160099,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":965,"matched_functions_percent":58.202652,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:39:44Z","commit_sha":"487d4597deae616ee827b002ff38c65b2379c92c","commit_message":"effects: func_001EE6E0 (draw queued glows) exact match (964/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.447998,"total_code":465788,"matched_code":144756,"matched_code_percent":31.077658,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":964,"matched_functions_percent":58.14234,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:38:04Z","commit_sha":"8ffff89721ec43dc28a0ea8e28a9cd26f9fb2214","commit_message":"camera: func_001EDB98 (camera-in-water test) exact match (963/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.36985,"total_code":465788,"matched_code":144392,"matched_code_percent":30.99951,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":963,"matched_functions_percent":58.082027,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:36:42Z","commit_sha":"934816077ffbb1099c7efb1a67599eb898155514","commit_message":"pause: func_0021EFA0 (item preview moby) exact match (962/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.298574,"total_code":465788,"matched_code":144060,"matched_code_percent":30.928234,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":962,"matched_functions_percent":58.021713,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:34:17Z","commit_sha":"768770e6b70f4091b3a3ac0949a636074c893f72","commit_message":"pause: func_00225E00 exact match (961/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.218708,"total_code":465788,"matched_code":143688,"matched_code_percent":30.84837,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":961,"matched_functions_percent":57.9614,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:32:51Z","commit_sha":"f94e54cdee95b4c4439a5cc6322e7593dbe82537","commit_message":"pause: func_00226250 exact match (960/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.125105,"total_code":465788,"matched_code":143252,"matched_code_percent":30.754765,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":960,"matched_functions_percent":57.901085,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:31:52Z","commit_sha":"4ba9229f7dd4c5ed37291847e56447dd0433b6d6","commit_message":"pause: func_00226380 exact match (959/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.05984,"total_code":465788,"matched_code":142948,"matched_code_percent":30.689499,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":959,"matched_functions_percent":57.84077,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:31:15Z","commit_sha":"7a7e757f884135d1d741fbc6fe587a6a233e14de","commit_message":"pause: func_00225FB8 exact match (958/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":31.028923,"total_code":465788,"matched_code":142804,"matched_code_percent":30.658583,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":958,"matched_functions_percent":57.780457,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:27:14Z","commit_sha":"fac2568d505aeab273847bc0186a3e7bf0f3b32b","commit_message":"draw: func_001F62C8 (bevelled frame) exact match (957/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":30.978256,"total_code":465788,"matched_code":142568,"matched_code_percent":30.607916,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":957,"matched_functions_percent":57.720146,"complete_code":15260,"complete_code_percent":3.2761686,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:23:50Z","commit_sha":"095ef45cb35a9bb86934d3e15a70e6eda09d00d4","commit_message":"Merge pull request #6 from Veradictus/main\n\nfeat: 27 exact matches, a Sonnet wave pipeline and 14% of code unblocked (928 → 955)","measures":{"fuzzy_match_percent":29.450737,"total_code":465788,"matched_code":134828,"matched_code_percent":28.946217,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":930,"matched_functions_percent":56.09168,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":29}},{"timestamp":"2026-09-27T06:20:33Z","commit_sha":"fbd28cc47a077869b3b1774beb9ed3935e672a06","commit_message":"cdvd: func_00121A80 (sceCdReadClock) exact match (930/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":29.450737,"total_code":465788,"matched_code":134828,"matched_code_percent":28.946217,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":930,"matched_functions_percent":56.09168,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-27T06:17:52Z","commit_sha":"7994833d8140da8e19daf0d67b727521c32192a4","commit_message":"tty: func_00119BF8 (sceTtyRead) exact match (929/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":29.397493,"total_code":465788,"matched_code":134580,"matched_code_percent":28.892973,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":929,"matched_functions_percent":56.031364,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T23:39:45Z","commit_sha":"9337005a3c7cfa903f17aee62b49c7718222bc8f","commit_message":"pause: func_00224040 (save-slot handler) exact match (928/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":29.352839,"total_code":465788,"matched_code":134372,"matched_code_percent":28.848318,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":928,"matched_functions_percent":55.97105,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T23:35:23Z","commit_sha":"05da4a180a41a5d9b6ab88fef9c7f812fd296089","commit_message":"pause: func_00223490 exact match (927/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":29.151888,"total_code":465788,"matched_code":133436,"matched_code_percent":28.647367,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":927,"matched_functions_percent":55.910736,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T23:24:23Z","commit_sha":"d4a8789afbd5f30343d822f4871e73fa0e5a5bb7","commit_message":"help: func_001FF1B0 (Help_Draw) exact match (926/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":28.960386,"total_code":465788,"matched_code":132544,"matched_code_percent":28.455864,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":926,"matched_functions_percent":55.85042,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T23:20:58Z","commit_sha":"1c444d3c1599336a3d7ce8dab2c0cde83e491586","commit_message":"hud: func_00200E38 (rotated sprite packet) exact match (925/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":28.780905,"total_code":465788,"matched_code":131708,"matched_code_percent":28.276382,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":925,"matched_functions_percent":55.790108,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T22:41:35Z","commit_sha":"cd33f09ec209ed42610d22af9ce1f36646653f85","commit_message":"pause: func_00221888 exact match (924/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":28.597988,"total_code":465788,"matched_code":130856,"matched_code_percent":28.093468,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":924,"matched_functions_percent":55.729794,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T22:16:58Z","commit_sha":"dc0e4e7650fb34a6cd82d95064e7aa1e199a1d31","commit_message":"mobyutil: func_002150B0 (matrix to quaternion) exact match (923/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":28.443413,"total_code":465788,"matched_code":130136,"matched_code_percent":27.93889,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":923,"matched_functions_percent":55.669483,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T22:15:53Z","commit_sha":"a931a56f18b9992d0cec0198e6742e98153deb8b","commit_message":"menu: func_00208860 exact match (922/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":28.308586,"total_code":465788,"matched_code":129508,"matched_code_percent":27.804066,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":922,"matched_functions_percent":55.60917,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T22:14:02Z","commit_sha":"143e3a2d2448999df33b2861a06cbf4be02d1867","commit_message":"pause: func_00222B98 exact match (921/1658 exact)\n\nThe prompt box is an aggregate initializer; GCC clears it through a\nmemset libcall, so the linker script maps memset to func_001153FC.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":28.18149,"total_code":465788,"matched_code":128916,"matched_code_percent":27.67697,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":921,"matched_functions_percent":55.548855,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T22:11:09Z","commit_sha":"888cd49173421dc971eccac355154d8de73838bf","commit_message":"Merge pull request #5 from Veradictus/main\n\nLevel extractor: your disc's levels as an editable Godot 4 project","measures":{"fuzzy_match_percent":28.081015,"total_code":465788,"matched_code":128448,"matched_code_percent":27.576494,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":920,"matched_functions_percent":55.48854,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T22:05:23Z","commit_sha":"6207d6e1b0f65093ebb1c87aae71d9f847b6c66e","commit_message":"hud: func_001FFFB8 exact match (920/1658 exact)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":28.081015,"total_code":465788,"matched_code":128448,"matched_code_percent":27.576494,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":920,"matched_functions_percent":55.48854,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T21:53:11Z","commit_sha":"8845d588a8782ab86a771aad7f9af453b6e3e823","commit_message":"hud: func_00200CA0 exact match (919/1658 exact, 27.48%)\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":27.980541,"total_code":465788,"matched_code":127980,"matched_code_percent":27.476019,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":919,"matched_functions_percent":55.428226,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T07:29:42Z","commit_sha":"f1ece467982a72d8c729932d1a3c19aa0a35d518","commit_message":"Decompile func_00128E68 (_extensionAndUserData in 00125630.c) - exact match","measures":{"fuzzy_match_percent":27.893806,"total_code":465788,"matched_code":127576,"matched_code_percent":27.389284,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":918,"matched_functions_percent":55.367912,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T07:18:43Z","commit_sha":"ef63cec37c55fcf7647a25cd7ab423b0d11ae441","commit_message":"Decompile func_00127858 (917/1658 exact, 27.33%)","measures":{"fuzzy_match_percent":27.830257,"total_code":465788,"matched_code":127280,"matched_code_percent":27.325737,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":917,"matched_functions_percent":55.3076,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T07:16:09Z","commit_sha":"5de02fe46695a2458daeb4f26504fe6b3b5a6d47","commit_message":"Decompile func_00127748 (916/1658 exact, 27.27%)","measures":{"fuzzy_match_percent":27.773579,"total_code":465788,"matched_code":127016,"matched_code_percent":27.269058,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":916,"matched_functions_percent":55.247288,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T06:59:16Z","commit_sha":"3916bc9395b62fcc26ac46cfcef2359125aef302","commit_message":"Decompile func_001293A8 (915/1658 exact, 27.21%)","measures":{"fuzzy_match_percent":27.715183,"total_code":465788,"matched_code":126744,"matched_code_percent":27.210663,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":915,"matched_functions_percent":55.186974,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T06:54:14Z","commit_sha":"5685228195eb4aba4eaf4e8b3faac3bc762d9b09","commit_message":"decompile func_00129600","measures":{"fuzzy_match_percent":27.6628,"total_code":465788,"matched_code":126500,"matched_code_percent":27.158278,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":914,"matched_functions_percent":55.12666,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T06:19:43Z","commit_sha":"9028b3b7b5ed1a36f96cbc9a4852a2a7b2a95fa4","commit_message":"Match func_001291C8 (updateTempTackData) in src/core/00125630.c","measures":{"fuzzy_match_percent":27.631884,"total_code":465788,"matched_code":126356,"matched_code_percent":27.127363,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":913,"matched_functions_percent":55.066345,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-26T06:10:14Z","commit_sha":"42c458e08c3fed2b355c741cbc3205d0dd2b865a","commit_message":"docs: add Discord community invite to README","measures":{"fuzzy_match_percent":27.60698,"total_code":465788,"matched_code":126240,"matched_code_percent":27.102459,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":912,"matched_functions_percent":55.00603,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-25T21:54:02Z","commit_sha":"0e9133898ab1cb4520e44306c31470dc0464f000","commit_message":"Match func_00124B88 in src/core/001236F0.c","measures":{"fuzzy_match_percent":27.60698,"total_code":465788,"matched_code":126240,"matched_code_percent":27.102459,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":912,"matched_functions_percent":55.00603,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-25T21:36:37Z","commit_sha":"cdea5b4bd97dfcb8014845dfad4197949cbd54e8","commit_message":"Match func_0012EE98 (snd_StreamSafeCdRead) in src/core/989snd.c","measures":{"fuzzy_match_percent":27.594099,"total_code":465788,"matched_code":126180,"matched_code_percent":27.089577,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":911,"matched_functions_percent":54.945717,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-25T21:35:54Z","commit_sha":"080dd61686bf610edcfff3e7900eb7132704df57","commit_message":"Match func_0012EF48 (snd_StreamSafeCdSync) in src/core/989snd.c","measures":{"fuzzy_match_percent":27.556313,"total_code":465788,"matched_code":126004,"matched_code_percent":27.051792,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":910,"matched_functions_percent":54.885403,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-25T21:24:13Z","commit_sha":"50c5cabd00baf20a9a0cfc947fdbd7798af1ab79","commit_message":"core/001208E8: match func_00121040 (_sceCd_ncmd_prechk)","measures":{"fuzzy_match_percent":27.522821,"total_code":465788,"matched_code":125848,"matched_code_percent":27.018301,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":909,"matched_functions_percent":54.825092,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-25T21:20:46Z","commit_sha":"82af5b3a41702295b084aeca0739551a8aae06d0","commit_message":"core/001208E8: match func_00120D28 (_sceCd_scmd_prechk)","measures":{"fuzzy_match_percent":27.443815,"total_code":465788,"matched_code":125480,"matched_code_percent":26.939295,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":908,"matched_functions_percent":54.76478,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-25T20:40:43Z","commit_sha":"f82d45591385cd82a3934b8495d3ac0c4eabf2de","commit_message":"core/001208E8: sceCdSyncS (func_00120F30) exact match","measures":{"fuzzy_match_percent":27.364809,"total_code":465788,"matched_code":125112,"matched_code_percent":26.860289,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":907,"matched_functions_percent":54.704464,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-25T20:35:12Z","commit_sha":"c50306e4d4917770043ffea596ba85567186dda1","commit_message":"core/001208E8: sceCdMmode (func_00121688) exact match","measures":{"fuzzy_match_percent":27.33046,"total_code":465788,"matched_code":124952,"matched_code_percent":26.825937,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":906,"matched_functions_percent":54.64415,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-25T18:52:25Z","commit_sha":"63f69f60ddebc21d0223782d7c5ef48fb921de28","commit_message":"core/0012CC90: WaitIpu (func_0012CF98) exact match","measures":{"fuzzy_match_percent":27.28838,"total_code":465788,"matched_code":124756,"matched_code_percent":26.78386,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":905,"matched_functions_percent":54.583836,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-25T08:22:18Z","commit_sha":"33ef8aede4e6dd7b5067b8d2daaf146ece60e91d","commit_message":"game/hud: LinkHudBank (func_001FF7F0) exact match","measures":{"fuzzy_match_percent":27.266052,"total_code":465788,"matched_code":124652,"matched_code_percent":26.761532,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":904,"matched_functions_percent":54.52352,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-25T07:27:01Z","commit_sha":"3e5a300832f3e32c2240508bb709e89986f12723","commit_message":"core: scePad2Init (func_00124B88) exact match (905/1658)\n\nZeroes pad descriptor table entries. Uses empty asm barrier to prevent\ntrip count constant folding and loop reversal.","measures":{"fuzzy_match_percent":27.210234,"total_code":465788,"matched_code":124392,"matched_code_percent":26.705711,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":905,"matched_functions_percent":54.583836,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-25T07:03:38Z","commit_sha":"9b3ecc5e8334adb7a3bd98c034465f9ca0a497ec","commit_message":"Merge pull request #4 from Veradictus/main\n\nSDK on its own compiler, 212 more functions exact (14.6% → 26.7%)","measures":{"fuzzy_match_percent":27.190481,"total_code":465788,"matched_code":124300,"matched_code_percent":26.68596,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":903,"matched_functions_percent":54.463207,"complete_code":15084,"complete_code_percent":3.238383,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":28}},{"timestamp":"2026-09-24T08:55:27Z","commit_sha":"a2c39f928d627b796566f99002d8b529933c1155","commit_message":"Merge pull request #3 from Veradictus/main\n\nToolchain fidelity and 206 more matched functions (8.0% → 14.6%)","measures":{"fuzzy_match_percent":15.397134,"total_code":465788,"matched_code":67964,"matched_code_percent":14.5911875,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1658,"matched_functions":691,"matched_functions_percent":41.67672,"complete_code":11140,"complete_code_percent":2.391646,"complete_data":0,"complete_data_percent":0,"total_units":121,"complete_units":21}},{"timestamp":"2026-09-22T00:38:47Z","commit_sha":"e76be41182743b301bdc260f05e3ae412c2f70af","commit_message":"game: document func_0023CBE0 (cpy2area) as reverted, size mismatch\n\nSplits two source runs across two destination areas, reporting the\nrequired total length. Writing the branches in retail's own order\n(n2>=n0 first) recovered exact branch polarity throughout; the\nresidual is a redundant recomputation of n0-n2 inside one branch\nwhere retail keeps the earlier value live. 8 bytes short.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.718551,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-22T00:23:13Z","commit_sha":"6d2bc00ea2e35ba9e537028865cf886ab00b0322","commit_message":"game: keep func_001E96B8 (LoadDebugFont) as same-size near-miss\n\nForwards the stream position, loads a PSMT8H texture into VRAM, and\ncaches the returned descriptor's first field. Two scheduling/allocator\nresiduals, both already-familiar classes (address computation\ninterleaving, final store's temp-register choice). 27/108, same size.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.718551,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-22T00:11:45Z","commit_sha":"9e8b6a9c477cf3520edf7757d62c9aa92088ad76","commit_message":"core: keep func_0012F4A8 as same-size near-miss, complete wad.c unit\n\nSame request/poll/retry shape as its two siblings above, indexed\nthrough an 8-byte-stride sector table. Same class of residual\n(hazard-nop offset elsewhere, one constant-address ordering swap).\n45/204, same size. This completes core/wad.c, the last object in\ncore_text.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.701169,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-22T00:04:59Z","commit_sha":"ec16af225aa067c4e757cea362e4aa5cca50c386","commit_message":"core: keep func_0012F3F8 as same-size near-miss\n\nSame request/poll/retry shape as func_0012F348 above, reading 6 fixed\nsectors into a stack buffer and copying into D_00137C80. The usual\nGPR-result hazard-nop residual happens to be offset by an extra nop\nelsewhere, keeping total size matched (41/176).\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.66705,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T23:55:38Z","commit_sha":"eb4fe098473793be60a993d1cbff9e46a13384db","commit_message":"core: document func_0012F348 (wad_GetSectors) as reverted, size mismatch\n\nFull read-request/poll/retry sequence recovered, matching the\nalready-established stream.c sibling pattern almost exactly.\nInstruction-for-instruction identical apart from one missing nop --\nthe same GPR-result-feeds-a-branch hazard-nop class documented on\nfunc_0023C960/func_00201D58. 4 bytes short.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.637867,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T23:49:28Z","commit_sha":"8635c0ef15edb59cc9046f8a9628c0df32a174b8","commit_message":"core: document func_00116CC0 (strstr) as reverted, bloats\n\nHand-written strstr(arg0, arg1), recognized and recovered with\nconfidence -- structurally very close to retail (same branches, same\nfields) but this compiler duplicates the return-0/return-arg0 tails at\neach call site instead of sharing one copy the way retail does,\nbloating badly enough to corrupt segment layout on link.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.637867,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T23:43:36Z","commit_sha":"5b670c4bbfe2df40f2a34fc33438c46071187d46","commit_message":"game: document func_00201D58 (LoadIRXModule) as reverted, size mismatch\n\nFull IOP module load sequence recovered and confirmed instruction-for-\ninstruction identical apart from one residual: retail has 3 standalone\nnops between the poll call and the branch testing its result, the same\nGPR-result-feeds-a-branch hazard-nop variant documented on\nfunc_0023C960.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.637867,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T23:35:30Z","commit_sha":"f20501f530eafe43b5cf8d042045e2af851fe8dc","commit_message":"core: keep func_0012AA70 as same-size near-miss\n\nStruct-init tail-call into func_0012AAC8. Source's field-write order\nalready matches retail's exactly, but the compiler's own scheduler\nstill reshuffles several of the independent stores. 16/52 bytes,\nsame size.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.637867,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T23:28:17Z","commit_sha":"39260145bed5e75930c8dbbcaafd913e75baff55","commit_message":"game: keep func_00208208 as same-size near-miss\n\nCorrect semantics were harder to pin down than usual: retail's\ndefault-to-1-then-override-to-0 polarity, and two unused leading\nfloat params needed to land the real one in $f14. Residual (16/48)\nis the GPR/FPU hazard-nop class plus a bc1fl-vs-bc1f branch-likely\nchoice, both already documented elsewhere.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.630141,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T23:12:53Z","commit_sha":"3c92d22160c93146b6ae0190f3f29b16ed7699f3","commit_message":"core: note two more failed attempts on func_00124B60's spill puzzle\n\n8 explicitly named long params and an &argN-into-volatile-local trick\nboth still fully eliminate the dead parameters, same as the K&R\nattempt. Still an open question.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.623275,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T23:05:05Z","commit_sha":"6ee0e5f1c85a31279ee9e755efa553ff126e8fb1","commit_message":"game: document func_001FA480 as reverted, size mismatch\n\nPlain 3-quadword copy. Retail loads all 3 then stores all 3 leaving\nthe jr's delay slot a bare nop; this compiler also loads all 3 first\nbut hoists the last store into the delay slot instead -- a more\ncompact, valid schedule retail's compiler didn't take. 4 bytes over\nwith both a field-by-field and whole-struct-copy spelling.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.623275,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T22:57:36Z","commit_sha":"5d206757bfa6bf3b67c560a52c570964b15833ac","commit_message":"libgcc: document func_0011DFC8 as reverted, tail-call tooling gap\n\n__main's static-initializer guard: same second tail-call tooling gap\nas func_0012D730/func_0012D760 (conditional tail call reached through\nonly one path). Already on the whitelist but fix_tail_calls.py's\nCONTROL-flow check rejects it for the same reason as those two.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.623275,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T22:53:04Z","commit_sha":"9ae1cc76106d2273148eecc80971d3130718572c","commit_message":"core: document func_00124B60 as reverted, spill-shape puzzle\n\nSemantics certain (no-op, one pointer arg used by nothing), but\nretail's GPR-only argument-shadow spill ($5-$11, no floats) isn't\nreproduced by either a true variadic declaration (adds unwanted FP\nsaves) or a K&R-style one (produces no spill at all). Related to but\ndistinct from func_001E9730's variadic idiom.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.623275,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T22:44:35Z","commit_sha":"22ca2219ad21ea480148f393901c298e25aca438","commit_message":"core: document func_0012D760 as reverted, tail-call tooling gap\n\nBackward analog of func_0012D730 (day-counter decrement, tail-calling\nthe backward clock-tick at 0). Same second tail-call tooling gap:\na conditional tail call reached through only one path. Compiling as\nordinary call-and-return bloats it enough to overlap the next section\nat link time, so this was reverted immediately rather than left\nhalf-built.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.623275,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T22:39:19Z","commit_sha":"c6276da5b1d5ddce7a808f155ba3d457cf791660","commit_message":"game: document func_0023CDF0 as reverted, size mismatch\n\nreadBufEndGet(ReadBuf *, int): recovered semantics documented in full,\naddress computation matches the sibling ring-buffer functions in this\nfile exactly. The clamp hits the same unsigned-range-check\ncanonicalization class as func_001F0FF8/func_00226380/func_002348B8/\nfunc_00234D58 -- retail copies the value through a second register\nbefore subtracting; this compiler always reuses the same one. 4 bytes\nover with either clamp direction tried.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.623275,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T20:59:47Z","commit_sha":"fa86d12f4d4b21851d1b1a8f688b278d1de7ef3d","commit_message":"game: func_001E9730 exact\n\nA varargs register-dump helper for the VU1 error handler (called from\nthe already-matched func_00235218): void func_001E9730(int, ...) --\nthe ellipsis alone reproduces retail's full argument-shadow spill\n(a1-a7 and f12/f14/f16/f18) with no body needed.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.623275,"total_code":466016,"matched_code":37416,"matched_code_percent":8.028909,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":485,"matched_functions_percent":28.732227,"complete_code":3220,"complete_code_percent":0.6909634,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":13}},{"timestamp":"2026-09-21T20:52:26Z","commit_sha":"77a5ddee35b008880471d630c7c81604db2200c4","commit_message":"core: func_0012CC70 exact\n\nA bare tail jump into func_0012CD60 with pointer offset math; added\nto the tail-call whitelist so fix_tail_calls.py can rewrite our\ncall-and-return into retail's bare jump.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.611258,"total_code":466016,"matched_code":37360,"matched_code_percent":8.016892,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":484,"matched_functions_percent":28.672985,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T20:45:40Z","commit_sha":"c36f27455acddfcda58bd58553b597faf9267288","commit_message":"game: name func_00234C98 (VU1_addGSregister), revert func_001F9BC0\n\nReal name and PAL/NTSC arg-count difference for func_00234C98\nconfirmed via the Lombyte NTSC project. func_001F9BC0 (quadword\nzero-store) reverted: this compiler materializes the zero into a real\nregister (`por`) before the `sq` where retail uses $0 directly as the\nstore source -- 4 bytes over with every long-long/memset spelling\ntried.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.608683,"total_code":466016,"matched_code":37348,"matched_code_percent":8.0143175,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":483,"matched_functions_percent":28.613745,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T20:38:06Z","commit_sha":"db956c3355a7ddf60139076467b9c9ab1e7aa3d5","commit_message":"game: note Lombyte corroboration for func_001F4630/func_00234D58\n\nThe Lombyte NTSC decompilation project (github.com/mateuszklysz/\nLombyte) independently recovered the same two functions under their\nreal names (SetupGifPaging, VU1_setScissor) with matching field\nlayouts and arena offsets -- useful confirmation our revert comments'\nrecovered semantics are correct, though their copies are also\nC_NON_MATCHING so it doesn't unblock the size residual.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.608683,"total_code":466016,"matched_code":37348,"matched_code_percent":8.0143175,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":483,"matched_functions_percent":28.613745,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T20:33:03Z","commit_sha":"c23f755d024b2a58ad2dd10678a8fcfa4032b5ad","commit_message":"game: document func_00228690 as reverted, size mismatch\n\nTexture-paging GIF packet builder. Closed an initial 28-byte gap to 8\n(found a missing header field at hdr+0x48, and matched the per-tile\nloop instruction-for-instruction by precomputing both store values\nbefore an incrementing-pointer do-while). Residual: retail keeps both\nw and h live in two callee-saved registers across the whole function;\nthis compiler only needs one, needing a smaller stack frame.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.608683,"total_code":466016,"matched_code":37348,"matched_code_percent":8.0143175,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":483,"matched_functions_percent":28.613745,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T19:59:22Z","commit_sha":"d16d2e4cabd37d25455cca7c6767007b53ea99b7","commit_message":"game: document func_001F5650 as reverted, size mismatch\n\nDrawRectOverlay_iiiiUl: recovered semantics documented in full (a\n6-qword GIF/DMA packet append with two packed GS coordinate pairs).\nThis compiler runs out of caller-saved temporaries computing the four\npacked values and spills to a real stack frame where retail has none\n-- 104 bytes over.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.608683,"total_code":466016,"matched_code":37348,"matched_code_percent":8.0143175,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":483,"matched_functions_percent":28.613745,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T19:49:00Z","commit_sha":"803d9a551301fa659a49adcfaa0ce617c07b7685","commit_message":"game: document func_00234D58 as reverted, size mismatch\n\nVU1_setScissor(int, int, int, int): recovered semantics documented in\nfull. The lower-bound clamps hit the same unsigned-range-check\ncanonicalization class as func_001F0FF8/func_00226380/func_002348B8 --\nconfirmed unreachable from source by trying both clamp spellings.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.608683,"total_code":466016,"matched_code":37348,"matched_code_percent":8.0143175,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":483,"matched_functions_percent":28.613745,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T19:35:32Z","commit_sha":"6a3255a38afa0d4a0e390d4276f66f5384cad8d1","commit_message":"game: func_001FB598 exact\n\nPutDrawBufferSmall(void): same GIF/DMA tag-append shape as its\nneighbors func_001FB848/func_001FB8A8.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.608683,"total_code":466016,"matched_code":37348,"matched_code_percent":8.0143175,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":483,"matched_functions_percent":28.613745,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T19:30:14Z","commit_sha":"ac18d267917564522b56e190829376d6e749b43e","commit_message":"game: document func_001F4630 as reverted, size mismatch\n\nSetupGifPaging(int): recovered semantics documented in full, but the\ncompiler recomputes the D_0019A4E8 base address a second time for the\nsecond loop where retail reuses the register from the first lui --\n8 bytes over. Reverted to INCLUDE_ASM per the size-mismatch rule.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.585507,"total_code":466016,"matched_code":37240,"matched_code_percent":7.991142,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":482,"matched_functions_percent":28.554502,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T19:17:15Z","commit_sha":"b5377964340570dce57576873bb5d4e535b80607","commit_message":"game: func_00234C98 exact\n\nCorrected a stale 3-arg guess to the true 2-arg (int, long) signature,\nverified against real call sites across the codebase.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.585507,"total_code":466016,"matched_code":37240,"matched_code_percent":7.991142,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":482,"matched_functions_percent":28.554502,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T18:56:18Z","commit_sha":"ce8e1f5ddd0bbe74481b7fbc221742bf9fb4a483","commit_message":"game: func_001FB8A8 exact\n\nSame GIF/DMA tag-append idiom as func_001FB848 just above, different\nconstants (0x30000029/0x50000029, D_00151C60).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.467916,"total_code":466016,"matched_code":36692,"matched_code_percent":7.8735495,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":477,"matched_functions_percent":28.258293,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T18:48:55Z","commit_sha":"1a684eb959fb31192d85d2dfca5ff44c85880e4b","commit_message":"game: func_001FB848 (AA_BlurPass) exact\n\nAppends a 2-word GIF/DMA tag pair to the D_00161000 write pointer,\nsame idiom and MACRO_ADDR declaration as func_00234B48/func_00234C50.\nThe nearby func_001FB530 revert doc flagged a deeper \"address itself\nneeds rematerializing\" variant of this pattern as an open question --\nthis function doesn't hit it, so that issue is specific to\nfunc_001FB530, not universal to D_00161000 users.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.4481735,"total_code":466016,"matched_code":36600,"matched_code_percent":7.8538074,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":476,"matched_functions_percent":28.199053,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T18:41:15Z","commit_sha":"4dc5d02531a2b48205d4ccba6434ff218a359032","commit_message":"game: document func_002348B8 as reverted, size mismatch\n\nClamps a table index to 0 below 0x13, stores the table lookup to the\nanonymous gp-relative D_0016100C. Confirmed the short+cast trick is\nneeded on D_0016100C too (it has a real name but still isn't\ngp-relative by default). 4 bytes over from the same unsigned-range-\ncheck canonicalization already seen on func_001F0FF8/func_00226380\n(tried both `< 0x13` and `<= 0x12`, identical output).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.4284315,"total_code":466016,"matched_code":36508,"matched_code_percent":7.834066,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":475,"matched_functions_percent":28.13981,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T18:32:08Z","commit_sha":"38a85b0b82fcaacc3308477fd57219c25acab7f4","commit_message":"game: document func_00226380 as reverted, size mismatch\n\nRecovered source confirmed against func_0020DAF8's already-matched\nbody (arg2+0x30 is exactly what gets copied to p+0x10 here). 8 bytes\nover from two residuals: this compiler defers the `rec = *ptr` load\nto after the func_0020E3D0 call instead of scheduling it into the\ndelay slot like retail, and canonicalizes the XOR-inequality ternary\ninto the opposite movz/0x1E-default form regardless of source\npolarity -- same class already seen on func_001F0FF8.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.4284315,"total_code":466016,"matched_code":36508,"matched_code_percent":7.834066,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":475,"matched_functions_percent":28.13981,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T18:21:41Z","commit_sha":"25d05cb59354f347bf71c68f66c4fd51f6e6895f","commit_message":"game: document func_0020D9D8 as reverted, size mismatch\n\nDetachManipulator: unlinks arg1 from a singly-linked list, always\ncalls func_001F99B0(arg1, 0, 0x40) after. A single-exit goto fixed a\nmuch larger gap (retail has one shared call site, not one per\nreturn), but this compiler still collapses retail's triplicated\nnext/match check into one shared loop, 44 bytes short. Same\ncompiler-is-smarter-than-retail merging class as other reverts this\nsession, larger in scale here.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.4284315,"total_code":466016,"matched_code":36508,"matched_code_percent":7.834066,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":475,"matched_functions_percent":28.13981,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T18:13:17Z","commit_sha":"8ac1ef528dafdd39d98940dfd739529f090b4745","commit_message":"core: func_00113AE0 size-exact, 11/140-byte near-miss\n\nConstructs 3 Node1E4 entries (flags 4/9/0xA, handles 0/1/2, all owned\nby arg0) via the already-matched func_00113A70, then sets up the\ncontaining object's node-list head/count/cursor fields. Residual is\na pure independent-instruction reorder (retail computes the +0x1E4\naddress before storing the constant 1, this compiler does the\nreverse) -- tried an explicit local for both values, no change.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.4284315,"total_code":466016,"matched_code":36508,"matched_code_percent":7.834066,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":475,"matched_functions_percent":28.13981,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T18:02:52Z","commit_sha":"fa4dbe8ce864ea55d2ccc02c04906187363a9a43","commit_message":"game: document func_001F0FF8 as reverted, size mismatch\n\nCenter-text width helper: sums a per-character width table, offsets\narg0 by half the total, forwards to func_001F0F78. Semantics certain.\n8 bytes short from two residuals: this compiler always canonicalizes\nan unsigned `< 0x60` range check into the mirrored sltu+movz form\ninstead of retail's sltiu+movn (tried the equivalent `<= 0x5F`,\nidentical output either way), and doesn't preload the 0x20 default\ninto its own register before the loop the way retail does.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.40075,"total_code":466016,"matched_code":36508,"matched_code_percent":7.834066,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":475,"matched_functions_percent":28.13981,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T17:50:20Z","commit_sha":"9a7937879eeca7b89a49b9cb0db57133903d4603","commit_message":"core: document func_0012DFB0 as reverted, size mismatch\n\nsnd_GotReturns. Recovered source with reasonable confidence --\nD_0015ED80 is a pointer to a pending-returns record (not a plain\nflag), confirmed by the field/index dereference chain after the\nfunc_0011B6B8 guard -- but compiles 8 bytes over retail. Left as\nINCLUDE_ASM pending a closer look at which branch/merge accounts for\nthe gap.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.40075,"total_code":466016,"matched_code":36508,"matched_code_percent":7.834066,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":475,"matched_functions_percent":28.13981,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T17:43:33Z","commit_sha":"7da156d2decbf28ed734a8271592ac054880bf54","commit_message":"game: func_00215650 size-exact, 46/140-byte near-miss\n\nQuaternion multiply chain: negate arg2 via func_001F9C30, restore its\nreal w component, copy arg1 with w zeroed, then two func_001FA588\nmultiplies combining them. Frame size and instruction count match\nretail exactly; three local quadword scratch buffers give the\nallocator enough freedom that register choices and call-argument\nscheduling diverge throughout regardless.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.40075,"total_code":466016,"matched_code":36508,"matched_code_percent":7.834066,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":475,"matched_functions_percent":28.13981,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T09:41:18Z","commit_sha":"0189a3b1b77460e534dddccc0289d9c312d3ed53","commit_message":"game: func_00215A98 size-exact, 70/124-byte near-miss\n\nRound-to-N-decimal-places helper: round(arg1 * 10^arg0) / 10^arg0 via\nfunc_001FA898. Saving arg1 into a local before the power-of-10 loop\n(matching retail's early mov.s f1,f12) fixed the register-allocation\napproach, but two GPR/FPU transfer hazard nops retail carries around\neach mtc1->cvt.s.w pair are never emitted by this compiler -- the same\nclass already documented on func_00214158 and others.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.380579,"total_code":466016,"matched_code":36508,"matched_code_percent":7.834066,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":475,"matched_functions_percent":28.13981,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T09:30:40Z","commit_sha":"c5079140feed423b7f3f94008bbd428faf83361e","commit_message":"game: func_00235218 exact\n\nVU1 chain error handler thread (spawned via func_00118AB0 per the\ncomment above func_00235218's old stub): dumps two hardware registers\n(0x10009000/0x10009030) through three func_001E9730 debug-print calls,\nthen spins forever.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.368992,"total_code":466016,"matched_code":36508,"matched_code_percent":7.834066,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":475,"matched_functions_percent":28.13981,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T09:20:56Z","commit_sha":"83bb1368915906eff4b653af720bc7cf64a189bd","commit_message":"core: func_00119088 size-exact, 13/116-byte near-miss\n\nGuards a one-time init (func_00119CC8 + D_0012FCF0 latch) before\nforwarding to func_00119BF8, short-circuiting to -1 if arg0 is\nnonzero or init fails. Residual is a genuine standalone nop retail\nleaves in the first call's delay slot (this compiler fills it with\nthe next call's argument setup) plus a cosmetic $s0/$s1 swap.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.3441,"total_code":466016,"matched_code":36392,"matched_code_percent":7.809174,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":474,"matched_functions_percent":28.080568,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T09:12:36Z","commit_sha":"f1f7eec1bc1f057301cbc6a85217406ddbf40c08","commit_message":"game: document func_001ECB98 as reverted, size mismatch\n\nTwo 128-bit field copies bracketing an optional func_001F9BD8\nvector-add, same D_001872B0 struct and unsigned-long-long-for-lq/sq\nexception as func_001ECC10 just above. Retail keeps the first copy\nfully separate and unconditional; this compiler folds it into the\nfollowing branch's delay slot (same execution semantics, fewer\ninstructions), 20 bytes short. Forcing the copy through explicit\npointer locals didn't change it.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.321998,"total_code":466016,"matched_code":36392,"matched_code_percent":7.809174,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":474,"matched_functions_percent":28.080568,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T09:06:25Z","commit_sha":"130439b9561b0ae3b0902fca830481295f6fe106","commit_message":"game: func_001FFC48 size-exact, 18/104-byte near-miss\n\nReads back 6 fields func_001FFD30 populated, copies 5 of them into\ntheir final struct slots, and calls the function pointer at +0x30 if\nset (storing it to +0x10 first). Residual is pure load scheduling\n(retail loads +0x30 first, this compiler schedules it last) plus a\nbranch-vs-delay-slot store position swap that doesn't change\nsemantics either way.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.321998,"total_code":466016,"matched_code":36392,"matched_code_percent":7.809174,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":474,"matched_functions_percent":28.080568,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T08:58:06Z","commit_sha":"85389f77cf33a54b11468fff818441e7ba99a27b","commit_message":"game: document func_00217A08 as reverted, size mismatch\n\nRecovered source got very close: `long arg1` + (int) cast reproduces\nretail's sign-extend pair, and writing the -1 comparison as the hex\nliteral 0xFFFFFFFF reproduces retail's lui/ori materialization\ninstead of a shorter addiu. What's left is $ra-restore scheduling on\nthe arg0==0 path (retail computes the store sequence before\nrestoring $ra, this compiler restores it right after the branch),\n4 bytes over. Flattening the else-if into early returns didn't help.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.303543,"total_code":466016,"matched_code":36392,"matched_code_percent":7.809174,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":474,"matched_functions_percent":28.080568,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T08:43:59Z","commit_sha":"578680c1aad3069fc79533987a3bfcad88999586","commit_message":"game: document func_0023C960 as reverted, size mismatch\n\nstartDisplay(int): spins on func_00122598(0) until it returns\nsomething other than arg0, then marks isDispStarted and clears\nD_001612E4. Semantics certain; retail carries 3 standalone nops after\nthe jal (a call-result hazard delay) that this compiler never emits,\n12 bytes short. Same nop-hazard class as other documented reverts,\njust wider.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.303543,"total_code":466016,"matched_code":36392,"matched_code_percent":7.809174,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":474,"matched_functions_percent":28.080568,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T08:38:15Z","commit_sha":"8c03a9262d44a814df2c13dc0eb31d8cd84fca1a","commit_message":"game: bank decode for func_001FF668 (Hud_GetIconIndex), not matching\n\nLinear search of a 0xFFFF-terminated 8-byte-stride table for a\nmatching id. Semantics recovered and documented, but the compiled\nshape diverges substantially from retail (108 vs 76 bytes) -- this\ncompiler CSEs the two entry-0 early-return checks that retail keeps\nas separate branches, and the loop body doesn't match retail's\nbeq-then-bne layout. Left as INCLUDE_ASM with the decode banked for\na future attempt at the right source shape.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.303543,"total_code":466016,"matched_code":36392,"matched_code_percent":7.809174,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":474,"matched_functions_percent":28.080568,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T08:32:07Z","commit_sha":"960bea12dda04d6495df24ed9d04e80749a326f3","commit_message":"game: func_00234C50 exact\n\nVU1 chain append, same D_00161000 write-pointer idiom as\nfunc_00234B48/func_00234BA0 just above (index through the global\nrather than a local copy, since retail reloads the pointer before\nevery field write in case a write aliases it).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.303543,"total_code":466016,"matched_code":36392,"matched_code_percent":7.809174,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":474,"matched_functions_percent":28.080568,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T08:24:48Z","commit_sha":"d3795d75ae217a50a7d5863a30b3157804466241","commit_message":"core: func_0012EFE8 (snd_StreamSafeCdBreak) exact\n\nSame D_0015ED8C streaming-enabled flag as func_0012F030/func_0012F068.\nBranch polarity had to match retail's beqz-to-the-disabled-path\nlayout (fallthrough is the flag!=0/enabled case), not the more\nnatural-looking if-enabled-then ordering.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.288094,"total_code":466016,"matched_code":36320,"matched_code_percent":7.7937236,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":473,"matched_functions_percent":28.021326,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T08:12:37Z","commit_sha":"07b0d8d9fdf80b17a09d670e405b77610821321d","commit_message":"core: func_0012F068 (snd_StreamSafeCdCallback) exact\n\nTwo anonymous gp-relative words: D_0015ED8C (streaming-enabled flag,\nshared with func_0012F030's revert doc) and D_0015ED90 (cached\ncallback value) -- both need the short+cast trick, not just the\nflag. Matching retail's branch polarity (beqz to the disabled path,\nnot bnez to the enabled one) was the other piece.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.273501,"total_code":466016,"matched_code":36252,"matched_code_percent":7.779132,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":472,"matched_functions_percent":27.962086,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T07:56:02Z","commit_sha":"1baaca65675fd0781f9fc46a2ed296108f6c075c","commit_message":"game: func_00227A30 exact\n\nField remapping from a source struct's half/word fields (some\nright-shifted by 1) into a fixed-layout destination record. Matching\nretail's exact statement order -- particularly interleaving the two\nzero-stores and the constant store between the loads/shifts rather\nthan grouping them -- closed it to byte-exact.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.263202,"total_code":466016,"matched_code":36204,"matched_code_percent":7.768832,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":471,"matched_functions_percent":27.902843,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T07:45:53Z","commit_sha":"1f28fc8c94ff744b10eef3b2cbf3e0fb1c19e887","commit_message":"core: func_0012DB18 (main) exact\n\nThe executable's actual entry point: calls func_001E99D8 as the\ncurrent entry function, then loops forever calling ParseBin\n(func_0012DA38) for the next entry, bracketing each call with the\ninterrupt-disable/enable pair func_00118D80(0)/func_00118D80(2) (same\nidiom already matched in func_0011D3C8 and others). Deferring the\ninitial function-pointer assignment to after the func_0011DFC8() call\n-- matching retail's statement order exactly, rather than\ninitializing at declaration -- closed an 8-byte gap from a scheduling\ndifference.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.249468,"total_code":466016,"matched_code":36140,"matched_code_percent":7.7550983,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":470,"matched_functions_percent":27.843601,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T07:33:32Z","commit_sha":"2db27228f2b2c62d0af6dfa8facb0deccbf7888b","commit_message":"core: func_0012D3F0 size-exact, 2/76-byte near-miss\n\nReturns D_001331D0 if func_0012D340() is set, otherwise reads a word\nvia func_00118CF0 and extracts either a constant or a signed 21-bit\nshift depending on its bits 13-15 -- same family as the sibling\nfunc_0012D380/func_0012D448 just above/below. `unsigned int` for the\nscratch word (matching retail's srl, not sra) and a ternary (to get\nretail's branchless movz instead of a branch) closed it to 2 bytes:\npure register-allocation choice for D_001331D0's address register.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.233159,"total_code":466016,"matched_code":36064,"matched_code_percent":7.73879,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":469,"matched_functions_percent":27.78436,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T06:33:43Z","commit_sha":"740ddf263922ffa9ee7adcc0de94c2f0bce60bbf","commit_message":"core: document func_0011DA08 as reverted, size mismatch\n\nWord-copy loop, same unreachable delay-slot gap as func_0011DD68's\nbyte-copy sibling (retail leaves the branch delay slot a standalone\nnop; this compiler always sinks dst++ into it). Cross-referenced the\ntwo byte-identical siblings func_0011DC08 and func_0011DDF0 so the\nnext pass doesn't re-derive the same dead end.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.208267,"total_code":466016,"matched_code":36064,"matched_code_percent":7.73879,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":469,"matched_functions_percent":27.78436,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T06:27:55Z","commit_sha":"8c06c1b4183ec69c84b2719d435556da82e65807","commit_message":"core: document func_0012D730 as reverted, size mismatch\n\nByte counter wrapping to 0 at 24, firing func_0012D5D0. Retail's tail\ncall to func_0012D5D0 is reached through only one of two branches;\nfix_tail_calls.py's rewrite_function() refuses any function with\nbranches (by design, to avoid rewriting a call reached conditionally),\nso this doesn't qualify despite being whitelisted. Second distinct\ntail-call tooling gap this session, after func_0011DDA0's \"call then\ntail call\" case.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.208267,"total_code":466016,"matched_code":36064,"matched_code_percent":7.73879,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":469,"matched_functions_percent":27.78436,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T06:20:33Z","commit_sha":"0b598fd2302c3a873d52405e26dd3559fbd444c0","commit_message":"core: document func_0011DDA0 and func_0011DD68 as reverted\n\nfunc_0011DDA0: a leading real call followed by a trailing tail call\n(func_0011DD98(); func_00118A60();). It IS listed in\ntools/tail_call_functions.txt, but that list only gates which\nfunctions the rewrite considers -- fix_tail_calls.py's own structural\nguard still requires exactly one jal in the function, which this\ndoesn't have (two calls, only the second a tail call in retail).\nFlagging the tool's \"call then tail call\" gap for later.\n\nfunc_0011DD68: byte-copy loop returning 0. Semantically exact and\nevery instruction matches except retail leaving the branch's delay\nslot a genuine nop where this compiler always sinks the pointer\nincrement into it (4 bytes short, not reachable from source).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.208267,"total_code":466016,"matched_code":36064,"matched_code_percent":7.73879,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":469,"matched_functions_percent":27.78436,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T06:07:11Z","commit_sha":"85d6b586301f5e41060ba96ded5691e77c0414cb","commit_message":"core: document func_0012F030 as reverted, size mismatch\n\nsnd_StreamSafeCdGetError. Recovered source is semantically exact but\n8 bytes short: retail duplicates the $ra restore across both branches\ninstead of merging them at a shared point (same tail-merge class as\nfunc_00203118/func_00203E78), and separately materializes\nD_00137C00's +0x10 field address instead of folding the offset into\nthe load immediate.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.208267,"total_code":466016,"matched_code":36064,"matched_code_percent":7.73879,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":469,"matched_functions_percent":27.78436,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T05:54:38Z","commit_sha":"c5bffaf416db4d4559507507b8ab6dd2d6cc1dc0","commit_message":"game: document func_002140F8 as reverted, size mismatch\n\nUniform random float in [a, b). Recovered source matches retail\ninstruction-for-instruction except one missing GPR->FPU transfer\nhazard nop between mtc1 and cvt.s.w -- the same known-unreachable gap\nalready documented on the sibling func_00214158.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.208267,"total_code":466016,"matched_code":36064,"matched_code_percent":7.73879,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":469,"matched_functions_percent":27.78436,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T05:49:05Z","commit_sha":"83ebea11c11184b17eaa4c40e1ee5d9cd4386fce","commit_message":"core: func_0011A690 size-exact, 13/56-byte near-miss\n\nManual va_list forwarder for func_0011A0A0, spilling 7 register args\nto a 16-long stack buffer (needed for the frame size to match retail\nexactly) and passing its address as the second argument -- same shape\nas the blocked func_0011A6C8 varargs definition. Instruction multiset\nmatches retail exactly; only the buffer-vs-$ra frame ordering differs,\nnot reachable from a single local array.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.208267,"total_code":466016,"matched_code":36064,"matched_code_percent":7.73879,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":469,"matched_functions_percent":27.78436,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T05:37:00Z","commit_sha":"7ab408ea8407dec63a4a2dba1a9d3dcc0f343b22","commit_message":"core: document func_00115808 as reverted, size mismatch\n\nSets up a fresh hash-table entry via func_001154D0(arg0, 1), then\nwrites fields +0x14 and +0x10. Recovered source is semantically exact\nbut 4 bytes short: retail copies the call result into a second\nregister and stores through the copy, which this compiler optimizes\naway as unnecessary regardless of source spelling.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.19904,"total_code":466016,"matched_code":36064,"matched_code_percent":7.73879,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":469,"matched_functions_percent":27.78436,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T04:24:03Z","commit_sha":"5d6c9af3066cb5f41338ab65770ff16770e605f6","commit_message":"core: func_0012EAE0 (snd_PostMessage) exact\n\nTwo anonymous gp-relative bss words (no retail symbol, addresses\ncomputed from gp=0x166D00: D_0015EDC0 a queue index, D_0015EDA0 an\narray of pointers to per-queue message counts). Declaring them `int`\nmade the compiler reject gp-relative addressing and grow the function\n8 bytes past retail, corrupting the core segment's layout (.core_data\noverlapping .core_text). Declaring them `short` and accessing through\nan `int`/`int**` cast -- the same trick already used for D_0015EDC4\nabove -- gets the compiler back onto gp-relative addressing and closes\nthe function to an exact match.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.19904,"total_code":466016,"matched_code":36064,"matched_code_percent":7.73879,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":469,"matched_functions_percent":27.78436,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T04:05:09Z","commit_sha":"037a67ef0755205f43960d3b70b115bfa9f3ee5f","commit_message":"core: func_00116F68 size-exact, 8/52-byte near-miss\n\nThin forwarder to func_00116D30(D_0012F86C, arg0, arg1, arg2).\nResidual is a one-instruction prologue-scheduling difference with\nnothing in source left to reorder (single tail-call expression).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.187023,"total_code":466016,"matched_code":36008,"matched_code_percent":7.7267733,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":468,"matched_functions_percent":27.725119,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T03:58:20Z","commit_sha":"0e1b29baac1e323cb5fb4b02dd7179aa27dc0001","commit_message":"core, game: 4 more thin wrappers exact\n\nfunc_0012F1E8 (snd_ResetMovieSound), func_0012F248 (snd_StartMovieSound,\n5 ints/0x14-byte buffer), func_0012F2B8 (snd_GetMovieNAX) round out the\nfunc_0012E688 wrapper family. func_001FB470 (PutDispBuffer) forwards\nD_0015EFB8 to the already-matched func_00122140; MACRO_ADDR was needed\nto get retail's pre-prologue address load into $a0 instead of a\npost-prologue load through $v0.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.177582,"total_code":466016,"matched_code":36008,"matched_code_percent":7.7267733,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":468,"matched_functions_percent":27.725119,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T03:46:06Z","commit_sha":"58c407cdfe642d52beb504a37243c117d81b7cfb","commit_message":"core: 2 more snd_* thin wrappers around func_0012E820 exact\n\nfunc_0012F0E8 (snd_PreAllocReverbWorkArea, 2 ints/8-byte buffer),\nfunc_0012F120 (snd_AutoReverb, 4 ints/0x10-byte buffer). Completes the\nsimple-wrapper subset of the func_0012E820 call sites; the remaining\ntwo (opcodes 0x38 and 0x37) are embedded inside larger functions with\nreal control flow, not simple wrappers.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.14239,"total_code":466016,"matched_code":35844,"matched_code_percent":7.6915812,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":464,"matched_functions_percent":27.488152,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T03:41:47Z","commit_sha":"fed45e648898c265ed7677a66375a81bf76bcbf8","commit_message":"core: 4 more snd_* thin wrappers around func_0012E820 exact\n\nfunc_0012E3F8 (snd_SetGroupVoiceRange, 3 ints packed into a 0xC-byte\nstack buffer), func_0012E528 (snd_PauseAllSoundsInGroup),\nfunc_0012E558 (snd_ContinueAllSoundsInGroup), func_0012E588\n(snd_SoundIsStillPlaying_CB) -- same calling convention as the rest of\nthe func_0012E820 wrapper family.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.118357,"total_code":466016,"matched_code":35732,"matched_code_percent":7.6675477,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":462,"matched_functions_percent":27.369669,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T03:37:18Z","commit_sha":"3722eef44d7284180184ee0b626096c92a43ab72","commit_message":"core: 3 more snd_* thin wrappers around func_0012E820 exact\n\nfunc_0012E318 (snd_UnloadBank), func_0012E348 (snd_SetMasterVolume,\ntwo ints packed into an 8-byte stack buffer), func_0012E380\n(snd_SetPlaybackMode) -- same calling convention as the func_0012EE70\nfamily committed earlier this session.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.074581,"total_code":466016,"matched_code":35528,"matched_code_percent":7.6237726,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":458,"matched_functions_percent":27.132702,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T03:32:46Z","commit_sha":"473b185a9fd0a8063fbd174ba06bd387e801d336","commit_message":"core: 5 snd_* thin wrappers around func_0012E820 exact\n\nfunc_0012ED10 (snd_StopAllStreams), func_0012EDB0 (snd_PauseVAGStream),\nfunc_0012EDE0 (snd_ContinueVAGStream), func_0012EE10\n(snd_GetVAGStreamTimeRemaining_CB), func_0012EE40\n(snd_IsVAGStreamBuffered_CB) -- all thin stack-passing wrappers around\nfunc_0012E820(cmd, size, data, arg3, arg4), matching the calling\nconvention already confirmed via func_0012EE70/func_0012E688 and the\nghidra decompile's call sites for func_0012E820.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":9.042823,"total_code":466016,"matched_code":35380,"matched_code_percent":7.592014,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":455,"matched_functions_percent":26.954977,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T03:19:58Z","commit_sha":"e8746bdd98b44dea475bfeaf2eb6fecacaba2a8d","commit_message":"core: func_0012EE70 (snd_StreamSafeCheckCDIdle) exact\n\nStores arg0 onto the stack and hands its address to func_0012E688\nalong with two constants; signature confirmed against the ghidra\ndecompile's other call sites (0x2a/0x10, 0x36/4, 0x3d/0).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.992181,"total_code":466016,"matched_code":35144,"matched_code_percent":7.541372,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":450,"matched_functions_percent":26.658768,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T03:12:32Z","commit_sha":"b8cef96d87e17a23d09f3bf5c3684b2b5dd8c273","commit_message":"game: document func_00203808 as reverted, size mismatch\n\nSetUpVisGifViewer(int*, int, int, int, int, int): builds a 4-quad\nGIF-tag block from a table row or one of two fixed templates. Recovered\nsource checked field-by-field against the target .s. Two distinct\ncompiler limitations found: `long long` on the 64-bit shift-by-32\nexpressions here hits \"unsupported wide integer operation\" (must use\n`long`, consistent with the established 64-bit field type rule), and\nGCC dead-code-eliminates two table reads retail keeps unconditionally\nbefore testing arg5's sign (296 vs 332 bytes); forcing them back with\n`volatile` trades that gap for stack spills and regresses further\n(312 bytes, 17640 diff words vs 3100).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.983597,"total_code":466016,"matched_code":35104,"matched_code_percent":7.5327888,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":449,"matched_functions_percent":26.599525,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T02:52:49Z","commit_sha":"7308ad6ba69f793e971bd8aa63ae383db3b50c79","commit_message":"game: document func_00203E78 as reverted, size mismatch\n\nRegisters slot D_00160000 for an object into the D_001B3E40/D_001B3C80/\nD_001B3580 tables, stashing +0x2C into D_001B6500 and calling\nfunc_00203B70 when a live pointer is passed. Recovered source verified\nagainst the target .s (MACRO_ADDR on D_00160000 closed the frame size),\nbut retail duplicates the counter increment in both branches while\nthis compiler tail-merges them into one shared copy, coming out 12\nbytes short (224 vs 236).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.983597,"total_code":466016,"matched_code":35104,"matched_code_percent":7.5327888,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":449,"matched_functions_percent":26.599525,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T02:38:26Z","commit_sha":"82684e7e84d353522b1f152df1820b8fc2d2d4cb","commit_message":"game: document func_00203118 as reverted, size mismatch\n\nPatchSkyDef-adjacent fixup for a SkyDef (see skyfunc.c): relocates\noffset fields to absolute pointers, builds particle-tex icon entries\nin place, and walks the shells[] array relocating nested lists.\nRecovered source verified instruction-by-instruction against retail\nand is semantically exact, but compiles 16 bytes/4 instructions short\n(424 vs 440) -- GCC finds tail-merge opportunities retail's build\ndidn't take. Frame size and every operand offset already match.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.983597,"total_code":466016,"matched_code":35104,"matched_code_percent":7.5327888,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":449,"matched_functions_percent":26.599525,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T02:13:07Z","commit_sha":"d09e1a8945ed079ab3d6eadd826288f4d6cac946","commit_message":"game: func_00203038 size-exact, 154/220-byte near-miss\n\nBuilds one 0x10-byte entry per pair of input words via func_001F9968.\nD_0018D540 base address hoisted into a register only inside the\ncount>0 path closed the frame/size gap; remaining diff is delay-slot\nscheduling, not reachable from source.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.983597,"total_code":466016,"matched_code":35104,"matched_code_percent":7.5327888,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":449,"matched_functions_percent":26.599525,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T01:49:11Z","commit_sha":"f776468f610c6035261c40151f84979efba89970","commit_message":"core: document func_00123308 as reverted, size mismatch\n\nFull decode recovered for a hardware-interrupt-table reset function.\nTwo real bugs caught mid-match: the table walk is a trip count of 9\n(10 total iterations, matching D_00132E70's own bounds-checked getter)\nover two independently-advancing pointers, not a 9-iteration index\nloop as first read; and the per-joint zero-fill needed its field\nwrites in a specific rotated order to reproduce retail's emitted\nsequence, same lever as func_0011DE38's table-pointer fix.\n\nWhat's left, ~8 bytes: retail computes a hardware register's address\nonce and reuses it across three accesses, one of them scheduled into\na call's delay slot; this compiler re-materialises the address fresh\nfor each raw-pointer dereference and never fills that delay slot.\nSame class of residual as func_0012CC90 and func_0020E0C8 already\ndocumented. Recovered source and both findings above the stub.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.969435,"total_code":466016,"matched_code":35104,"matched_code_percent":7.5327888,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":449,"matched_functions_percent":26.599525,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T01:26:53Z","commit_sha":"42fed4ddeeb6b4511b986b4317bddb83995c0428","commit_message":"core: func_001232A8 (zero-fill n bytes) size-exact, 2/0x34-byte near-miss\n\nByte-clear loop: for n bytes starting at dst, store zero and advance.\nRetail advances the pointer right after decrementing the counter,\nbefore the loop test; this compiler always schedules that increment\ninto the branch's delay slot regardless of statement order tried,\nand a for-loop shape regresses (grows the function). Kept as a\ndocumented same-size near-miss.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.969435,"total_code":466016,"matched_code":35104,"matched_code_percent":7.5327888,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":449,"matched_functions_percent":26.599525,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T01:13:57Z","commit_sha":"8012cd88cae08a4a9a7f885d29a7102695344f78","commit_message":"game: document func_0020DD48 (PatchMobyGifs) as reverted, size mismatch\n\nFull decode recovered for a nested-loop GIF-tag patcher, including\nthree real bugs caught mid-match (not just scheduling): the tag-byte\nchain advances unconditionally every iteration, not gated on the\nsecond lookup value as first read; the two 14-bit lookups need a\nshared base pointer (lut[0]/lut[1]) instead of independent array\nindexing to get retail's one-address-two-loads shape; and the OR needs\nthe raw sign-extended short with no unsigned cast, since retail has\nno masking instruction there.\n\nAlso hit and worked around a genuine parser bug in this SN GCC 2.95.3\nbuild: declaring a local inside a do-while block whose body contains\nan if with its own nested do-while makes the compiler reject that\nlocal as undeclared at its own loop condition, for any name tried.\nHoisting the declaration to function scope fixes it -- recorded above\nthe stub for whoever hits this shape again.\n\nWhat's left, 8 bytes: retail recomputes the loop pointer's increment\nfresh in the branch's delay slot; this compiler hoists the add earlier\nin the block regardless of where the statement sits in source.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.960422,"total_code":466016,"matched_code":35104,"matched_code_percent":7.5327888,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":449,"matched_functions_percent":26.599525,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T00:44:33Z","commit_sha":"5315347d6334b44b2246b05795f88ad00dfbc794","commit_message":"game: func_00201960 (draw stretchable 3-part bar) exact\n\nDraws a health/progress-bar-style widget: left cap and right cap\n(mirrored via func_00200650) using GetIconFrame's variant-1 glyph,\nand a stretched middle section using variant 0, width - 0x40 wide.\nMatched exactly on the first attempt -- all three callees already had\nestablished signatures (GetIconFrame from hud.c's own comments,\nfunc_00200468 from the pause.c precedent, func_00200650 inferred as\nthe same 6-int shape from its call site).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.960422,"total_code":466016,"matched_code":35104,"matched_code_percent":7.5327888,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":449,"matched_functions_percent":26.599525,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-21T00:36:39Z","commit_sha":"909113338692cf1215f6be67ba9651288f9a02d9","commit_message":"game: document func_0020E200 (DrawMobysCleanUp) as reverted, size mismatch\n\nFull decode recovered, including that D_0015FFF0 needs MACRO_ADDR --\nwithout it the compiler caches its address in a second saved register\nacross three uses, growing the frame from retail's 0x20 to 0x30 (that\npart now confirmed exactly matching). What's left, 4 bytes: retail\nencodes one guard as `beql` (branch likely) where this compiler always\nemits plain `beqz` for it regardless of if/else polarity, and the\nfinal func_001F2558 call completes its pointer argument before the\nint constant where this compiler does the reverse. Recovered source\nand both findings recorded above the INCLUDE_ASM stub.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.914072,"total_code":466016,"matched_code":34888,"matched_code_percent":7.4864383,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":448,"matched_functions_percent":26.540285,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T21:54:53Z","commit_sha":"cf462e4a109416cf5bf1b7c88cede39d2adbcb41","commit_message":"game: document func_0020E0C8 (DrawMobysSetup) as reverted, size mismatch\n\nStraight-line setup, no branches -- three calls plus a handful of\nglobal stores. Confirmed the MACRO_ADDR set needed on each touched\nglobal (D_0010FA90 also needs NOT_SDA, its retail address is too far\nfrom gp). What's left, 16 bytes: retail materialises &D_0015FFD0 into\na dead register alongside the gp-relative store the assignment itself\nproduces -- the same symbol expanded twice for one C statement -- plus\nan unexplained extra `addiu $5,0,1` this compiler never emits. Neither\na shared local across the two D_00161000 reads nor an explicit\n`*(&D_0015FFD0) = ...` dead-reference reproduces it (both regressed\nto 805 words). Recovered source and both findings recorded above the\nINCLUDE_ASM stub.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.914072,"total_code":466016,"matched_code":34888,"matched_code_percent":7.4864383,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":448,"matched_functions_percent":26.540285,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T21:36:59Z","commit_sha":"86ac3dce4c49fc623b346f5f0c16cb7a51969a62","commit_message":"game: func_0023C128 (audioDecBeginPut) exact\n\nDescribes up to two writable regions of the audio decoder's ring\nbuffer (Obj23C fields unk34 base, unk30/unk38 write/read cursors,\nunk3C/unk40 limits): state==0 hands back one region sized either from\nthe fixed 0x28-byte staging area (mode!=4) or straight from the\nbuffer base (mode==4, zeroing the second region); state!=0 picks\nwhichever of the two wrap segments is smaller, again zeroing the\nunused second region.\n\nEvery branch needed writing with the condition that lets retail's\ndecision tree jump directly to its shorter arm (same lever as\nfunc_00129530, applied twice here), and every arm needed its own\nexplicit `*a3=0; *a4=0; return;` instead of sharing one tail --\nretail places that duplicate zero-store inline after the mode==4\ncase and reaches it via jump from the other case, not the other way\naround. One field bug caught by the diff along the way: the second\nregion's `*a2` in the \"wrapped, smaller free1\" arm re-reads unk38\nfresh, not the already-loaded unk3C.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.914072,"total_code":466016,"matched_code":34888,"matched_code_percent":7.4864383,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":448,"matched_functions_percent":26.540285,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T21:10:41Z","commit_sha":"138917ad40ffae7e81d72a1df34440f376f004b5","commit_message":"core: document func_001195A0 as reverted (CreateSema/CreateThread, size mismatch)\n\nFull decode recovered, including real PS2 kernel struct sizes from\nkernel.h: CreateSema's ee_sema_t is 6 ints (count/max_count/\ninit_count/wait_threads/attr/option, count left uninitialized), and\nCreateThread's struct is 9 ints with a field-0 layout that doesn't\nmatch ps2sdk's documented ee_thread_t (field 0 holds the entry\npointer here, not a status word) -- likely Sony's own layout. Getting\nboth sizes right closed a 32-byte stack-frame gap to an exact match.\n\nTwo 4-byte residuals remain: sharing the -1 return between three\nfailure paths via a single `goto fail` recovered one; the other is\nretail testing CreateSema's raw return in $2 with no register move,\nwhich this compiler always inserts regardless of how the assignment\nand test are spelled. Recovered source and both findings recorded\nabove the INCLUDE_ASM stub.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.869438,"total_code":466016,"matched_code":34680,"matched_code_percent":7.4418044,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":447,"matched_functions_percent":26.481043,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T20:39:32Z","commit_sha":"79be33f48b775be26a7393b6fc0e158b036b515d","commit_message":"core: func_0011DE38 (second boot hardware init table) size-exact, 8/0xD4-byte near-miss\n\nSame shape as func_0011D3C8: a hardware-status-bit guard, two direct\n(addr,value) pokes, two func_0011DDE0 block copies (to a fixed load\naddress and to scratchpad memory), an interrupt disable/enable\nbracket, a third poke, then a 6-entry table loop reading each entry's\ncurrent value back before rewriting it. Same unsigned-loop-counter\ntell applies.\n\nThe only residual is the second block-copy call's argument setup\norder (destination address finished vs size constant loaded first);\nrouting either operand through its own local didn't move the\nschedule, so it's recorded as a near-miss rather than chased further.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.869438,"total_code":466016,"matched_code":34680,"matched_code_percent":7.4418044,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":447,"matched_functions_percent":26.481043,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T20:24:05Z","commit_sha":"7b1d703394893724ea00be642a2ac9a0bcab40da","commit_message":"core: document func_00129530 as reverted (branch-shape residual, size mismatch)\n\nFull decode recovered, including a real find: the state-picked field\nat +0x1C0/1D0/1E0 is a pointer, and it's the target of the +0x28\nwrite at the end of the function -- not a0, which was the wrong\nfirst guess and explains most of the early diff noise.\n\nGetting retail's decision-tree branch shape (always jump directly to\nthe shorter arm) to match required negating the two outer conditions,\nbut the innermost split (state==1 vs default) never takes that shape\nunder any spelling tried -- positive if, negated if, and a nested\nswitch all produced byte-identical output. Recovered source and the\nfinding recorded above the INCLUDE_ASM stub.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.825663,"total_code":466016,"matched_code":34680,"matched_code_percent":7.4418044,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":447,"matched_functions_percent":26.481043,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T19:49:15Z","commit_sha":"36248765086530317158141381e9e017fe6fc895","commit_message":"core: document func_00122200 as reverted (movn vs movz, size mismatch)\n\nFull decode recovered (round w/h up to 64 or 32, collapse to the\nunbiased value if the bias would go negative, scale the product by\n1x/2x from a masked 64-bit D_00132E40 compare), but this compiler\nalways emits the cheaper `slti ...,0; movz` form for the \"clamp to\nvalue if biased sum would go negative\" comparison, one instruction\nshort of retail's `addiu -1; slt; movn` per site (3 sites, 8 bytes).\nTried if/else both polarities, ternary, and comparing the raw value\ninstead of the biased sum -- none reach retail's instruction count.\nRecovered source and the finding recorded above the INCLUDE_ASM stub.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.825663,"total_code":466016,"matched_code":34680,"matched_code_percent":7.4418044,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":447,"matched_functions_percent":26.481043,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T16:53:02Z","commit_sha":"503f2be6945318935884201c6fbbc7815fd56045","commit_message":"core: func_0011D3C8 (boot hardware init table) size-exact, 2/0xC4-byte near-miss\n\nThree explicit (addr, value) pokes through func_0011D3B8, a\nfunc_0011D360 block copy of D_0012FDB8 to a fixed load address, an\ninterrupt-disable/enable bracket, then a 5-entry table loop where\nfunc_0011D3A8 reads back the current value before func_0011D3B8\nrewrites it. All three callees are handwritten syscall wrappers.\n\nSame loop-counter-signedness tell as func_0011DCB8: `unsigned int`\nkeeps retail's up-counting sltiu form, `int` lets this compiler\nreverse it into a down-count with bgezl. What's left after that fix\nis a single register-field difference on the loop test, documented\nin a comment above the function along with the fix that made it\nworse (caching the table read in a local, 10 -> 605 words).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.825663,"total_code":466016,"matched_code":34680,"matched_code_percent":7.4418044,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":447,"matched_functions_percent":26.481043,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T16:30:07Z","commit_sha":"45261e9d562e082f7d44500d518d2797d0395ee2","commit_message":"core: func_00127C80 (set moby flags, log via func_0012C468) exact\n\nSets a table-indexed +0x6CC flag and +0x1B0 on the moby-ish struct at\narg0, conditionally zeroes 4 fields of a1, conditionally fills a2/a3\nfrom +0x174, and clears bit 0 of *a4 -- reporting through the\nalready-matched func_0012C468 first when +0x150 == 1.\n\nTwo real bugs caught mid-match, not just scheduling: the mask was\noriginally ~2 (should be ~1, retail's literal is -0x2 i.e. clears bit\n0 not bit 1), and func_0012C468's first argument is arg0 (still live\nin $4) not the a4/s0 pointer -- passing a4 there cost an extra\nregister-move instruction that doesn't exist in retail. The remaining\ngap after both fixes was pure store-order/register-allocation\nscheduling, closed by splitting a shared local into separately-named\n`c`/`mask` variables and reordering three independent statement\nblocks to match retail's own (non-monotonic) emission order.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.784033,"total_code":466016,"matched_code":34680,"matched_code_percent":7.4418044,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":447,"matched_functions_percent":26.481043,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T15:58:43Z","commit_sha":"cda8a3f2d27fe56ef9d8c95f6b18da16e75dee4b","commit_message":"core: func_00123168 (install/uninstall handler pair) size-exact, 8/0xA0-byte near-miss\n\nInstall (or, called with arg0 == 0, uninstall) a handler/arg pair on\nD_00132E40, guarded by func_00119328/func_00119390 around the two\nsyscall-wrapper calls func_00118AA0/func_00118A90. Recovered the full\ncontrol flow and every call site exactly; the source-order swap that\nfixed an early store-order pair (75 -> 65 words) is documented in a\ncomment above the function, along with the one residual: retail\ncomputes func_00118A90's a1 argument before a0, and no spelling tried\n-- literal constant, a reused local, or sequenced temporaries forcing\nevaluation order -- reproduces that emission order. Pure scheduling,\nkept as a same-size near-miss per project convention.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.743691,"total_code":466016,"matched_code":34492,"matched_code_percent":7.4014626,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":446,"matched_functions_percent":26.4218,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T15:43:00Z","commit_sha":"5f2549a672263ddc297cbfed8ef01d1eb46b3104","commit_message":"core: func_00122140 (push GS display-environment to GS registers) exact\n\nCopies the 5 quadword fields of a display-environment struct to the\nGS privileged registers (0x12000000 base), picking between two\nregister sets by the field/mode flag at offset 6 of func_00121D08's\nreturn (D_00132E40): the odd branch writes all 5 fields (0/8/0x10/\n0x18/0x20 -> GS 0/20/90/A0/E0), the even branch skips field 0x8 and\nwrites only 4 (-> GS 0/70/80/C0).\n\nThe only source subtlety was the field type: `unsigned long long`\ncompiles to lq/sq (128-bit) on this target since R5900 GPRs are\n128-bit-native, not retail's `ld`/`sd` (64-bit) -- `unsigned long` is\nthe 64-bit type here, matching the `long`-returning \"_wide\" externs\nalready used elsewhere in this file.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.711074,"total_code":466016,"matched_code":34492,"matched_code_percent":7.4014626,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":446,"matched_functions_percent":26.4218,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T15:33:23Z","commit_sha":"c69abcd47ad8c46012c3814812c32b596a35655d","commit_message":"core: document func_0012CC90 as blocked on sibling-call codegen\n\nDecode is certain (DMA channel address kick guarded by the disable/\nenable-interrupts pair), but retail forwards to func_0011D9A8 with a\nbare tail `j` while interleaving its epilogue around the remaining\nwork. Neither SN sub-toolchain has sibling-call optimisation at all\n(-foptimize-sibling-calls doesn't exist, -O3 doesn't help), and\ntools/fix_tail_calls.py's post-pass only rewrites bare forwarding\nstubs with no frame of their own -- this function's $16/$31 spills\ndisqualify it from that guard. 3 words longer than retail (0x70 vs\n0x64) however the final call is spelled. Toolchain blocker, same\ncategory as the short-loop erratum; worth keeping in mind for the\nother hardware-poke wrappers in this file (func_0012CCF8, func_0012D000\nare the same size and shape).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.6707325,"total_code":466016,"matched_code":34304,"matched_code_percent":7.3611207,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":445,"matched_functions_percent":26.362558,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T15:25:23Z","commit_sha":"c1bc6190d69de73effc9a39a202f1fd8334b0b8c","commit_message":"core: func_00121D18 (read version file, check build number) exact\n\nSame open/read/close triplet as func_0012D2A0: read a text file a\nbyte at a time into a 0x100-byte stack buffer via func_0011BF80/\nfunc_0011C5C0/func_0011C208, stopping at NUL or the buffer limit,\nthen strtol() (func_00112380, already matched) the tail 9 bytes\nbefore the stop point and compare it against build number 0x1315670.\n\nTwo things closed the gap from a same-size near-miss to exact:\ndeclaring the byte counter `unsigned int` for retail's sltiu bound\ncheck instead of slti, and initializing it before the buffer pointer\nso the two get the same s0/s1 register assignment retail's allocator\npicked.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.6707325,"total_code":466016,"matched_code":34304,"matched_code_percent":7.3611207,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":445,"matched_functions_percent":26.362558,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T15:06:34Z","commit_sha":"9f172b39c809b7b88dea762774780ea7c0369672","commit_message":"core: func_0012D5D0 (tick clock forward by one day) exact\n\nForward analog of the already-reverted func_0012D688 decrement:\nsame 12-byte month-length table copy, same leap-year stretch of\nFebruary to 29, same month/year rollover. The day-increment store\nhad to stay a bare `s[5] = s[5] + 1` (no named local) to get retail's\nimmediate sb instead of a deferred store, the final s[7] wrap needed\nplain if/else rather than a ternary to match retail's per-branch\nstores into a shared tail, and reloading the rolled-over month through\n`s[6]` before comparing it against 13 (instead of keeping the addiu\nresult in a register) was what closed the last register-allocation\ngap.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.636398,"total_code":466016,"matched_code":34144,"matched_code_percent":7.326787,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":444,"matched_functions_percent":26.303318,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T14:41:21Z","commit_sha":"8caa5f421d71eb2020601f48b877f9591e17e029","commit_message":"memcard: func_0020BBC8 (memcard_PrepData) size-exact, 39/232-byte near-miss\n\nHoisting the source-address local before the two header stores forced\nthe expected table[1] reload and dropped the diff from 1807 to 517\ndiffering words. Remaining residual is allocator destination choice\n($s0/$s1 swapped vs retail) plus the position of the table-cursor\ncopy relative to the guard branch -- documented in a comment above\nthe function along with every spelling tried.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.597774,"total_code":466016,"matched_code":33964,"matched_code_percent":7.2881618,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":443,"matched_functions_percent":26.244076,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T14:08:22Z","commit_sha":"4de096c01a9ca5c1456944f373037ec72f049f55","commit_message":"pause and memcard: two more exact, both first try\n\nfunc_002217C8 (pause) is a sibling of func_00220C90 above it: the same\n0x44 guard and the same func_001F5800 draw, twice. The packed colour is\nheld in one local because retail keeps it in a callee-saved register\nacross both calls, and func_00205520 returns `long` -- retail stores $v0\nstraight into the 64-bit stack slot with `sd`, without sign-extending.\n\nfunc_00209CE8 (memcard_RestoreGame) is the counterpart of func_0020BA00:\nit recomputes both descriptor sizes, checks them against the ones stored\nin the blob, then reads the blobs back in the order they were written.\nIts declaration further down the file fixes the parameter as `int`, so\nthe cursor is a local cast from it.\n\nFrom-scratch: 443 exact (was 441), 0 size mismatches, every function at\nits retail address.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.556358,"total_code":466016,"matched_code":33964,"matched_code_percent":7.2881618,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":443,"matched_functions_percent":26.244076,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T13:47:28Z","commit_sha":"599fc8abaf842fb29b656af4e21b51feb5db93ab","commit_message":"draw: GetOcclGridFromPair exact; record the mobyfunc CSE residual\n\nfunc_001F2B10 (GetOcclGridFromPair) matched first try. It calls the same\nhelper twice in one order or the other depending on `t < 0.5f`, and both\narms share the final call. Assigning the second triple to locals in each\narm and calling once after the if is what produces retail's shared tail.\n\nfunc_0020D6D0 is reverted with its decode kept above the stub. Two parts\nof it are settled: spelling the test `!= 0xFF` puts the sentinel case in\nthe far block, as retail has it, and holding `base + 0x48` in one local\ngives retail's zero-displacement loads (recomputing the address per use\nfolds 0x48 into the displacement instead). What blocks it is that retail\nreloads p[0x52] with `lbu` for each use, while this compiler keeps the\nvalue from the compare and re-masks it with `andi`. Separate expressions\ndo not stop that CSE; only `volatile` would, and it would also serialise\naccesses that retail's schedule interleaves.\n\nFrom-scratch: 441 exact (was 440), 0 size mismatches, every function at\nits retail address.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.4696665,"total_code":466016,"matched_code":33560,"matched_code_percent":7.2014694,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":441,"matched_functions_percent":26.125593,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T13:30:36Z","commit_sha":"de6ea79433ad47f5dfed08851857cbea6679689b","commit_message":"Measure the short-loop erratum three ways; it is a toolchain blocker\n\nfunc_00225548 decodes with certainty and reaches retail exactly except for\ntwo nops: retail pads loops shorter than six instructions with a nop\nbetween the store and the backward branch, because the R5900 mispredicts\nthem. Both loops here are five instructions. That is 8 bytes, so the\nfunction is a size mismatch and stays asm, with the decoded source and the\nfindings kept above its stub.\n\nThree ways to produce the padding, all measured, all failed:\n- The compiler never emits it. The generated .s has no nop between `sw`\n  and `bgez`, and neither SN cc1 (2.95.3, 2.9-ee) has an r5900 erratum\n  flag; scanning both binaries finds only optimisation strings.\n- The assembler only removes nops: `ee-as --help` has `-O` (remove\n  unneeded NOPs) and `-g2` (keep them), and no insert option.\n- `__asm__(\"nop\")` in the loop body does not append one after the store.\n  It perturbs the scheduler (the jal delay slot stops being filled) and\n  takes the function from 227 to 447 differing words.\n\n52 stubs are blocked this way, so the class needs an assembler that\ninserts the padding, not a different C spelling.\n\nAlso recorded: two separate loop counters are load-bearing here (one\nreused variable puts both loops in $s2; retail uses $s1 then $s2), and two\nstores of the same value come out in the opposite order to the source.\n\nBuild unchanged: 440 exact, 0 size mismatches, every function at its\nretail address.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.430182,"total_code":466016,"matched_code":33376,"matched_code_percent":7.161986,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":440,"matched_functions_percent":26.06635,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T08:47:44Z","commit_sha":"537a36b71d3ee2c383eaa288185f8bdb41bf9f7d","commit_message":"build_sn.sh: regenerate the bss equates when the link fails\n\nbuild-sn/bss_equs.o is generated once from the linker's undefined-symbol\ncomplaints and then cached, so C that newly references a bss symbol\nfailed to link until someone deleted the file by hand. The last round\nlost time to exactly that.\n\nThe script now regenerates the equates and retries the link once. The\nretry is unconditional rather than keyed on \"undefined reference\":\nverified that with symbols missing, this ld build can segfault instead of\nreporting them.\n\nTested both paths: a normal build is unchanged, and a deliberately\nstripped bss_equs.o now recovers by itself and still gives 440 exact,\nevery function at its retail address.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.430182,"total_code":466016,"matched_code":33376,"matched_code_percent":7.161986,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":440,"matched_functions_percent":26.06635,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T08:26:16Z","commit_sha":"a57108854d87e533f6c2b0eb3c0121cbd7c76508","commit_message":"docs: MACRO_ADDR replaces the \"global STORE addressing\" open question\n\nThat section said neither -msplit-addresses nor -mno-split-addresses\nreproduces retail's combination and that any function storing directly\nto a non-SDA global is blocked. Both claims are wrong: retail's forms\nare one assembler macro expanded three ways (load = address register\nreused, store = $at, delay slot = $gp), and MACRO_ADDR reproduces all\nthree from one declaration.\n\nRecords the two new variants (a sized array; a `long` argument so its\nconstant stays one `dli` macro), the pointer-aliasing rule behind the\npacket writers, the typed-table rule that keeps one base register, and\nthe measured hard limit: a MACRO_ADDR access in a delay slot is\n$gp-relative, so a symbol outside the window cannot appear in one.\n\nAdds a \"Disproved this round\" section with the counts: all 24 orderings\nof four macro stores, four spellings of two address expressions, and\nevery spelling of one 64-bit constant.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.430182,"total_code":466016,"matched_code":33376,"matched_code_percent":7.161986,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":440,"matched_functions_percent":26.06635,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T08:24:50Z","commit_sha":"690ece09d0d6aa1df675fc4d722c1a50a1f4539e","commit_message":"sound/vuchain/pause: three more from the two established patterns (+3 exact)\n\nfunc_0022EEB8 is func_0022EE28's sibling; func_00234BA0 and\nfunc_00228458 are the `int *D_00161000` packet-writer pattern, where\nwriting through the global (not a local copy) is what makes the\ncompiler reload it before every field.\n\nfunc_00228458 also needed the address of a small-data array taken\nrather than loaded: `&D_00160460` on a `short`-declared symbol is what\ngives retail's `addiu $2,$28,-0x68A0`.\n\nKept as near-misses, measured: func_00209DC0 (3/168, one register),\nfunc_0022FD20 (5/160 -- the residual is the assembler's `dli`\nexpansion of 0x8000000044, which every C spelling of the constant\nreaches, so retail's ori/dsll/ori must have come from its compiler).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.430182,"total_code":466016,"matched_code":33376,"matched_code_percent":7.161986,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":440,"matched_functions_percent":26.06635,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T08:10:27Z","commit_sha":"f14a3cd8ba4b63f1a93ba7970ec18b69a55c509d","commit_message":"draw/sound/mobyutil: the argument's C type picks the constant form (+2 exact)\n\nfunc_001F7B70 and func_0022EE28 match. The first one turns on a lever\nworth naming: a call argument declared `long` is materialised by the\ncompiler as one `dli` macro, so the assembler expands it and can fill\nthe jal delay slot from before it; the same argument declared `int` is\nmaterialised as two RTL insns (lui + ori) and the scheduler drops the\nother argument's `li` between them. Retail has the `long` form, and\nthat one declaration is the whole difference on the 0x513F1 call.\n\nfunc_0022EE28 needed its two record stores in the opposite order to\nretail's output.\n\nfunc_00215F80 is now a real function taking (int, int) rather than the\n`(void)` prototype func_00216028 was using -- retail passes both\narguments straight through -- and func_00216028 stays byte-exact with\nthe corrected call.\n\nKept as same-size near-misses with the measurements in comments:\nfunc_001F55C0 (6/144, one dsll scheduled early; four associations of\nthe or-chain compile identically) and func_00215F80 (11/164, the\nplacement of `addiu $2,$0,1`).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.263665,"total_code":466016,"matched_code":32920,"matched_code_percent":7.064135,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":437,"matched_functions_percent":25.888626,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T07:52:45Z","commit_sha":"c192410bcd9517a66a724c3fb421dcd5b4dfe24a","commit_message":"permcb/skyfunc/vendor: three more, and MACRO_ADDR's hard limit (+3 exact)\n\nfunc_0012F308 (vsync_callback) is three 64-bit MACRO_ADDR counters and\na T0_COUNT read; func_0022C9A8 and func_00239948 are ordinary\nMACRO_ADDR loads.\n\nMeasured limit of the lever, worth recording: a MACRO_ADDR access in a\ndelay slot is expanded $gp-relative, so a symbol OUTSIDE the +-32KB\nsmall-data window cannot be reached that way at all -- the link fails\nwith \"relocation truncated to fit: R_MIPS_GPREL16\". That is what\nfunc_0012D380/func_0012D448 do with D_001331D4/D_001331D6: retail loads\nthem across two delay slots (lui in the branch's, lbu in the following\nb's), which is the compiler's split form, not a macro. Both are kept as\n5/96 and 6/104 near-misses whose only residual is the address register.\n\nfunc_0012D448 also needed its two arms swapped so the zero case is the\none that branches over.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.141995,"total_code":466016,"matched_code":32644,"matched_code_percent":7.0049095,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":435,"matched_functions_percent":25.770142,"complete_code":3004,"complete_code_percent":0.6446131,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":12}},{"timestamp":"2026-09-20T07:40:32Z","commit_sha":"dd05f13564cb17ead5b56997846a226698e891db","commit_message":"MACRO_ADDR on a sized array; four more (+4 exact)\n\nfunc_001F3B90 (ResetDrawGlobals) is seventeen zero stores in the three\naddressing forms one assembler macro can take: lui/$at, plain $gp for\nthe three that really are small-data, and $gp again for the store in\nthe jr delay slot.\n\nNew lever variant, measured: MACRO_ADDR works on an ARRAY with an\nexplicit size over -G2, not just on scalars. func_002175C8 needed\nretail's one-register `lbu`; `extern unsigned char D[4]` alone gives\nthe split lui/%lo form and a differently scheduled load, and a plain\nscalar would be small enough for the assembler to route through $gp.\n`extern unsigned char D[4] MACRO_ADDR` gives both the macro and the\nnon-$gp expansion, and the function matches.\n\nAlso func_00216028 and func_00204BE8. For the latter, keeping retail's\nsingle base register for two fields of one table needs the table\ndeclared `int []` and indexed, not a `char []` with byte offsets --\nbyte offsets make the compiler fold the offset into the %hi and address\nthe second field backwards from the first.\n\nLeft as asm with the decoded source in comments: func_00201E10\n(scheduling tie; it does record that two stores of the same value come\nout in the opposite order to the source). Kept as a 3/100 near-miss:\nfunc_00203548, where the only residual is two reversed `addu` operand\norders -- four spellings of both address expressions compile to the\nidentical instruction stream.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":8.049938,"total_code":466016,"matched_code":32404,"matched_code_percent":6.953409,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":432,"matched_functions_percent":25.592417,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":11}},{"timestamp":"2026-09-20T07:23:56Z","commit_sha":"86ed060bdd8df3a3a56b02c434d728aad5dd7c9f","commit_message":"draw/vuchain: callback lists and the VU1 chain pointer (+8 exact)\n\ndraw.cpp's four parallel callback lists (a function array, an argument\narray and a count each) plus their register/run pairs, and vuchain's\nVU1 packet pointer.\n\nThe counts and the chain pointer are MACRO_ADDR: retail reaches them\nwith the one-instruction assembler macro, which expands through the\ndestination register for a load, through $at for a store, and through\n$gp where it lands in a delay slot. That closed func_001F49B0, which\nhad been recorded as blocked by the \"%hi register reuse\" allocator\nsub-case -- it was never an allocator question.\n\nfunc_00234B48 needs the chain pointer typed `int *`, not a quadword\nstruct: retail reloads it before every field write, which is what this\ncompiler does only when the stored type can alias the pointer itself.\nfunc_00235290 wants the quadword type instead, so the same symbol is\ndeclared twice via an __asm__ alias.\n\nDecoded but left as asm, with the source and the measurements in\ncomments: func_002348E8 and func_00234948 (right size, allocator tie --\nall 24 orderings of their four macro stores were compiled and none puts\nD_00161010 first as retail does) and func_00235018 (one duplicated\n`lui %hi` too long).\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.9321313,"total_code":466016,"matched_code":31952,"matched_code_percent":6.856417,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":428,"matched_functions_percent":25.35545,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":11}},{"timestamp":"2026-09-20T02:07:28Z","commit_sha":"9f46f50b3b3f70c76c0402913c92ad691f9b999e","commit_message":"MACRO_ADDR: finish the gp/hi family; unblock that category (+8 exact)\n\nCompletes work an earlier round left uncommitted.\n\nNew exact: func_00208FA0 (menu), func_0020E2B0 / DrawMobys (mobyfunc),\nfunc_00228110 (pause), and five more in menu.c from the same form.\n\nfunc_00208338's two-name hack for D_0015EE84 (an `extern short` for the\nSDA access plus an aliased NOT_SDA copy for the lui/%lo one) is gone: one\nMACRO_ADDR declaration gives both access forms, because the assembler\nexpands the macro $gp-relative in a delay slot and through the\ndestination register elsewhere.\n\nrank_candidates.py: the \"gp/hi collision\" category (one variable reached\nboth via $gp and via lui/%lo inside one function) was blocked for many\nrounds as an unexpressible per-TU declaration difference. It is not one.\nIt is the assembler's macro expansion, which MACRO_ADDR reproduces, so\nthose stubs are hinted instead of blocked.\n\nFrom-scratch: 474 decompiled, 420 exact (was 412), 0 size mismatches,\nevery function at its retail address.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.7544546,"total_code":466016,"matched_code":31124,"matched_code_percent":6.6787405,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":420,"matched_functions_percent":24.881517,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":11}},{"timestamp":"2026-09-19T22:01:54Z","commit_sha":"1a9c8bbec75e1b8cff3fea4e07420633d1010907","commit_message":"A MACRO_ADDR access in a delay slot is $gp-relative (+19 exact)\n\nRetail reaches the same global two ways inside one function: lui/%lo in\nthe body, $gp-relative in a branch delay slot (menu.cpp's func_00209188\ndoes it to both D_0015EFB0 and D_0015EFB4). Measured over the whole\nimage: of 524 $gp accesses in compiled functions to globals that retail\nalso reaches via lui, 505 are in a delay slot. So the \"gp/hi collision\"\nwas never two translation units -- it is one access form that the\ntoolchain spells differently in a slot.\n\ntools/check_macro_slots.py now does the same instead of failing the\nbuild. This assembler has no %gp_rel syntax and decides per symbol name\nfrom the .extern size, so the rewrite goes through a second name for the\nsame address (`SYM__gp = SYM`, declared size 1); the relocation still\ncomes out against SYM. Those directives are APPENDED: put before gcc's\nown leading directives they make the assembler report st_size 0 for\nlater functions in the file.\n\nCloses menu.cpp's D_0015EFB0 family (7), pause.cpp's func_00219E60 and\nfunc_0021DB00, space.cpp, vuchain's packet append, ezmpeg's\nhandler_endimage and endDisplay, and more.\n\nTwo other things learned here:\n - a `volatile` lvalue keeps a MACRO_ADDR store OUT of a delay slot,\n   which is what retail does in endDisplay;\n - dead-store elimination on a global is visible: retail's two separate\n   `and`s with -5 and -3 come from two `&=` statements, only the second\n   of which is stored.\n\nfunc_00209160 and func_00222B00 kept as same-size near-misses, with\nevery spelling tried recorded above them. func_00209188 is reverted:\nour assembler inserts 3 short-loop-erratum nops retail does not have.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.524205,"total_code":466016,"matched_code":30384,"matched_code_percent":6.519948,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":412,"matched_functions_percent":24.407583,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":11}},{"timestamp":"2026-09-19T21:30:35Z","commit_sha":"1f436d2267aabd1f06ac04a60e7c800ac0bace2a","commit_message":"pause/mobyfunc/movie: MACRO_ADDR harvest (+10 exact)\n\nDeleteMoby, isAudioOK, proceedAudio and seven pause.cpp functions.\nisAudioOK was a recorded \"%hi-register-reuse\" near-miss: that residual\nis the assembler macro form, closed by MACRO_ADDR.\n\nTwo SDA globals (D_0015F780, D_0015EFB0, D_0015EE84) are reached through\nthe macro in pause.cpp; they get MACRO_ADDR aliases there.\n\nfunc_00222B00 kept as a same-size near-miss (default-arm allocator),\nspellings recorded above it. Not every lui/lw same-register pair is the\nmacro: D_0013CBE4 there is split form, since retail puts its lui alone\nin a delay slot.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":7.24782,"total_code":466016,"matched_code":29108,"matched_code_percent":6.2461376,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":393,"matched_functions_percent":23.28199,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":11}},{"timestamp":"2026-09-17T07:13:57Z","commit_sha":"b0e0820a7752db61336907dab478bde946a3dea4","commit_message":"MACRO_ADDR unblocks the $at store form; guard delay slots (+1 exact)\n\nThe \"$at macro store\" category (134 stubs blocked outright) and the\n\"allocator destination-reuse\" risky category are the same thing: the\nassembler expanding an unsplit global access. MACRO_ADDR reproduces\nboth, so the ranker now hints MACRO_ADDR instead of blocking.\n\nFirst store match: func_001E94A8 (actuator.cpp), the function whose\ncomment first recorded the store-form blocker.\n\ntools/check_macro_slots.py runs in the core and text rules before\nassembly. A MACRO_ADDR access is one instruction to the compiler but\ntwo to the assembler, so if it lands in a delay slot the assembler only\nwarns and emits a broken slot. The check fails the build instead.\nSymbols the assembler addresses via $gp (.extern size <= 2) are one\ninstruction and are allowed.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.9843097,"total_code":466016,"matched_code":28012,"matched_code_percent":6.0109525,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":383,"matched_functions_percent":22.689573,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":11}},{"timestamp":"2026-09-17T07:06:05Z","commit_sha":"b1fd8aa3e3e07e6537b8b81c6c60b7dee5b96080","commit_message":"movie/videodec: ezmpeg source + MACRO_ADDR load form (+8 exact)\n\nvideoDecCreate, videoDecAbort, videoDecPutTs, videoDecFlush and the\nfour callbacks (mpegNodata, mpegStopDMA, mpegRestartDMA, mpegTS) match\nfrom the sample's source. The ezmpeg types move to include/ezmpeg.h.\n\nNew lever, MACRO_ADDR (include/common.h): the \"%hi register reuse\"\nload that retail uses all over text,\n    lui $2,%hi(D) / lw $2,%lo(D)($2)\nis the assembler expanding an unsplit `lw $2,D` macro. A\nsection(\".sdata\") attribute makes cc1 treat the extern as small data\nand emit that macro; its declared size is over -G2, so the assembler\ndoes not use $gp and expands it through the destination register.\nRetail's movie globals pointer D_0016130C is loaded this way in every\nfunction here. Loads only: a store becomes a two-instruction macro\nthe compiler counts as one.\n\nAlso: videoDecAbort is `void` (the old `int` attempt could not share\nthe constant), switchThread is `void` for its callers, and the\nseq_end_code initializer is copied from retail's .lit (D_00161320)\nbecause our .lit is retail data.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.9791594,"total_code":466016,"matched_code":27988,"matched_code_percent":6.005802,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":382,"matched_functions_percent":22.630331,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":11}},{"timestamp":"2026-09-17T06:31:38Z","commit_sha":"6976a5a8ce728f43d8270e35df82b5db8b181ea2","commit_message":"Record -ffast-math (from RC1's NTSC flags) as measured and rejected\n\nA full build with -ffast-math gives 363 exact vs 364: it breaks\nfunc_0022DB48 and improves nothing. RC1 lists -G8 -O2 -ffast-math\n-fno-exceptions, but decompiles almost nothing, so those flags were never\nverified against matching code. -G8 was already ruled out; -fno-exceptions\nonly matters for C++.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.3053627,"total_code":466016,"matched_code":24700,"matched_code_percent":5.300247,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":364,"matched_functions_percent":21.56398,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":11}},{"timestamp":"2026-09-17T06:28:41Z","commit_sha":"0805546c2a7eebb48e85610164499fb27e92b471","commit_message":"259 real function names from RC1, annotated in src/; fix candidate ranker\n\nconfig/symbol_names.txt maps 259 of the 393 names in bordplate's NTSC\nsymbols.txt (codeberg.org/bordplate/RC1) onto PAL. Only confident\nmappings are kept, each with its evidence: text functions on a\nfunction-size-aligned NTSC/PAL match; core-tail functions where the\nentry-point shift (+0x140) lands on a PAL function start (_start, _exit,\nParseBin, main, snd_*); and __main (matched byte for byte). Names are\ndemangled with the SN toolchain's ee-c__filt, e.g.\nHud_HeapAlloc__FUiPcT1i -> Hud_HeapAlloc(unsigned int, char *, char *, int).\n\nIn src/ the names are comments: trailing on 192 stubs, above 67 decompiled\nfunctions. func_<ADDR> stays the symbol, because the build and tools read\nthe address from it. Build verified byte-identical.\n\nrank_candidates.py fixes:\n- Documented reverts were searched in src/*.c only. Since the object\n  split, sources live in subdirectories, so it found none and 6\n  already-attempted stubs resurfaced as candidates. It now uses rglob.\n- A comment only counts as a revert note when it ends on its own line. A\n  trailing name annotation on the previous stub would otherwise have\n  hidden 131 stubs.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.3053627,"total_code":466016,"matched_code":24700,"matched_code_percent":5.300247,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":364,"matched_functions_percent":21.56398,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":11}},{"timestamp":"2026-09-17T06:24:38Z","commit_sha":"95f24458809f1d37fffd136c520b676d29ed7f8c","commit_message":"splat: never create src/core_text.c or src/text.c\n\nsrc/ is organised by object now (src/core/, src/game/, src/libgcc/), but\ntools/setup_asm.sh still made splat write one C file per segment, which\nleft untracked src/core_text.c and src/text.c behind. create_c_files:\nFalse stops that. Verified: the regenerated asm/ is identical (0 differing\nfiles) and nothing is written to src/.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.3053627,"total_code":466016,"matched_code":24700,"matched_code_percent":5.300247,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":364,"matched_functions_percent":21.56398,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":11}},{"timestamp":"2026-09-17T06:23:57Z","commit_sha":"527fd5f82f976b168ffb7de6a9a6ed2510c93bfe","commit_message":"core_text tail: crt0, boot.cpp, 989snd.c, permcb.cpp, wad.cpp\n\nCorrection: the object at 0x12DB18 is not 989snd.c. crt0 calls\nfunc_0012DB18 as main, so 0x12DB18 is boot.cpp's main, and splat had merged\nthe start of 989snd into it.\n\nThe ELF entry point (e_entry 0x12D868 = _start) gives the NTSC-to-PAL\nshift here (+0x140). With it, bordplate's NTSC split maps onto boundaries\nthe PAL code confirms:\n  crt0       0x12D868  entry point, padduw register clearing\n  boot.cpp   0x12DA38  right after _exit's syscall (ParseBin, main)\n  989snd.c   0x12DB68  prologue after main; path string used from 0x12DBE0\n  permcb.cpp 0x12F308  after jr $ra + pad\n  wad.cpp    0x12F348  after jr $ra\nfunc_0012DB68 is declared in config/symbol_addrs.txt.\n\nVerified from scratch: every loadable byte identical to the previous\nbuild, 364 exact, every function at its retail address.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.3053627,"total_code":466016,"matched_code":24700,"matched_code_percent":5.300247,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1688,"matched_functions":364,"matched_functions_percent":21.56398,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":130,"complete_units":11}},{"timestamp":"2026-09-16T23:15:23Z","commit_sha":"b1ef6f718c423ca76bf5e7fb03b848e29f9321e7","commit_message":"Split text into its 58 original source files (hud, camera, mobyfunc...)\n\nsrc/text.c becomes src/game/<name>.c, one file per original source file,\nin config/text.objects (link order + start address), which Makefile.sn,\nrac1.ld.sh and the tools read.\n\nNames and boundaries come from bordplate's NTSC project RC1\n(codeberg.org/bordplate/RC1), which splits NTSC text into the original\nfiles and lists each file's functions. PAL is not a uniform shift of\nNTSC, so the NTSC and PAL function-size sequences were aligned instead:\n710/813 NTSC functions (87%) match. Of the 58 boundaries, 37 fall on a\nmatched function, 15 have the same shift on both sides, and 5 have\nexactly one candidate that is a real function start. skyfunc's shifted\naddress was mid-function; its real start is 0x22BEB0, with the same\norphan-epilogue head as core_text objects. Every boundary was checked in\nPAL code (a return before it, a function start at it), and the hud.cpp\nand loaders.cpp string references land inside hud and loaders.\n\nTwo splitter traps, both caught by comparing the image:\n- Top-level __asm__ padding is code, not a declaration. Inheriting it into\n  later files added bytes to every later object (299 exact until fixed).\n- A plain extern that is repeated later in a file is still needed where it\n  is first used. Dropping it changed func_0020DFF8 by 2 words.\n\nVerified from scratch: every loadable byte identical to the unsplit\nbuild, 364 exact, every function at its retail address. Files stay .c\nand compile as C for now. The progress report now has 126 units.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.305309,"total_code":466020,"matched_code":24700,"matched_code_percent":5.300202,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1687,"matched_functions":364,"matched_functions_percent":21.576763,"complete_code":2940,"complete_code_percent":0.6308742,"complete_data":0,"complete_data_percent":0,"total_units":126,"complete_units":11}},{"timestamp":"2026-09-16T20:34:21Z","commit_sha":"d8e659f7f81606ce1747c2a45a0cc955a9ee7e48","commit_message":"Name core_text objects independently of their address; 989snd.c\n\ncore_text files were named by their start address because the tools read\nthe address back out of the file name, so an identified object could not\nbe given its real name. config/core_text.objects now carries each game\nobject's start address in a second column, and the tools read it from\nthere (Makefile.sn and rac1.ld.sh take the first column).\n\nFirst rename: src/core/0012DB18.c -> src/core/989snd.c, the 989 Studios\nsound library, identified by its \"/usr/local/989snd/ee/989snd.c\" string.\ndecomp.dev shows it as unit core/989snd.\n\nVerified: every loadable byte is identical to the build before the\nrename; still 364 exact, every function at its retail address.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.305309,"total_code":466020,"matched_code":24700,"matched_code_percent":5.300202,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1687,"matched_functions":364,"matched_functions_percent":21.576763,"complete_code":2940,"complete_code_percent":0.6308742,"complete_data":0,"complete_data_percent":0,"total_units":69,"complete_units":11}},{"timestamp":"2026-09-16T20:24:50Z","commit_sha":"e8f7a3585d7a2b8403f68e283aab38f2efe58b31","commit_message":"Identify 989snd.c at 0x12DB18; record the text-segment boundary evidence\n\nThe core_text object at 0x12DB18 is 989 Studios' sound library: its first\nfunction references \"/usr/local/989snd/ee/989snd.c\". That boundary came\nfrom the sq/sd compiler sub-build switch, not from linker fill, so two\nindependent kinds of evidence agree on it.\n\nFor text, which has no linker fill, the evidence measured so far is\nrecorded but not acted on. hud.cpp and loaders.cpp each have exactly one\nreferencing function. TU-local .lit items are 83% (169/203) in code\norder, with breaks that suggest two interleaved pools, strings and\nnumeric literals. text is not split yet: a wrong boundary would still\nbuild byte-identically, so nothing would catch the error.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.305309,"total_code":466020,"matched_code":24700,"matched_code_percent":5.300202,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1687,"matched_functions":364,"matched_functions_percent":21.576763,"complete_code":2940,"complete_code_percent":0.6308742,"complete_data":0,"complete_data_percent":0,"total_units":69,"complete_units":11}},{"timestamp":"2026-09-16T20:23:00Z","commit_sha":"aae83fc8844330cebb94d0f9aaf52cb66805f83f","commit_message":"Split core_text into its ~50 retail objects, at the linker's own fill\n\nRetail's linker filled the gaps between objects with 0xCDCDCDCD. core_text\nhas 49 such runs, every one ending on an 8-byte boundary, and each now\nstarts a new object. The 0x12DB18 sub-build switch is a boundary too.\nInstead of two giant files, core_text is one C file per object,\nsrc/core/<START>.c, alongside the libgcc objects.\n\n- config/core_text.objects is the single link-order list. Makefile.sn\n  (one pattern rule), rac1.ld.sh and the tools all read it, replacing\n  three hand-kept copies.\n- config/symbol_addrs.txt declares 19 object starts that splat had\n  folded into the previous function, fill included. Several begin with an\n  orphan epilogue fragment (addiu $sp,N; nop). One is confirmed by splat\n  now resolving a data pointer to it (.word func_0011DD68).\n- The libgcc2 L__main module starts at 0x11DF10 and moves to\n  src/libgcc/nonmatching_0011DF10.c.\n- Each new file keeps the compile context its functions had: the\n  preceding declarations plus prototypes for functions defined earlier.\n  A missing prototype is not harmless. Without one, func_0012C2F8 changed\n  6 words (its callee became implicitly int). K&R definitions stay\n  unprototyped, as their callers rely on.\n\nVerified from scratch: every loadable byte of core_text, core_data,\ncore_rdata and text is identical to the build before the split. 364\nexact, 0 size mismatches, every function at its retail address. The\nprogress report now has 69 units (core/<START> plus libgcc modules), and\nthe function count includes the 19 new stub functions.\n\ntext has no linker fill, so its boundaries need other evidence: source\nfile strings, $gp vs lui access, rodata order, call clusters.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.305309,"total_code":466020,"matched_code":24700,"matched_code_percent":5.300202,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1687,"matched_functions":364,"matched_functions_percent":21.576763,"complete_code":2940,"complete_code_percent":0.6308742,"complete_data":0,"complete_data_percent":0,"total_units":69,"complete_units":11}},{"timestamp":"2026-09-16T20:07:59Z","commit_sha":"81bd4069a6fca1942cf786a176625dd6636d034a","commit_message":"README in the shape of other PS2 decomps; one-command build script\n\nThe README was still describing the project's first day (\"no function\nhas actually been rewritten as real C yet\"). It now follows the layout\nused by Sly Cooper, Fatal Frame, PaRappa 2 and RE:CVX: decomp.dev badges,\na progress table by version and category, a disclaimer, building steps,\ncontributing, project structure, resources and license.\n\nThe building steps were verified from a fresh clone of GitHub main, with\nonly a copied baserom and the toolchain. That run found two things the old\ninstructions got wrong or left out:\n- The toolchain's make 3.77 fails with \"CreateProcess ... failed\" when\n  the repository path is long, so the README says to clone to a short\n  path.\n- A fresh tree has no bss_equs.o. It has to be generated from the\n  linker's undefined-symbol errors before the real link.\n\ntools/build_sn.sh does all of it: data objects, a from-scratch make that\nchecks make's own exit status, the linker script, bss equates if missing,\nthe link, then sweep_matches and check_layout. From an empty build-sn/ in\nthe fresh clone it gives 364 exact and 1843/1843 at retail address, with\ncode identical to the main tree's build. The WORKFLOW verify step now\npoints at it.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.3053627,"total_code":466016,"matched_code":24700,"matched_code_percent":5.300247,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1668,"matched_functions":364,"matched_functions_percent":21.822542,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":21,"complete_units":11}},{"timestamp":"2026-09-16T19:54:05Z","commit_sha":"e4c08e65459ef9822da7ea4df9ff676822e896b9","commit_message":"Stop tracking asm/: regenerate it locally with tools/setup_asm.sh\n\nasm/ is splat's disassembly of the retail executable, and it carries the\noriginal instruction bytes. LEGAL.md contradicted itself on this: one\nbullet said asm/ is committed, and rule 1 said never to distribute raw\ndisassembly. It is now gitignored and generated by each contributor from\ntheir own baserom.\n\nVerified before removing: splat 0.50.0 with config/splat.yaml, plus\nfix_vu0_macro.py and sn_regnames.py, regenerates all 1677 files\nbyte-identically to the tracked copy. That holds with the current src/,\nand it leaves src/ and include/ untouched. A from-scratch build on the\nregenerated asm/ gives the same 364 exact, 1843/1843 at retail address,\nand an unchanged progress report.\n\nFor that to hold, config/splat.yaml gains:\n- generate_asm_macros_files: False, since splat otherwise overwrites the\n  project's include/labels.inc (global jlabel)\n- disassemble_all: True with matchings_path: nonmatchings, since splat\n  otherwise skips functions that already have C, and the audit tools\n  need every function's .s\n\ntools/setup_asm.sh checks the baserom sha1 and the pinned versions\n(requirements.txt) before regenerating. CI is unaffected: the report\n--check reads only src/. Past commits still contain asm/; this removes\nit from the tree only.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.3053627,"total_code":466016,"matched_code":24700,"matched_code_percent":5.300247,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1668,"matched_functions":364,"matched_functions_percent":21.822542,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":21,"complete_units":11}},{"timestamp":"2026-09-16T19:54:05Z","commit_sha":"141323407b26b8defeacc8fdea4c5a5560da103d","commit_message":"Stop tracking asm/: regenerate it locally with tools/setup_asm.sh\n\nasm/ is splat's disassembly of the retail executable, and it carries the\noriginal instruction bytes. LEGAL.md contradicted itself on this: one\nbullet said asm/ is committed, and rule 1 said never to distribute raw\ndisassembly. It is now gitignored and generated by each contributor from\ntheir own baserom.\n\nVerified before removing: splat 0.50.0 with config/splat.yaml, plus\nfix_vu0_macro.py and sn_regnames.py, regenerates all 1677 files\nbyte-identically to the tracked copy. That holds with the current src/,\nand it leaves src/ and include/ untouched. A from-scratch build on the\nregenerated asm/ gives the same 364 exact, 1843/1843 at retail address,\nand an unchanged progress report.\n\nFor that to hold, config/splat.yaml gains:\n- generate_asm_macros_files: False, since splat otherwise overwrites the\n  project's include/labels.inc (global jlabel)\n- disassemble_all: True with matchings_path: nonmatchings, since splat\n  otherwise skips functions that already have C, and the audit tools\n  need every function's .s\n\ntools/setup_asm.sh checks the baserom sha1 and the pinned versions\n(requirements.txt) before regenerating. CI is unaffected: the report\n--check reads only src/. Past commits still contain asm/; this removes\nit from the tree only.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.3053627,"total_code":466016,"matched_code":24700,"matched_code_percent":5.300247,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1668,"matched_functions":364,"matched_functions_percent":21.822542,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":21,"complete_units":11}},{"timestamp":"2026-09-16T19:47:13Z","commit_sha":"1d321e91140cef48c7f7ea98c9b19e1e49f0be75","commit_message":"libgcc2 from GCC's 1999-11 source via the 2.9-ee driver: +4 exact\n\n__divdi3, __muldi3, __floatdidf and __fixunsdfdi (0x11DFE8-0x11EF28)\nmatch from the unmodified libgcc2.c and longlong.h of GCC trunk\nbf279c4e1a (1999-11-02), the revision just before 2.9-ee-991111. Across\n0x11DFE8-0x1206A0, 2478 words, nothing differs.\n\nTwo things were needed:\n- Build through the 2.9-ee driver rather than cc1. The driver passes the\n  target predefines (__mips__, __R5900__, ...), and longlong.h picks its\n  MIPS multiply from those. Via cc1, __divdi3 was 0x50 bytes long; via\n  the driver it is 0/443. fp-bit now goes through the driver too, and is\n  still exact.\n- __divdi3 has its own static __clz_tab. Retail puts it in core_rdata at\n  D_00152B18, so tools/split_data_s.py cuts the data blob there and the\n  object's .rodata is linked into the gap.\n\nAlso: Sony's compiler calls soft-float helpers by GOFAST names (dpadd,\ndpcmp, litodp...), which are aliased in rac1.ld.sh. The 0xCDCDCDCD linker\nfill between modules is kept as tiny asm stubs.\n\nStill stubs, with the residual documented: __moddi3 (7/410),\n__udivdi3 (12 bytes short) and __umoddi3 (2/336). All three have one\nmore stack local in retail. pack_d and unpack_d are stubs too.\n\nFrom-scratch: 416 decompiled, 364 exact (was 360), 0 size mismatches,\n52 byte mismatches, 1843/1843 at retail address. core_rdata is 0 words\ndifferent; the rest of core_text and all of text are unchanged apart from\nthe replaced func_0011E7C8 near-miss. Progress report regenerated.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":6.3053627,"total_code":466016,"matched_code":24700,"matched_code_percent":5.300247,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1668,"matched_functions":364,"matched_functions_percent":21.822542,"complete_code":2940,"complete_code_percent":0.63087964,"complete_data":0,"complete_data_percent":0,"total_units":21,"complete_units":11}},{"timestamp":"2026-09-16T19:36:44Z","commit_sha":"05a80b191e6f03dbcb329ad5b365d76748797c92","commit_message":"docs/WORKFLOW.md: procedure revised against decomp.wiki\n\nA step-by-step workflow for taking a function from stub to published\nmatch: a library-first check, the m2c/diff.sh loop, a from-scratch\nverify, and regenerating the progress report.\n\nFindings from checking our process against decomp.wiki, measured here:\n- The game is C++. Retail contains hud.cpp, loaders.cpp and map.cpp\n  (and snd.c). Compiling text as C++ gives 239 exact vs 240 as C, with\n  every near-miss unchanged, so the language switch alone is not a lever.\n  C++ features (bool) remain untested.\n- The .lit4 float-literal nop pattern is ruled out: retail loads no\n  float literal from .lit via $gp.\n- Adopted as untested levers: branch-invariant code duplication for\n  allocator ties, and irregular switches.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":5.845937,"total_code":466016,"matched_code":22444,"matched_code_percent":4.8161435,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1668,"matched_functions":360,"matched_functions_percent":21.582733,"complete_code":2692,"complete_code_percent":0.5776626,"complete_data":0,"complete_data_percent":0,"total_units":12,"complete_units":9}},{"timestamp":"2026-09-16T19:29:35Z","commit_sha":"a890e27891a65bf5cf136adf3d6e3dfa7d4db1f0","commit_message":"Progress report and CI workflow for decomp.dev\n\ndecomp.dev reads objdiff's report.json from an artifact named\nSCES_509.16_report on the default branch. CI can't build the game, since\nthe SN toolchain and retail executable are not redistributable. So:\n\n- tools/gen_progress_report.py runs a from-scratch build and writes\n  progress/report.json (objdiff report v2). It uses the same size+bytes\n  audit as sweep_matches, and refuses to write if make or link fails, so\n  a stale .o cannot publish fictional matches. The report holds names,\n  addresses, sizes and percentages, and no retail bytes. Units are\n  core_text, core_text_2, text and the nine libgcc modules; categories\n  are game and libgcc.\n- .github/workflows/progress.yml checks that the committed report is\n  current with src/ (no toolchain or baserom needed), validates it with\n  objdiff-cli v3.8.1 (pinned sha256), writes a step summary and uploads\n  the artifact.\n\nVerified locally: objdiff-cli accepts the report; --check runs without\nelftools or baserom, and fails when the report omits a function that has\nsource. Current: 360/1668 functions, 4.82% code, 9/12 units complete.\n\nCo-Authored-By: Claude Opus 5 <noreply@anthropic.com>","measures":{"fuzzy_match_percent":5.845937,"total_code":466016,"matched_code":22444,"matched_code_percent":4.8161435,"total_data":0,"matched_data":0,"matched_data_percent":0,"total_functions":1668,"matched_functions":360,"matched_functions_percent":21.582733,"complete_code":2692,"complete_code_percent":0.5776626,"complete_data":0,"complete_data_percent":0,"total_units":12,"complete_units":9}}]