Sweep every first-party crate source (1956 .rs files) to the project comment guidelines: delete redundant restatements, decorative banners, change narration, and end-of-line comments; keep and tighten the crucial ones (invariants, bug rationale, SAFETY blocks, ported-source attribution). No functional code changed. Every edit is proven comment-only against the prior tree by a comment-stripping lexer (string/char/raw-string aware) plus a separate doctest-fence check. Where removing a comment made rustfmt or clippy want to re-lay-out adjacent code, the minimal triggering comment is restored so code tokens stay byte-identical. Gates green: cargo fmt --all --check (0 diffs), cargo check and cargo clippy --workspace --all-targets (0 warnings). Adds scripts/check_codegen_comment_guidelines.py — the enforcement gate for these guidelines (flags banners, end-of-line comments, change narration, and commented-out code).
Fuzzing kigi-markdown
Coverage-guided fuzzing for the markdown renderer using cargo-fuzz (libFuzzer).
Prerequisites
cargo install cargo-fuzz # if not already installed
rustup toolchain install nightly
Targets
| Target | What it fuzzes |
|---|---|
render_all |
All 8 combos: pretty × syntect × {full, streaming} for every input |
Each iteration runs:
render_markdown_ratatui_full()— 4 combos (pretty/non-pretty × syntect/no-syntect)StreamingMarkdownRendererchar-by-char — same 4 combos
Running
From crates/codegen/kigi-markdown:
# Run indefinitely (Ctrl-C to stop):
cargo +nightly fuzz run render_all fuzz/corpus/render_all fuzz/seeds/render_all -- -max_len=16384
# Run for 5 minutes:
cargo +nightly fuzz run render_all fuzz/corpus/render_all fuzz/seeds/render_all -- -max_len=16384 -max_total_time=300
corpus/— auto-generated inputs (gitignored)seeds/— hand-written seed inputs (checked in)
Reproducing a crash
When a crash is found, the input is saved to artifacts/render_all/crash-<hash>. Reproduce it with:
cargo +nightly fuzz run render_all fuzz/artifacts/render_all/crash-<hash>
Adding seed inputs
Drop .txt or .md files into seeds/render_all/. Good seeds cover distinct markdown features (tables, code blocks, emoji, nested lists, etc.) and help the fuzzer reach new code paths faster.