[{"timestamp":"2026-10-21T23:32:30Z","commit_sha":"986837fec78962a449876a09c193aae7f73eb6fd","commit_message":"ci: fix step placement (denominator verify after the JSON loop)","measures":{"fuzzy_match_percent":0,"total_code":180702,"matched_code":0,"matched_code_percent":0,"total_data":867266,"matched_data":0,"matched_data_percent":0,"total_functions":651,"matched_functions":0,"matched_functions_percent":0,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":4,"complete_units":0}},{"timestamp":"2026-10-21T23:27:24Z","commit_sha":"0c6da10c15aa8ecb016d049f971ebf4fe850d786","commit_message":"ByteMatch live; rulings R003-R005; prior-work credits\n\n- docs/BYTEMATCH.md: registration record (settings, IGDB 8389, art, App installation 171769441)\n- README: ByteMatch badges on; credits for tje-disasm and RyanFaeScotland's disassembly\n- R003 import existing work with attribution, R004 sub-agent policy, R005 cap raised to four","measures":{"fuzzy_match_percent":0,"total_code":180702,"matched_code":0,"matched_code_percent":0,"total_data":867266,"matched_data":0,"matched_data_percent":0,"total_functions":651,"matched_functions":0,"matched_functions_percent":0,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":4,"complete_units":0}},{"timestamp":"2026-10-21T22:55:45Z","commit_sha":"4debbc944fa56864a9e4ec0fac3534427fc34fdc","commit_message":"docs: ByteMatch state (public, audited; no Genesis platform id upstream)","measures":{"fuzzy_match_percent":0,"total_code":180702,"matched_code":0,"matched_code_percent":0,"total_data":867266,"matched_data":0,"matched_data_percent":0,"total_functions":651,"matched_functions":0,"matched_functions_percent":0,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":4,"complete_units":0}},{"timestamp":"2026-10-21T22:51:21Z","commit_sha":"76c321351af0b1a9c676ad40c93a0805d563f2d4","commit_message":"Harness milestone 1: byte-identical REV 02 and REV 00 rebuilds from generated GNU assembly\n\n- tools/setup.py: GNU binutils 2.47 (m68k-elf, z80-elf) built from the pinned, signature-checked tarball\n- tools/rom.py: identity, import (.md/.bin/.zip), checksum; config/title.json pins both revisions\n- tools/analyze.py + m68k.py: recursive descent from the vectors, switch-table recognition, seeds\n  (67 entry points from bstreiff/tje-disasm's code map, addresses only)\n- tools/build.py: one unit per function/data gap, symbolic labels/tables, per-instruction size and\n  byte checks with raw-word fallback, generated linker script, receipt (PASS = byte-identical)\n- ci/progress_report.py + workflow: objdiff report rev02_report for ByteMatch\n- tests: synthetic ROM round-trips and real-ROM end-to-end builds (17 tests)","measures":{"fuzzy_match_percent":0,"total_code":180702,"matched_code":0,"matched_code_percent":0,"total_data":867266,"matched_data":0,"matched_data_percent":0,"total_functions":651,"matched_functions":0,"matched_functions_percent":0,"complete_code":0,"complete_code_percent":0,"complete_data":0,"complete_data_percent":0,"total_units":4,"complete_units":0}}]