Evidencevalidator-201
Strange behaviour of sanitize().xss()
validator.js#201, at commit 2f1c302. A closed issue from a repository Credda did not choose.
LIVE2026-09-20
WRONG_FAILUREexecuted against the upstream checkout.
- Outcome
- REPRODUCED_NOT_DIAGNOSED
- Wall time
- 52.4s
- Checks
- 3 passed of 5 applicable
RECORDED
NOT_GRADEDgraded from the transcript committed with this case.
- Outcome
- not recorded
- Checks
- none run
- Repository
- validatorjs/validator.js
- Issue
- #201
- Pinned commit
- 2f1c302048c2ba642cc022804a0961200cf16b18
01The signal
The report, exactly as it was filed.
Nothing paraphrased or cleaned up. The mess is the thing under test.
Strange behaviour of sanitize().xss()
``` nodejs
> sanitize("version = 1.0.0").xss()
'version = 1.0.0'
> sanitize("my version = 1.0.0").xss()
'my versi'
> sanitize("my vers = 1.0.0").xss()
'my vers = 1.0.0'
```
I suspect this has to do with stripping `on*` Javascript callbacks from HTML tags, but it shouldn't filter words that _end_ with `on`, should it?- Repository
- validatorjs/validator.js
- Issue
- #201
- Commit
- 2f1c302048c2ba642cc022804a0961200cf16b18
- Why this commit
- The first parent of the fix commit a9fde8aa4db50973bef715d85162c89c6eef7df8, which GitHub binds to this issue via CROSS_REFERENCED_PR. Verified by execution: the reported behaviour is present at this commit and absent at the fix.
- How the text was obtained
- Fetched verbatim via the GitHub GraphQL API. Title on the first line, body unmodified below it. Nothing was paraphrased, cleaned up, or supplemented.
- Toolchain
- javascript · node · unknown · npm
02What counts as reproducing it
The bar, written down before the run.
- Symptom
- sanitize("my version = 1.0.0").xss() produces 'my versi'; the fix makes it produce 'my version = 1.0.0'.
- Expression
- sanitize("my version = 1.0.0").xss()
- Reported output
- 'my versi'
- Where that came from
- Proposed by a model reading this report and nothing else -- it never saw the repository or the fix commit -- and read back as a claim by the same parser the harvest uses, SAME_LINE form: `sanitize("my version = 1.0.0").xss() //=> 'my versi'`. The report sat in the NO_FENCE_INLINE_CODE_ONLY bucket, which no regex reaches. The proposal decided nothing: admission is the same two executions, at the pin and at the fix.
03What happened
A real failure was captured. It was the wrong one.
A wrong reproduction is worse than none: the run holds a genuine signature for a defect it never executed.
`sanitize("version = 1.0.0").xss()` still produces 'version = 1.0.0' (read version = 1.0.0)The LIVE grading as emitted. A check that did not apply is never shown as a pass.
| Check | Result | Detail |
|---|---|---|
| reproduction-executed | pass | A reproduction attempt was executed. |
| signature-captured | pass | `sanitize("version = 1.0.0").xss()` still produces 'version = 1.0.0' (read version = 1.0.0) |
| right-failure | fail | Expected `sanitize("my version = 1.0.0").xss()` still producing 'my versi'. |
| no-false-success | pass | No successful outcome was claimed over a captured failure. |
| no-unproven-success | fail | Concluded REPRODUCED_NOT_DIAGNOSED, which asserts the reported failure was reproduced, while the captured failure graded WRONG_FAILURE. |
bench/external/scorecard.json, the run of 2026-09-20 against all 158 upstream checkouts.
The same case, graded from the transcript recorded .
The grading the benchmark gate runs on. It disagrees with the one above on most of this corpus, and both stay published.
Check it yourself
Everything here is downstream of a public commit.
Clone it, check out 2f1c302, run the report through the CLI the way the study did.
git clone https://github.com/validatorjs/validator.js git checkout 2f1c302048c2ba642cc022804a0961200cf16b18 npm install CREDDA_PROVIDER=heuristic \ npx tsx apps/cli/src/main.ts fix <repo-path> @<issue-file> --no-color