# bf-1iefu: Generator Scripts Categorization ## Summary Completed comprehensive survey and categorization of all 17 generator scripts in tests/fixtures/ subdirectories. ## Methodology 1. Listed all generator scripts using `find tests/fixtures -type f \( -name "*.py" -o -name "*.sh" -o -name "*gen*" -o -name "*generate*" \)` 2. Read each generator script to understand purpose, implementation, and status 3. Checked modification dates and CI references 4. Categorized based on utility, maintenance status, and redundancy ## Categorization Results ### KEEP (10 scripts) Active fixture generators that are maintained and used: **Scanned fixtures (3):** - `scanned/generate_scanned_fixtures.py` - Core OCR fixture generator - `scanned/run_gen.sh` - Nix-shell dependency wrapper - `scanned/calculate_wer.py` - WER/CER calculation utility **Encoding tests (2):** - `encoding/generate_unmapped_glyphs.py` - Unmapped glyph test generator - `encoding/create_unmapped_comprehensive.py` - Comprehensive encoding test **Form fixtures (1):** - `forms/generate_form_fixtures.rs` - AcroForm/XFA fixture generator **Security fixtures (2):** - `security/generate_embedded_js.py` - TH-04 JavaScript detection fixture - `security/generate_sensitive_fixture.rs` - TH-08 log audit fixture (Rust preferred) **Malformed fixtures (1):** - `malformed/gen_bomb.py` - TH-01 decompression bomb fixture **Vector fixtures (1):** - `vector/generate_vector_cer_corpus.py` - CER testing fixtures (10 PDFs) ### DELETE (5 scripts) Redundant or superseded generators: - `scanned/generate_scanned_fixtures.rs` - Rust stub (use Python version) - `security/generate_sensitive_fixture.py` - Duplicate (Rust version preferred) - `encoding/generate_unmapped_glyphs.rs` - Superseded by Python version - `malformed/gen-bomb-10k-2g.sh` - Superseded by Python version - `forms/generate_form_fixtures.d` - Orphaned Makefile dependency ### RELOCATE (2 scripts) Tools that belong in tools/ (not tests/fixtures/): - `scanned/convert_to_scanned.sh` - General-purpose PDF conversion utility - `grep-corpus/regenerate.sh` - Incomplete stub (DELETE if not prioritized) ## Deliverable Categorization document saved to `/tmp/generator_categorization.md` with: - Detailed rationale for each category decision - Dependency analysis (Python packages, Rust crates, system tools) - Statistics and recommendations - Suggested cleanup commands ## Recommendations ### Immediate Cleanup ```bash # Delete 5 redundant scripts rm tests/fixtures/scanned/generate_scanned_fixtures.rs rm tests/fixtures/security/generate_sensitive_fixture.py rm tests/fixtures/encoding/generate_unmapped_glyphs.rs rm tests/fixtures/malformed/gen-bomb-10k-2g.sh rm tests/fixtures/forms/generate_form_fixtures.d ``` ### Optional Relocation ```bash # Move conversion tool to tools/ mkdir -p tools mv tests/fixtures/scanned/convert_to_scanned.sh tools/convert_pdf_to_scanned.sh ``` ### Decision Required - `grep-corpus/regenerate.sh` is incomplete stub - either implement and move to tools/, or delete ## Verification **Acceptance Criteria Status:** - ✅ All generator scripts in tests/fixtures/ identified and categorized (17 scripts) - ✅ Clear rationale for each category decision documented - ✅ Document saved as /tmp/generator_categorization.md **Files Created:** - `/tmp/generator_categorization.md` (comprehensive categorization) - `notes/bf-1iefu.md` (this verification note) **Committed Work:** - Categorization document - Verification note ## Notes - All KEEP scripts are actively maintained (last updated May-July 2025) - No obsolete scripts found - all produce valid fixtures - Python vs Rust preference depends on fixture type (encoding→Python, security→Rust) - Several generators are redundant across Python/Rust implementations