[{"timestamp":"2026-10-08T16:57:09Z","commit_sha":"9979eebe5ad758fba88040ab188c6f1ce5d3b254","commit_message":"Merge pull request #9 from Rivarux/add-recomp-json\n\nAdd .recomp.json to claim the recomp.fyi row","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-08T16:49:55Z","commit_sha":"b3bced6875bd921c6bbdfe50818fb8021b71c894","commit_message":"Merge pull request #10 from ThirstyWraith/main\n\nImplement plausible for/while loops, reduce gotos and do-whiles","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-07T07:22:19Z","commit_sha":"2101cc68903292c6bd7d17256ca27e3455c3d382","commit_message":"doc: drop two Parasite Eve 2 format docs left from the bootstrap","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-07T07:06:19Z","commit_sha":"761132ddd18518d4726c1b5a8c9a1e24b804e87a","commit_message":"doc: scene table (game mode to overlay) in the state map; README status: naming done, state map, shiftable build","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-07T06:31:52Z","commit_sha":"e6a161b3c50a0baaad16cb0472de3bdd0fce117d","commit_message":"one MenuGridLayout (gridSize, origin, cellStep) for the four 12-byte menu grid records","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-07T06:25:36Z","commit_sha":"5ee9d0c3da0ca29578215684b0e40afdf20c25fb","commit_message":"one DungState layout: the stag4000 dungeon state with a DungStatus block at 0xBA0, shared by main, stag0000, stag3000 and stag4000","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-07T06:20:01Z","commit_sha":"81826df27baa9795be86388796dcd8c0dabfe582","commit_message":"one DigiRosterEntry layout (skills, learnableSkills, pendingSkill, DNA parents, transfer uid; s16 stats) for the roster and battle views; Stg30_Battle is a header plus digis[6]","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-07T06:11:38Z","commit_sha":"2c8230fd8cc8bcec869a4a173f3395895af7c278","commit_message":"one GameState layout for the save block: GameStateView, Stg20GameState, Stg11SaveSlot, the stag3000 views and the flag views merged","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-06T22:35:38Z","commit_sha":"def5284064d3457f43ff70f40882b07e895bf613","commit_message":"Task_DefaultDestroy2 is Sys_GameModeDestroy, Anim_GetModelAnimFile is Digi_GetAnimFile","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-06T22:23:38Z","commit_sha":"051da9ce309008d86cad2aa0d919d8cc1ed35225","commit_message":"overlays: name fx spawn args, clutRow, startDowned, textBoxTask, titleText, unscaled, the lab model draw flags and Stg40EnemyParty.cellCode","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-06T22:06:20Z","commit_sha":"2fd65c851ac46b08c321320d4c85676a86287b1c","commit_message":"SysTimImage gets the GsIMAGE field names; drop the unused Flag_Test roster views","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-06T21:55:01Z","commit_sha":"adc8d53e436167874b7f1fa223f0fd3060f02106","commit_message":"main: F400.c is shadow.c, task 6 is the shadow under a digimon (Gfx_ShadowDesc, Init, Update, Draw); re-split main","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-06T21:26:46Z","commit_sha":"ea70cb1f80034ec47b202c81cda9a4bb28c8b0f6","commit_message":"name the RCS id, the scale matrices, Cd_FileCount, Gpu_OtLayoutMode, Sys_MovieActive and two stag4000 globals","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-06T21:04:15Z","commit_sha":"6c9a0467929adcfa4a391f29284a5ffcbf3ddf70","commit_message":"Save_GameState field symbols are field accesses now: GameState gets playerName, field_11/12, field_D1[] and EventFlags eventFlags","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-06T20:34:04Z","commit_sha":"d93f3ff732f4632f6519c8ec3c743c26bbcd80c3","commit_message":"stag0000, stag3500: name the sound test bank lists and the skill group tables; rename.py finds overlay data defined in C","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-06T20:11:51Z","commit_sha":"0e70b7f4d9916d8975a405639f34672cc4275e22","commit_message":"main: cdread.c comment names cd.c","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-06T20:09:36Z","commit_sha":"363392b3292f43fc32355074e8bd88694aa013c8","commit_message":"main: 105BC.c is model.c now","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-06T20:05:21Z","commit_sha":"dbb8b6f4fa357c70b618af5a21f5fd55bdeb7ae3","commit_message":"main: split 13584.c into mem, pad, sys and cd files, the sys.c RCS id moved in from 105BC","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":163,"complete_units":0}},{"timestamp":"2026-10-06T19:53:13Z","commit_sha":"efe437ddf2ca5c160483bd1307ae474edb335885","commit_message":"stag3000: split stag3000_CC70.c into xaplay, camera, fighterhud, result, skilllearn and joinprompt files","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118137,"matched_data":118137,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":160,"complete_units":0}},{"timestamp":"2026-10-06T19:50:52Z","commit_sha":"7af14d5fd103933f59e1f815077750fbbb1379c7","commit_message":"stag3000: stag3000_C918.c is interruptselect.c now, its draw, InitBattle and data moved in from CC70","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118137,"matched_data":118137,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":155,"complete_units":0}},{"timestamp":"2026-10-06T19:44:33Z","commit_sha":"109252cb6699280dd306dadb8c0a54e80c819d35","commit_message":"stag3000: split stag3000_AF5C.c into battlestate, fighter, fightmsg and popup files","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118137,"matched_data":118137,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":155,"complete_units":0}},{"timestamp":"2026-10-06T19:34:28Z","commit_sha":"1cfee42a49ab7f967a00e9479f6e678fa5e92415","commit_message":"stag3000: stag3000_9F8C.c is itemeffect.c now","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118137,"matched_data":118137,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":152,"complete_units":0}},{"timestamp":"2026-10-06T19:32:21Z","commit_sha":"a0e6b7f84ce0b8058c6ba94cdc763c3c83e0be32","commit_message":"stag3000: stag3000_96DC.c is battlescript.c now","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118137,"matched_data":118137,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":152,"complete_units":0}},{"timestamp":"2026-10-06T19:30:13Z","commit_sha":"42cf4fddf92ffa3c41effb0421e9ad081ebfc0ef","commit_message":"stag3000: stag3000_6A88.c is skilleffect.c now","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118137,"matched_data":118137,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":152,"complete_units":0}},{"timestamp":"2026-10-06T19:27:58Z","commit_sha":"9747660f118042676f414a1226237ceedc0c2db5","commit_message":"stag3000: stag3000_5980.c is turn.c now","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118137,"matched_data":118137,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":152,"complete_units":0}},{"timestamp":"2026-10-06T19:15:48Z","commit_sha":"47def3cbf640a42793dd996c4570055e2ce6c8e5","commit_message":"stag3000: stag3000_41D0.c is battle.c now, battle destroy moved in from 5980","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118137,"matched_data":118137,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":152,"complete_units":0}},{"timestamp":"2026-10-06T19:12:03Z","commit_sha":"2eb455018bdde1c29f39eab32f1dea426708d90a","commit_message":"stag3000: split stag3000_100C.c into commandinput, commandmenu, itemmenu, skillmenu and targetselect files","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118137,"matched_data":118137,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":152,"complete_units":0}},{"timestamp":"2026-10-06T19:09:56Z","commit_sha":"b507262c4849556bbcbd514e9baa68816b17df76","commit_message":"stag3000: split stag3000.c into banner, fightbg and actionload files, action load destroy moved in from 100C","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118137,"matched_data":118137,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":148,"complete_units":0}},{"timestamp":"2026-10-06T19:01:38Z","commit_sha":"5fe0b9d65c2f81f584855481a4b836e22074b2ff","commit_message":"stag2000: split stag2000_8CE0.c into shoplist, beetleparts, partsupgrade, warppad and camera files","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118137,"matched_data":118137,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":146,"complete_units":0}},{"timestamp":"2026-10-06T18:59:29Z","commit_sha":"7e0bf73c1b7d429ed3ca8d222f62f5bfae74fc3e","commit_message":"stag2000: split stag2000.c into 25 module files (map/static bg, lab, shops, area select, walker, xa stream ...), beetle shop menu draw moved in from 8CE0, .bss aligned per file (1 filler gone)","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118137,"matched_data":118137,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":142,"complete_units":0}},{"timestamp":"2026-10-06T18:54:20Z","commit_sha":"796410658a523b915c1d3fce11b5e44cd94e58e9","commit_message":"stag4000: split stag4000_C2CC.c into cellgrid, turnqueue, dungfile, trap, status, textobj and camera files (1 filler gone)","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":118,"complete_units":0}},{"timestamp":"2026-10-06T18:52:03Z","commit_sha":"b1dc3e6c5a74618f2d59791cd44ca26f244ef2a7","commit_message":"stag4000: split stag4000_A180.c into spawn and automap files, automap task moved in from C2CC (1 filler gone)","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":112,"complete_units":0}},{"timestamp":"2026-10-06T18:45:41Z","commit_sha":"ca30aff2260edf3952913be14a9bbeacfd9f29e8","commit_message":"stag4000: stag4000_8338.c is enemy.c and stag4000_9364.c is entity.c now","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":111,"complete_units":0}},{"timestamp":"2026-10-06T18:43:46Z","commit_sha":"8aa7ea5d0600b23752161333df973e1fe56bf72b","commit_message":"stag4000: split stag4000.c into root and linkedmodel files (1 filler gone)","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":111,"complete_units":0}},{"timestamp":"2026-10-06T18:41:28Z","commit_sha":"b4a2378bcb12f7001f1bee9487d9bd9d8f5e82ee","commit_message":"stag4000: split stag4000_1DD4.c into floor, hud, bitswin, itemmenu, enemyinfo, msgwin, obj and player files, entity shadow draw moved in from stag4000.c, .bss aligned per file (2 fillers gone)","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118135,"matched_data":118135,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":110,"complete_units":0}},{"timestamp":"2026-10-06T18:32:37Z","commit_sha":"d2a9e8c4c26000bc3ee48f98fa2c99cab0a7061b","commit_message":"stag3500: split stag3500_5F0C.c into camera, cmdlist and winbanner files","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":103,"complete_units":0}},{"timestamp":"2026-10-06T18:31:01Z","commit_sha":"e08b927b0249adb77f62fa8b97b5996d59ce96c5","commit_message":"stag3500: split stag3500_2334.c into textrect, turn, parts, fighter, roundbanner, xaplay, hud and battlescript files, skill script builder moved in from 5F0C","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":101,"complete_units":0}},{"timestamp":"2026-10-06T18:27:13Z","commit_sha":"894dc5384f23a38975da7d1ad907caf2f03cfb45","commit_message":"stag3500: split stag3500.c into bg, fightbg, actionload, root, vsmenu, matchup and battle files, battle destroy moved in from 2334","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":94,"complete_units":0}},{"timestamp":"2026-10-06T18:21:48Z","commit_sha":"db8b79f34555198e2e04c85718e638f3292add14","commit_message":"stag0000: split stag0000_4668.c into popup, xaplay, soundlist, windowtest, soundtest and camera files","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":88,"complete_units":0}},{"timestamp":"2026-10-06T18:19:29Z","commit_sha":"c78823cea94ca24bc118ad097581a8619d4ba529","commit_message":"stag0000: stag0000_39F0.c is digimodel.c now, digi model draw moved in from 4668","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":83,"complete_units":0}},{"timestamp":"2026-10-06T18:16:27Z","commit_sha":"e27226d24cc8542917055a3a1f223e764b89df8a","commit_message":"stag0000: split stag0000_1AE4.c into font, fightbg, digiview, lineup, videomode and groupview files, group view draw moved in from 39F0","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":83,"complete_units":0}},{"timestamp":"2026-10-05T12:11:29Z","commit_sha":"b78b48ecdf687f9843afc2b49fb3a25d4b5a99e6","commit_message":"stag0000: split stag0000.c into setup, scrollview and dungsel files","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":78,"complete_units":0}},{"timestamp":"2026-10-05T12:07:58Z","commit_sha":"095dff59b93090a0c2d2419ac1ff49fb99e5d907","commit_message":"stag1100: split stag1100_301C.c into vsparty.c and card.c, the zero tail is .bss now (bss-align, 2 fillers gone)","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":76,"complete_units":0}},{"timestamp":"2026-10-05T12:04:01Z","commit_sha":"d52520036ded7e5bde312a7e7d3ebf37d11f2f5d","commit_message":"stag1100: split stag1100.c into root, bg, modemenu and cardmenu files, card menu draw moved in from 301C","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":75,"complete_units":0}},{"timestamp":"2026-10-05T12:01:09Z","commit_sha":"6e45c5392cd9a7414b95c22c52db7a0efa882b15","commit_message":"main: split 77DC.c into 14 files (menus, sound, text, gpu, fade, ot, primbuf, texslot, parts, digibase), all keep -G4","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":72,"complete_units":0}},{"timestamp":"2026-10-05T11:58:50Z","commit_sha":"de79820e136ee6126c220bc38c95ee4d18a03efe","commit_message":"main: split E280.c into gamedata, flagtable, digidata, F400, skill and anim files","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":59,"complete_units":0}},{"timestamp":"2026-10-05T11:55:07Z","commit_sha":"48942e7d80e606c651690f85a3ce7b6093cd2eff","commit_message":"main: split 12654.c into flags.c and savedata.c","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":54,"complete_units":0}},{"timestamp":"2026-10-05T11:53:23Z","commit_sha":"1a09e44d2a6c55ba3309cae6350b2c658f3047ca","commit_message":"main: split 187C.c into task, cdpreload, portrait, faceslot and itemeffect files","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":53,"complete_units":0}},{"timestamp":"2026-10-05T11:51:00Z","commit_sha":"a6ebf462484e063f74de467d40b2771f063b7747","commit_message":"main: split 307C.c into nameentry, gamemode and topmenu files","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":49,"complete_units":0}},{"timestamp":"2026-10-05T11:49:20Z","commit_sha":"b366c6661f493397ac742f778f039444c13ec93b","commit_message":"main: 6530.c becomes itemmenu.c, item menu draw moved in from 77DC.c","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":47,"complete_units":0}},{"timestamp":"2026-10-05T11:44:34Z","commit_sha":"998e109fdbc77a560abd4f791435521214e82c83","commit_message":"main: split 4BCC.c into submenu, status and itemuse files, item use draw moved in from 6530.c","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":47,"complete_units":0}},{"timestamp":"2026-10-05T11:41:21Z","commit_sha":"e0d0a084262c53b2523e60e67bc2476c32c71664","commit_message":"stag1000: split stag1000.c into setup, title, endscreen and movie files","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":45,"complete_units":0}},{"timestamp":"2026-10-05T11:36:15Z","commit_sha":"3336e6f44d21d326f1b755981c9475b5f9a8c4ee","commit_message":"main: split 147FC.c into cdread.c and fxmodel.c","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":42,"complete_units":0}},{"timestamp":"2026-10-04T22:59:08Z","commit_sha":"82e8418c92b8399d256811b519738fe3ccfee6de","commit_message":"gitattributes: mark PsyQ asm as vendored for language stats","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":41,"complete_units":0}},{"timestamp":"2026-10-04T20:52:18Z","commit_sha":"cff2114139f0d93dd8fa94fa09600462ed9a35a2","commit_message":"README: main's data is C now, only PsyQ asm is committed","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":118131,"matched_data":118131,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":41,"complete_units":0}},{"timestamp":"2026-10-04T20:41:55Z","commit_sha":"57b35626c4ae991379b85376ace6dd107d89471f","commit_message":"main: .sdata and .sbss in C\n\nEach small variable is defined by the unit that reaches it with %gp_rel.\nInitialised ones are .sdata; tentative ones are laid out in .sbss by\nmaspsx (new --global-sbss gives them global labels) in the order game.h\ndeclares them. main's .bss and the overlay load area now link inside the\nimage after .sbss (ld_bss_is_noload False, linker_section_order .bss).\nmaspsx's .sdata scan follows .section/.previous from top-level asm.","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":55091,"matched_data":55091,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":41,"complete_units":0}},{"timestamp":"2026-10-04T20:34:27Z","commit_sha":"e4efae9b75e3ddd0378cbf61a6a2e3174ca1ec47","commit_message":"main: split 147FC.c off 13584.c at Cd_CheckNextSector, its .data in C\n\nRetail links the PsyQ sin tables between Cd_FileSectors and Cd_ReadState,\nso the async CD read and Fx model code are their own unit. The cut is\npinned: Cd_GetFileSectors uses the data before the tables, Cd_CheckNextSector\nthe data after them.","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":54934,"matched_data":54934,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":41,"complete_units":0}},{"timestamp":"2026-10-04T20:21:01Z","commit_sha":"49dd69f5bcd781a67a9468ff9d6986c73c9ec2d3","commit_message":"main: 307C, 4BCC and 6530 .data in C (menu tables, overlay file ids, task descs)","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":27756,"matched_data":27756,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":40,"complete_units":0}},{"timestamp":"2026-10-04T19:26:45Z","commit_sha":"fade49969f6b0bdfa94080b9e2c28353c70784fd","commit_message":"stag3000: uninitialised globals in C, retail pad bytes copied from the disc\n\nThe block after .data is .bss in C now (ld_bss_is_noload: False). Retail\nleft 10 non-zero bytes in its padding; build_dw2 copies them from the disc\nat their padding symbols (configs/USA/image_bytes.txt). Stg30_Battle's\nsingle-field symbols are DATA_LABELs.","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":27200,"matched_data":27200,"matched_data_percent":100,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":40,"complete_units":0}},{"timestamp":"2026-10-04T16:29:43Z","commit_sha":"58862ebc6e684f8cf3c17cedd147dccff5fe2615","commit_message":"Add tools/check_asm_guard.py: fail on INCLUDE_ASM/INCLUDE_RODATA in game code","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6358,"matched_data":4838,"matched_data_percent":76.09312,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":40,"complete_units":0}},{"timestamp":"2026-10-04T16:27:13Z","commit_sha":"91a814dbc2048e8e72b33f6aa3adc6d86efb16c2","commit_message":"main: split 105BC.c (sys.c) off E280.c at Gfx_AttachModel\n\nRetail puts the sys.c RCS id after E280's last jump table. Under -G8\ncc1 writes data before function text, so the string can only land\nthere as the first data of a new unit. Cut at Gfx_AttachModel, where\nthe INCLUDE_RODATA sat. A cut at any later function also matches.","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6358,"matched_data":4838,"matched_data_percent":76.09312,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":40,"complete_units":0}},{"timestamp":"2026-10-04T16:16:29Z","commit_sha":"6e8534ac3fd911bdecb93bfe10eb2e978af843dc","commit_message":"match_status.json: refresh after stag2000 renames","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6360,"matched_data":2468,"matched_data_percent":38.80503,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T15:46:12Z","commit_sha":"953d4b80d4474679a9623a3c72e99f7be4786686","commit_message":"stag3000: Stg30DungState.floorSpecialty","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6360,"matched_data":2468,"matched_data_percent":38.80503,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T15:44:40Z","commit_sha":"bee371fccbde4c7cca26fdfc782259f78a9fd34f","commit_message":"name stag4000 fields: 72 fields, 17 types","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6360,"matched_data":2468,"matched_data_percent":38.80503,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T15:32:32Z","commit_sha":"0484d3dd4e3421a9414cf594c00f7ecdc66ef63d","commit_message":"name stag4000 fields: Stg40Ent48.flags","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6360,"matched_data":2468,"matched_data_percent":38.80503,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T15:26:12Z","commit_sha":"c73b3409f45771878e9cc131ef1c873ca716d3bf","commit_message":"name stag3000 fields: 130 fields, 13 types","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6360,"matched_data":2468,"matched_data_percent":38.80503,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T15:15:59Z","commit_sha":"cab0e6114398c7d8a743fc17ae37d320874a8bd7","commit_message":"name stag4000: 257 symbols","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6360,"matched_data":2468,"matched_data_percent":38.80503,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T15:10:44Z","commit_sha":"018084370788fd8f27d2966c280e6e00f4d9f29d","commit_message":"name stag2000 fields: 118 fields","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6360,"matched_data":2468,"matched_data_percent":38.80503,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T15:03:03Z","commit_sha":"943caeccc8c616950bed3ca1a110e8a525741464","commit_message":"name stag3000: 153 symbols","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6360,"matched_data":2468,"matched_data_percent":38.80503,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T14:58:18Z","commit_sha":"2632097f8bc48619da7ad721431b57d5a4190dab","commit_message":"name stag2000: 156 symbols","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6360,"matched_data":2468,"matched_data_percent":38.80503,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T14:56:05Z","commit_sha":"64f1bd4a3e0a46bbbda8c547832971976342049d","commit_message":"asm: drop stale rodata splits left by renames","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6360,"matched_data":2468,"matched_data_percent":38.80503,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T14:54:04Z","commit_sha":"546a6da7a897149dde84583181ab98a0f3aa2ffa","commit_message":"name stag3500: 128 symbols","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6360,"matched_data":2468,"matched_data_percent":38.80503,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T14:40:31Z","commit_sha":"6bd319b297788efebe1e53b75d82a0da1db9c1f9","commit_message":"readme: 1089/1089 game functions","measures":{"fuzzy_match_percent":100,"total_code":328208,"matched_code":328208,"matched_code_percent":100,"total_data":6360,"matched_data":2468,"matched_data_percent":38.80503,"total_functions":1090,"matched_functions":1090,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:44:33Z","commit_sha":"7fdd184acc5ce95ae1ed128e2abf3cd10b9d3ae9","commit_message":"psyq: note what the unidentified SDK functions are","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:43:38Z","commit_sha":"9c1a4a45a37f5b4d71872dbf7af941b46889f6ae","commit_message":"note why the remaining unnamed functions stay unnamed","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:42:51Z","commit_sha":"0cf43fc979e4d850be75b9dcc8e83670e42ee55e","commit_message":"name main + stag0000 leftovers: 18 symbols","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:28:41Z","commit_sha":"02be1d55a812e92ade7e8035d13c95769249cc67","commit_message":"name stag0000 + main globals: 13 symbols","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:26:23Z","commit_sha":"a713c2c3fd723e3b3f1467b2e62d36b479e00181","commit_message":"name main fields: 13 fields, 2 types","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:24:35Z","commit_sha":"854984f55f1e4de46f3df0e866718ff891116c84","commit_message":"name main fields: shared structs (119 fields, 1 type)","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:21:41Z","commit_sha":"94145ed9378fa3ad990b854189b3882b3e3fdbd6","commit_message":"name Psy-Q SDK functions: 22 symbols","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:20:24Z","commit_sha":"cf2519e2b05c1ec73d8d4b5042fb8188417c1564","commit_message":"name stag1100 fields: 78 fields, 2 types","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:19:17Z","commit_sha":"9c29537c3e627ecec7de3e7f477427384e849402","commit_message":"name stag0000 fields: 109 fields, 4 types","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:14:08Z","commit_sha":"896e8edd86af1e335a9d31642e5167a1ec8a535d","commit_message":"name main globals: 69 symbols","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:11:46Z","commit_sha":"913953ba7ae1794b8f3872a563e97095ad35d007","commit_message":"name stag0000 levels 0-19: 82 symbols","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:10:30Z","commit_sha":"5487e59de4ac5466f74a8058ba84ed654cc4e18d","commit_message":"name stag1100 levels 0-18: 73 symbols","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:08:00Z","commit_sha":"c5478d207042ead49e02664afcf7eb87266ac953","commit_message":"name main levels 0-18: 83 symbols","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:06:37Z","commit_sha":"dd375081723949251310389cf3ee63fef899e817","commit_message":"name stag1000 fields: 6 fields, 3 types","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T13:05:07Z","commit_sha":"ebc3fa9f015dc5e4cdf669d3469c606d3d0bd81e","commit_message":"name stag1000 levels 0-11: 33 symbols","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T12:40:18Z","commit_sha":"da3d7dbf63bc48d4154b33b9fe92c290abfce31e","commit_message":"readme: 1086/1088 game functions","measures":{"fuzzy_match_percent":99.99988,"total_code":328208,"matched_code":328008,"matched_code_percent":99.93906,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1089,"matched_functions_percent":99.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T11:36:00Z","commit_sha":"2eda38446be372ebf6b7a976e66f6cef077f5f3e","commit_message":"readme: 1085/1088 game functions","measures":{"fuzzy_match_percent":99.672035,"total_code":328208,"matched_code":326932,"matched_code_percent":99.61122,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1088,"matched_functions_percent":99.81651,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T10:21:03Z","commit_sha":"aeee76d79d456082fa6ad703742eb14d68640835","commit_message":"readme: 1084/1088 game functions","measures":{"fuzzy_match_percent":99.66936,"total_code":328208,"matched_code":326760,"matched_code_percent":99.558815,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1087,"matched_functions_percent":99.72477,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T09:57:52Z","commit_sha":"d4bf7114e10141ed1fdcff3f9d93999b246108b1","commit_message":"readme: 1082/1088 game functions","measures":{"fuzzy_match_percent":99.35059,"total_code":328208,"matched_code":324932,"matched_code_percent":99.001854,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1085,"matched_functions_percent":99.54128,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T09:03:28Z","commit_sha":"2d84af3a09992d968e90acd192609912e5589554","commit_message":"readme: 1081/1088 game functions","measures":{"fuzzy_match_percent":99.34913,"total_code":328208,"matched_code":323048,"matched_code_percent":98.427826,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1084,"matched_functions_percent":99.44954,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T08:43:15Z","commit_sha":"c1bc8df399e65647e91bc13ef3b030f819815844","commit_message":"readme: 1080/1088 game functions","measures":{"fuzzy_match_percent":99.347916,"total_code":328208,"matched_code":321764,"matched_code_percent":98.03661,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1083,"matched_functions_percent":99.357796,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T08:37:33Z","commit_sha":"5610ee6539142d79fc801294a560607f8136a3f6","commit_message":"readme: 1079/1088 game functions","measures":{"fuzzy_match_percent":99.06638,"total_code":328208,"matched_code":320840,"matched_code_percent":97.75508,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1082,"matched_functions_percent":99.26605,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T08:23:57Z","commit_sha":"adbd5f9ceeaca10159eab3d569ab6787f1809323","commit_message":"readme: 1078/1088 game functions","measures":{"fuzzy_match_percent":99.06614,"total_code":328208,"matched_code":320680,"matched_code_percent":97.70633,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1081,"matched_functions_percent":99.17432,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T08:19:59Z","commit_sha":"91fc9b546256241ec205433fc7b702bb79f75dfa","commit_message":"readme: 1077/1088 game functions","measures":{"fuzzy_match_percent":98.596924,"total_code":328208,"matched_code":319140,"matched_code_percent":97.237114,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1080,"matched_functions_percent":99.08257,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T08:00:47Z","commit_sha":"f81d37edb18f88c9bd536bf8cc9a0dc023544234","commit_message":"readme: 1076/1088 game functions","measures":{"fuzzy_match_percent":98.2959,"total_code":328208,"matched_code":318152,"matched_code_percent":96.93609,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1079,"matched_functions_percent":98.99083,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T07:54:24Z","commit_sha":"ff0f181819167cc856fff8c547f71920650b1569","commit_message":"readme: 1074/1088 game functions","measures":{"fuzzy_match_percent":98.04143,"total_code":328208,"matched_code":315968,"matched_code_percent":96.27066,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1077,"matched_functions_percent":98.80734,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T07:43:39Z","commit_sha":"38c591ca6d73c4f98bd0f474715db0c7b615cfa6","commit_message":"readme: 1074/1089 game functions","measures":{"fuzzy_match_percent":98.04143,"total_code":328208,"matched_code":315968,"matched_code_percent":96.27066,"total_data":6360,"matched_data":2248,"matched_data_percent":35.345913,"total_functions":1090,"matched_functions":1077,"matched_functions_percent":98.80734,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T07:34:16Z","commit_sha":"12d41a13077ae535ab4f61c47c812303f2a31bbf","commit_message":"readme: 1072/1089 game functions","measures":{"fuzzy_match_percent":98.035736,"total_code":328208,"matched_code":314708,"matched_code_percent":95.88676,"total_data":6360,"matched_data":2124,"matched_data_percent":33.396225,"total_functions":1090,"matched_functions":1075,"matched_functions_percent":98.623856,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T07:25:22Z","commit_sha":"ae9eb73bf12305385e7d3216bfbe9a7f39001bf0","commit_message":"readme: 1071/1089 game functions","measures":{"fuzzy_match_percent":98.03256,"total_code":328208,"matched_code":312876,"matched_code_percent":95.32857,"total_data":6360,"matched_data":2124,"matched_data_percent":33.396225,"total_functions":1090,"matched_functions":1074,"matched_functions_percent":98.53211,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T01:57:04Z","commit_sha":"9b39ed02837f56f1ca0b6c2f68546d225610df6d","commit_message":"readme: 1069/1089 game functions","measures":{"fuzzy_match_percent":98.02166,"total_code":328208,"matched_code":310280,"matched_code_percent":94.53761,"total_data":6360,"matched_data":2124,"matched_data_percent":33.396225,"total_functions":1090,"matched_functions":1072,"matched_functions_percent":98.348625,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T01:52:10Z","commit_sha":"99bfcede8a6dd4a0e77c7a0b036366a7ebaeab87","commit_message":"readme: 1068/1089 game functions","measures":{"fuzzy_match_percent":98.017876,"total_code":328208,"matched_code":309336,"matched_code_percent":94.249985,"total_data":6360,"matched_data":2124,"matched_data_percent":33.396225,"total_functions":1090,"matched_functions":1071,"matched_functions_percent":98.25688,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T01:49:17Z","commit_sha":"a8994f7f2acbc0bf332c4234d8e62f8b947e6e3d","commit_message":"readme: 1067/1089 game functions","measures":{"fuzzy_match_percent":98.01627,"total_code":328208,"matched_code":308720,"matched_code_percent":94.0623,"total_data":6360,"matched_data":2124,"matched_data_percent":33.396225,"total_functions":1090,"matched_functions":1070,"matched_functions_percent":98.16514,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T01:46:30Z","commit_sha":"cef7512810aac2fc6006a9d3c87ea5b2687d1c73","commit_message":"readme: 1065/1089 game functions","measures":{"fuzzy_match_percent":97.99817,"total_code":328208,"matched_code":304020,"matched_code_percent":92.63029,"total_data":6360,"matched_data":1888,"matched_data_percent":29.685535,"total_functions":1090,"matched_functions":1068,"matched_functions_percent":97.98165,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T01:38:16Z","commit_sha":"b3355839a872afd4cd4763f178c66b134620ca13","commit_message":"readme: 1064/1089 game functions","measures":{"fuzzy_match_percent":97.19259,"total_code":328208,"matched_code":301376,"matched_code_percent":91.8247,"total_data":6360,"matched_data":1772,"matched_data_percent":27.861633,"total_functions":1090,"matched_functions":1067,"matched_functions_percent":97.88991,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-04T01:11:38Z","commit_sha":"3a8a40badaaadc4b2ff59b2e5a50d7801a7130d0","commit_message":"readme: 1062/1089 game functions","measures":{"fuzzy_match_percent":96.880585,"total_code":328208,"matched_code":300352,"matched_code_percent":91.512695,"total_data":6360,"matched_data":1772,"matched_data_percent":27.861633,"total_functions":1090,"matched_functions":1065,"matched_functions_percent":97.70642,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-03T19:44:28Z","commit_sha":"c31422a7ae8f9f34d990823fa5b9fc39740f42cc","commit_message":"readme: 1061/1089 game functions","measures":{"fuzzy_match_percent":96.87197,"total_code":328208,"matched_code":299368,"matched_code_percent":91.21288,"total_data":6360,"matched_data":1772,"matched_data_percent":27.861633,"total_functions":1090,"matched_functions":1064,"matched_functions_percent":97.614685,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-03T19:39:08Z","commit_sha":"d7f674f23fe64cab551f01d7a4acda6a11248e09","commit_message":"matched stag3000:func_8006AAA8, stag3000:func_8006BBD8","measures":{"fuzzy_match_percent":96.87197,"total_code":328208,"matched_code":299368,"matched_code_percent":91.21288,"total_data":6360,"matched_data":1772,"matched_data_percent":27.861633,"total_functions":1090,"matched_functions":1064,"matched_functions_percent":97.614685,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-03T19:24:35Z","commit_sha":"861dc20f876905c8b4f3f4a294d9bbf6d547de39","commit_message":"matched main:Gfx_DrawWireQuads, stag3500:func_80067E48, main:Anim_StepModelAnim, main:func_80011854","measures":{"fuzzy_match_percent":94.58682,"total_code":328208,"matched_code":287068,"matched_code_percent":87.46527,"total_data":6360,"matched_data":1752,"matched_data_percent":27.547169,"total_functions":1090,"matched_functions":1059,"matched_functions_percent":97.15597,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-03T18:49:17Z","commit_sha":"5641ee30f67038344685964e87aedb7bbf87e18f","commit_message":"matched stag4000:func_8006BFB0, stag4000:func_800716EC","measures":{"fuzzy_match_percent":92.35198,"total_code":328208,"matched_code":277664,"matched_code_percent":84.600006,"total_data":6360,"matched_data":1752,"matched_data_percent":27.547169,"total_functions":1090,"matched_functions":1052,"matched_functions_percent":96.51376,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-03T18:44:56Z","commit_sha":"92b86506fd7356932adb4086b347669a7d332ec7","commit_message":"matched stag4000:func_80069F84, stag4000:func_80063A34, stag4000:func_8006FFCC","measures":{"fuzzy_match_percent":91.26271,"total_code":328208,"matched_code":272256,"matched_code_percent":82.95227,"total_data":6360,"matched_data":1544,"matched_data_percent":24.27673,"total_functions":1090,"matched_functions":1047,"matched_functions_percent":96.055046,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-03T18:41:44Z","commit_sha":"254a94f6591c6687636d948ec45d9600833562de","commit_message":"matched main:Gpu_SkipEmptyOtEntries, stag2000:func_80067978, stag2000:func_8006EA90","measures":{"fuzzy_match_percent":90.1605,"total_code":328208,"matched_code":265828,"matched_code_percent":80.99376,"total_data":6360,"matched_data":1468,"matched_data_percent":23.081762,"total_functions":1090,"matched_functions":1041,"matched_functions_percent":95.504585,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-03T18:18:35Z","commit_sha":"4c741fc77737d73f487b1dc312b8d342010d3508","commit_message":"readme: 1032/1089 game functions","measures":{"fuzzy_match_percent":89.89804,"total_code":328208,"matched_code":261772,"matched_code_percent":79.75796,"total_data":6360,"matched_data":1468,"matched_data_percent":23.081762,"total_functions":1090,"matched_functions":1035,"matched_functions_percent":94.954124,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-03T18:15:59Z","commit_sha":"4e21734819a08394eb9f8fdc0ca75a39f0f11512","commit_message":"matched main:Menu_BuildDigiList, stag2000:func_80069AAC, stag3000:func_8006FFD0","measures":{"fuzzy_match_percent":89.89804,"total_code":328208,"matched_code":261772,"matched_code_percent":79.75796,"total_data":6360,"matched_data":1468,"matched_data_percent":23.081762,"total_functions":1090,"matched_functions":1035,"matched_functions_percent":94.954124,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-03T17:59:38Z","commit_sha":"90c23f9f970d8c80b1735cdb61d6eb6f543d8c1f","commit_message":"matched main:Menu_ConfirmMultiPick, main:func_80017214, stag0000:func_80065E24, stag2000:func_80066B48","measures":{"fuzzy_match_percent":89.60726,"total_code":328208,"matched_code":254548,"matched_code_percent":77.556915,"total_data":6360,"matched_data":1468,"matched_data_percent":23.081762,"total_functions":1090,"matched_functions":1025,"matched_functions_percent":94.0367,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-03T17:01:48Z","commit_sha":"1e01afa1717aabcd1790fa18d647c6c142898f5b","commit_message":"readme: 1016/1089 game functions","measures":{"fuzzy_match_percent":89.591835,"total_code":328208,"matched_code":249456,"matched_code_percent":76.00546,"total_data":6360,"matched_data":1328,"matched_data_percent":20.880503,"total_functions":1090,"matched_functions":1019,"matched_functions_percent":93.48624,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-02T16:19:38Z","commit_sha":"0c42c165f944e9ad3b20af6aa3b28709f99c9299","commit_message":"matched main:func_80019614","measures":{"fuzzy_match_percent":89.57833,"total_code":328208,"matched_code":246540,"matched_code_percent":75.117,"total_data":6360,"matched_data":1328,"matched_data_percent":20.880503,"total_functions":1090,"matched_functions":1013,"matched_functions_percent":92.93578,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-02T15:43:05Z","commit_sha":"37f23099d6e3626694d7717b31a7f33287a8817d","commit_message":"readme: 1009/1089 game functions","measures":{"fuzzy_match_percent":89.5777,"total_code":328208,"matched_code":246052,"matched_code_percent":74.968315,"total_data":6360,"matched_data":1328,"matched_data_percent":20.880503,"total_functions":1090,"matched_functions":1012,"matched_functions_percent":92.84404,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-02T14:50:41Z","commit_sha":"be24d4417ecb6ddcd9c9c5b0f596b1a8b7036062","commit_message":"matched stag2000:func_80067E9C, stag1100:func_800646C0, stag2000:func_800688E4","measures":{"fuzzy_match_percent":89.57016,"total_code":328208,"matched_code":245588,"matched_code_percent":74.826935,"total_data":6360,"matched_data":1328,"matched_data_percent":20.880503,"total_functions":1090,"matched_functions":1011,"matched_functions_percent":92.7523,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-02T14:25:34Z","commit_sha":"f9b9b11bfe090a20ba53c21b1faced1103aa1448","commit_message":"readme: 1001/1089 game functions","measures":{"fuzzy_match_percent":89.56477,"total_code":328208,"matched_code":242836,"matched_code_percent":73.98844,"total_data":6360,"matched_data":1328,"matched_data_percent":20.880503,"total_functions":1090,"matched_functions":1004,"matched_functions_percent":92.11009,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":39,"complete_units":0}},{"timestamp":"2026-10-02T13:47:50Z","commit_sha":"4a73d20b20ac7986e51ea2d14a5ed640b1e397c0","commit_message":"readme: 999/1089 game functions","measures":{"fuzzy_match_percent":89.559204,"total_code":328208,"matched_code":241368,"matched_code_percent":73.54117,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":1002,"matched_functions_percent":91.926605,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":14,"complete_units":0}},{"timestamp":"2026-10-02T13:39:22Z","commit_sha":"abd9f0ad135c47e40f755ccf31b9413b2c114d79","commit_message":"readme: 994/1089 game functions","measures":{"fuzzy_match_percent":89.54824,"total_code":328208,"matched_code":239432,"matched_code_percent":72.9513,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":997,"matched_functions_percent":91.46789,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":14,"complete_units":0}},{"timestamp":"2026-10-02T13:24:52Z","commit_sha":"9f51d6cf6860136d69cbef6efcd7c198bd1e219c","commit_message":"readme: 987/1089 game functions","measures":{"fuzzy_match_percent":89.5183,"total_code":328208,"matched_code":236304,"matched_code_percent":71.998245,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":990,"matched_functions_percent":90.82569,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":14,"complete_units":0}},{"timestamp":"2026-10-02T13:08:45Z","commit_sha":"0e058687d039a7a1b4183a4e59ac51c639446a46","commit_message":"readme: 980/1089 game functions","measures":{"fuzzy_match_percent":89.5134,"total_code":328208,"matched_code":233840,"matched_code_percent":71.2475,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":983,"matched_functions_percent":90.18349,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":14,"complete_units":0}},{"timestamp":"2026-10-02T12:54:45Z","commit_sha":"d34cc556f146f57a18f2ed281630e64d7002b048","commit_message":"matched main:Menu_NameEntryGetChar","measures":{"fuzzy_match_percent":89.5134,"total_code":328208,"matched_code":233840,"matched_code_percent":71.2475,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":983,"matched_functions_percent":90.18349,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":14,"complete_units":0}},{"timestamp":"2026-10-02T12:36:29Z","commit_sha":"377ff9b2b546110d2e6d53bf8c4fd74adff926f8","commit_message":"matched main:Text_SetOtLayer","measures":{"fuzzy_match_percent":89.51254,"total_code":328208,"matched_code":231672,"matched_code_percent":70.586945,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":980,"matched_functions_percent":89.90826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":14,"complete_units":0}},{"timestamp":"2026-10-02T12:16:42Z","commit_sha":"9b4f42b0a182edfd49025d792ecd887fef56f271","commit_message":"readme: 973/1089 game functions","measures":{"fuzzy_match_percent":89.50389,"total_code":328208,"matched_code":231340,"matched_code_percent":70.48579,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":977,"matched_functions_percent":89.633026,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":14,"complete_units":0}},{"timestamp":"2026-10-02T11:59:22Z","commit_sha":"932a65acdada82ce2e535a632ccaa6fef1a7a72a","commit_message":"default build: retail asm for functions that are not matched\n\nFunctions whose C only matches through asm rewrites or a per-function\nflag set keep their C under #ifdef NORMALIZED and include the retail asm\notherwise. The default build runs no rewrite passes and is still\nbyte-identical. build_dw2.py --strict off builds the C for those too\n(through the normalizer, still byte-identical); flavors/none are the\naccounting builds.\n\nINCLUDE_ASM in -G8 files uses maspsx's function-wrapper form, since cc1\nmoves function text behind file-scope asm there.\n\nGame code 958 of 1089. See #5.","measures":{"fuzzy_match_percent":89.14043,"total_code":328208,"matched_code":224752,"matched_code_percent":68.47852,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":961,"matched_functions_percent":88.16514,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":14,"complete_units":0}},{"timestamp":"2026-10-02T11:50:20Z","commit_sha":"0e909fc70a3397b49e403cf46462e7fc3c31e017","commit_message":"per-unit compiler flags for two small units\n\nSTAG1000's game function after libpress is its own object and was built\nwithout split addresses. In main, the four functions from func_80021D50\nup to Mem_TestBit are a separate unit (D_8005071C is reached with gp only\nthere) built with -fno-cse-skip-blocks -fno-strength-reduce.\n\nOverlays stay at -G0: at -G8 none gains and every one loses.\n\nGame code 954 -> 957 of 1089. See #5.","measures":{"fuzzy_match_percent":89.13847,"total_code":328208,"matched_code":224700,"matched_code_percent":68.462685,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":960,"matched_functions_percent":88.073395,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":14,"complete_units":0}},{"timestamp":"2026-10-02T11:44:26Z","commit_sha":"04a76b4b7ddd84779ab09b88822cc68ee6a448d3","commit_message":"main: split game code by gp use, aspsx gp model\n\naspsx makes an access gp-relative only for symbols the file itself\ndefines. maspsx already works that way, but the build passed\n--dont-force-G0, which let GNU as use .extern sizes instead. Main now\nbuilds with cc1 -G8, maspsx -G8 (aspsx 2.81, gp-relative la) and as -G0.\n\nSmall symbols a unit reaches with gp get a tentative definition there.\nmaspsx --use-comm-section keeps them COMMON, so they bind to the data\nasm labels and no data moves into C.\n\nWhere retail switches between gp and lui for the same symbol, the game\ncode is split: 187C.c (defines Menu_Ctx), 4BCC.c (menu sub tasks),\n12550.c (flags, save, bag, roster) and 13584.c (heap, pad, Sys_Main,\nrand, cd cache). Shared declarations are in include/main/game.h.\n\nstrict_report compares references into the split .rodata like .rodata\nsection relocations; 57 functions whose only manifest entry was the\nrodata binding were already exact.\n\nManifest entries of natural functions are gone and no-op gp8/nosplit\nflavors dropped. Game code 873 -> 954 of 1089. See #5.","measures":{"fuzzy_match_percent":89.12866,"total_code":328208,"matched_code":224228,"matched_code_percent":68.31887,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":957,"matched_functions_percent":87.798164,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":13,"complete_units":0}},{"timestamp":"2026-10-02T11:22:04Z","commit_sha":"87a1dd61b1e01e2f590033fa1f5f7d52a09226da","commit_message":"main game code built with -G8\n\nRetail main game code uses gp-relative access for small data, so the main\nunit now builds with -G8 (cc1 and maspsx/as); the overlays stay at -G0.\n\nGlobals that only looked like scalars are typed as what they are: SysState\nfields, the event flag block at D_8005F624, PadState and GameState fields,\nthe libsnd sequence table and the identity matrix. Two sdata symbols that\nretail only reaches with lui are unsized arrays.\n\nWith -G above 0 cc1 writes all C text after file-scope asm, so the crt0 and\nTask_Run part of main is its own -G0 file (156C.c) and the rest is 187C.c.\npsyq.c stays at -G0 for the same reason.\n\nstrict_report now compares data relocations by resolved address, so a\nstruct field and splat's per-address symbol for the same word are equal.\n\nMain game natural 252 -> 283, total 842 -> 873 of 1089. See #5.","measures":{"fuzzy_match_percent":88.98442,"total_code":328208,"matched_code":211456,"matched_code_percent":64.42744,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":931,"matched_functions_percent":85.41284,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":10,"complete_units":0}},{"timestamp":"2026-10-02T10:44:54Z","commit_sha":"7f662146dce3964e3b98e0f09c391b03c8ff7021","commit_message":"build_dw2: --units, --cc1-extra, --as-g for flag-set experiments","measures":{"fuzzy_match_percent":88.675804,"total_code":328208,"matched_code":207216,"matched_code_percent":63.13557,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":900,"matched_functions_percent":82.56881,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":9,"complete_units":0}},{"timestamp":"2026-10-02T10:39:06Z","commit_sha":"0fe140b6793a336777967f1d85da19a0445c79ed","commit_message":"split PsyQ libraries into their own asm units\n\nThe PsyQ 4.7 code in the exe (PadGetState 0x80024474 to the end of .text)\nis now src/main/psyq.c, a split unit of INCLUDE_ASM stubs. libpress 4.6 in\nSTAG1000 is src/stag1000/stag1000_libpress.c, and the game function after\nit moved to stag1000_tail.c. Both PsyQ units are left out of the objdiff\nreport and the README totals, and their normalizer recipes are gone.\n\nThe earlier C for these functions is kept under the psyq-c-archive tag.\n\nSee #5.","measures":{"fuzzy_match_percent":88.675804,"total_code":328208,"matched_code":207216,"matched_code_percent":63.13557,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1090,"matched_functions":900,"matched_functions_percent":82.56881,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":9,"complete_units":0}},{"timestamp":"2026-10-02T10:29:06Z","commit_sha":"86e0850ce5b8a31524337fe78f2e524d20017399","commit_message":"progress: strict match accounting, PsyQ excluded\n\nA function now counts as matched only when its C reproduces the retail\nbytes with the base flags and no asm_normalizer rewrites. PsyQ library\nfunctions are listed in configs/USA/psyq_funcs.txt and excluded.\n\n- build_dw2.py: --strict {off,flavors,none} and --build-dir\n- strict_report.py: per-function natural/flavor/normalized/asm status\n- README table generated from tools/match_status.json\n- CI base objects built with --strict none\n\nSee #5.","measures":{"fuzzy_match_percent":87.04687,"total_code":447400,"matched_code":216764,"matched_code_percent":48.44971,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1033,"matched_functions_percent":62.644028,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-10-02T09:36:55Z","commit_sha":"ceacc1c6b18e70458be9ec060a3f3dd3385b0de1","commit_message":"readme: overlays 716/738, total 1623/1645","measures":{"fuzzy_match_percent":92.498886,"total_code":447400,"matched_code":413840,"matched_code_percent":92.49888,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1627,"matched_functions_percent":98.665855,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-10-02T06:30:26Z","commit_sha":"7131573c51ef3634abfb769a6fe520f167aa71c8","commit_message":"readme: overlays 714/738, total 1621/1645","measures":{"fuzzy_match_percent":92.01252,"total_code":447400,"matched_code":411664,"matched_code_percent":92.01252,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1625,"matched_functions_percent":98.54457,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-10-02T02:13:41Z","commit_sha":"ce2f7d43e2a2439621e5822b72f404d16dcb872c","commit_message":"readme: overlays 713/738, total 1620/1645","measures":{"fuzzy_match_percent":91.77202,"total_code":447400,"matched_code":410588,"matched_code_percent":91.77201,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1624,"matched_functions_percent":98.48393,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-10-01T17:33:02Z","commit_sha":"bc3979f46e020ff1e0e2b66cad3c0d017b22b04a","commit_message":"readme: overlays 712/738, total 1619/1645","measures":{"fuzzy_match_percent":91.36969,"total_code":447400,"matched_code":408788,"matched_code_percent":91.3697,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1623,"matched_functions_percent":98.42329,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-10-01T14:14:28Z","commit_sha":"4379a0737b2745ca5a794f273625362dc7bed3b2","commit_message":"readme: overlays 709/738, total 1616/1645","measures":{"fuzzy_match_percent":90.8574,"total_code":447400,"matched_code":406496,"matched_code_percent":90.8574,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1620,"matched_functions_percent":98.241356,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-10-01T12:35:34Z","commit_sha":"8dc7a4134672fae7aa6f9c33b5d841757b56845c","commit_message":"readme: overlays 697/738, total 1604/1645","measures":{"fuzzy_match_percent":88.97631,"total_code":447400,"matched_code":398080,"matched_code_percent":88.9763,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1607,"matched_functions_percent":97.453,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-10-01T05:10:29Z","commit_sha":"dedc3cdfe26b672f2b349c346b6665a23c474209","commit_message":"readme: overlays 693/738, total 1600/1645","measures":{"fuzzy_match_percent":88.69001,"total_code":447392,"matched_code":396792,"matched_code_percent":88.69001,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1604,"matched_functions_percent":97.27107,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-10-01T01:15:11Z","commit_sha":"55e657f3bd53087e0eb46966ecc4c3ae25e3eea5","commit_message":"readme: overlays 692/738, total 1599/1645","measures":{"fuzzy_match_percent":88.59524,"total_code":447392,"matched_code":396368,"matched_code_percent":88.59524,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1603,"matched_functions_percent":97.210434,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T23:22:21Z","commit_sha":"9a06ee4b59fc2ddf4f68f3770576193a6c4aa03d","commit_message":"readme: overlays 691/738, total 1598/1645","measures":{"fuzzy_match_percent":88.55143,"total_code":447392,"matched_code":396172,"matched_code_percent":88.55142,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1602,"matched_functions_percent":97.14979,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T22:15:17Z","commit_sha":"0f85d1228b3bf18870977474855df8099bdccb44","commit_message":"readme: overlays 689/738, total 1596/1645","measures":{"fuzzy_match_percent":88.40838,"total_code":447392,"matched_code":395532,"matched_code_percent":88.40837,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1600,"matched_functions_percent":97.0285,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T20:21:02Z","commit_sha":"5a4cd177dedaee0b3d34fc0240e9c9d26169a24c","commit_message":"readme: overlays 686/738, total 1593/1645","measures":{"fuzzy_match_percent":88.13926,"total_code":447392,"matched_code":394328,"matched_code_percent":88.13926,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1597,"matched_functions_percent":96.84657,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T20:21:02Z","commit_sha":"e1070c0ac97d5d9fdeae3b59e101c8272a6a8466","commit_message":"readme: overlays 686/738, total 1593/1645","measures":{"fuzzy_match_percent":88.13926,"total_code":447392,"matched_code":394328,"matched_code_percent":88.13926,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1597,"matched_functions_percent":96.84657,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T18:41:17Z","commit_sha":"21dfc303a809066ed1d8c16c28f590da1113b1a5","commit_message":"readme: overlays 685/738, total 1592/1645","measures":{"fuzzy_match_percent":88.10976,"total_code":447392,"matched_code":394196,"matched_code_percent":88.10976,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1596,"matched_functions_percent":96.785934,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T13:42:02Z","commit_sha":"b3070a313cf6280ea19400bd603449c0c6322488","commit_message":"readme: overlays 684/738, total 1591/1645","measures":{"fuzzy_match_percent":88.03018,"total_code":447392,"matched_code":393840,"matched_code_percent":88.03018,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1595,"matched_functions_percent":96.72529,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T12:48:01Z","commit_sha":"3ce7122cd40832af88e64cd7fc99a723b91248f0","commit_message":"readme: overlays 683/738, total 1590/1645","measures":{"fuzzy_match_percent":88.00604,"total_code":447392,"matched_code":393732,"matched_code_percent":88.00604,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1594,"matched_functions_percent":96.66464,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T12:30:50Z","commit_sha":"70e0412cef6c0db26c9f2bd3b3ae775d9adbecb5","commit_message":"readme: overlays 682/738, total 1589/1645","measures":{"fuzzy_match_percent":87.96492,"total_code":447392,"matched_code":393548,"matched_code_percent":87.96492,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1593,"matched_functions_percent":96.604004,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T11:25:13Z","commit_sha":"319ca9fac1ee5b72e4cd7b9f10e7d74c88bbac0c","commit_message":"add iv_ptr_reduce operator (loop base+index recompute -> decrementing pointer); matched stag2000:func_80066F34\n\nStrength-reduce a loop's per-iteration base+index address recompute into a\nretail-style decrementing pointer: init the pointer once in the preheader\n(addu P,B,C), store at the loop top (st Z,OFF(P)) and decrement it in the\nbranch delay slot (addiu P,P,-1) while the counter still drives the exit test.\nP == B + C every iteration, so the store addresses are identical. Target-guided,\nopt-in, count-preserving; three source lines rewritten, no schedule change.","measures":{"fuzzy_match_percent":87.946144,"total_code":447392,"matched_code":393464,"matched_code_percent":87.946144,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1592,"matched_functions_percent":96.54336,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T10:39:17Z","commit_sha":"1d63f58830565fa89283d9b68dfdcb542decc11f","commit_message":"add slot_migrate operator (relocate delay-slot filler to a later jal); matched stag2000:func_80065FB8\n\nslot_migrate is a word pass: when the target leaves an earlier jal's delay slot a\nnop and sinks an instruction X (e.g. `move rD,$0`) into a later jal's slot, while\nour cc1 fills the earlier slot with X and the later slot with a redundant reload\nY (a call-arg the callee clobbers), move X to the later slot and blank the earlier\none. Count-preserving; sound because rD is not read between the two calls and Y is\ndead at the later slot. Opt-in; only this recipe names it, so zero regression.\n\nfunc_80065FB8 matches with recipe slot_migrate (2 residual words were link-identical\nrelocations, confirmed by the linking overlays-only gate).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01JSKxMbrg38wWNen3cCewK2","measures":{"fuzzy_match_percent":87.64305,"total_code":447392,"matched_code":392108,"matched_code_percent":87.64305,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1591,"matched_functions_percent":96.48272,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T10:13:06Z","commit_sha":"ba79150802a817d877455402db570b629fd84f76","commit_message":"add region_swap operator (saved-reg region 2-cycle); matched stag2000:func_80069AAC\n\nregion_swap is a word pass: over a contiguous run our assembled words use ra\nwhere retail uses rb and vice versa, with no already-matching ra/rb word inside;\nswap them. Sound when ra,rb hold equal values entering the run and are dead\nleaving it (a pure sub-range relabel of two interchangeable registers). Handles\nthe saved-register flag-pair allocation-order artifact that web_cycle pins and\nits identical-token vote cannot disambiguate. Opt-in; no committed recipe but\nthis one names it, so zero regression.\n\nfunc_80069AAC matches with recipe reorder_deep,region_swap.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01JSKxMbrg38wWNen3cCewK2","measures":{"fuzzy_match_percent":87.22195,"total_code":447392,"matched_code":390224,"matched_code_percent":87.22195,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1590,"matched_functions_percent":96.42207,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T09:34:42Z","commit_sha":"7f55b4dc531ef440395c817d8f922ef1e3a122f4","commit_message":"add reorder_deep operator + delay_decouple taken-block relabel; matched stag2000:func_8006CB58","measures":{"fuzzy_match_percent":87.054756,"total_code":447392,"matched_code":389476,"matched_code_percent":87.054756,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1589,"matched_functions_percent":96.36143,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T08:11:49Z","commit_sha":"ec970768197a7c54e81c555d29e3645dd8abdc5a","commit_message":"add reorder_indep_nops operator; matched stag4000:func_80066720","measures":{"fuzzy_match_percent":86.73467,"total_code":447392,"matched_code":388044,"matched_code_percent":86.73468,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1588,"matched_functions_percent":96.30079,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T06:01:02Z","commit_sha":"c45f8454793df7de6c88e959b375c39b6afd3bd3","commit_message":"matched stag4000:func_80067A80","measures":{"fuzzy_match_percent":86.523674,"total_code":447392,"matched_code":387100,"matched_code_percent":86.523674,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1587,"matched_functions_percent":96.24014,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T05:45:29Z","commit_sha":"30b4288a2aee557b5764bfbe40afe34cfb151d6d","commit_message":"matched stag3000:func_8006FC78","measures":{"fuzzy_match_percent":86.45751,"total_code":447392,"matched_code":386804,"matched_code_percent":86.45751,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1586,"matched_functions_percent":96.179504,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-30T05:35:40Z","commit_sha":"dd6279a6ca20638cd4e51ae1200d4cdd8f4927af","commit_message":"matched stag2000:func_8006AB0C","measures":{"fuzzy_match_percent":86.26618,"total_code":447392,"matched_code":385948,"matched_code_percent":86.26618,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1585,"matched_functions_percent":96.11886,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-29T20:49:13Z","commit_sha":"6962aef82531d857ad39f015ffb652eb675bc595","commit_message":"README progress","measures":{"fuzzy_match_percent":85.91481,"total_code":447392,"matched_code":384376,"matched_code_percent":85.91482,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1582,"matched_functions_percent":95.93693,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T09:47:23Z","commit_sha":"f1316d7590354c7b44cbc0a92f39db0e2c4173a3","commit_message":"README progress","measures":{"fuzzy_match_percent":85.668945,"total_code":447392,"matched_code":383276,"matched_code_percent":85.668945,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1580,"matched_functions_percent":95.81564,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T06:21:23Z","commit_sha":"40bb0bb60735906171f43e0b50b7669472c5f294","commit_message":"README progress","measures":{"fuzzy_match_percent":79.687614,"total_code":447392,"matched_code":356516,"matched_code_percent":79.687614,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1565,"matched_functions_percent":94.906006,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T05:51:54Z","commit_sha":"b075e111aaf9f08aa82c6b43089cf0f6db74af8b","commit_message":"README: progress, credit for issue #4","measures":{"fuzzy_match_percent":76.603065,"total_code":447392,"matched_code":342716,"matched_code_percent":76.603065,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1539,"matched_functions_percent":93.32929,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T05:36:10Z","commit_sha":"3509d3bc52273e1b8b5c1b9034dd6b324e470dd7","commit_message":"README progress","measures":{"fuzzy_match_percent":73.25298,"total_code":447392,"matched_code":327728,"matched_code_percent":73.25299,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1526,"matched_functions_percent":92.54093,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T05:26:50Z","commit_sha":"14855c17db7ce9a9a257ced38c12a1a5f6f0ab35","commit_message":"README progress","measures":{"fuzzy_match_percent":70.87386,"total_code":447392,"matched_code":317084,"matched_code_percent":70.87386,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1510,"matched_functions_percent":91.57065,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T04:47:55Z","commit_sha":"af50ed08db5a8167c4cab12ee93051ad0441155b","commit_message":"rename.py --unit stagXXXX: overlay symbols go to sym.stagXXXX.txt, rewrite only that overlay","measures":{"fuzzy_match_percent":69.30924,"total_code":447392,"matched_code":310084,"matched_code_percent":69.30924,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1487,"matched_functions_percent":90.175865,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T04:37:34Z","commit_sha":"72617cf3167458a9c04069f85552eb9e6ae4a67a","commit_message":"README progress: overlays 576/738","measures":{"fuzzy_match_percent":69.30924,"total_code":447392,"matched_code":310084,"matched_code_percent":69.30924,"total_data":80,"matched_data":80,"matched_data_percent":100,"total_functions":1649,"matched_functions":1487,"matched_functions_percent":90.175865,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T02:00:14Z","commit_sha":"99b1bd47b0c3d328f96ae779b96aa6da5927cc55","commit_message":"README progress: overlays 553/738","measures":{"fuzzy_match_percent":67.150955,"total_code":447392,"matched_code":300428,"matched_code_percent":67.150955,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1464,"matched_functions_percent":88.781075,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T01:48:36Z","commit_sha":"4bc11e92e51a5c0ebf94e19f55859696bf278c8e","commit_message":"matched func_80067568 3","measures":{"fuzzy_match_percent":63.87866,"total_code":447392,"matched_code":285788,"matched_code_percent":63.878654,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1407,"matched_functions_percent":85.32444,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T01:47:28Z","commit_sha":"6d9cbfe98f0c52f89e0413a9b29a58cd8f2c3bbe","commit_message":"README progress: overlays 495/738","measures":{"fuzzy_match_percent":63.84379,"total_code":447392,"matched_code":285632,"matched_code_percent":63.84379,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1406,"matched_functions_percent":85.263794,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T01:34:27Z","commit_sha":"cc64e85eeff88cf0ad65b81a2d3f9211758f8538","commit_message":"README progress: STAG3500 105/108","measures":{"fuzzy_match_percent":62.49732,"total_code":447392,"matched_code":279608,"matched_code_percent":62.49732,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1380,"matched_functions_percent":83.68709,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T01:25:06Z","commit_sha":"1fcd0b8f0e09799e0ba9beae8827ddda6a6c9b4d","commit_message":"stag4000: func_8006E588 body (a commit-splitting script took a call site of it for its definition)","measures":{"fuzzy_match_percent":58.160183,"total_code":447392,"matched_code":260204,"matched_code_percent":58.16018,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1354,"matched_functions_percent":82.11037,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T01:02:31Z","commit_sha":"e8c9258b761579060290a473ef4596b04ebfb836","commit_message":"README progress counts K&R definitions","measures":{"fuzzy_match_percent":57.446712,"total_code":447392,"matched_code":257012,"matched_code_percent":57.446712,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1327,"matched_functions_percent":80.473015,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T01:01:54Z","commit_sha":"c1c6ecf4e5ad9c6ae68a1989dc3f07626720a38a","commit_message":"README progress: overlays 416/738","measures":{"fuzzy_match_percent":57.446712,"total_code":447392,"matched_code":257012,"matched_code_percent":57.446712,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1327,"matched_functions_percent":80.473015,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T00:47:18Z","commit_sha":"47b104fda54e721e4fe6af60613029bb9f45d6f0","commit_message":"README progress: overlays 357/738","measures":{"fuzzy_match_percent":56.11276,"total_code":447392,"matched_code":251044,"matched_code_percent":56.11276,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1649,"matched_functions":1268,"matched_functions_percent":76.89509,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T00:36:55Z","commit_sha":"39caaa0f58dc597fef1da59139f6fc3a14a31ebf","commit_message":"README progress: overlays 298/739","measures":{"fuzzy_match_percent":55.57036,"total_code":447404,"matched_code":248624,"matched_code_percent":55.57036,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":1209,"matched_functions_percent":73.27273,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T00:34:52Z","commit_sha":"1f404ca8fc621d5430fc2577418b223e480c8c72","commit_message":"README progress: overlays 282/739","measures":{"fuzzy_match_percent":53.178783,"total_code":447404,"matched_code":237924,"matched_code_percent":53.17878,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":1193,"matched_functions_percent":72.30303,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T00:19:11Z","commit_sha":"c996fce80cb6a010147f24cec0083e5bec9975df","commit_message":"README progress: overlays 252/739","measures":{"fuzzy_match_percent":52.49126,"total_code":447404,"matched_code":234848,"matched_code_percent":52.49126,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":1163,"matched_functions_percent":70.48485,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T00:14:04Z","commit_sha":"db5a16b6cde17f2148bb7cbfff1ec891a0f21b1e","commit_message":"README progress: STAG1100 55/55","measures":{"fuzzy_match_percent":51.396946,"total_code":447404,"matched_code":229952,"matched_code_percent":51.39695,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":1104,"matched_functions_percent":66.909096,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T00:10:58Z","commit_sha":"e3fa3a9b98f42b7e5d6b910e1aca99c4340a70cd","commit_message":"README progress: overlays 175/739","measures":{"fuzzy_match_percent":48.46984,"total_code":447404,"matched_code":216856,"matched_code_percent":48.469837,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":1086,"matched_functions_percent":65.818184,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-28T00:06:38Z","commit_sha":"f104cbe181b34aae0ba7bffdf6a4ed40c10e0334","commit_message":"README progress: overlays 150/739","measures":{"fuzzy_match_percent":48.11848,"total_code":447404,"matched_code":215284,"matched_code_percent":48.118477,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":1061,"matched_functions_percent":64.30303,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-27T23:53:19Z","commit_sha":"913e2fcbef45a99c792d72d6d2402072ad23340c","commit_message":"README progress: overlays 125/739","measures":{"fuzzy_match_percent":47.99242,"total_code":447404,"matched_code":214720,"matched_code_percent":47.992416,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":1036,"matched_functions_percent":62.78788,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-27T23:49:28Z","commit_sha":"0d567b3877be4f61182eea5e7e21aa8a55f09aff","commit_message":"name struct fields round 4: 114 fields + 2 types (pad, text, menu, model structs)","measures":{"fuzzy_match_percent":45.912865,"total_code":447404,"matched_code":205416,"matched_code_percent":45.912865,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":997,"matched_functions_percent":60.424244,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-27T23:36:08Z","commit_sha":"a68a80a7b908ed694fb1721ee39070b112459181","commit_message":"README progress: overlays 86/739","measures":{"fuzzy_match_percent":45.912865,"total_code":447404,"matched_code":205416,"matched_code_percent":45.912865,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":997,"matched_functions_percent":60.424244,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-27T23:34:01Z","commit_sha":"7760a82ad94a57660b7ac883c9c98a52a6a20db7","commit_message":"README progress: STAG1000 33/35","measures":{"fuzzy_match_percent":45.388954,"total_code":447404,"matched_code":203072,"matched_code_percent":45.388954,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":958,"matched_functions_percent":58.060604,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-27T23:23:59Z","commit_sha":"041a6cbcfc0448bae378d48e6f634e0009ac253d","commit_message":"4b.5: NON_MATCHING C bodies for 35 BIOS dispatch stubs (one call through the A0/B0/C0 kernel table)","measures":{"fuzzy_match_percent":44.53335,"total_code":447404,"matched_code":199244,"matched_code_percent":44.53335,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":944,"matched_functions_percent":57.21212,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-27T23:09:21Z","commit_sha":"33e98ef352c2a42b7de45d33dc701959fac058e4","commit_message":"README progress: overlays 33/739 (restored asm sources count as matched); total 940/1646","measures":{"fuzzy_match_percent":44.53335,"total_code":447404,"matched_code":199244,"matched_code_percent":44.53335,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":944,"matched_functions_percent":57.21212,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-27T22:55:49Z","commit_sha":"05440e327a762386c6e8a704cd82372d5fa38fd5","commit_message":"matched func_80064CB4 1","measures":{"fuzzy_match_percent":43.935234,"total_code":447404,"matched_code":196568,"matched_code_percent":43.935238,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":932,"matched_functions_percent":56.484848,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-27T22:51:18Z","commit_sha":"82ce9cd9a825b314c0b2130f17c4642b5cc4663e","commit_message":"name the stage overlay loader: Ovl_Load, Ovl_GetCurrentId, Ovl_CurrentId, Ovl_FileIds (id -> STAG file map by Cd LBA and sector count); rename.py also rewrites the overlay sym files","measures":{"fuzzy_match_percent":43.886063,"total_code":447404,"matched_code":196348,"matched_code_percent":43.886063,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":926,"matched_functions_percent":56.121212,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-27T22:02:20Z","commit_sha":"05a2c4ed84cca9f7e636e95f754cd7dac0f46080","commit_message":"split the 7 stage overlays (AAA/3.PRO/STAG*.PRO): splat config per overlay, build links and SHA-1 checks each one, decomp.dev categories and README progress per overlay","measures":{"fuzzy_match_percent":43.886063,"total_code":447404,"matched_code":196348,"matched_code_percent":43.886063,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":1650,"matched_functions":926,"matched_functions_percent":56.121212,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":8,"complete_units":0}},{"timestamp":"2026-09-27T20:07:14Z","commit_sha":"03b4a909f69df5286d161462fab7d8ac586d9d40","commit_message":"README: 907/907 matched (830 C, 77 assembly sources)","measures":{"fuzzy_match_percent":100,"total_code":196228,"matched_code":196228,"matched_code_percent":100,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":911,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T19:56:31Z","commit_sha":"1b128926a0b947a28e7f39b349de3733e7cbb7e3","commit_message":"matched func_80020FD0 (build POLY_GT3 packets for a model tri list: GTE nclip/opz backface cull, colours, uv, clut, tpage, then link into the OT via const_unhoist+giv_unreduce+reg_realloc_inj+arg_unrename+web_realloc+save_slot+block_iso_wide+padnop)","measures":{"fuzzy_match_percent":100,"total_code":196228,"matched_code":196228,"matched_code_percent":100,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":911,"matched_functions_percent":100,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T19:33:22Z","commit_sha":"62ddca8c08db2761d7c64283f84e7c8ece10d8fd","commit_message":"name functions: third pass, 61 functions (pad info tables, menus, frame rate, libgte/libsnd/libspu/libmcrd); rename.py renames ASM_SOURCE files","measures":{"fuzzy_match_percent":99.57804,"total_code":196228,"matched_code":195400,"matched_code_percent":99.57804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":910,"matched_functions_percent":99.89023,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T18:50:51Z","commit_sha":"09f7b683bad4938f839c0d0307eb8759333342dd","commit_message":"name fields: third wave, 161 fields and 7 struct types (pad driver, model, text box, sequencer, card)","measures":{"fuzzy_match_percent":99.57804,"total_code":196228,"matched_code":195400,"matched_code_percent":99.57804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":910,"matched_functions_percent":99.89023,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T17:40:56Z","commit_sha":"d7dd213451b56367802f8b0b802f3efca051f2f7","commit_message":"name fields: task object (Actor) id, state levels, counters, children, model","measures":{"fuzzy_match_percent":99.57804,"total_code":196228,"matched_code":195400,"matched_code_percent":99.57804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":910,"matched_functions_percent":99.89023,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T17:29:45Z","commit_sha":"b2bfe9a4c33e186e3c53f6d46bdcb11d847eabb5","commit_message":"Give the frame/display state D_8005F770 its own type SysState (it was declared as a task object)","measures":{"fuzzy_match_percent":99.57804,"total_code":196228,"matched_code":195400,"matched_code_percent":99.57804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":910,"matched_functions_percent":99.89023,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T17:12:25Z","commit_sha":"49dde7cab33c03c32079ea08f31128a3b3f6a661","commit_message":"name fields: second wave, 374 fields and 14 struct types","measures":{"fuzzy_match_percent":99.57804,"total_code":196228,"matched_code":195400,"matched_code_percent":99.57804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":910,"matched_functions_percent":99.89023,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T16:50:50Z","commit_sha":"2d8387c3c4583917fc3d19c81c95fbf296d00595","commit_message":"name fields: 322 fields and 20 struct types (task/text/CD cache/card/sound/SPU/GPU/pad structs)","measures":{"fuzzy_match_percent":99.57804,"total_code":196228,"matched_code":195400,"matched_code_percent":99.57804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":910,"matched_functions_percent":99.89023,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T16:21:28Z","commit_sha":"e9428c3e8b4266af54beda2e3f9ede6883f78d58","commit_message":"name fields: FadeState (mode, speed, additive); tools/rename_field.py","measures":{"fuzzy_match_percent":99.57804,"total_code":196228,"matched_code":195400,"matched_code_percent":99.57804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":910,"matched_functions_percent":99.89023,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T16:03:13Z","commit_sha":"22c8d65b314b5898baad9f6861ecc16da720f53f","commit_message":"Readable C for 22 restored assembly functions under NON_MATCHING (Task_Run, libapi BIOS wrappers, libgte)","measures":{"fuzzy_match_percent":99.57804,"total_code":196228,"matched_code":195400,"matched_code_percent":99.57804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":910,"matched_functions_percent":99.89023,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T15:42:21Z","commit_sha":"46ae5f4b3ea9d922ddcbdcd6edc8b96ffd02883c","commit_message":"name libc: memcpy, memset, strcpy, strlen, strcmp","measures":{"fuzzy_match_percent":99.57804,"total_code":196228,"matched_code":195400,"matched_code_percent":99.57804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":910,"matched_functions_percent":99.89023,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T15:30:34Z","commit_sha":"5785613860ca6e358186eb7ebb0411708ca07fce","commit_message":"name second pass (wave 8), and GsInitGraph moved to the function main calls (func_8002AC54)","measures":{"fuzzy_match_percent":99.57804,"total_code":196228,"matched_code":195400,"matched_code_percent":99.57804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":910,"matched_functions_percent":99.89023,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T15:18:55Z","commit_sha":"538397a9261a64b20c661a6b5b19ad01a1fcbb7f","commit_message":"name second pass (wave 7)","measures":{"fuzzy_match_percent":99.57804,"total_code":196228,"matched_code":195400,"matched_code_percent":99.57804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":910,"matched_functions_percent":99.89023,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T15:08:38Z","commit_sha":"e52a04ac10d91ca6f9357c4e1e2c2581540e15a9","commit_message":"README: progress 906/907 (99.89%): 829 C, 77 hand-written assembly restored as source","measures":{"fuzzy_match_percent":99.57804,"total_code":196228,"matched_code":195400,"matched_code_percent":99.57804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":910,"matched_functions_percent":99.89023,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T14:56:02Z","commit_sha":"d606c5b7d3579e398525f787b8f55034c96a3d0e","commit_message":"name levels 6-12 (wave 6): 38 symbols","measures":{"fuzzy_match_percent":99.40273,"total_code":196228,"matched_code":195056,"matched_code_percent":99.40274,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":909,"matched_functions_percent":99.78046,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T14:32:08Z","commit_sha":"a7093bea7c1ff24d3bf691869de08aa8c971b453","commit_message":"README: progress 905/907 (99.78%): 829 C, 76 hand-written assembly restored as source","measures":{"fuzzy_match_percent":99.40273,"total_code":196228,"matched_code":195056,"matched_code_percent":99.40274,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":909,"matched_functions_percent":99.78046,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T14:05:52Z","commit_sha":"2356c17d9930a6da86217bf581b1d8961c446a89","commit_message":"name levels 3-5 (wave 5): 44 symbols","measures":{"fuzzy_match_percent":98.901276,"total_code":196228,"matched_code":194072,"matched_code_percent":98.901276,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":908,"matched_functions_percent":99.67069,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T13:56:17Z","commit_sha":"70b264c6f6069a8b2947f9c788bc3846adca8dda","commit_message":"README: progress 904/907 (99.67%): 828 C, 76 hand-written assembly restored as source","measures":{"fuzzy_match_percent":98.901276,"total_code":196228,"matched_code":194072,"matched_code_percent":98.901276,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":908,"matched_functions_percent":99.67069,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T13:22:40Z","commit_sha":"ed81d517cfc8a56b0fd23dac8f52b36566caeacc","commit_message":"asm: add the split files of renamed functions (the rename commits only removed the old names)","measures":{"fuzzy_match_percent":98.371284,"total_code":196228,"matched_code":193032,"matched_code_percent":98.371284,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":906,"matched_functions_percent":99.45116,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T10:55:06Z","commit_sha":"076dba806f7f3b05724cc9babfe3000cc70f455e","commit_message":"asm_normalizer: take a renamed function's start address from its retail .s (taken_fill, label_nop)","measures":{"fuzzy_match_percent":94.788124,"total_code":196244,"matched_code":186016,"matched_code_percent":94.788124,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":825,"matched_functions_percent":90.55982,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T09:56:54Z","commit_sha":"b52a8482075f3a421b36066eec00eb05795f2cee","commit_message":"README: progress 821/907 (90.52%)","measures":{"fuzzy_match_percent":94.788124,"total_code":196244,"matched_code":186016,"matched_code_percent":94.788124,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":825,"matched_functions_percent":90.55982,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T08:57:02Z","commit_sha":"4d386a1c140cc53051c82facaf09d4b3d6c13595","commit_message":"matched func_8001A9C8 (text-box renderer: walks 50 text records, interprets 0xEF-0xFF control bytes and emits POLY_FT4 glyph packets via nodiv+sreg_perm+save_slot+web_realloc+sched_match+block_iso+zst_place+sreg_const_use+delay_fill+padnop)","measures":{"fuzzy_match_percent":94.333466,"total_code":196240,"matched_code":185120,"matched_code_percent":94.33347,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":824,"matched_functions_percent":90.45006,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T08:34:22Z","commit_sha":"e2b3268e1eb873649b528efc630596e842573c99","commit_message":"matched func_8002BD94 (walk a coordinate chain to its root and rebuild each local-to-world matrix (GsGetLw) via nosplit+la_split+la_unhoist+param_copy_fresh+const_uncse+li_uncopy+web_realloc_void+block_iso+movstr_rename_split+fallthrough_fill+delay_fill+padnop)","measures":{"fuzzy_match_percent":92.01794,"total_code":196240,"matched_code":180576,"matched_code_percent":92.01794,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":823,"matched_functions_percent":90.34029,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T08:12:06Z","commit_sha":"25a634d7bd48d6d0e153a858b96f59212ac0f49c","commit_message":"matched func_80018048 (run the party list menu state machine via gp8+range_unswap+slot_rethread+const_uncse+web_realloc_void+padnop)","measures":{"fuzzy_match_percent":91.299736,"total_code":196224,"matched_code":179152,"matched_code_percent":91.299736,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":821,"matched_functions_percent":90.12074,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T03:17:20Z","commit_sha":"9f7c10f497db1b352b38538a83975c03b1c015ac","commit_message":"matched func_800294AC (drain the gpu command queue (wait for gpu ready before each entry), then fire the idle callback via nosplit+at_dest+block_iso_wide+taken_fill+delay_fill+padnop)","measures":{"fuzzy_match_percent":89.83997,"total_code":196220,"matched_code":176284,"matched_code_percent":89.83997,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":819,"matched_functions_percent":89.90121,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T02:53:30Z","commit_sha":"5874c7441e6a0e795af56875267b357a40f7166b","commit_message":"matched func_80017214 (swap the selected menu record with the held one, or show why it cannot be taken via gp8_nosplit+sched_pre+sched_match+hi_interleave+padnop)","measures":{"fuzzy_match_percent":89.53012,"total_code":196220,"matched_code":175676,"matched_code_percent":89.53011,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":818,"matched_functions_percent":89.791435,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T02:09:29Z","commit_sha":"61d71d96097651dabcd04bed7729335ec47a4f9f","commit_message":"matched func_800218CC (emit closed-triangle outline packets plus a tpage packet per triangle and link them into the ordering table via web_resched)","measures":{"fuzzy_match_percent":89.15299,"total_code":196220,"matched_code":174936,"matched_code_percent":89.15299,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":817,"matched_functions_percent":89.68166,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T01:49:03Z","commit_sha":"99017bcc1370757ae60a54da52c3f111903abdba","commit_message":"matched func_80039334 (key on every free voice slot playing this channel/program/note: scale volume by channel, program and velocity, pan it into left/right levels and flag the voice for an update via nosplit_hf+sched_pre+reg_realloc_inj+sreg_perm+web_realloc+save_slot+sched_match+block_iso_wide+taken_fill+delay_fill+padnop)","measures":{"fuzzy_match_percent":88.024956,"total_code":196208,"matched_code":172712,"matched_code_percent":88.024956,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":815,"matched_functions_percent":89.46213,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T01:27:50Z","commit_sha":"b8158a2915473a64cc6b12f4c100209eb38e5f79","commit_message":"matched func_80030554 (send a CD command with retries (CdControl) via nosplit_hf+zero_remat+sched_match+delay_fill+padnop)","measures":{"fuzzy_match_percent":87.29104,"total_code":196208,"matched_code":171272,"matched_code_percent":87.29104,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":814,"matched_functions_percent":89.352356,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T01:06:36Z","commit_sha":"fa0ee3da3fd9ffcc9215bacad00eaa4b8a707b00","commit_message":"matched func_80021ABC (emit line-f4/line-f2/tpage outline packets for a quad list and link them into the ordering table via sched_match+padnop)","measures":{"fuzzy_match_percent":87.12998,"total_code":196208,"matched_code":170956,"matched_code_percent":87.12999,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":813,"matched_functions_percent":89.24259,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-27T00:40:27Z","commit_sha":"4bc479114ade8609c34db1219f4b27a2a01a0738","commit_message":"matched func_80038BE4 (set a program's L/R volume and rescale every active voice of it (volume, pan, mono, curve) via nosplit_hf+sreg_perm+web_realloc+save_slot+web_resched+block_iso+delay_fill+padnop)","measures":{"fuzzy_match_percent":86.38588,"total_code":196208,"matched_code":169496,"matched_code_percent":86.38588,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":811,"matched_functions_percent":89.023056,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T23:52:36Z","commit_sha":"6e8207d4c74b9f18957a24b898ba7c4fa84fa3a8","commit_message":"matched func_8002A054 (printf core: walk a format string and emit characters via func_8002A744 (flags, width, precision, c/d/i/n/o/p/s/u/x conversions) via nosplit+zero_remat+zext_drop+web_realloc+sched_match+taken_fill+delay_fill+padnop)","measures":{"fuzzy_match_percent":85.40121,"total_code":196208,"matched_code":167564,"matched_code_percent":85.40121,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":809,"matched_functions_percent":88.80351,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T23:08:37Z","commit_sha":"487e774badc98aad78026c92153e5fd68a7c9408","commit_message":"matched func_8002E2C4 (stream sector-ready handler: read the sector header, validate it against the ring and the stream channel, then DMA the sector data via nosplit+shift_const_fold+zero_remat+sched_match+block_iso+ulcopy_rename+delay_fill+epilogue_unfill+padnop)","measures":{"fuzzy_match_percent":84.54199,"total_code":196196,"matched_code":165868,"matched_code_percent":84.54199,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":808,"matched_functions_percent":88.69374,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T22:36:21Z","commit_sha":"804cdcfdb949887c1de55b69f2b20d3fb3e1ac93","commit_message":"matched func_800401E4 (write the memory card directory frames, the 20 link frames and the MC header frame, retrying each write up to 8 times via nosplit+zero_remat+sched_pre+sreg_perm+web_realloc+save_slot+web_resched+block_iso+delay_fill+padnop)","measures":{"fuzzy_match_percent":82.72234,"total_code":196184,"matched_code":162288,"matched_code_percent":82.72234,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":806,"matched_functions_percent":88.474205,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T21:06:54Z","commit_sha":"5e57fb0902f173bf127fff7e956f22a8b2625115","commit_message":"matched func_8002C164 (rebuild the camera matrix from a look-from/look-at pair: yaw and pitch from the deltas, optional parent transform, then publish the result via nosplit+sched_pre+web_realloc+web_resched+block_iso+slot_sink+selfmove_drop+padnop)","measures":{"fuzzy_match_percent":81.831345,"total_code":196184,"matched_code":160540,"matched_code_percent":81.831345,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":804,"matched_functions_percent":88.25467,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T20:47:04Z","commit_sha":"84e8547c9d89f78d5664241eba68c1ac088e63aa","commit_message":"matched func_80036784 (run the sound driver per-frame voice tick (key-off scan, callbacks, attribute flush) via nosplit_nodb+zero_remat+la_copy+sreg_perm+web_realloc+save_slot+sched_match+block_iso+taken_fill+fallthrough_fill+delay_fill+padnop)","measures":{"fuzzy_match_percent":79.79528,"total_code":196172,"matched_code":156536,"matched_code_percent":79.79528,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":801,"matched_functions_percent":87.925354,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T20:03:48Z","commit_sha":"ab68ce42dd38328a614d411580058b700c925a4c","commit_message":"matched func_80030E68 (init the interrupt control block: clear masks, setjmp an interrupt context with its own stack, hook it and install the vsync/dma callbacks via nosplit+web_realloc)","measures":{"fuzzy_match_percent":78.93878,"total_code":196152,"matched_code":154840,"matched_code_percent":78.93878,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":799,"matched_functions_percent":87.70582,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T19:38:21Z","commit_sha":"3843846bb491cf913554f83c9bb2192cc4a31e20","commit_message":"matched func_80030258 (drain events to rx/tx callbacks via nosplit+reg_realloc+save_slot+block_iso+delay_fill+padnop)","measures":{"fuzzy_match_percent":78.82867,"total_code":196152,"matched_code":154624,"matched_code_percent":78.82866,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":798,"matched_functions_percent":87.59605,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T19:20:49Z","commit_sha":"29f97e34c1d34227a15cbd1e0aaf501a561ddd77","commit_message":"matched func_80034A24 (reset a sequence channel and parse its SEQ header (resolution, tempo, time signature, data length) via nosplit+zero_remat+load_remat+web_resched+delay_fill+padnop)","measures":{"fuzzy_match_percent":76.860954,"total_code":196136,"matched_code":150752,"matched_code_percent":76.860954,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":791,"matched_functions_percent":86.82766,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T16:33:43Z","commit_sha":"2c2028e14464b831b4b8f2c8024592d1dd3c0bb8","commit_message":"matched func_8003B074 (coalesce adjacent free heap blocks, drop empty ones, sort by address, trim the dead tail and mark the trailing free run via nosplit+commutative_swap+web_resched+fallthrough_fill)","measures":{"fuzzy_match_percent":75.93865,"total_code":196132,"matched_code":148940,"matched_code_percent":75.93865,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":789,"matched_functions_percent":86.60812,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T16:14:07Z","commit_sha":"ecd0f242734d3d5376f1ca4e085e2eb6600cd2a1","commit_message":"matched func_8003ADA4 (allocate a block from the SPU memory list (SpuMalloc) via nosplit+zero_remat+web_realloc+commutative_swap+sched_match+fallthrough_fill+padnop)","measures":{"fuzzy_match_percent":75.54708,"total_code":196132,"matched_code":148172,"matched_code_percent":75.54708,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":788,"matched_functions_percent":86.49835,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T15:57:41Z","commit_sha":"9578628d15200d18d28410015022db4902598f59","commit_message":"matched func_8002B564 (set one row of the light matrix from a normalized light direction and one column of the color matrix from its rgb via nosplit+reg_realloc)","measures":{"fuzzy_match_percent":75.18458,"total_code":196120,"matched_code":147452,"matched_code_percent":75.184586,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":787,"matched_functions_percent":86.38858,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T15:39:53Z","commit_sha":"099e43bdbcdf9be67ab5ac554e8032db5bd7dfd2","commit_message":"matched func_8002F860 (issue a CD controller command with its parameters and, unless async, wait for the command to complete via gp8_nosplit+zero_remat+sreg_perm+web_realloc+save_slot+sched_match+block_iso+delay_fill+padnop)","measures":{"fuzzy_match_percent":74.568634,"total_code":196120,"matched_code":146244,"matched_code_percent":74.56863,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":786,"matched_functions_percent":86.27882,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T15:30:29Z","commit_sha":"519effc82d73d91fe978fe4a4818d70e2888fa72","commit_message":"matched func_8003EF1C (search cd directory entries into a caller buffer with retries via nosplit_nodb+zero_remat+sreg_swap+save_slot+sched_match+taken_fill+fallthrough_fill+delay_fill+padnop)","measures":{"fuzzy_match_percent":74.04038,"total_code":196120,"matched_code":145208,"matched_code_percent":74.04038,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":785,"matched_functions_percent":86.169044,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T15:11:41Z","commit_sha":"c126dae81084f55eea160921565b6277162f6cb2","commit_message":"matched func_8001F9AC (emit an actor's fixed and animated sprite parts as move-image packets via gp8+sched_pre+reg_realloc+web_realloc+sched_match+block_iso+call_slot_sink+giv_rebase+padnop)","measures":{"fuzzy_match_percent":73.214355,"total_code":196120,"matched_code":143588,"matched_code_percent":73.214355,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":783,"matched_functions_percent":85.9495,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T14:50:58Z","commit_sha":"0e45220853ec4892e9f2268496fda519e2a9a257","commit_message":"matched func_8002F318 (poll the CD controller until a status byte settles, with a timeout report and event callbacks via gp8_nosplit+sreg_perm+web_realloc+save_slot+block_iso+delay_fill+padnop)","measures":{"fuzzy_match_percent":72.684074,"total_code":196120,"matched_code":142548,"matched_code_percent":72.684074,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":782,"matched_functions_percent":85.83974,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T14:25:17Z","commit_sha":"de7d44fefb2b9ecace48663bb48ad0959fa57d45","commit_message":"matched func_800388A4 (retune a playing voice by a pitch bend amount via nosplit+sched_pre+web_realloc+web_resched+reorder_indep+padnop)","measures":{"fuzzy_match_percent":72.35774,"total_code":196120,"matched_code":141908,"matched_code_percent":72.357735,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":781,"matched_functions_percent":85.729965,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T13:44:12Z","commit_sha":"4410fd3c772fe7ce8424d402c84083601e3304b7","commit_message":"matched func_8003C904 (set SPU voice attributes (pitch, note, volume, ADSR) for every voice in the mask via nosplit+reg_realloc+save_slot+block_iso+delay_fill+padnop)","measures":{"fuzzy_match_percent":71.870285,"total_code":196120,"matched_code":140952,"matched_code_percent":71.870285,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":779,"matched_functions_percent":85.51043,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T12:27:04Z","commit_sha":"63a2ddb77243808f65af7eb7a5301150b98eb1dc","commit_message":"progress: 771/907 (85.01%)","measures":{"fuzzy_match_percent":70.59339,"total_code":196092,"matched_code":138428,"matched_code_percent":70.59339,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":775,"matched_functions_percent":85.07135,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T12:17:47Z","commit_sha":"77a466fc02e98ca717326c21b5c93bb3b35a5431","commit_message":"matched func_80031110 (set stream channel value and its enable bit via nosplit+sreg_perm+save_slot+sched_match+delay_fill+padnop)","measures":{"fuzzy_match_percent":70.350655,"total_code":196092,"matched_code":137952,"matched_code_percent":70.350655,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":774,"matched_functions_percent":84.96158,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T12:06:26Z","commit_sha":"bb3d83f47aedb89501b11d3186c8d98ac84d7374","commit_message":"matched func_80035074 (restart the CD stream at the current speed via nosplit+zero_remat+delay_fill+padnop)","measures":{"fuzzy_match_percent":70.18338,"total_code":196092,"matched_code":137624,"matched_code_percent":70.18339,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":773,"matched_functions_percent":84.851814,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T11:42:21Z","commit_sha":"a192744f589496bdd9e4147c225697cb38e2ed02","commit_message":"asm_normalizer: block_iso keeps the window near the anchor drift and needs the target's load-delay nop count","measures":{"fuzzy_match_percent":69.897804,"total_code":196092,"matched_code":137064,"matched_code_percent":69.897804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":772,"matched_functions_percent":84.74204,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T11:29:17Z","commit_sha":"2e9653da44b3d21b7d04bc79cda46e1960ebab4a","commit_message":"matched func_800291FC (gpu command queue add (psyq _addque2 shape) via nosplit+sched_match+web_resched+block_iso+taken_fill+delay_fill+padnop)","measures":{"fuzzy_match_percent":69.897804,"total_code":196092,"matched_code":137064,"matched_code_percent":69.897804,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":772,"matched_functions_percent":84.74204,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T11:14:17Z","commit_sha":"9a090fcc1a3009cd0212a402f5fab55e0f209d8e","commit_message":"matched func_80037744 (allocate a voice: first idle one, else the lowest-priority oldest; age the others via nosplit+zero_remat+sched_match+reorder_indep+padnop)","measures":{"fuzzy_match_percent":68.92887,"total_code":196092,"matched_code":135164,"matched_code_percent":68.92887,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":768,"matched_functions_percent":84.30296,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T10:33:28Z","commit_sha":"cd7384c443c6a9ed5bbc9c55aa99661cf0f643d6","commit_message":"matched func_80024960 (read byte from active data buffer via nosplit+exit_merge+taken_fill+dead_code+padnop)","measures":{"fuzzy_match_percent":68.61065,"total_code":196092,"matched_code":134540,"matched_code_percent":68.61065,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":767,"matched_functions_percent":84.19319,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T10:17:53Z","commit_sha":"7cf1f40703a32167aab2ce34c835b2d83a69d696","commit_message":"matched func_8002CC64 (hyperbolic CORDIC square-root core (repeats step 4) via nosplit_nosr+commutative_swap+web_resched+licm_li+block_iso+padnop)","measures":{"fuzzy_match_percent":68.51478,"total_code":196092,"matched_code":134352,"matched_code_percent":68.51478,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":766,"matched_functions_percent":84.08343,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T10:03:41Z","commit_sha":"334c82fed3f3ee71928fa4d9986b8414b060fb79","commit_message":"matched func_80024704 (init the two menu cursor objects and install their handlers via nosplit_nos2+block_iso+padnop)","measures":{"fuzzy_match_percent":68.34139,"total_code":196092,"matched_code":134012,"matched_code_percent":68.34139,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":765,"matched_functions_percent":83.973656,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T09:54:29Z","commit_sha":"d80e2636ea3f8b83d89165988d951a8eae8936e9","commit_message":"matched func_8001236C (step gauge toward limit via reg_realloc+web_realloc+padnop)","measures":{"fuzzy_match_percent":68.00073,"total_code":196092,"matched_code":133344,"matched_code_percent":68.00073,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":763,"matched_functions_percent":83.75412,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T09:24:44Z","commit_sha":"50d8e58229dbad4fdd1600aaeb148fe7a4ae1cdf","commit_message":"matched func_80039B54 (open a VAB header and reserve its SPU area via nosplit+shift_const_fold+zero_remat+sreg_swap+save_slot+sched_match+delay_fill+padnop)","measures":{"fuzzy_match_percent":67.389534,"total_code":196072,"matched_code":132132,"matched_code_percent":67.38953,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":758,"matched_functions_percent":83.20527,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T02:49:27Z","commit_sha":"aba92f41037e221499403eb3c7c743a9efa7bb18","commit_message":"matched func_80025D4C (handle a pad reply for the id, mode and data states of the sequencer via nosplit+web_realloc+padnop)","measures":{"fuzzy_match_percent":66.44428,"total_code":196056,"matched_code":130268,"matched_code_percent":66.44428,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":754,"matched_functions_percent":82.76619,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T02:35:34Z","commit_sha":"100701beff2da721f41ac634def21dbcfd361552","commit_message":"matched func_8003A1D4 (spu init (psyq _SpuInit reset shape) via nosplit_nodb+sched_match+web_resched+taken_fill+delay_fill+padnop)","measures":{"fuzzy_match_percent":66.12601,"total_code":196056,"matched_code":129644,"matched_code_percent":66.12601,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":753,"matched_functions_percent":82.65642,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T02:06:51Z","commit_sha":"c230f7ca3a9624c588e7222c9f11eff568141ab1","commit_message":"matched func_8003DE18 (memory card write state machine: start a write, poll its result, retry or record the per-port error and report it via nosplit_nodb+sreg_perm+copy_use+save_slot+web_resched+taken_fill+fallthrough_fill+delay_fill)","measures":{"fuzzy_match_percent":65.60779,"total_code":196056,"matched_code":128628,"matched_code_percent":65.60779,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":751,"matched_functions_percent":82.43688,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T01:41:49Z","commit_sha":"3a90a3595307c425cb1530bfbed3abee436a06ba","commit_message":"matched func_8003F2A8 (open stream channel and map result via nosplit_nodb+arg_unprop+sched_pre+sreg_perm+save_slot+sched_match+taken_fill+fallthrough_fill+delay_fill+padnop)","measures":{"fuzzy_match_percent":65.03172,"total_code":196052,"matched_code":127496,"matched_code_percent":65.03172,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":749,"matched_functions_percent":82.21734,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T01:13:14Z","commit_sha":"2474e5585e20b30a80bbdffb1ecabe23e6a8d79d","commit_message":"matched func_80024A1C (mark which pad reply slots to acknowledge for the current request via nosplit+zero_remat+reg_realloc+const_fold+web_realloc+fallthrough_fill+delay_fill+padnop)","measures":{"fuzzy_match_percent":64.90319,"total_code":196052,"matched_code":127244,"matched_code_percent":64.90319,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":748,"matched_functions_percent":82.107574,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T00:59:27Z","commit_sha":"0ed4f4d34743353b2ccab3ec1e77eb8590684db0","commit_message":"matched func_80019614 (redraw the four channel lists via reg_realloc+web_realloc+save_slot+ra_restore_sink+padnop)","measures":{"fuzzy_match_percent":64.57879,"total_code":196052,"matched_code":126608,"matched_code_percent":64.57878,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":747,"matched_functions_percent":81.9978,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T00:24:04Z","commit_sha":"cfc2c85d9fd0fe7f858fb106c4b55251f7c84e4d","commit_message":"matched func_8003F3A4 (poll device status and map it to a result code via nosplit_nodb+la_unfold+sched_match+taken_fill+fallthrough_fill+delay_fill+padnop)","measures":{"fuzzy_match_percent":64.32987,"total_code":196052,"matched_code":126120,"matched_code_percent":64.32987,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":746,"matched_functions_percent":81.88804,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-26T00:04:25Z","commit_sha":"a8664ab8b9ce4529e42b3beb9ed2e4bdad42107f","commit_message":"matched func_8003A454 (spu write by io via nosplit+undo_drop+sched_match+web_resched+delay_fill)","measures":{"fuzzy_match_percent":64.270706,"total_code":196052,"matched_code":126004,"matched_code_percent":64.270706,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":745,"matched_functions_percent":81.77827,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T21:37:52Z","commit_sha":"d8ec175fca9c5c0dba9ec28cbae9b0043d023a90","commit_message":"progress: 740/907 (81.59%)","measures":{"fuzzy_match_percent":64.04219,"total_code":196052,"matched_code":125556,"matched_code_percent":64.04219,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":744,"matched_functions_percent":81.668495,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T21:08:27Z","commit_sha":"696171351078ea7681c1ac62b2419b3cbfc5fdc4","commit_message":"matched func_8003A778 (SPU transfer control via nosplit+web_realloc+sched_match+delay_fill+padnop)","measures":{"fuzzy_match_percent":63.79736,"total_code":196052,"matched_code":125076,"matched_code_percent":63.79736,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":741,"matched_functions_percent":81.33919,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T16:41:28Z","commit_sha":"ff7b2ad2ad118e11319bbda3630122bf3c97bdde","commit_message":"progress: 721/907 (79.49%)","measures":{"fuzzy_match_percent":61.392483,"total_code":196024,"matched_code":120344,"matched_code_percent":61.39248,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":725,"matched_functions_percent":79.58288,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T16:18:39Z","commit_sha":"966e99be2653959046fcf34c304be48771c09d28","commit_message":"matched func_80024654 (initialise the two player records via nosplit+ra_restore_sink+padnop)","measures":{"fuzzy_match_percent":60.938423,"total_code":195988,"matched_code":119432,"matched_code_percent":60.938423,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":720,"matched_functions_percent":79.03403,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T15:55:13Z","commit_sha":"f16c9b43d6f1fd4f2342a00f03eb2e172d8918e9","commit_message":"matched func_80028A18 (clear a vram rect to a color with a gpu fill packet via nosplit+web_realloc+commutative_swap+ra_restore_sink+sched_match+delay_fill)","measures":{"fuzzy_match_percent":60.656776,"total_code":195988,"matched_code":118880,"matched_code_percent":60.656773,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":717,"matched_functions_percent":78.70472,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T15:19:37Z","commit_sha":"1a72fdb3c266285fbfb204e1003c053e313b688d","commit_message":"matched func_80032954 (open a dialogue text slot: rebuild the text-command handler table, claim the first free slot bit, then parse count lines via nosplit+delay_fill+padnop)","measures":{"fuzzy_match_percent":60.199604,"total_code":195988,"matched_code":117984,"matched_code_percent":60.199608,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":713,"matched_functions_percent":78.26564,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T15:01:47Z","commit_sha":"b399aeda3e8a416050060ae2216594de8ace5d36","commit_message":"matched func_8003EBF4 (step the memory card open state machine via nosplit+web_realloc+slot_swap+delay_fill+padnop)","measures":{"fuzzy_match_percent":59.467293,"total_code":195980,"matched_code":116544,"matched_code_percent":59.467293,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":710,"matched_functions_percent":77.93633,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T14:45:15Z","commit_sha":"cdef4516c4d304eaf59d37f45951471dc5d3b40d","commit_message":"matched func_80012640 (step each active slot current stat pair toward its max by the config step, return whether any changed via nosplit+web_realloc)","measures":{"fuzzy_match_percent":59.332584,"total_code":195980,"matched_code":116280,"matched_code_percent":59.332584,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":709,"matched_functions_percent":77.82657,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T14:35:24Z","commit_sha":"c2a4af5a8bbdfc0fe57a5df742f144ecdc4a3fff","commit_message":"matched func_8003A6D0 (start a DMA transfer from main memory into sound RAM via nosplit_nodb+sched_match+delay_fill+padnop)","measures":{"fuzzy_match_percent":59.084785,"total_code":195976,"matched_code":115792,"matched_code_percent":59.084785,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":707,"matched_functions_percent":77.607025,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T14:25:12Z","commit_sha":"9dbc6437eb5d9981de9208e740ad58ab91eaebfa","commit_message":"matched func_8002A9B4 (string length, 0 for a null pointer via nosplit+zero_remat+padnop)","measures":{"fuzzy_match_percent":58.855347,"total_code":195972,"matched_code":115340,"matched_code_percent":58.85535,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":703,"matched_functions_percent":77.167946,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T14:13:54Z","commit_sha":"d6e52bc1c06a8b89826d7f72b100ae976bd9091e","commit_message":"matched func_80012974 (run the name entry menu via zero_cmp+web_realloc+redundant_skip)","measures":{"fuzzy_match_percent":58.41107,"total_code":195956,"matched_code":114460,"matched_code_percent":58.41107,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":697,"matched_functions_percent":76.50933,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T13:57:31Z","commit_sha":"f5b79bc92ede1de735f87bcba25ec8d58fc590c4","commit_message":"matched func_8003CFD4 (convert a pitch to a note and fine tune via nosplit+reg_realloc+mask_reuse+web_realloc+commutative_swap)","measures":{"fuzzy_match_percent":57.47617,"total_code":195956,"matched_code":112628,"matched_code_percent":57.47617,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":696,"matched_functions_percent":76.39956,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T13:25:06Z","commit_sha":"ff709320e02748271176ac02ba1c838ab65e6cc7","commit_message":"matched func_80034704 (read the tempo from the sequence stream via nosplit+sched_match+padnop)","measures":{"fuzzy_match_percent":57.32103,"total_code":195956,"matched_code":112324,"matched_code_percent":57.32103,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":695,"matched_functions_percent":76.28979,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T12:49:20Z","commit_sha":"1844eaf1720e0a8cf894e65f4fecf23a10045951","commit_message":"matched func_8002DF74 (advance the queued record: mark it, latch its tag/value and run the completion callback via nosplit+reg_realloc+ra_restore_sink+delay_fill+epilogue_unfill)","measures":{"fuzzy_match_percent":56.36063,"total_code":195924,"matched_code":110424,"matched_code_percent":56.360634,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":690,"matched_functions_percent":75.740944,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T11:58:19Z","commit_sha":"a48c2f7f8a48e604cf5b46272e7d349ead35d975","commit_message":"matched func_800272D4 (set the display mode byte and reinit when it changes via nosplit+web_realloc+sched_match)","measures":{"fuzzy_match_percent":55.6091,"total_code":195896,"matched_code":108936,"matched_code_percent":55.6091,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":682,"matched_functions_percent":74.86279,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T11:42:16Z","commit_sha":"6bd65dbac27f8acaf1b1c271efc0ef155decad35","commit_message":"matched func_80017594 (add a menu entry to the multi-pick list via web_realloc+self_move+commutative_swap+padnop)","measures":{"fuzzy_match_percent":53.990196,"total_code":195880,"matched_code":105756,"matched_code_percent":53.990196,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":666,"matched_functions_percent":73.106476,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T11:21:56Z","commit_sha":"c7967baede622ff827a481f15f0a4abfa2e842b8","commit_message":"matched func_8001D504 (set field_F by mask over 0x28 list via nosplit_nosr)","measures":{"fuzzy_match_percent":53.82479,"total_code":195880,"matched_code":105432,"matched_code_percent":53.824787,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":665,"matched_functions_percent":72.996704,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T10:38:15Z","commit_sha":"6fd3fce4f9413a57113ce6734883d2d39ea509d1","commit_message":"matched func_80037D64 (key on a noise voice: set its volume from the sound state (master/pan/mono/curve), the noise clock and the key-on masks via nosplit+web_realloc+ra_restore_sink+delay_fill+padnop)","measures":{"fuzzy_match_percent":53.78599,"total_code":195880,"matched_code":105356,"matched_code_percent":53.78599,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":664,"matched_functions_percent":72.88694,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T10:28:22Z","commit_sha":"4167670aed554fb7867bb500957db8245dca60da","commit_message":"matched func_800315D0 (DMA interrupt handler: ack each pending channel and run its callback, report bus errors via nosplit_hf+sched_match+padnop)","measures":{"fuzzy_match_percent":51.760334,"total_code":195872,"matched_code":101384,"matched_code_percent":51.760334,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":661,"matched_functions_percent":72.557625,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T09:50:27Z","commit_sha":"e3203a19ec523fed5dc5799d7f06b96fa7f81ac7","commit_message":"matched func_80036C54 (reset the sound voice manager: clear tables, clamp the voice count, init every SPU voice via nosplit_hf+sched_match+delay_fill)","measures":{"fuzzy_match_percent":51.18649,"total_code":195872,"matched_code":100260,"matched_code_percent":51.18649,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":658,"matched_functions_percent":72.22832,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T09:42:16Z","commit_sha":"2b29ebac960b8724020ae7e1873225bfcb4a6f07","commit_message":"matched func_800188BC (refresh the list page widgets from the page work block via web_realloc)","measures":{"fuzzy_match_percent":50.75355,"total_code":195872,"matched_code":99412,"matched_code_percent":50.75355,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":657,"matched_functions_percent":72.11855,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T09:24:30Z","commit_sha":"6a95d97199d5ac8425fd89a37b22e46b4014bd12","commit_message":"matched func_800179EC (build the list rows of a menu page from the page mode, the party entries and the extra slots via nosplit+label_nop+slot_unfill+cross_jump+reorder_indep+padnop)","measures":{"fuzzy_match_percent":48.370296,"total_code":195864,"matched_code":94740,"matched_code_percent":48.3703,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":653,"matched_functions_percent":71.679474,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T09:06:17Z","commit_sha":"d9e114002a38353b01d294632ea9194c4c2458b1","commit_message":"matched func_80018D78 (run the partner status window open/scroll/close state machine via gp8)","measures":{"fuzzy_match_percent":47.900585,"total_code":195864,"matched_code":93820,"matched_code_percent":47.900585,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":652,"matched_functions_percent":71.5697,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T08:58:01Z","commit_sha":"0851b7b0dafdbe776748de442405efba00acde79","commit_message":"matched func_8003E19C (run the cd seek-and-read retry state machine via nosplit+reg_realloc+save_slot+ra_restore_sink+slot_unfill+sched_match+taken_fill+delay_fill+padnop)","measures":{"fuzzy_match_percent":46.718132,"total_code":195864,"matched_code":91504,"matched_code_percent":46.71813,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":650,"matched_functions_percent":71.35017,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T08:49:08Z","commit_sha":"a56d51804cc661fabbb641a5bae3b5072fd1328b","commit_message":"matched func_8001D104 (emit a sprite part list as projected POLY_FT4 packets, plain cc1)","measures":{"fuzzy_match_percent":46.370953,"total_code":195864,"matched_code":90824,"matched_code_percent":46.37095,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":649,"matched_functions_percent":71.240395,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T08:35:09Z","commit_sha":"edc9a4667307243dd2b2926bf18a3a6e69c5d795","commit_message":"matched func_80028C48 (upload an image rectangle to vram (gpu fifo + dma) via nosplit+zero_remat+reg_realloc+save_slot+ra_restore_sink+slot_unfill+taken_fill+fallthrough_fill+padnop)","measures":{"fuzzy_match_percent":45.42744,"total_code":195864,"matched_code":88976,"matched_code_percent":45.427437,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":647,"matched_functions_percent":71.02085,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T08:17:55Z","commit_sha":"bea46bf0f26a496eeeecfb49fc1cd960cd2a6781","commit_message":"matched func_8001A01C (step the three sound-bank loaders through their load/copy/register states, plain cc1)","measures":{"fuzzy_match_percent":44.253826,"total_code":195852,"matched_code":86672,"matched_code_percent":44.253822,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":640,"matched_functions_percent":70.25247,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T08:10:22Z","commit_sha":"94a2f40f472072f903a4571631d467912147e16a","commit_message":"matched func_8002254C (set a party slot flag when its value is nonzero via gp8_nosplit+offset_unfold+reorder_indep)","measures":{"fuzzy_match_percent":43.875988,"total_code":195852,"matched_code":85932,"matched_code_percent":43.875988,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":639,"matched_functions_percent":70.1427,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T07:54:02Z","commit_sha":"5608d779376806123a08eabcf6964105e5f7dfa6","commit_message":"matched func_80011BEC (find or load an item icon into the VRAM icon cache and return its layout, position and CLUT slot, plain cc1)","measures":{"fuzzy_match_percent":43.831055,"total_code":195852,"matched_code":85844,"matched_code_percent":43.831055,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":637,"matched_functions_percent":69.923164,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-25T07:46:54Z","commit_sha":"cb6112f6ef68b1c3d3d3245106cc9261fcfb36a4","commit_message":"matched func_80012490 (apply a stat-boost item to a party digimon, plain cc1)","measures":{"fuzzy_match_percent":43.04679,"total_code":195852,"matched_code":84308,"matched_code_percent":43.04679,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":635,"matched_functions_percent":69.70362,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-24T20:39:02Z","commit_sha":"04444a096c101d91bb9e07d68542a4cf7e3e7b18","commit_message":"progress: 628/907 (69.24%)","measures":{"fuzzy_match_percent":42.52364,"total_code":195844,"matched_code":83280,"matched_code_percent":42.52364,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":632,"matched_functions_percent":69.37431,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-24T20:24:35Z","commit_sha":"158c13848f5d01536e31fe66edf205be28f557c8","commit_message":"matched func_8001F320 (step the part animation and load each part matrix via web_realloc+sched_match+fallthrough_fill)","measures":{"fuzzy_match_percent":42.378628,"total_code":195844,"matched_code":82996,"matched_code_percent":42.378628,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":630,"matched_functions_percent":69.15478,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-24T19:58:11Z","commit_sha":"260958226d1463eccd0daf8247da232180468b52","commit_message":"matched func_800278A4 (clear ordering table (libgpu ClearOTag shape) via nosplit+reg_realloc+web_realloc+copy_use+save_slot+ra_restore_sink+sched_match)","measures":{"fuzzy_match_percent":39.2108,"total_code":195844,"matched_code":76792,"matched_code_percent":39.2108,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":621,"matched_functions_percent":68.166855,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-24T19:49:18Z","commit_sha":"caac1044fcbc69f890fbcf70c2bbc428ac8af8e6","commit_message":"matched func_80015298 (draw the party member grid via gp8_nosplit+nodiv)","measures":{"fuzzy_match_percent":39.108677,"total_code":195844,"matched_code":76592,"matched_code_percent":39.108677,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":620,"matched_functions_percent":68.057076,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-24T19:40:08Z","commit_sha":"270b527b16dc5afe247880a55b5f6deae2cf2b6a","commit_message":"matched func_80015770 (use the item on the picked party member via gp8_nosplit)","measures":{"fuzzy_match_percent":38.867672,"total_code":195844,"matched_code":76120,"matched_code_percent":38.867672,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":617,"matched_functions_percent":67.727776,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-24T19:18:25Z","commit_sha":"5f5bf3c9be0ac708e44de2c9046a321fad4d04eb","commit_message":"matched func_80011644 (release the loaded file list via gp8)","measures":{"fuzzy_match_percent":36.077694,"total_code":195844,"matched_code":70656,"matched_code_percent":36.077694,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":594,"matched_functions_percent":65.20307,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-24T17:22:25Z","commit_sha":"0fdbba3613423e3736a59e56a0e91df5626a346f","commit_message":"progress: 571/907 (62.95%)","measures":{"fuzzy_match_percent":35.232124,"total_code":195844,"matched_code":69000,"matched_code_percent":35.232124,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":575,"matched_functions_percent":63.11745,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-24T16:45:21Z","commit_sha":"ff0d5f3ba903ac04e3bfeb138f55fa9b43e73dd1","commit_message":"matched func_800344D4 (dispatch a sequencer sub-command through the handler hooks via nosplit+shift_const_fold+sched_match+padnop)","measures":{"fuzzy_match_percent":32.834297,"total_code":195844,"matched_code":64304,"matched_code_percent":32.834297,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":567,"matched_functions_percent":62.239296,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-24T16:37:48Z","commit_sha":"6d3f67669e7fb66c5ef8a370ac5ff4af2b167b71","commit_message":"matched func_8001DDA8 (fill a party slot record and its stat block from the species table via commutative_swap)","measures":{"fuzzy_match_percent":32.54902,"total_code":195840,"matched_code":63744,"matched_code_percent":32.54902,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":566,"matched_functions_percent":62.129528,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-24T16:21:50Z","commit_sha":"767973d44376e4c2e9f41734298865e69917c48e","commit_message":"matched func_80017D84 (draw the four visible list rows, plain cc1)","measures":{"fuzzy_match_percent":30.515953,"total_code":195832,"matched_code":59760,"matched_code_percent":30.515953,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":558,"matched_functions_percent":61.251373,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-24T16:01:36Z","commit_sha":"dc2e75535558b156fe657f9a116244d8a09ec2d8","commit_message":"matched func_800230FC (update pad state with repeat, plain cc1)","measures":{"fuzzy_match_percent":29.664358,"total_code":195804,"matched_code":58084,"matched_code_percent":29.664358,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":551,"matched_functions_percent":60.482986,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-24T15:34:40Z","commit_sha":"6813c9ab8eab7e0c6324c3f2663a1462c16d2fc9","commit_message":"matched func_80028938 (start a gpu dma transfer and wait for it via nosplit+zero_remat+reg_realloc+save_slot+sched_match+taken_fill+fallthrough_fill+padnop)","measures":{"fuzzy_match_percent":26.981695,"total_code":195792,"matched_code":52828,"matched_code_percent":26.981693,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":537,"matched_functions_percent":58.94621,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T21:02:16Z","commit_sha":"dff33b5984f1b73b44df3dbb65facb55308803af","commit_message":"progress: 523/907 (57.66%)","measures":{"fuzzy_match_percent":25.93319,"total_code":195780,"matched_code":50772,"matched_code_percent":25.933191,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":527,"matched_functions_percent":57.84852,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T20:46:51Z","commit_sha":"b8701c71a8789fa83c014d1684e4277aaf889982","commit_message":"matched func_80029EB8 (wait for gpu idle then send a packet via nosplit+taken_fill+padnop)","measures":{"fuzzy_match_percent":25.011238,"total_code":195768,"matched_code":48964,"matched_code_percent":25.011238,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":521,"matched_functions_percent":57.1899,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T20:27:53Z","commit_sha":"d4afd99194d63b716d275e036d6392d1b7c51733","commit_message":"matched func_800356D4 (set left/right volume pair, clamped to 0x7f via nosplit+epilogue_unfill+padnop)","measures":{"fuzzy_match_percent":24.794132,"total_code":195756,"matched_code":48536,"matched_code_percent":24.794132,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":519,"matched_functions_percent":56.970364,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T20:08:10Z","commit_sha":"0c12f2d1045e2b251e215e1477626880f3d0b9f1","commit_message":"matched func_8003A054 (spu init: reset voice and state globals via nosplit+ra_restore_sink+fallthrough_fill+padnop)","measures":{"fuzzy_match_percent":23.859154,"total_code":195732,"matched_code":46700,"matched_code_percent":23.859154,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":511,"matched_functions_percent":56.09221,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T19:40:31Z","commit_sha":"f19d59e818a89da4a4078e5854baf08b64702571","commit_message":"matched func_80033124 (channel note on with current program slot via nosplit+commutative_swap+sched_match+padnop)","measures":{"fuzzy_match_percent":23.68749,"total_code":195732,"matched_code":46364,"matched_code_percent":23.68749,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":509,"matched_functions_percent":55.872665,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T19:04:28Z","commit_sha":"053fd4b30dc53bc53c0f867260c8bfdd40be6330","commit_message":"matched func_80027694 (log then send packed rgb with high bit via nosplit_nodb+sched_match+delay_fill)","measures":{"fuzzy_match_percent":23.336468,"total_code":195728,"matched_code":45676,"matched_code_percent":23.336468,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":505,"matched_functions_percent":55.43359,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T18:50:05Z","commit_sha":"494e8d09242407b3d1268d64af552fb2c002797b","commit_message":"matched func_800260C8 (dispatch on actor state byte via nosplit+epilogue_unfill)","measures":{"fuzzy_match_percent":22.245386,"total_code":195708,"matched_code":43536,"matched_code_percent":22.245386,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":494,"matched_functions_percent":54.226124,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T18:03:06Z","commit_sha":"098a7e8fe8ec498bafabbcef23ec7d3edaa60755","commit_message":"progress: 483/907 (53.25%)","measures":{"fuzzy_match_percent":21.54538,"total_code":195680,"matched_code":42160,"matched_code_percent":21.54538,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":487,"matched_functions_percent":53.457737,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T17:39:36Z","commit_sha":"ef3b9ffc8040c00b8c671ebcea49259e30b8f77f","commit_message":"matched func_800312F8 (open stream state once via nosplit_nodb+delay_fill)","measures":{"fuzzy_match_percent":19.328127,"total_code":195632,"matched_code":37812,"matched_code_percent":19.328127,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":465,"matched_functions_percent":51.042812,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T17:29:58Z","commit_sha":"10335e5b9333ea8ba5618f3f313489bbb78784c3","commit_message":"matched func_8002B2B4 (offset view rect by current shake step via nosplit+epilogue_unfill+padnop)","measures":{"fuzzy_match_percent":17.29794,"total_code":195584,"matched_code":33832,"matched_code_percent":17.29794,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":444,"matched_functions_percent":48.73765,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T17:18:18Z","commit_sha":"2279df242ccc685865158332fcfe74787e388478","commit_message":"matched func_80029AFC (gpu status probe via nosplit_nodb+exit_merge+fallthrough_fill+delay_fill)","measures":{"fuzzy_match_percent":17.15548,"total_code":195576,"matched_code":33552,"matched_code_percent":17.15548,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":442,"matched_functions_percent":48.518112,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T17:06:11Z","commit_sha":"c060210036962e8a70c503c7336ca41dc0da155e","commit_message":"matched func_8002E064 (init stream state globals via nosplit+sched_match+padnop)","measures":{"fuzzy_match_percent":17.07367,"total_code":195576,"matched_code":33392,"matched_code_percent":17.07367,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":441,"matched_functions_percent":48.40834,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T16:24:28Z","commit_sha":"2b3223f899a82eee286cc31c3246060bf62dd3fa","commit_message":"progress: 435/907 (47.96%)","measures":{"fuzzy_match_percent":16.92745,"total_code":195564,"matched_code":33104,"matched_code_percent":16.92745,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":439,"matched_functions_percent":48.1888,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T16:07:47Z","commit_sha":"7e6b677028e76df4b248276b9d430cabb7407ae8","commit_message":"matched func_8002DD64 (bcd msf to sector, plain cc1)","measures":{"fuzzy_match_percent":15.3225975,"total_code":195476,"matched_code":29952,"matched_code_percent":15.3225975,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":417,"matched_functions_percent":45.773876,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T15:52:11Z","commit_sha":"90ff2a5158fd9f7326c1c1960432eedb899f6ffd","commit_message":"matched func_8002BB84 (reset view (nosplit unit) via nosplit+zero_remat+ra_restore_sink+epilogue_unfill+padnop)","measures":{"fuzzy_match_percent":13.435005,"total_code":195400,"matched_code":26252,"matched_code_percent":13.435004,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":380,"matched_functions_percent":41.712402,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-23T14:35:18Z","commit_sha":"3e410dd4dde25eddcc044692dad94ecdef9c410f","commit_message":"matched func_8003FA24 (push handler, clear its context (nosplit unit) via nosplit+delay_fill+epilogue_unfill)","measures":{"fuzzy_match_percent":13.1673765,"total_code":195392,"matched_code":25728,"matched_code_percent":13.1673765,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":374,"matched_functions_percent":41.053787,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-22T21:22:03Z","commit_sha":"21b688711baba695ef45f578b0077c58cf0fbd4a","commit_message":"progress: 366/907 (40.35%)","measures":{"fuzzy_match_percent":12.958566,"total_code":195392,"matched_code":25320,"matched_code_percent":12.958566,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":370,"matched_functions_percent":40.614708,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-19T20:56:39Z","commit_sha":"4588a03c7e31bc3815c75a232126e7aaa9c70f9d","commit_message":"progress: 299/907 (32.97%) after the wrapper/tail-call seam + prologue_save_hoist operator","measures":{"fuzzy_match_percent":11.030738,"total_code":195200,"matched_code":21532,"matched_code_percent":11.030738,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":303,"matched_functions_percent":33.260155,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-19T19:13:27Z","commit_sha":"872fdff92d1faed80fcb833dcfc4d1bd137c0801","commit_message":"progress: 273/907 (30.10%) after the un_hi_cse base-fold + padnop-tail wins","measures":{"fuzzy_match_percent":10.492751,"total_code":195068,"matched_code":20468,"matched_code_percent":10.492751,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":277,"matched_functions_percent":30.406147,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-19T19:09:36Z","commit_sha":"f8ab5cf5a36b93712ff630991cc3fb64c30bb831","commit_message":"progress: 272/907 (29.99%) after the GCC-Enhanced un_hi_cse + laform + $at-store scaling batch","measures":{"fuzzy_match_percent":10.476562,"total_code":195064,"matched_code":20436,"matched_code_percent":10.476562,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":276,"matched_functions_percent":30.296377,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-19T18:59:04Z","commit_sha":"7e5caad1c21c42965ef0885e183c75027b53783c","commit_message":"progress: 267/907 (29.44%) after the GCC-Enhanced $at-store + reorder_indep batch","measures":{"fuzzy_match_percent":10.391289,"total_code":195048,"matched_code":20268,"matched_code_percent":10.391288,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":271,"matched_functions_percent":29.74753,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-19T18:16:12Z","commit_sha":"fdd8f82d8c69f25c82aed44bf38bc4e0a535d3d0","commit_message":"matched func_8003ABC8 (conditional shift of a global; exit-merge funnels both returns through one shared jr)","measures":{"fuzzy_match_percent":10.256779,"total_code":195032,"matched_code":20004,"matched_code_percent":10.256779,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":257,"matched_functions_percent":28.210756,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-19T08:11:56Z","commit_sha":"0a7b0e39843d6371d0f2abe0da76c4967dacbb78","commit_message":"matched func_8002C774 (Z rotation-matrix builder: angle/360 -> cos/sin, fill MATRIX, call func_8002D224)","measures":{"fuzzy_match_percent":9.939493,"total_code":195020,"matched_code":19384,"matched_code_percent":9.939493,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":247,"matched_functions_percent":27.113062,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-19T08:07:58Z","commit_sha":"c1d88938664309c407eac93a0c3830f7264e797f","commit_message":"matched func_80030394 (ticks->packed-BCD hh/mm/ss: /75,/60,/60 chain, returns the buffer ptr)","measures":{"fuzzy_match_percent":9.847196,"total_code":195020,"matched_code":19204,"matched_code_percent":9.847196,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":246,"matched_functions_percent":27.003294,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-19T08:01:09Z","commit_sha":"bda005b7f8d30e2f75dd8b53d2fb535d69777044","commit_message":"matched func_8002CDB8 (fixed-point normalize: shift-by-2*(8-exp)/2 then call-in-each-branch return-shift)","measures":{"fuzzy_match_percent":9.713876,"total_code":195020,"matched_code":18944,"matched_code_percent":9.713876,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":245,"matched_functions_percent":26.893524,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-18T20:52:19Z","commit_sha":"04a6d7c327b061730f6c023cd6bdfaf9f11c1742","commit_message":"matched func_8002E000 (guarded 2-call: D_80061B98 gate, func_8002DD64(&D_80061B40)+1 into func_80030394, return D_80061B44)","measures":{"fuzzy_match_percent":9.635935,"total_code":195020,"matched_code":18792,"matched_code_percent":9.635935,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":244,"matched_functions_percent":26.783756,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-18T20:35:27Z","commit_sha":"ac822d66021ed17ea4da783d74530c6d03363185","commit_message":"matched func_8002B494 (two-call forward: func_8002D5E4(a0) then func_8002D644(a0))","measures":{"fuzzy_match_percent":9.590811,"total_code":195020,"matched_code":18704,"matched_code_percent":9.590812,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":243,"matched_functions_percent":26.673985,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-18T20:34:42Z","commit_sha":"3160262fbe6eb2b44f13e87419a8925df330c1af","commit_message":"matched func_8003F9B4 (two-call forward: func_8003FA04(a0) then func_8003F9F4(a0,0x3F,0))","measures":{"fuzzy_match_percent":9.56825,"total_code":195020,"matched_code":18660,"matched_code_percent":9.56825,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":242,"matched_functions_percent":26.564217,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-18T20:32:59Z","commit_sha":"9813acb18181f772120dc1db6ae21500be2a00fc","commit_message":"matched func_8003A004 (s16 call-forward wrapper; do-while(0) forces sw-ra-before-sll prologue schedule)","measures":{"fuzzy_match_percent":9.541586,"total_code":195020,"matched_code":18608,"matched_code_percent":9.541585,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":241,"matched_functions_percent":26.454445,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-18T19:04:40Z","commit_sha":"d84d283c43c53ad7145effad1e854a2cc96d8afb","commit_message":"matched func_80031838 (D_8004FC00 word getter; inline .word pad for trailing nops)","measures":{"fuzzy_match_percent":9.521074,"total_code":195020,"matched_code":18568,"matched_code_percent":9.521074,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":240,"matched_functions_percent":26.344675,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-18T19:03:52Z","commit_sha":"b5fec169449f6eac0fc66f35044905a84717728a","commit_message":"matched func_8003FB0C (D_800506E8>>31 sign-bit getter; inline .word pad reproduces retail inter-function nops)","measures":{"fuzzy_match_percent":9.512871,"total_code":195020,"matched_code":18552,"matched_code_percent":9.512871,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":239,"matched_functions_percent":26.234907,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-18T10:11:41Z","commit_sha":"92c68b607723cd7d13916552962d8a7704845def","commit_message":"matched func_80021E78 (range-dispatcher: call-forwards + compare-returns + element-search loops over D_8005E620)","measures":{"fuzzy_match_percent":9.504666,"total_code":195020,"matched_code":18536,"matched_code_percent":9.504666,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":238,"matched_functions_percent":26.125135,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-18T09:51:31Z","commit_sha":"cd44a99cb6d9141cc94c01a77cef7474917ce9c0","commit_message":"matched func_800354F4 (element init: bit-ops + zero-fill + dual-IV loop; volatile view field forces duplicate load)","measures":{"fuzzy_match_percent":9.274946,"total_code":195020,"matched_code":18088,"matched_code_percent":9.274946,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":237,"matched_functions_percent":26.015368,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-17T19:51:43Z","commit_sha":"145f042ffeb0c4f8af5b08f56ccfa1ade7781e05","commit_message":"matched func_800138C0 (4-block flag-guarded coord clamp; 4-byte lwl/lwr copy + changed-flag return)","measures":{"fuzzy_match_percent":9.078043,"total_code":195020,"matched_code":17704,"matched_code_percent":9.078043,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":236,"matched_functions_percent":25.905598,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-17T17:58:38Z","commit_sha":"ad5110b22ab58bb7a5c17ade6ed3d29959a6598d","commit_message":"matched func_8001D6B4 (stride-0x28 record loop; lwl/lwr aggregate copy + D_8004167C compare/rebuild)","measures":{"fuzzy_match_percent":8.905753,"total_code":195020,"matched_code":17368,"matched_code_percent":8.905753,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":235,"matched_functions_percent":25.79583,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-17T17:35:39Z","commit_sha":"284f5237a9c6ab8a03b2d96aeb05cf975ded9bfc","commit_message":"matched func_8001A75C (call-sequence + D_80054C48 stride-0x2C array init + two poll loops)","measures":{"fuzzy_match_percent":8.667829,"total_code":195020,"matched_code":16904,"matched_code_percent":8.667829,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":234,"matched_functions_percent":25.686058,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-17T15:59:53Z","commit_sha":"c5448c96c76a309d1a09fb856fc6903f4c240f2e","commit_message":"matched func_80024260 (D_80048DB8 struct-store builder)","measures":{"fuzzy_match_percent":8.487334,"total_code":195020,"matched_code":16552,"matched_code_percent":8.487335,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":233,"matched_functions_percent":25.57629,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-17T15:00:58Z","commit_sha":"091de9aef484261cfcf62a4be0e478e52ab8214b","commit_message":"matched func_80033FB4 (sibling of func_80033A74; buffer field_8/field_E)","measures":{"fuzzy_match_percent":8.397087,"total_code":195020,"matched_code":16376,"matched_code_percent":8.397087,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":232,"matched_functions_percent":25.46652,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-16T08:14:57Z","commit_sha":"1ab24ea6d3833ca302956f0cef71876eddf9863c","commit_message":"matched func_80019214 (func_800239A0 loop of 11 field-bitset calls + stack-context builder tail; split-pointer guard, field_148=0 store hoisted into func_8002D744 delay slot)","measures":{"fuzzy_match_percent":8.126346,"total_code":195020,"matched_code":15848,"matched_code_percent":8.126346,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":229,"matched_functions_percent":25.137213,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-16T07:27:42Z","commit_sha":"5da25b5ed3d0684959faa3866cbad1aef4c73121","commit_message":"matched func_8002329C (2-iter loop over 3 stride records: array-index form yields running pointers, 14-call bit-test fill, shared-tail cross-jump)","measures":{"fuzzy_match_percent":7.7715106,"total_code":195020,"matched_code":15156,"matched_code_percent":7.7715106,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":228,"matched_functions_percent":25.027443,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-16T06:51:33Z","commit_sha":"2b95226f024d5301411f834b88168fbf901dfc15","commit_message":"matched func_80020920 (Vec3 by-value copy read-all-then-write-all; chained-equality gated call)","measures":{"fuzzy_match_percent":7.52128,"total_code":195020,"matched_code":14668,"matched_code_percent":7.52128,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":227,"matched_functions_percent":24.917673,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-15T21:04:02Z","commit_sha":"74eb5d6f41211a77403c14b7e29baf14bf8a7ba5","commit_message":"matched func_800194C8 (three-loop Actor bucket build: downward count-zero, scatter into stride-0x1A records, unaligned 12-byte copy loop)","measures":{"fuzzy_match_percent":7.410522,"total_code":195020,"matched_code":14452,"matched_code_percent":7.410522,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":226,"matched_functions_percent":24.807903,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-15T20:10:47Z","commit_sha":"ed417d8fe6e9ce3594efa38c0ae8080e1794aa9a","commit_message":"matched func_8001BC24 (scan first-free slot then build stride-0x34 record; count-primary for-loop avoids loop inversion, i=0 in null-guard delay slot, if/else not ternary for delay-slot fill)","measures":{"fuzzy_match_percent":7.240283,"total_code":195020,"matched_code":14120,"matched_code_percent":7.2402825,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":225,"matched_functions_percent":24.698133,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-15T18:37:03Z","commit_sha":"7e7c88e35872432bc185ea2856f067262e536274","commit_message":"matched func_8001125C (Actor teardown: count-loop free + guarded frees + list search)","measures":{"fuzzy_match_percent":6.9921036,"total_code":195020,"matched_code":13636,"matched_code_percent":6.992103,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":224,"matched_functions_percent":24.588364,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-15T10:17:21Z","commit_sha":"06b0c16a9a54a271cde52214ea0499f269b0aa2c","commit_message":"matched func_80014870 (guarded call-loop over pointer array; duplicate shared call in both arms for cross-jump, temp+cursor pointer split defers saved-reg into guard delay slot)","measures":{"fuzzy_match_percent":6.81366,"total_code":195020,"matched_code":13288,"matched_code_percent":6.81366,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":223,"matched_functions_percent":24.478596,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-14T23:45:06Z","commit_sha":"939d4c3f114f4c573878d20576ae63c69328a558","commit_message":"matched func_80013AFC (fixed-width decimal formatter: constant /10+%10 magic-multiply digit loop with leading-blank suppression + reverse output; fresh per-iteration local pointer defeats stack-array strength reduction so the address recomputes each iter)","measures":{"fuzzy_match_percent":6.6782894,"total_code":195020,"matched_code":13024,"matched_code_percent":6.6782894,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":222,"matched_functions_percent":24.368826,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-14T21:39:55Z","commit_sha":"2ffaa5e1bb586b9047b0351a9d0c6b44d93f368e","commit_message":"matched func_8001E7E4 (3x unrolled unaligned struct copy: align-2 6-byte record gives lwl/lwr+lh block move; getter-indexed stride-6 table, base held in saved reg across the getter re-calls)","measures":{"fuzzy_match_percent":6.549072,"total_code":195020,"matched_code":12772,"matched_code_percent":6.5490713,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":221,"matched_functions_percent":24.259056,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-14T21:31:23Z","commit_sha":"347b7e0bb641c31f070f6f9f540a577ab1a280b6","commit_message":"matched func_80013384 (median-pivot switch dispatch: case 0 folded into default forces the slti tree, default block first for retail block order)","measures":{"fuzzy_match_percent":6.4280586,"total_code":195020,"matched_code":12536,"matched_code_percent":6.4280586,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":220,"matched_functions_percent":24.149286,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-14T20:42:10Z","commit_sha":"a91e392dbba3ac6340d8644bc753591374344878","commit_message":"matched func_8001EC10 (state-machine switch dispatch; case1 relinks a node's dst block from a DstElem)","measures":{"fuzzy_match_percent":6.323454,"total_code":195020,"matched_code":12332,"matched_code_percent":6.323454,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":219,"matched_functions_percent":24.039516,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-14T20:36:10Z","commit_sha":"5c5789d0ead4f3c3549dc16d756be717f0a114f6","commit_message":"matched func_80024350 (state-machine switch dispatch: empty case forces median-pivot; store-only u16 arg loads lhu)","measures":{"fuzzy_match_percent":6.2147474,"total_code":195020,"matched_code":12120,"matched_code_percent":6.2147474,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":218,"matched_functions_percent":23.929749,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-14T19:14:49Z","commit_sha":"af9b661860b1036d7bd0147b1a1044835a73a61f","commit_message":"matched func_80019EE8 (Actor state machine: switch median-pivot dispatch + redundant-|| guard branch)","measures":{"fuzzy_match_percent":6.116296,"total_code":195020,"matched_code":11928,"matched_code_percent":6.116296,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":217,"matched_functions_percent":23.819979,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-14T18:59:04Z","commit_sha":"36f2e85d3b009c864c1d83a58cdb6c7ff601eb70","commit_message":"matched func_80022118 (single global CSE'd in s0 across 2 calls; gated store-value ternary with work in true-arm)","measures":{"fuzzy_match_percent":6.011691,"total_code":195020,"matched_code":11724,"matched_code_percent":6.011691,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":216,"matched_functions_percent":23.710209,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-14T17:30:55Z","commit_sha":"31d1f3b89404d418e4bcd7d25accfd20a6b7e332","commit_message":"matched func_800176D8 (work counter@0x19E decrement + s16 array@0x1A0 index, gated stride-8 elem byte-set, else-invert polarity)","measures":{"fuzzy_match_percent":5.923495,"total_code":195020,"matched_code":11552,"matched_code_percent":5.9234953,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":215,"matched_functions_percent":23.60044,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-14T17:06:54Z","commit_sha":"598a40bf151422896b891c6e28e8693374fc3fc8","commit_message":"matched func_8001F5E8 (Sub3C const-block fill loop: copy Blk20 D_80043714 to DstElem[i].field_60, count re-read each iter, i++ at top)","measures":{"fuzzy_match_percent":5.8394012,"total_code":195020,"matched_code":11388,"matched_code_percent":5.8394012,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":214,"matched_functions_percent":23.490671,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-14T16:10:59Z","commit_sha":"5f485cbd609e63a5e2bcc3d650de9cc5bdbb8149","commit_message":"matched func_8001DB68 (Ent1DB18 unpack: nibble/halfword bitfields + stride-0x1E row copy loop)","measures":{"fuzzy_match_percent":5.773767,"total_code":195020,"matched_code":11260,"matched_code_percent":5.7737665,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":213,"matched_functions_percent":23.3809,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}},{"timestamp":"2026-09-14T14:55:08Z","commit_sha":"342c2e139cd1641b971feaddcfd068031a411e12","commit_message":"CI: chmod +x the PSY-Q cc1 before building","measures":{"fuzzy_match_percent":5.60763,"total_code":195020,"matched_code":10936,"matched_code_percent":5.60763,"total_data":0,"matched_data":0,"matched_data_percent":100,"total_functions":911,"matched_functions":211,"matched_functions_percent":23.16136,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":100,"total_units":1,"complete_units":0}}]