The size table marks a board "*" when the two builds are byte-identical
and "0" when they are the same size but differ, and two whole classes of
board could never reach "*".
The name reaches binaries_are_identical() lower-cased, because that is
the key the column lookup needs, but the files are AP_Periph.bin and
AP_Bootloader.bin, so on a case-sensitive filesystem neither candidate
was found and the answer was "differs" whatever the bytes said. CI
proves those two are identical: base and pull request builds log the same
APP_DESCRIPTOR crc32 pair, which covers the whole image.
A Linux board writes neither .bin nor .elf -- disco's bin/ holds bare
ELFs -- so nothing was compared there either. Match a file without
regard to case, and fall back to the extensionless ELF.
While here: enumerate the directory being measured rather than always the
master one, and import tabulate where it is used, so the module can be
imported by a test without it.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>