AI Slop Code Risk Monitor

VectifyAI/PageIndex

SlopCodeMonitor badge for VectifyAI/PageIndex Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

📑 PageIndex: Document Index for Vectorless, Reasoning-based RAG

42.8 High pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for VectifyAI/PageIndex, a Python project with 39,923 GitHub stars. SynthScan examined 57,570 lines of code across 138 source files, recording 3164 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 42.8 (High 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.

42.8
Adjusted Signal
42.8
Raw Pattern Score
100%
Time Factor
2026-10-29
Last Push
39.9K
Stars
Python
Language
57.6K
Lines of Code
138
Files
3.2K
Pattern Hits
2026-10-31
Scan Date
0.25
HC Hit Rate

Risk Review · Payload v1

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.

Cognitive Ownership Risk 47.7/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 1071 finding(s).

Hallucinated Dependency & Supply Chain Risk 71.7/100 · HIGH

Are imports declared and package/API names verified? 1965 finding(s).

Agent Over-Engineering Ratio 53.9/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 1063 finding(s).

PR Review Velocity Impact 94.7/100 · CRITICAL

Which changes need focused human review? 3164 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 0HIGH 34MEDIUM 29LOW 3101

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 3164 distinct pattern matches across 15 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.

Unused Imports1953 hits · 1391 pts
SeverityFileLineSnippetContext
LOWrun_pageindex.py4CODE
LOWtests/test_flash_extraction.py178CODE
LOWtests/test_flash_extraction.py362CODE
LOWtests/test_local_chat.py62CODE
LOWtests/test_local_chat.py1216CODE
LOWtests/test_issue_163.py4CODE
LOWpageindex/_version.py2CODE
LOWpageindex/chat_stream.py3CODE
LOWpageindex/client.py2CODE
LOWpageindex/client.py170CODE
LOWpageindex/client.py29CODE
LOWpageindex/client.py2953CODE
LOWpageindex/local_store.py2CODE
LOWpageindex/__init__.py4CODE
LOWpageindex/__init__.py4CODE
LOWpageindex/__init__.py4CODE
LOWpageindex/__init__.py5CODE
LOWpageindex/__init__.py5CODE
LOWpageindex/__init__.py5CODE
LOWpageindex/__init__.py6CODE
LOWpageindex/__init__.py7CODE
LOWpageindex/__init__.py7CODE
LOWpageindex/__init__.py7CODE
LOWpageindex/__init__.py7CODE
LOWpageindex/__init__.py7CODE
LOWpageindex/__init__.py11CODE
LOWpageindex/__init__.py12CODE
LOWpageindex/__init__.py13CODE
LOWpageindex/__init__.py13CODE
LOWpageindex/__init__.py14CODE
LOWpageindex/__init__.py15CODE
LOWpageindex/types.py12CODE
LOWpageindex/mcp_bridge.py15CODE
LOWpageindex/local_api.py2CODE
LOWpageindex/page_index_md.py6CODE
LOWpageindex/page_index_md.py8CODE
LOWpageindex/page_index_classic.py7CODE
LOWpageindex/imaging.py2CODE
LOWpageindex/local_chat.py4CODE
LOWpageindex/integrations/anthropic_sdk.py19CODE
LOWpageindex/integrations/claude_agent_sdk.py16CODE
LOWpageindex/integrations/openai_agents.py16CODE
LOWpageindex/flash/parser_pdfium_parallel.py23CODE
LOWpageindex/flash/__init__.py3CODE
LOWpageindex/flash/api.py3CODE
LOWpageindex/flash/embedded_toc.py39CODE
LOWpageindex/flash/main.py8CODE
LOWpageindex/flash/main.py11CODE
LOWpageindex/flash/main.py22CODE
LOWpageindex/flash/main.py23CODE
LOWpageindex/flash/main.py23CODE
LOWpageindex/flash/blocks/build.py3CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
LOWpageindex/flash/blocks/build.py7CODE
1893 more matches not shown…
Hyper-Verbose Identifiers909 hits · 605 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_flash_extraction.py1260def test_non_latin_document_is_indexed(name):CODE
LOW⚡tests/test_flash_extraction.py1270def test_japanese_headings_are_kept():CODE
LOW⚡tests/test_flash_extraction.py1278def test_cross_script_headings_are_kept():CODE
LOW⚡tests/test_flash_extraction.py1288def test_non_latin_headings_are_detected(name):CODE
LOW⚡tests/test_flash_extraction.py1296def test_landscape_deck_title_is_the_slide_heading(tmp_path):CODE
LOW⚡tests/test_flash_extraction.py1304def test_flash_cli_summary_concurrency_reaches_the_indexer(monkeypatch, tmp_path):CODE
LOW⚡tests/test_flash_extraction.py1310def test_flash_cli_summary_max_words_reaches_the_indexer(monkeypatch, tmp_path):CODE
LOW⚡tests/test_flash_extraction.py1316def test_flash_cli_summary_reasoning_effort_reaches_the_indexer(monkeypatch, tmp_path):CODE
LOW⚡tests/test_flash_extraction.py1322def test_flash_cli_summary_flags_refuse_standard_mode(monkeypatch, tmp_path):CODE
LOWtests/test_flash_extraction.py41def test_page_mode_walk_uses_merged_surrogate_census():CODE
LOWtests/test_flash_extraction.py63def test_rtl_sign_takes_a_multi_code_point_glyph():CODE
LOWtests/test_flash_extraction.py79def test_ink_past_the_advance_does_not_split_the_word(tmp_path):CODE
LOWtests/test_flash_extraction.py93def test_dropped_glyph_after_ink_past_the_advance_does_not_split_the_word(tmp_path):CODE
LOWtests/test_flash_extraction.py111def test_dropped_glyph_with_no_next_survivor_advances_by_its_code_width():CODE
LOWtests/test_flash_extraction.py124def test_rotated_text_ignores_code_widths(tmp_path):CODE
LOWtests/test_flash_extraction.py138def test_rtl_chars_ignore_code_widths(tmp_path):CODE
LOWtests/test_flash_extraction.py152def test_composite_font_widths_read_both_w_forms():CODE
LOWtests/test_flash_extraction.py172def test_optimize_full_keyless_reports_file_errors_first(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py193def test_no_heading_result_carries_page_texts(tmp_path):CODE
LOWtests/test_flash_extraction.py207def test_propose_children_clamps_to_loaded_pages(monkeypatch):CODE
LOWtests/test_flash_extraction.py234def test_propose_children_keeps_non_latin_headings(monkeypatch):CODE
LOWtests/test_flash_extraction.py266def test_bootstrap_reimport_is_not_swallowed(monkeypatch):CODE
LOWtests/test_flash_extraction.py297def test_pool_construction_failure_falls_back_sequential(monkeypatch):CODE
LOWtests/test_flash_extraction.py321def test_submit_document_refuses_during_bootstrap(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py334def test_unguarded_script_parses_parallel_without_reexecution(tmp_path):CODE
LOWtests/test_flash_extraction.py358def test_optimize_wins_over_deprecated_optimize_expand(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py395def test_lone_surrogate_from_broken_tounicode_is_replaced(monkeypatch):CODE
LOWtests/test_flash_extraction.py421def test_lone_surrogate_targets_never_patched_into_chars():CODE
LOWtests/test_flash_extraction.py435def test_lone_surrogate_from_single_byte_map_is_replaced():CODE
LOWtests/test_flash_extraction.py450def test_anonymous_main_overlapping_windows_restore(monkeypatch):CODE
LOWtests/test_flash_extraction.py492def test_optimize_full_skips_expand_without_page_texts(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py517def test_optimize_full_skips_expand_on_textless_pages(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py543def test_optimize_expand_warning_names_the_behavior_change(tmp_path,CODE
LOWtests/test_flash_extraction.py589def test_flash_cli_summary_model_follows_config_chain(monkeypatch, tmp_path):CODE
LOWtests/test_flash_extraction.py608def test_flash_cli_rejects_empty_structure(monkeypatch, tmp_path):CODE
LOWtests/test_flash_extraction.py616def test_flash_cli_rejects_oversized_flat_tree(monkeypatch, tmp_path):CODE
LOWtests/test_flash_extraction.py695def test_landscape_deck_is_structured(tmp_path):CODE
LOWtests/test_flash_extraction.py708def test_short_document_headings_are_detected(tmp_path):CODE
LOWtests/test_flash_extraction.py726def test_running_contents_link_does_not_hide_headings(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py762def test_running_contents_link_leaves_headings_below_it(tmp_path):CODE
LOWtests/test_flash_extraction.py777def test_running_contents_title_still_marks_its_pages(tmp_path):CODE
LOWtests/test_flash_extraction.py794def test_running_contents_links_weigh_body_text(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py829def test_title_printed_again_with_its_opening_is_no_running_header(tmp_path):CODE
LOWtests/test_flash_extraction.py850def test_company_name_under_the_contents_link_is_a_running_header(tmp_path, cover):CODE
LOWtests/test_flash_extraction.py867def test_section_title_under_the_contents_link_still_opens_its_section(tmp_path, cover):CODE
LOWtests/test_flash_extraction.py915def test_numbering_continues_from_a_note_opening_its_page(tmp_path):CODE
LOWtests/test_flash_extraction.py970def test_numbering_continues_only_up_to_the_next_section(tmp_path):CODE
LOWtests/test_flash_extraction.py990def test_slide_built_up_step_by_step_is_one_section(tmp_path):CODE
LOWtests/test_flash_extraction.py1015def test_body_paragraph_repeated_on_a_built_up_page_is_no_new_body_text(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py1037def test_title_printed_again_on_the_next_slides_continues_its_section(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py1070def test_bookmark_title_printed_a_page_after_its_target_is_no_child():CODE
LOWtests/test_flash_extraction.py1088def test_toc_source_is_always_present(tmp_path):CODE
LOWtests/test_flash_extraction.py1104def test_no_hierarchy_falls_back_to_page_nodes(tmp_path):CODE
LOWtests/test_flash_extraction.py1121def test_flat_fallback_over_limit_skips_model_passes(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py1143def test_textless_pdf_is_unreadable(tmp_path):CODE
LOWtests/test_flash_extraction.py1156def test_flash_rejection_reason():CODE
LOWtests/test_flash_extraction.py1178def test_page_fallback_covers_every_page(tmp_path):CODE
LOWtests/test_flash_extraction.py1194def test_page_nodes_are_leaves(tmp_path):CODE
LOWtests/test_flash_extraction.py1206def test_every_page_is_in_a_node(tmp_path):CODE
LOWtests/test_flash_extraction.py1234def test_preface_page_is_retrievable(tmp_path, monkeypatch):CODE
849 more matches not shown…
Empty Error Handlers24 hits · 120 pts
SeverityFileLineSnippetContext
HIGHtests/test_agent_tools.py3450except OSError: # the client gave up (timeout tests)CODE
HIGHpageindex/client.py30except Exception:CODE
HIGHpageindex/local_store.py93except OSError:CODE
HIGHpageindex/mcp_bridge.py210except PageIndexAPIError:CODE
HIGHpageindex/utils.py113except ImportError:CODE
HIGHpageindex/utils.py209except Exception:CODE
HIGHpageindex/utils.py244except RuntimeError:CODE
HIGHpageindex/utils.py904except ValueError:CODE
HIGHpageindex/local_chat.py1128except Exception:CODE
HIGHpageindex/local_chat.py456except (ImportError, AttributeError):CODE
HIGHpageindex/local_chat.py203except asyncio.CancelledError:CODE
HIGHpageindex/local_chat.py1538except ValueError:CODE
HIGHpageindex/local_chat.py1415except (ValueError, TypeError):CODE
HIGHpageindex/integrations/claude_agent_sdk.py392except _Lost:CODE
HIGHpageindex/flash/blocks/build.py150except ValueError:CODE
HIGHpageindex/flash/blocks/build.py160except ValueError:CODE
HIGHpageindex/flash/classification/toc_boilerplate.py226except ValueError:CODE
HIGHpageindex/flash/parser_pdfium_charlevel/code_walk.py66except Exception:CODE
HIGHpageindex/flash/parser_pdfium_charlevel/pipeline.py100except Exception:CODE
HIGHpageindex/flash/parser_pdfium_charlevel/pipeline.py266except Exception:CODE
HIGHpageindex/flash/parser_pdfium_charlevel/pipeline.py278except Exception:CODE
HIGHpageindex/flash/parser_pdfium_charlevel/pdf_objects.py165except Exception:CODE
HIGHpageindex/flash/parser_pdfium_charlevel/pdf_objects.py187except ValueError:CODE
HIGHpageindex/flash/outline_assembly/assembly.py101except (ValueError, AttributeError):CODE
Deep Nesting96 hits · 70 pts
SeverityFileLineSnippetContext
LOWtests/test_claude_code.py599CODE
LOWtests/test_client.py3070CODE
LOWpageindex/cloud_api.py359CODE
LOWpageindex/client.py2618CODE
LOWpageindex/mcp_bridge.py290CODE
LOWpageindex/utils.py524CODE
LOWpageindex/utils.py542CODE
LOWpageindex/utils.py738CODE
LOWpageindex/utils.py876CODE
LOWpageindex/utils.py544CODE
LOWpageindex/page_index_md.py32CODE
LOWpageindex/page_index_md.py137CODE
LOWpageindex/page_index_classic.py434CODE
LOWpageindex/page_index_classic.py472CODE
LOWpageindex/page_index_classic.py817CODE
LOWpageindex/page_index_classic.py857CODE
LOWpageindex/page_index_classic.py1316CODE
LOWpageindex/agent_tools.py541CODE
LOWpageindex/agent_tools.py842CODE
LOWpageindex/local_chat.py93CODE
LOWpageindex/local_chat.py275CODE
LOWpageindex/local_chat.py441CODE
LOWpageindex/local_chat.py1312CODE
LOWpageindex/local_chat.py1376CODE
LOWpageindex/local_chat.py1440CODE
LOWpageindex/local_chat.py1509CODE
LOWpageindex/local_chat.py1788CODE
LOWpageindex/local_chat.py2192CODE
LOWpageindex/local_chat.py2422CODE
LOWpageindex/local_chat.py1897CODE
LOWpageindex/local_chat.py2466CODE
LOWpageindex/integrations/claude_agent_sdk.py747CODE
LOWpageindex/flash/embedded_toc.py354CODE
LOWpageindex/flash/main.py124CODE
LOWpageindex/flash/blocks/build.py95CODE
LOWpageindex/flash/blocks/join_rules.py73CODE
LOWpageindex/flash/classification/body_text.py193CODE
LOWpageindex/flash/classification/toc_boilerplate.py185CODE
LOWpageindex/flash/classification/toc_boilerplate.py346CODE
LOWpageindex/flash/classification/header_footer.py185CODE
LOWpageindex/flash/classification/header_footer.py266CODE
LOWpageindex/flash/classification/header_footer.py315CODE
LOWpageindex/flash/classification/header_footer.py327CODE
LOWpageindex/flash/heading_detection/text_checks.py87CODE
LOWpageindex/flash/heading_detection/text_checks.py141CODE
LOWpageindex/flash/heading_detection/style_detectors.py239CODE
LOWpageindex/flash/heading_detection/neighbors.py79CODE
LOWpageindex/flash/heading_detection/page_scan.py63CODE
LOWpageindex/flash/heading_detection/page_scan.py296CODE
LOWpageindex/flash/heading_detection/page_scan.py425CODE
LOWpageindex/flash/heading_detection/detectors.py459CODE
LOWpageindex/flash/heading_detection/candidates.py124CODE
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py22CODE
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py141CODE
LOWpageindex/flash/parser_pdfium_charlevel/merge.py18CODE
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py255CODE
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py350CODE
LOW…eindex/flash/parser_pdfium_charlevel/content_stream.py59CODE
LOW…eindex/flash/parser_pdfium_charlevel/content_stream.py396CODE
LOWpageindex/flash/parser_pdfium_charlevel/cmap_parse.py111CODE
36 more matches not shown…
Excessive Try-Catch Wrapping61 hits · 65 pts
SeverityFileLineSnippetContext
LOWtests/test_local_chat.py3810 except Exception as exc:CODE
LOWpageindex/_version.py9 except Exception:CODE
MEDIUMpageindex/_version.py5def sdk_version() -> str:CODE
MEDIUMpageindex/client.py27def _import() -> None:CODE
LOWpageindex/client.py30 except Exception:CODE
LOWpageindex/local_api.py134 except Exception as e:CODE
LOWpageindex/local_api.py164 except Exception as e:CODE
MEDIUMpageindex/utils.py148def fetch():CODE
MEDIUMpageindex/utils.py450def extract_json(content):CODE
LOW⚡pageindex/utils.py192 except Exception:CODE
LOW⚡pageindex/utils.py209 except Exception:CODE
LOWpageindex/utils.py154 except Exception as exc:CODE
LOWpageindex/utils.py229 except Exception:CODE
LOWpageindex/utils.py380 except Exception as e:CODE
LOWpageindex/utils.py419 except Exception as e:CODE
LOWpageindex/utils.py476 except Exception:CODE
LOWpageindex/utils.py479 except Exception as e:CODE
LOWpageindex/utils.py1101 except Exception:CODE
LOWpageindex/utils.py1313 except Exception as e:CODE
LOWpageindex/utils.py1403 except Exception as e:STRING
LOWpageindex/utils.py1514 except Exception as e:STRING
LOWpageindex/tree_optimize.py795 except Exception as exc:CODE
LOWpageindex/agent_tools.py1167 except Exception as exc:CODE
LOWpageindex/agent_tools.py1253 except Exception as exc: # tool calls must never raise into the agent loopCODE
LOWpageindex/agent_tools.py1400 except Exception as exc:CODE
LOWpageindex/local_chat.py353 except Exception: # LiteLLM's APIError: nothing to put backCODE
LOWpageindex/local_chat.py704 except Exception:CODE
LOWpageindex/local_chat.py767 except Exception:CODE
LOWpageindex/local_chat.py1128 except Exception:CODE
LOWpageindex/integrations/claude_agent_sdk.py141 except Exception as exc: # one bad call must not end the sessionCODE
LOWpageindex/integrations/claude_agent_sdk.py351 except Exception as exc: # the SDK raises bare Exceptions too (control timeouts)CODE
LOWpageindex/integrations/claude_agent_sdk.py411 except Exception as exc:CODE
LOWpageindex/integrations/claude_agent_sdk.py726 except Exception: # every call goes to a process, which reports itCODE
LOWpageindex/flash/parser_pdfium_parallel.py113 except Exception:CODE
LOWpageindex/flash/parser_pdfium_parallel.py166 except Exception:CODE
LOWpageindex/flash/parser_pdfium_parallel.py175 except Exception:CODE
LOWpageindex/flash/api.py42 except Exception as exc: # noqa: BLE001 - normalize stream capability errorsCODE
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py66 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py101 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py123 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py371 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py389 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py397 except Exception:CODE
LOW…eindex/flash/parser_pdfium_charlevel/content_stream.py422 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py224 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py351 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py375 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py402 except Exception:CODE
MEDIUMpageindex/flash/parser_pdfium_charlevel/font_unicode.py399def number(value, default):CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py65 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py69 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py81 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py100 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py231 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py266 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py278 except Exception:CODE
LOW…geindex/flash/parser_pdfium_charlevel/unicode_apply.py38 except Exception:CODE
LOW…geindex/flash/parser_pdfium_charlevel/unicode_apply.py60 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pdf_objects.py63 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pdf_objects.py165 except Exception:CODE
1 more matches not shown…
Cross-Language Confusion10 hits · 60 pts
SeverityFileLineSnippetContext
HIGHtests/test_local_chat.py3515 'data: {"type":"message_start","message":{"id":"msg_1","type":"message","role":"assistant","model":"claude-test"CODE
HIGHtests/test_local_chat.py3527 'data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":CODE
HIGHtests/test_agent_tools.py2241 """A 200 body of null, a batched array, or an SSE string frame mustSTRING
HIGHpageindex/utils.py618 # In Linux, only '/' and '\0' (null) are invalid in filenames.COMMENT
HIGHpageindex/agent_tools.py1341 # Nullable unions arrive as anyOf: [{type: string}, {type: null}].COMMENT
HIGHpageindex/flash/parser_pdfium_charlevel/merge.py346 # previous glyph transform is still null): position comparison returnsCOMMENT
HIGH…eindex/flash/parser_pdfium_charlevel/content_stream.py31# (B -> BM -> BMC, f -> false, n -> null). Not operators.COMMENT
HIGH…eindex/flash/parser_pdfium_charlevel/content_stream.py239 continue # content operator evaluator: `if (obj != null) args append`CODE
HIGHpageindex/flash/parser_pdfium_charlevel/font_unicode.py67 # Detail: encoding lookup(null) -> null assigned to built-in encoding.COMMENT
HIGHpageindex/flash/outline_assembly/assembly.py280 stack.push(stack_outline_node)CODE
Decorative Section Separators18 hits · 54 pts
SeverityFileLineSnippetContext
MEDIUMpageindex/tree_optimize.py100# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py102# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py168# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py170# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py269# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py271# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py349# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py351# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py453# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py455# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py521# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py523# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py650# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py652# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py907# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py909# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/flash/parser_pdfium_charlevel/glyph_tables.py11# ---------------------------------------------------------------------------COMMENT
MEDIUMpageindex/flash/parser_pdfium_charlevel/glyph_tables.py39# ---------------------------------------------------------------------------COMMENT
Over-Commented Block32 hits · 32 pts
SeverityFileLineSnippetContext
LOWpageindex/config.yaml1# Models — index_model indexes documents (structure and summaries),COMMENT
LOWpageindex/flash/main.py241 for body_block in caption_region.output_slot:COMMENT
LOWpageindex/flash/heading_detection/keyword_tables.py41# Whole-text lookup sets use normalized lowercase strings. The normalization isCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py181 patches.append((chars[pos][0], token_value))COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/code_walk.py221 # table rows can contain real star glyphs adjacent to synthetic spaces.COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py61 # degenerate x-column). Boundary conditions:COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py101 "font_tally": {mapping["font_name"]: 1},COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py181 # Text-item box accumulation: appending a glyph only grows the item'sCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py201 chunk["weight_tally"][mapping["weight"]] = chunk["weight_tally"].get(mapping["weight"], 0) + 1COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py221 # reading-direction reference past it; otherwise that advanceCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py241 chunk["ws_pending"] = TrueCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py301COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py321 #COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py361 else:COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py381 or (_object_merge_id(text) != chunk["flush_id"] and not ws_bridge)COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py421 # prev.glyph_w, so we see advance ≈ -prev.glyph_w. Glyph widthsCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/merge.py441 chunk["left"] = min(chunk["left"], text["left"])COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py81 ch_str = chr(codepoint)COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py101 char_origin_x.value = 0.0; char_origin_y.value = 0.0COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py121 # as expected for advance-based text items). Using the ink box cumulatively under-fillsCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/char_extract.py301 "is_mn": candidate_item["is_mn"],COMMENT
LOW…eindex/flash/parser_pdfium_charlevel/text_normalize.py21 # text extraction maps a glyph whose unicode lands on U+00AD to U+002D. (AnCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py261 if flags_match:COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py161 # [u] or u) -- the table lookup is then wrapped in RTL ligature reversal, whichCOMMENT
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py181 # that value. Emit it rather than the per-chunk minimum.COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/geometry.py101 object_top = max(y00, y01, y10, y11)COMMENT
LOWpageindex/flash/parser_pdfium_charlevel/glyph_tables.py21# disagrees.COMMENT
LOW…geindex/flash/parser_pdfium_charlevel/unicode_apply.py121 res = _walk_codes(chars_by_obj.get(id(obj), []), target_text_items)COMMENT
LOW…geindex/flash/parser_pdfium_charlevel/unicode_apply.py281 window.append(object_index)COMMENT
LOW…geindex/flash/parser_pdfium_charlevel/unicode_apply.py301 for _, font, window_end in reversed(synth_windows):COMMENT
LOWpageindex/flash/model/char_stats.py1"""Character categories and per-run character statistics."""COMMENT
LOW.github/workflows/publish.yml1name: Publish to PyPICOMMENT
Modern Structural Boilerplate24 hits · 24 pts
SeverityFileLineSnippetContext
LOWpageindex/local_store.py12logger = logging.getLogger(__name__)CODE
LOWpageindex/__init__.py17__all__ = [CODE
LOWpageindex/local_api.py18logger = logging.getLogger(__name__)CODE
LOWpageindex/flash/parser_pdfium_parallel.py192__all__ = ["parse_charlevel_meta_parallel"]CODE
LOWpageindex/flash/__init__.py5__all__ = ["page_index_flash"]CODE
LOWpageindex/flash/api.py317__all__ = ["page_index_flash"]CODE
LOWpageindex/flash/embedded_toc.py613__all__ = [CODE
LOWpageindex/flash/main.py308__all__ = ["extract_toc", "DocumentState", "find_references", "mark_references"]CODE
LOWpageindex/flash/blocks/build.py87def _set_add(tree: SortedKeyList, block: Block) -> None:CODE
LOWpageindex/flash/blocks/__init__.py56__all__ = ["BlockClusterContext", "should_join_line_to_block", "cluster_lines_into_blocks", "split_heading_body_blocks",CODE
LOWpageindex/flash/classification/__init__.py127__all__ = [CODE
LOWpageindex/flash/heading_detection/__init__.py111__all__ = [CODE
LOWpageindex/flash/parser_pdfium_charlevel/__init__.py171__all__ = ["parse_charlevel", "parse_charlevel_meta"]CODE
LOWpageindex/flash/title/__init__.py54__all__ = ["is_title_candidate_block", "score_title_candidate", "TitleSearchState", "TitleCandidate", "detect_title", "iCODE
LOWpageindex/flash/clustering/build.py118def _set_add(tree: SortedKeyList, line: Line) -> None:CODE
LOWpageindex/flash/clustering/__init__.py60__all__ = [CODE
LOWpageindex/flash/labels/__init__.py44__all__ = [CODE
LOWpageindex/flash/outline/__init__.py44__all__ = [CODE
LOWpageindex/flash/model/__init__.py111__all__ = [CODE
LOWpageindex/flash/outline_assembly/__init__.py96__all__ = [CODE
LOWpageindex/flash/columns/__init__.py40__all__ = [CODE
LOWpageindex/flash/phases/__init__.py41__all__ = [CODE
LOWpageindex/flash/tokens/__init__.py94__all__ = [CODE
LOWpageindex/flash/stats/__init__.py34__all__ = [CODE
AI Structural Patterns26 hits · 22 pts
SeverityFileLineSnippetContext
LOWpageindex/client.py500CODE
LOWpageindex/client.py1077CODE
LOWpageindex/client.py1097CODE
LOWpageindex/client.py1117CODE
LOWpageindex/client.py1137CODE
LOWpageindex/client.py1157CODE
LOWpageindex/client.py1177CODE
LOWpageindex/client.py1197CODE
LOWpageindex/client.py1217CODE
LOWpageindex/client.py1637CODE
LOWpageindex/client.py1848CODE
LOWpageindex/client.py1945CODE
LOWpageindex/client.py2971CODE
LOWpageindex/utils.py942CODE
LOWpageindex/utils.py1450CODE
LOWpageindex/utils.py1243CODE
LOWpageindex/page_index_md.py245CODE
LOWpageindex/page_index_classic.py1305CODE
LOWpageindex/tree_optimize.py925CODE
LOWpageindex/local_chat.py824CODE
LOWpageindex/local_chat.py1246CODE
LOWpageindex/local_chat.py1577CODE
LOWpageindex/local_chat.py1626CODE
LOWpageindex/local_chat.py1788CODE
LOWpageindex/local_chat.py2192CODE
LOWpageindex/flash/api.py188CODE
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md14# PageIndex: Vectorless, Reasoning-based RAGCOMMENT
MEDIUMREADME.md63### Compare with Vector RAGCOMMENT
Redundant / Tautological Comments4 hits · 6 pts
SeverityFileLineSnippetContext
LOWpageindex/utils.py563 # Check if the node is a leaf nodeCOMMENT
LOWpageindex/utils.py879 # Check if item is a dictionary and has 'physical_index' keyCOMMENT
LOWpageindex/page_index_classic.py940 # Check if list_index is validCOMMENT
LOWpageindex/page_index_classic.py994 # Check if the result is correctCOMMENT
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMpageindex/page_index_md.py283 # Create a clean structure without unnecessary fields for description generationCOMMENT
MEDIUMpageindex/page_index_classic.py1285 # Create a clean structure without unnecessary fields for description generationCOMMENT
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_local_chat.py4551CODE
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWpageindex/flash/data/boilerplate_phrases.json1["ヌ ク ャ O 轗 ゙ 紗 礇 蕃 芸 タ k r Т ニ 招 b ム X キ 妓 D 奣", "カ ュ R+ S ニ g ゥ M ィ 鋕 S c テツ テ ヨ 黷 フヌ ル J z F ミ e2Tz", "ウ 畍 ノ 斡 泥 ヤ 宋 CODE
LOWpageindex/flash/data/boilerplate_phrases.json1["ヌ ク ャ O 轗 ゙ 紗 礇 蕃 芸 タ k r Т ニ 招 b ム X キ 妓 D 奣", "カ ュ R+ S ニ g ゥ M ィ 鋕 S c テツ テ ヨ 黷 フヌ ル J z F ミ e2Tz", "ウ 畍 ノ 斡 泥 ヤ 宋 CODE