1.5 KiB
§343 — decl_prior's FLEET MAJORITY CAN BE WRONG ABOUT THE TRUE SIGNATURE — READ THE RIVALS, NOT JUST THE WINNER (P31 S67; measured on func_8012BD14 / func_8012D624 / func_80143C74)
The card's decl_prior reports what the FLEET DECLARES, ranked, with rivals. That is not the same as
what the function IS. Measured this wave:
| symbol | card's fleet winner | n | rival | truth per the asm |
|---|---|---|---|---|
func_8012BD14 |
void (s32) |
1374 | s32 (s32) ×163 |
returns s32 |
func_8012D624 |
void (s32) |
1322 | s32 (void*,s32,s32) ×74 |
3 args, returns s32 |
func_80143C74 |
void (s32,s32) |
90 | s32 (s32,s32) ×42 |
returns s32 |
Verified independently: void func_8012BD14(s32 a0) really does appear ~1427× in src/. The tool
is honest; the CORPUS is wrong. A loosely-typed engine propagated a void spelling into a thousand
call sites, and a majority vote over those call sites reproduces the error at high confidence.
HOW TO USE THE FIELD: treat the winner as the house spelling (what the destination TU probably
writes), and the RIVALS as evidence about the true signature — a rival with a materially different
return type or arity, backed by dozens of sites, usually means the majority is a propagated mistake.
The .s decides: a jal whose result is consumed returns a value however many TUs say void.
Cf. §43/§99/§320 (adopt the TU's decl) — the TU's spelling is what must COMPILE; the asm is what must
MATCH, and when they disagree you need the alias/no-proto escapes, not a corrected majority.