Turns out this was buggy. Who would have guessed?
/^((?:not )?ok\b)\s*(\d+)?\s*(.*?(?!\\(?:\\\\)*)#?)?(?<!\\)(?:\\\\)*(?i:\#\s+(TODO|SKIP)\b(.*))?\z/
ouch
the x modifier with reformatting would probably help, too, but yeah, that's fugly. Where is that from, btw? I thought it might be from TAP::Parser, but
TAP::Parser::Grammar looks more sane.