Six targets cover the untrusted-input boundaries required by the v1 specification:
| Target | Boundary |
|---|---|
lexer |
bounded source scanning |
parser |
tutor AST construction and diagnostics |
normalizer |
deterministic answer normalization |
structural_comparer |
learner/target structural comparison |
formula_layout |
RaTeX layout of successfully parsed tutor trees |
custom_content_loader |
bounded, rooted custom-pack loading |
Run one target with a fixed local time budget:
cargo install cargo-fuzz --locked
cargo fuzz run parser -- -max_total_time=60CI compiles all six libFuzzer targets and runs cargo xtask fuzz-smoke --release, a deterministic bounded arbitrary-UTF-8 probe that does not require
a nightly toolchain. Longer local or scheduled libFuzzer runs should retain any
minimized crashing input under fuzz/corpus/<target>/.