Fast Rust library for PDF inspection, classification, and text extraction. Intelligently detects scanned vs text-based PDFs to enable smart routing decisions.
This report summarizes scanner evidence for firecrawl/pdf-inspector, a Rust project with 19,796 GitHub stars. SynthScan examined 162,768 lines of code across 142 source files, recording 447 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 3.3 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 388 finding(s).
Are imports declared and package/API names verified? 13 finding(s).
Are wrappers, guards, and repeated structures necessary? 104 finding(s).
Which changes need focused human review? 447 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 447 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | rust-toolchain.toml | 1 | # Pinned toolchain for local development and CI (maturin-action reads this | COMMENT |
| LOW | tests/integration_tests.rs | 1941 | && output.contains("\u{03B4}\u{03B5}\u{03B6}"), | COMMENT |
| LOW | tests/integration_tests.rs | 2581 | image_dx: i32, | COMMENT |
| LOW | tests/integration_tests.rs | 2601 | vector_paths: usize, | COMMENT |
| LOW | tests/integration_tests.rs | 4381 | // row 1 (data): "BIO" "8.23" | COMMENT |
| LOW | tests/integration_tests.rs | 5601 | "cell 3 should hold 'Phone', got {:?}", | COMMENT |
| LOW | tests/integration_tests.rs | 6561 | #[test] | COMMENT |
| LOW | tests/integration_tests.rs | 9581 | } | COMMENT |
| LOW | tests/integration_tests.rs | 9661 | make_embedded_cid_font_pdf( | COMMENT |
| LOW | examples/rtl_fixtures.rs | 1 | //! Generates the right-to-left text fixtures under `tests/fixtures/`. | COMMENT |
| LOW | examples/rtl_fixtures.rs | 21 | //! Regenerate with `cargo run --example rtl_fixtures`. The output is | COMMENT |
| LOW | examples/rtl_fixtures.rs | 341 | } | COMMENT |
| LOW | examples/symbolic_font_fixtures.rs | 1 | //! Generates the symbolic-font, base-encoding and ligature-name fixtures | COMMENT |
| LOW | napi/src/lib.rs | 81 | pub pages_needing_ocr: Vec<u32>, | COMMENT |
| LOW | napi/src/lib.rs | 141 | COMMENT | |
| LOW | napi/src/lib.rs | 161 | /// | COMMENT |
| LOW | napi/src/lib.rs | 181 | pub y: f64, | COMMENT |
| LOW | napi/src/lib.rs | 201 | /// Merged items retain evidence from all contributing runs. | COMMENT |
| LOW | napi/src/lib.rs | 221 | /// Where `isBold` came from — `"FontName"`, `"FontFlags"`, | COMMENT |
| LOW | napi/src/lib.rs | 241 | /// equal components and DeviceCMYK converted as the PDF specification | COMMENT |
| LOW | napi/src/lib.rs | 261 | /// Underline detected geometrically (drawn rule/thin rect under the | COMMENT |
| LOW | napi/src/lib.rs | 281 | pub mcid: Option<i64>, | COMMENT |
| LOW | napi/src/lib.rs | 301 | COMMENT | |
| LOW | napi/src/lib.rs | 321 | /// `TextItem.isBold` is also `true` for items whose `fontWeight` is | COMMENT |
| LOW | napi/src/lib.rs | 361 | COMMENT | |
| LOW | napi/src/lib.rs | 881 | pub struct PositionedText { | COMMENT |
| LOW | napi/src/lib.rs | 941 | /// One structure-tree element reference from a tagged PDF. | COMMENT |
| LOW | napi/src/lib.rs | 981 | page: e.page, | COMMENT |
| LOW | napi/src/lib.rs | 1021 | Ok(to_page_region_texts(results)) | COMMENT |
| LOW | napi/src/lib.rs | 1101 | } | COMMENT |
| LOW | napi/src/lib.rs | 1121 | pub structure_tokens: Vec<String>, | COMMENT |
| LOW | napi/src/lib.rs | 1161 | /// `true` when the cell is a `<th>` or sits inside `<thead>`. | COMMENT |
| LOW | napi/src/lib.rs | 1201 | text: c.text, | COMMENT |
| LOW | napi/src/lib.rs | 1221 | pub struct TableExtractionResultJs { | COMMENT |
| LOW | napi/src/lib.rs | 1301 | /// Combined per-page markdown extraction and layout classification result. | COMMENT |
| LOW | napi/src/lib.rs | 1401 | COMMENT | |
| LOW | src/types.rs | 1 | //! Shared types used across the extraction and markdown pipelines. | COMMENT |
| LOW | src/types.rs | 21 | COMMENT | |
| LOW | src/types.rs | 41 | pub(crate) stats: crate::tounicode::CidDecodeStats, | COMMENT |
| LOW | src/types.rs | 121 | /// Explicit glyph encodings and narrowly verified repairs for a stale CMap. | COMMENT |
| LOW | src/types.rs | 141 | /// The encoding the codes read through where `differences` say nothing | COMMENT |
| LOW | src/types.rs | 181 | /// For Type1/TrueType: 0.001 (widths in 1000ths of em) | COMMENT |
| LOW | src/types.rs | 241 | pub enum ItemType { | COMMENT |
| LOW | src/types.rs | 281 | pub y: f32, | COMMENT |
| LOW | src/types.rs | 341 | COMMENT | |
| LOW | src/types.rs | 361 | /// height lets items and rendered regions be intersected directly. Raw | COMMENT |
| LOW | src/types.rs | 381 | pub x: f32, | COMMENT |
| LOW | src/types.rs | 401 | /// diagonal watermarks) report fractional angles. A reflected text | COMMENT |
| LOW | src/types.rs | 421 | /// font that reports a genuine zero advance keeps `true`. Items that | COMMENT |
| LOW | src/types.rs | 441 | /// symbol cleanup. This is decoding provenance, not an OCR verdict: | COMMENT |
| LOW | src/types.rs | 461 | /// FontDescriptor's `/FontWeight`, else a weight word in the font name | COMMENT |
| LOW | src/types.rs | 481 | /// that don't come from a font. Many producers write `/Flags 4` whatever | COMMENT |
| LOW | src/types.rs | 501 | /// other colour space (Separation, | COMMENT |
| LOW | src/types.rs | 521 | /// text by it. The mode is graphics state: it holds across text objects, | COMMENT |
| LOW | src/types.rs | 541 | /// Used to link this item to the PDF structure tree for tagged PDFs. | COMMENT |
| LOW | src/types.rs | 581 | /// `true` for a glyph run flagged as a super- or subscript of a larger | COMMENT |
| LOW | src/types.rs | 641 | /// Adaptive join threshold from page-level letter-spacing detection. | COMMENT |
| LOW | src/types.rs | 781 | self.needs_space_between(prev_item, item, &result, single_char_threshold) | COMMENT |
| LOW | src/overlong_numerals.rs | 1 | //! Repair of Form XObjects whose `/BBox` holds numerals no parser can hold. | COMMENT |
| LOW | src/overlong_numerals.rs | 21 | //! `/BBox n 0 R` refers to (whether or not the form's own dictionary | COMMENT |
| 248 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_python.py | 144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_python.py | 146 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_python.py | 765 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_python.py | 767 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_python.py | 874 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_python.py | 876 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_python.py | 909 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_python.py | 911 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_python.py | 942 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_python.py | 944 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_python.py | 965 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_python.py | 967 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 79 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 81 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 126 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 128 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 202 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 204 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 221 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 223 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 255 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 257 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 278 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 280 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 469 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 471 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 624 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 626 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 679 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 681 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 837 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_python.py | 839 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/types.rs | 101 | // ── Font types (crate-internal) ────────────────────────────────────── | COMMENT |
| MEDIUM | src/types.rs | 237 | // ── Public types ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/structure_tree.rs | 14 | // ─── Standard structure types ──────────────────────────────────────── | COMMENT |
| MEDIUM | src/structure_tree.rs | 258 | // ─── Marked content reference ──────────────────────────────────────── | COMMENT |
| MEDIUM | src/structure_tree.rs | 269 | // ─── Structure element ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/structure_tree.rs | 288 | // ─── Structure tree (top level) ────────────────────────────────────── | COMMENT |
| MEDIUM | src/structure_tree.rs | 418 | // ─── Tagged table structures ──────────────────────────────────────── | COMMENT |
| MEDIUM | src/structure_tree.rs | 534 | // ─── Parsing helpers ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/structure_tree.rs | 1089 | // ─── PDF byte pre-processing ──────────────────────────────────────── | COMMENT |
| MEDIUM | src/tables/mod.rs | 2540 | // ── Rect-guided table builder tests ───────────────────────────── | COMMENT |
| MEDIUM | src/extractor/content_stream.rs | 2327 | // ── Path construction operators ────────────────────── | COMMENT |
| MEDIUM | src/extractor/content_stream.rs | 2362 | // ── Path painting operators ────────────────────────── | COMMENT |
| MEDIUM | src/extractor/content_stream.rs | 4628 | // ── Rotated-run geometry ───────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_python.py | 150 | def test_off_mode_has_full_provenance_without_external_runtimes(self): | CODE |
| LOW⚡ | tests/test_python.py | 176 | def test_auto_mode_skips_external_runtimes_for_clean_text(self): | CODE |
| LOW⚡ | tests/test_python.py | 184 | def test_selected_pages_are_one_indexed(self): | CODE |
| LOW⚡ | tests/test_python.py | 190 | def test_rejects_invalid_options(self): | CODE |
| LOW⚡ | tests/test_python.py | 757 | def test_malformed_region_raises_value_error(self): | CODE |
| LOW⚡ | tests/test_python.py | 771 | def test_default_returns_all_pages(self): | CODE |
| LOW⚡ | tests/test_python.py | 779 | def test_bytes_default_returns_all_pages(self): | CODE |
| LOW⚡ | tests/test_python.py | 784 | def test_selected_pages_preserve_order(self): | CODE |
| LOW⚡ | tests/test_python.py | 790 | def test_bytes_selected_pages_preserve_order(self): | CODE |
| LOW⚡ | tests/test_python.py | 886 | def test_process_all_fixtures(self, filename): | CODE |
| LOW⚡ | tests/test_python.py | 918 | def test_rotated_margin_run_has_tall_thin_box(self): | CODE |
| LOW⚡ | tests/test_python.py | 948 | def test_upright_page_reports_no_rotation(self): | CODE |
| LOW⚡ | tests/test_python.py | 955 | def test_rotated_page_reports_its_frame(self): | CODE |
| LOW⚡ | tests/test_python.py | 1034 | def test_items_report_fill_and_stroke_colour_and_render_mode(self): | CODE |
| LOW⚡ | tests/test_python.py | 1043 | def test_non_text_items_carry_no_paint(self): | CODE |
| LOW⚡ | tests/test_python.py | 1053 | def test_fixture_text_reports_its_paint(self): | CODE |
| LOW | tests/test_python.py | 99 | def test_encrypted_pdf_without_password_raises(self): | CODE |
| LOW | tests/test_python.py | 162 | def test_password_opens_encrypted_fixture(self): | CODE |
| LOW | tests/test_python.py | 309 | def test_bold_from_weight_defaults_off(self): | CODE |
| LOW | tests/test_python.py | 492 | def test_bold_source_names_where_the_default_verdict_came_from(self): | CODE |
| LOW | tests/test_python.py | 520 | def test_fixed_pitch_is_declared_or_measured(self): | CODE |
| LOW | tests/test_python.py | 533 | def test_bold_from_weight_credits_the_weight_class_and_takes_a_threshold(self): | CODE |
| LOW | tests/test_python.py | 579 | def test_join_with_text_items(self): | CODE |
| LOW | tests/test_python.py | 607 | def test_untagged_returns_empty(self): | CODE |
| LOW | tests/test_python.py | 644 | def test_positions_are_relative_to_cropbox_origin(self): | CODE |
| LOW | tests/test_python.py | 660 | def test_regions_read_the_same_frame(self): | CODE |
| LOW | tests/test_python.py | 707 | def test_bold_from_weight_keeps_the_words_of_a_region(self, tmp_path): | CODE |
| LOW | tests/test_python.py | 817 | def test_out_of_range_page_marks_needs_ocr(self): | CODE |
| LOW | tests/test_python.py | 859 | def test_classify_nonexistent(self): | CODE |
| LOW | tests/test_python.py | 863 | def test_extract_text_bytes_not_a_pdf(self): | CODE |
| LOW | tests/test_python.py | 930 | def test_rotated_margin_run_assigned_to_margin_region_only(self): | CODE |
| LOW | tests/test_python.py | 1065 | def test_information_entries_are_decoded(self): | CODE |
| LOW | tests/test_python.py | 1077 | def test_detection_reads_them_too(self): | CODE |
| LOW⚡ | scripts/tests/test_version.py | 71 | def test_updates_every_version_location(self): | CODE |
| LOW⚡ | scripts/tests/test_version.py | 76 | def test_reports_a_divergent_package(self): | CODE |
| LOW⚡ | scripts/tests/test_version.py | 82 | def test_rejects_an_invalid_version(self): | CODE |
| LOW⚡ | scripts/tests/test_version.py | 86 | def test_rejects_numeric_prerelease_with_leading_zero(self): | CODE |
| LOW⚡ | scripts/tests/test_version.py | 96 | def test_preflight_failure_does_not_partially_update(self): | CODE |
| LOW | scripts/tests/test_probe_backend_evidence.py | 37 | def test_accepts_real_top_level_page_array(self): | CODE |
| LOW | scripts/tests/test_probe_backend_evidence.py | 46 | def test_flags_material_alternate_text_gain(self): | CODE |
| LOW | scripts/tests/test_probe_backend_evidence.py | 64 | def test_repeated_alignment_and_image_evidence_are_reported(self): | CODE |
| LOW | scripts/tests/test_probe_backend_evidence.py | 91 | def test_token_segmentation_difference_does_not_imply_more_evidence(self): | CODE |
| LOW⚡ | scripts/tests/test_make_font_metadata_fixtures.py | 22 | def test_every_run_names_a_face_and_every_face_is_shown(self): | CODE |
| LOW⚡ | scripts/tests/test_make_font_metadata_fixtures.py | 30 | def test_pdf_escape_protects_string_delimiters(self): | CODE |
| LOW⚡ | scripts/tests/test_make_font_metadata_fixtures.py | 33 | def test_scale_advance_is_in_thousandths_of_the_em(self): | CODE |
| LOW⚡ | scripts/tests/test_make_font_metadata_fixtures.py | 37 | def test_widths_array_spans_the_codes_with_zero_gaps(self): | CODE |
| LOW⚡ | scripts/tests/test_make_font_metadata_fixtures.py | 46 | def test_content_stream_sets_each_run_in_its_face(self): | CODE |
| LOW | scripts/tests/test_make_font_metadata_fixtures.py | 58 | def test_to_unicode_cmap_maps_every_code_to_itself(self): | CODE |
| LOW | scripts/tests/test_make_font_metadata_fixtures.py | 62 | def test_pdf_writer_offsets_point_at_their_objects(self): | CODE |
| LOW | scripts/tests/test_bench_opendataloader.py | 41 | def test_reports_metric_and_document_deltas(self): | CODE |
| LOW | scripts/tests/test_bench_opendataloader.py | 58 | def test_reference_delta_is_reported(self): | CODE |
| LOW | scripts/tests/test_bench_opendataloader.py | 69 | def test_gates_cover_aggregate_document_missing_and_reference(self): | CODE |
| LOW | scripts/tests/test_bench_opendataloader.py | 86 | def test_regression_gate_is_independent_of_report_limit(self): | CODE |
| LOW | scripts/tests/test_bench_opendataloader.py | 104 | def test_report_handles_reference_without_overall_score(self): | CODE |
| LOW | scripts/tests/test_bench_opendataloader.py | 117 | def test_reference_gate_reports_missing_score_as_unavailable(self): | CODE |
| LOW | scripts/tests/test_bench_opendataloader.py | 133 | def test_arguments_reject_negative_counts_and_allow_zero_top(self): | CODE |
| LOW | scripts/tests/test_bench_opendataloader.py | 148 | def test_arguments_reject_nonfinite_float_thresholds(self): | CODE |
| LOW | scripts/tests/test_bench_opendataloader.py | 165 | def test_run_engine_clears_stale_predictions_before_parser(self): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/lib.rs | 2169 | /// bands, but without a real rect-derived column scaffold they must not be | COMMENT |
| MEDIUM | src/tables/detect_rects.rs | 2820 | // X-edges when they already provide a tighter scaffold. Some PDFs draw | COMMENT |
| MEDIUM | src/tables/detect_rects.rs | 3039 | // (b) Two-column text-only scaffold: when both columns were inferred | COMMENT |
| MEDIUM | src/tables/detect_rects.rs | 3097 | // when the column scaffold comes from drawn cell geometry. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/tables/detect_heuristic.rs | 573 | // Step 1: Merge adjacent single-char items into words (handles per-character PDFs) | COMMENT |
| LOW⚡ | src/tables/detect_heuristic.rs | 576 | // Step 2: Expand consolidated financial items (e.g. "$ 1,234 $ 5,678" → sub-items) | COMMENT |
| LOW | src/tables/detect_heuristic.rs | 815 | // Step 1: Group items by Y position (8pt tolerance for same row) | COMMENT |
| LOW | src/tables/detect_heuristic.rs | 831 | // Step 2: Filter to rows with 3+ distinct X-position clusters (20pt tolerance) | COMMENT |
| LOW | src/tables/detect_heuristic.rs | 865 | // Step 3: Find contiguous runs of qualifying rows. | COMMENT |
| LOW | src/tables/detect_heuristic.rs | 900 | // Step 4: Cross-row column alignment check per region | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/tables/detect_heuristic.rs | 573 | // Step 1: Merge adjacent single-char items into words (handles per-character PDFs) | COMMENT |
| LOW⚡ | src/tables/detect_heuristic.rs | 576 | // Step 2: Expand consolidated financial items (e.g. "$ 1,234 $ 5,678" → sub-items) | COMMENT |
| LOW | src/tables/detect_heuristic.rs | 815 | // Step 1: Group items by Y position (8pt tolerance for same row) | COMMENT |
| LOW | src/tables/detect_heuristic.rs | 831 | // Step 2: Filter to rows with 3+ distinct X-position clusters (20pt tolerance) | COMMENT |
| LOW | src/tables/detect_heuristic.rs | 865 | // Step 3: Find contiguous runs of qualifying rows. | COMMENT |
| LOW | src/tables/detect_heuristic.rs | 900 | // Step 4: Cross-row column alignment check per region | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/markdown/furniture.rs | 852 | &format!("unique body content words {page} {j} lorem ipsum"), | CODE |
| LOW | src/markdown/furniture.rs | 869 | &format!("unique body content words five {j} lorem ipsum"), | CODE |
| LOW | src/markdown/furniture.rs | 968 | &format!("unique body content words {page} {j} lorem ipsum"), | CODE |
| LOW | src/markdown/furniture.rs | 1005 | &format!("unique body content words {page} {j} lorem ipsum"), | CODE |
| LOW | src/markdown/furniture.rs | 1037 | &format!("unique body content words {page} {j} lorem ipsum"), | CODE |
| LOW | src/markdown/furniture.rs | 1073 | &format!("unique body content words {page} {j} lorem ipsum"), | CODE |
| LOW | src/markdown/furniture.rs | 1105 | &format!("unique body content words {page} {j} lorem ipsum"), | CODE |
| LOW | src/markdown/furniture.rs | 1147 | &format!("unique body content words {page} {j} lorem ipsum"), | CODE |
| LOW | src/markdown/furniture.rs | 1182 | &format!("unique body content words {page} {j} lorem ipsum dolor"), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/integration_tests.rs | 5691 | // routes off `is_cid` from font_widths instead, which is robust to a | COMMENT |
| MEDIUM | src/markdown/furniture.rs | 348 | // Y positions on that page. This is more robust than a percentage-based zone | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/version.py | 4 | CODE | |
| LOW | scripts/make_font_metadata_fixtures.py | 48 | CODE | |
| LOW | scripts/bench_opendataloader.py | 4 | CODE | |
| LOW | scripts/probe_backend_evidence.py | 9 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/version.py | 48 | CODE | |
| LOW | scripts/version.py | 61 | CODE | |
| LOW | scripts/probe_backend_evidence.py | 61 | CODE | |
| LOW | scripts/tests/test_bench_opendataloader.py | 148 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/version.py | 192 | def set_versions(version: str, root: Path = ROOT) -> None: | CODE |