Standalone Python scanner extracted from the inline python in wait-approval. Embedding multi-line Python in a YAML run: | block scalar is fragile: YAML dedents block-scalar content to the first line's indent, which produced both YAML parse failures and Python IndentationErrors in earlier iterations of this workflow. A standalone script file sidesteps all of that and is testable locally.
Behavior preserved:
- json.loads + \bLGTM\b / \bKO\b word-boundary regex (case-insensitive)
- skip bot comments tagged with <!-- tabatago:ready-to-test -->
- KO checked BEFORE LGTM (PR with both signals blocks)
Verified locally across 8 scenarios (bot-only, LGTM, KO, both, empty, usage error, KOM/LGTMX non-match, case-insensitive).