Skip to content

Add an Atheris fuzz harness for the text parsers - #97

Merged
vsn411 merged 2 commits into
mainfrom
feat/atheris-fuzz
Nov 11, 2026
Merged

vsn411 merged 2 commits into
mainfrom
feat/atheris-fuzz

Conversation

@vsn411

@vsn411 vsn411 commented Nov 11, 2026

Copy link
Copy Markdown
Collaborator

Follow-up to #94. Scorecard's Fuzzing check recognises Atheris for Python, not Hypothesis, so the property tests from #94 didn't move it off 0.

fuzz/fuzz_parsers.py is a coverage-guided harness over the same parsers (count_severities, extract_overall_risk_rating, skill frontmatter, normalize_severity) asserting the same properties: never raise on arbitrary text, only SkillLoadError from the frontmatter parser, idempotent severity normalisation. CONTRIBUTING documents how to run it for a minute after touching a parser.

Not run in CI (Atheris needs a libFuzzer-enabled clang; it doesn't build on Apple clang). Verified locally with a stub provider over ~2000 random inputs.

Made with Cursor

Coverage-guided fuzzing of count_severities, extract_overall_risk_rating,
skill frontmatter parsing and normalize_severity, asserting the same
properties as the Hypothesis tests. CONTRIBUTING documents how to run it.
Scorecard's Fuzzing check recognises Atheris for Python (not Hypothesis).
@vsn411
vsn411 merged commit 6f99193 into main Nov 11, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant