The channel check is waving everything through. V02 is a 92-character
subject line — the inbox will amputate it — but fits() says ok.
The bug: channel budgets are in CHARACTERS, and the function is
counting words. Fix fits() so the report matches:
V01 [subject] 38/55: ok
V02 [subject] 92/55: OVER by 37
V03 [hero] 67/90: ok
The break is on lines 14, 15 — but read the whole snippet first.