chore(lint): pay down the size and complexity baseline
Author: GoldziherCreated Sep 5, 2026Updated Sep 6, 2026
Labelshelp wantedgood first issue
poly lint is green in this repo, but not because the code is under the size and complexity limits. 863 findings across 420 files are listed individually in alef.toml under the # --- quality-debt baseline --- block.
Why it is a per-file list and not a rule switched off
Listing each file keeps the metrics active on every file that is not listed, so new code is still checked and new violations still fail. The cost is that each existing offender has to be paid off individually — which is exactly what makes each one a self-contained task.
What one unit of work looks like
- Pick a path from the list below.
- Reduce its findings — extract helpers from long functions, early-return to flatten nesting, group wide parameter lists into a struct, split an oversized file by responsibility.
- Delete that file's entry from the baseline in
alef.toml. - Run the crate's/package's tests and
poly lint— both must be green.
Ground rules
- Behaviour must not change. This is restructuring, not redesign. No arithmetic, ordering, dispatch or output changes.
- A smaller, safe change is worth more than a complete one. If a file cannot be reduced without a behaviour risk you cannot rule out, say so in the PR and leave it.
- Do not add new paths to the baseline.
- This repo's
poly.tomlis generated fromalef.toml— editalef.tomland re-runalef scaffold, neverpoly.tomldirectly.
Rules in this baseline
| rule | files | meaning |
|---|---|---|
function-too-long |
302 | function longer than 80 lines |
file-too-long |
235 | file longer than 1000 lines |
cyclomatic-complexity |
131 | cyclomatic complexity over 20 |
nesting-too-deep |
114 | more than 4 levels of nesting |
too-many-parameters |
65 | more than 6 parameters |
type-too-long |
16 | type longer than 300 lines |
Best places to start
These carry the most findings. The ones with four or more complexity findings also have a TODO(quality-debt) note at the top of the file.
| file | rules |
|---|---|
crates/xberg-native-pdf/src/extractors/images.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg-native-pdf/src/extractors/text/mod.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg-native-pdf/src/rendering/page_renderer.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg-native-pdf/src/rendering/separation_renderer.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg-native-pdf/src/rendering/text_rasterizer.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg-native-pdf/src/structure/parser.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg/src/extraction/email.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg/src/extraction/image_kind.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg/src/extractors/docx.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg/src/extractors/odt.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg/src/extractors/pdf/mod.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg/src/extractors/pdf/ocr/pipeline.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg/src/extractors/pptx.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg/src/ocr/hocr_parser.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
crates/xberg/src/pdf/structure/assembly.rs |
cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters |
-
.github/workflows/benchmarks.yaml— file-too-long -
.github/workflows/profiling.yaml— file-too-long -
.github/workflows/publish.yaml— file-too-long -
CHANGELOG.md— file-too-long -
alef.toml— file-too-long -
crates/xberg-candle-ocr/src/models/deepseek_ocr/engine.rs— function-too-long -
crates/xberg-candle-ocr/src/models/deepseek_ocr/model.rs— file-too-long, function-too-long, too-many-parameters -
crates/xberg-candle-ocr/src/models/glm_ocr/mod.rs— function-too-long -
crates/xberg-candle-ocr/src/models/glm_ocr/mtp.rs— too-many-parameters -
crates/xberg-candle-ocr/src/models/paddleocr_vl/engine.rs— function-too-long -
crates/xberg-candle-ocr/src/models/paddleocr_vl/model.rs— file-too-long, function-too-long, nesting-too-deep -
crates/xberg-candle-ocr/src/models/trocr.rs— function-too-long -
crates/xberg-cli/src/commands/cache.rs— cyclomatic-complexity, function-too-long, too-many-parameters -
crates/xberg-cli/src/commands/doctor.rs— function-too-long -
crates/xberg-cli/src/commands/embed.rs— function-too-long, too-many-parameters -
crates/xberg-cli/src/commands/extract.rs— file-too-long -
crates/xberg-cli/src/commands/overrides.rs— cyclomatic-complexity, file-too-long, function-too-long, type-too-long -
crates/xberg-cli/src/commands/server.rs— too-many-parameters -
crates/xberg-cli/src/commands/tree_sitter.rs— function-too-long -
crates/xberg-cli/src/main.rs— file-too-long, function-too-long, type-too-long -
crates/xberg-cli/tests/commands_test.rs— file-too-long -
crates/xberg-gliner/src/candle/decode.rs— nesting-too-deep, too-many-parameters -
crates/xberg-gliner/src/candle/pipeline.rs— function-too-long, too-many-parameters -
crates/xberg-gliner/src/decode.rs— too-many-parameters -
crates/xberg-gliner/src/v2/decode.rs— too-many-parameters -
crates/xberg-libwpd/build.rs— function-too-long -
crates/xberg-libwpd/src/shim.cpp— cyclomatic-complexity, file-too-long, function-too-long -
crates/xberg-native-pdf/src/annotation_types.rs— file-too-long -
crates/xberg-native-pdf/src/annotations.rs— function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/content/operators.rs— cyclomatic-complexity, file-too-long, function-too-long, type-too-long -
crates/xberg-native-pdf/src/content/parser.rs— cyclomatic-complexity, file-too-long, function-too-long -
crates/xberg-native-pdf/src/converters/text_post_processor.rs— file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/crypto/policy.rs— file-too-long -
crates/xberg-native-pdf/src/decoders/ccitt.rs— cyclomatic-complexity, file-too-long, function-too-long -
crates/xberg-native-pdf/src/decoders/flate.rs— cyclomatic-complexity, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/document/annotations.rs— cyclomatic-complexity, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/document/columns.rs— cyclomatic-complexity, file-too-long, function-too-long -
crates/xberg-native-pdf/src/document/extract_api.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/document/fonts.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/document/images.rs— cyclomatic-complexity, file-too-long, function-too-long -
crates/xberg-native-pdf/src/document/mod.rs— file-too-long, function-too-long -
crates/xberg-native-pdf/src/document/objects.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/document/open.rs— cyclomatic-complexity, function-too-long -
crates/xberg-native-pdf/src/document/pages.rs— cyclomatic-complexity, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/document/paths.rs— cyclomatic-complexity, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/document/reading_order.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/document/redaction.rs— cyclomatic-complexity, function-too-long -
crates/xberg-native-pdf/src/document/span_postprocess.rs— cyclomatic-complexity, file-too-long, function-too-long -
crates/xberg-native-pdf/src/document/spans_text.rs— cyclomatic-complexity, file-too-long, function-too-long -
crates/xberg-native-pdf/src/document/tables.rs— cyclomatic-complexity, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/document/tests.rs— file-too-long, function-too-long -
crates/xberg-native-pdf/src/document/text_assembly.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/elements/path.rs— file-too-long, too-many-parameters -
crates/xberg-native-pdf/src/encryption/algorithms.rs— file-too-long, too-many-parameters -
crates/xberg-native-pdf/src/encryption/mod.rs— file-too-long, function-too-long -
crates/xberg-native-pdf/src/extractors/auto.rs— cyclomatic-complexity, file-too-long, function-too-long -
crates/xberg-native-pdf/src/extractors/ccitt_bilevel.rs— function-too-long -
crates/xberg-native-pdf/src/extractors/forms.rs— file-too-long, function-too-long -
crates/xberg-native-pdf/src/extractors/gap_statistics.rs— file-too-long, function-too-long -
crates/xberg-native-pdf/src/extractors/images.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters -
crates/xberg-native-pdf/src/extractors/paths.rs— file-too-long -
crates/xberg-native-pdf/src/extractors/text/advance.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/extractors/text/clustering.rs— function-too-long -
crates/xberg-native-pdf/src/extractors/text/config_tests.rs— file-too-long -
crates/xberg-native-pdf/src/extractors/text/mod.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters -
crates/xberg-native-pdf/src/extractors/text/operators.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/extractors/text/run.rs— function-too-long -
crates/xberg-native-pdf/src/extractors/text/span_merging.rs— cyclomatic-complexity, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/extractors/text/span_ordering.rs— function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/extractors/text/tests.rs— file-too-long, function-too-long -
crates/xberg-native-pdf/src/extractors/text/tj_arrays.rs— function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/extractors/text/xobjects.rs— cyclomatic-complexity, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/extractors/xmp.rs— function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/fonts/adobe_glyph_list.rs— file-too-long -
crates/xberg-native-pdf/src/fonts/cff_encoding.rs— cyclomatic-complexity, file-too-long, function-too-long -
crates/xberg-native-pdf/src/fonts/character_mapper.rs— function-too-long -
crates/xberg-native-pdf/src/fonts/cid_mappings/adobe_cns1.rs— file-too-long -
crates/xberg-native-pdf/src/fonts/cid_mappings/adobe_gb1.rs— file-too-long -
crates/xberg-native-pdf/src/fonts/cid_mappings/adobe_japan1.rs— file-too-long -
crates/xberg-native-pdf/src/fonts/cid_mappings/adobe_korea1.rs— file-too-long -
crates/xberg-native-pdf/src/fonts/cmap.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/fonts/cmap_injector.rs— function-too-long -
crates/xberg-native-pdf/src/fonts/encoding.rs— function-too-long -
crates/xberg-native-pdf/src/fonts/font_dict.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/fonts/predefined_cidfont.rs— function-too-long -
crates/xberg-native-pdf/src/fonts/radical_forms.rs— function-too-long -
crates/xberg-native-pdf/src/fonts/truetype_cmap.rs— file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/fonts/truetype_parser.rs— file-too-long -
crates/xberg-native-pdf/src/fonts/unicode_decode.rs— cyclomatic-complexity, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/functions/mod.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/layout/font_stats.rs— function-too-long -
crates/xberg-native-pdf/src/layout/region_classifier.rs— function-too-long -
crates/xberg-native-pdf/src/layout/text_block.rs— file-too-long, function-too-long -
crates/xberg-native-pdf/src/lexer.rs— nesting-too-deep -
crates/xberg-native-pdf/src/object.rs— file-too-long, function-too-long -
crates/xberg-native-pdf/src/outline.rs— nesting-too-deep -
crates/xberg-native-pdf/src/parser.rs— file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/pipeline/config.rs— file-too-long -
crates/xberg-native-pdf/src/pipeline/reading_order/detectors.rs— nesting-too-deep -
crates/xberg-native-pdf/src/pipeline/reading_order/geometric.rs— function-too-long -
crates/xberg-native-pdf/src/pipeline/reading_order/xycut.rs— cyclomatic-complexity, file-too-long, function-too-long -
crates/xberg-native-pdf/src/redaction/serialize.rs— function-too-long -
crates/xberg-native-pdf/src/redaction/text_engine.rs— function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/rendering/ext_gstate.rs— function-too-long -
crates/xberg-native-pdf/src/rendering/mesh_shading.rs— file-too-long, function-too-long, too-many-parameters -
crates/xberg-native-pdf/src/rendering/page_renderer.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters -
crates/xberg-native-pdf/src/rendering/resolution/color.rs— cyclomatic-complexity, file-too-long, function-too-long -
crates/xberg-native-pdf/src/rendering/resolution/pipeline.rs— function-too-long -
crates/xberg-native-pdf/src/rendering/separation_renderer.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters -
crates/xberg-native-pdf/src/rendering/sidecar.rs— file-too-long, function-too-long -
crates/xberg-native-pdf/src/rendering/text_rasterizer.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters -
crates/xberg-native-pdf/src/structure/parser.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep, too-many-parameters -
crates/xberg-native-pdf/src/structure/spatial_table_detector.rs— cyclomatic-complexity, file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/structure/table_extractor.rs— file-too-long, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/structure/traversal.rs— file-too-long, function-too-long -
crates/xberg-native-pdf/src/structured.rs— function-too-long -
crates/xberg-native-pdf/src/text/bidi.rs— cyclomatic-complexity, file-too-long -
crates/xberg-native-pdf/src/text/document_classifier.rs— function-too-long -
crates/xberg-native-pdf/src/text/kangxi.rs— function-too-long -
crates/xberg-native-pdf/src/text/rtl_detector.rs— cyclomatic-complexity -
crates/xberg-native-pdf/src/text/word_boundary.rs— file-too-long -
crates/xberg-native-pdf/src/xfa/parser.rs— cyclomatic-complexity, function-too-long, nesting-too-deep -
crates/xberg-native-pdf/src/xref.rs— cyclomatic-complexity, file-too-long, function-too-long -
crates/xberg-native-pdf/src/xref_reconstruction.rs— function-too-long, nesting-too-deep -
crates/xberg-native-pdf/tests/extraction_api_regression.rs— file-too-long -
crates/xberg-native-pdf/tests/test_46_round2_qa_pass.rs— file-too-long -
crates/xberg-native-pdf/tests/test_46_round3_qa_pass.rs— file-too-long -
crates/xberg-native-pdf/tests/test_46_round4_qa_pass.rs— file-too-long -
crates/xberg-native-pdf/tests/test_ocg_ink_filtering.rs— file-too-long -
crates/xberg-native-pdf/tests/test_render_ocg_filtering.rs— file-too-long -
crates/xberg-native-pdf/tests/test_render_output_intent.rs— file-too-long -
crates/xberg-native-pdf/tests/test_render_resolution_pipeline_qa_wave2.rs— file-too-long -
crates/xberg-native-pdf/tests/test_render_resolution_pipeline_qa_wave3.rs— file-too-long -
crates/xberg-native-pdf/tests/test_render_resolution_pipeline_qa_wave4.rs— file-too-long -
crates/xberg-native-pdf/tests/test_separation_rendering.rs— file-too-long -
crates/xberg-native-pdf/tests/test_struct_actualtext_probes.rs— file-too-long -
crates/xberg-native-pdf/tests/test_transparency_flattening_audit.rs— file-too-long -
crates/xberg-native-pdf/tests/test_transparency_flattening_qa_round2.rs— file-too-long -
crates/xberg-native-pdf/tests/test_vertical_writing_mode_qa_probes.rs— file-too-long -
crates/xberg-native-pdf/tests/test_word_boundary_detection.rs— file-too-long -
crates/xberg-paddle-ocr/src/crnn_net.rs— function-too-long, nesting-too-deep -
crates/xberg-paddle-ocr/src/db_net.rs— function-too-long, too-many-parameters -
crates/xberg-paddle-ocr/src/ocr_lite.rs— file-too-long, function-too-long, too-many-parameters -
crates/xberg-pdfium-render/src/bindgen/pdfium_7678.rs— file-too-long -
crates/xberg-pdfium-render/src/bindings.rs— file-too-long, too-many-parameters, type-too-long -
crates/xberg-pdfium-render/src/bindings/dynamic_bindings.rs— file-too-long, function-too-long, too-many-parameters, type-too-long -
crates/xberg-pdfium-render/src/bindings/static_bindings.rs— file-too-long, too-many-parameters -
crates/xberg-pdfium-render/src/font_provider.rs— too-many-parameters -
crates/xberg-pdfium-render/src/pdf/destination.rs— function-too-long -
crates/xberg-pdfium-render/src/pdf/document/page.rs— file-too-long, too-many-parameters -
crates/xberg-pdfium-render/src/pdf/document/page/annotation.rs— file-too-long, function-too-long -
crates/xberg-pdfium-render/src/pdf/document/page/annotation/private.rs— type-too-long -
crates/xberg-pdfium-render/src/pdf/document/page/index_cache.rs— function-too-long, nesting-too-deep -
crates/xberg-pdfium-render/src/pdf/document/page/object.rs— file-too-long -
crates/xberg-pdfium-render/src/pdf/document/page/object/group.rs— function-too-long -
crates/xberg-pdfium-render/src/pdf/document/page/object/image.rs— file-too-long -
crates/xberg-pdfium-render/src/pdf/document/page/object/path.rs— too-many-parameters -
crates/xberg-pdfium-render/src/pdf/document/page/object/private.rs— type-too-long -
crates/xberg-pdfium-render/src/pdf/document/page/objects/common.rs— too-many-parameters, type-too-long -
crates/xberg-pdfium-render/src/pdf/document/page/paragraph.rs— function-too-long, nesting-too-deep - `crates/xbe
Source: xberg-io/xberg