Package vitest wraps `<pm exec> vitest run --reporter=json`. Whole-run gate:
a test broken by your change may live in an untouched file, so findings
are never suppressed by scoping.
ParseReport reads vitest's json report and returns one Finding per failed
assertion. First `file.ts:line:col` frame in failureMessages is used as
the finding location; the test file name is the fallback.