AI Slop Code RIsk Monitor

VectifyAI/PageIndex

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

47.6 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for VectifyAI/PageIndex, a Python project with 39,049 GitHub stars. SynthScan examined 48,660 lines of code across 141 source files, recording 2939 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 47.6 (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.

47.6
Adjusted Signal
47.6
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
39.0K
Stars
Python
Language
48.7K
Lines of Code
141
Files
2.9K
Pattern Hits
2026-10-12
Scan Date
0.21
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 47.7/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 77.5/100 · CRITICAL

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

Agent Over-Engineering Ratio 53.5/100 · HIGH

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

PR Review Velocity Impact 96.0/100 · CRITICAL

Which changes need focused human review? 2939 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 30MEDIUM 28LOW 2881

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 2939 distinct pattern matches across 16 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 · 1390 pts
SeverityFileLineSnippetContext
LOWrun_pageindex.py4CODE
LOWtests/test_flash_extraction.py178CODE
LOWtests/test_flash_extraction.py330CODE
LOWtests/test_local_chat.py52CODE
LOWtests/test_issue_163.py4CODE
LOWpageindex/_version.py2CODE
LOWpageindex/chat_stream.py2CODE
LOWpageindex/client.py2CODE
LOWpageindex/client.py165CODE
LOWpageindex/client.py29CODE
LOWpageindex/client.py2672CODE
LOWpageindex/local_store.py2CODE
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.py14CODE
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/local_chat.py166CODE
LOWpageindex/local_chat.py1229CODE
LOWpageindex/local_chat.py1230CODE
LOWpageindex/integrations/anthropic_sdk.py19CODE
LOWpageindex/integrations/openai_agents.py15CODE
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
LOWpageindex/flash/blocks/build.py7CODE
1893 more matches not shown…
Hyper-Verbose Identifiers707 hits · 490 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_flash_extraction.py842def test_non_latin_document_is_indexed(name):CODE
LOW⚡tests/test_flash_extraction.py852def test_japanese_headings_are_kept():CODE
LOW⚡tests/test_flash_extraction.py860def test_cross_script_headings_are_kept():CODE
LOW⚡tests/test_flash_extraction.py870def test_non_latin_headings_are_detected(name):CODE
LOW⚡tests/test_flash_extraction.py878def test_landscape_deck_title_is_the_slide_heading(tmp_path):CODE
LOW⚡tests/test_flash_extraction.py886def test_flash_cli_summary_concurrency_reaches_the_indexer(monkeypatch, tmp_path):CODE
LOW⚡tests/test_flash_extraction.py892def test_flash_cli_summary_max_words_reaches_the_indexer(monkeypatch, tmp_path):CODE
LOW⚡tests/test_flash_extraction.py898def 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_bootstrap_reimport_is_not_swallowed(monkeypatch):CODE
LOWtests/test_flash_extraction.py265def test_pool_construction_failure_falls_back_sequential(monkeypatch):CODE
LOWtests/test_flash_extraction.py289def test_submit_document_refuses_during_bootstrap(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py302def test_unguarded_script_parses_parallel_without_reexecution(tmp_path):CODE
LOWtests/test_flash_extraction.py326def test_optimize_wins_over_deprecated_optimize_expand(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py363def test_lone_surrogate_from_broken_tounicode_is_replaced(monkeypatch):CODE
LOWtests/test_flash_extraction.py389def test_lone_surrogate_targets_never_patched_into_chars():CODE
LOWtests/test_flash_extraction.py403def test_lone_surrogate_from_single_byte_map_is_replaced():CODE
LOWtests/test_flash_extraction.py418def test_anonymous_main_overlapping_windows_restore(monkeypatch):CODE
LOWtests/test_flash_extraction.py460def test_optimize_full_skips_expand_without_page_texts(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py485def test_optimize_full_skips_expand_on_textless_pages(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py511def test_optimize_expand_warning_names_the_behavior_change(tmp_path,CODE
LOWtests/test_flash_extraction.py557def test_flash_cli_summary_model_follows_config_chain(monkeypatch, tmp_path):CODE
LOWtests/test_flash_extraction.py576def test_flash_cli_rejects_empty_structure(monkeypatch, tmp_path):CODE
LOWtests/test_flash_extraction.py584def test_flash_cli_rejects_oversized_flat_tree(monkeypatch, tmp_path):CODE
LOWtests/test_flash_extraction.py644def test_landscape_deck_is_structured(tmp_path):CODE
LOWtests/test_flash_extraction.py657def test_short_document_headings_are_detected(tmp_path):CODE
LOWtests/test_flash_extraction.py670def test_toc_source_is_always_present(tmp_path):CODE
LOWtests/test_flash_extraction.py686def test_no_hierarchy_falls_back_to_page_nodes(tmp_path):CODE
LOWtests/test_flash_extraction.py703def test_flat_fallback_over_limit_skips_model_passes(tmp_path, monkeypatch):CODE
LOWtests/test_flash_extraction.py725def test_textless_pdf_is_unreadable(tmp_path):CODE
LOWtests/test_flash_extraction.py738def test_flash_rejection_reason():CODE
LOWtests/test_flash_extraction.py760def test_page_fallback_covers_every_page(tmp_path):CODE
LOWtests/test_flash_extraction.py776def test_page_nodes_are_leaves(tmp_path):CODE
LOWtests/test_flash_extraction.py788def test_every_page_is_in_a_node(tmp_path):CODE
LOWtests/test_flash_extraction.py816def test_preface_page_is_retrievable(tmp_path, monkeypatch):CODE
LOW⚡tests/test_local_chat.py860def test_chat_process_blank_chat_model_refuses(client):CODE
LOW⚡tests/test_local_chat.py866def test_clip_flattens_and_caps():CODE
LOW⚡tests/test_local_chat.py872def test_chat_process_parallel_calls_pair_results(client, store_path,CODE
LOW⚡tests/test_local_chat.py4162def test_chat_reaches_the_model_with_client_instructions(store_path,CODE
LOW⚡tests/test_local_chat.py4172def test_bridge_client_instructions_follow_the_live_instructions(CODE
LOW⚡tests/test_local_chat.py4180def test_openai_agent_config_carries_client_instructions(store_path):CODE
LOW⚡tests/test_local_chat.py4186def test_anthropic_runner_config_carries_client_instructions(store_path):CODE
LOW⚡tests/test_local_chat.py4194def test_claude_agent_config_carries_client_instructions(store_path):CODE
LOW⚡tests/test_local_chat.py4201def test_managed_chat_sends_one_leading_system_row(monkeypatch):CODE
LOWtests/test_local_chat.py210def test_chat_completions_end_to_end(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py238def test_chat_completions_system_and_doc_block(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py251def test_chat_completions_accepts_query_string(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py262def test_chat_completions_validation(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py280def test_chat_completions_stream_modes(client, store_path, fake_model):CODE
LOWtests/test_local_chat.py298def test_chat_completions_missing_framework(client, monkeypatch):CODE
647 more matches not shown…
Empty Error Handlers20 hits · 100 pts
SeverityFileLineSnippetContext
HIGHtests/test_agent_tools.py3186except OSError: # the client gave up (timeout tests)CODE
HIGHpageindex/client.py30except Exception:CODE
HIGHpageindex/local_store.py93except OSError:CODE
HIGHpageindex/mcp_bridge.py192except PageIndexAPIError:CODE
HIGHpageindex/utils.py49except Exception:CODE
HIGHpageindex/utils.py703except ValueError:CODE
HIGHpageindex/local_chat.py582except Exception:CODE
HIGHpageindex/local_chat.py137except asyncio.CancelledError:CODE
HIGHpageindex/local_chat.py871except ValueError:CODE
HIGHpageindex/local_chat.py756except (ValueError, TypeError):CODE
HIGHpageindex/flash/blocks/build.py150except ValueError:CODE
HIGHpageindex/flash/blocks/build.py160except ValueError:CODE
HIGHpageindex/flash/classification/toc_boilerplate.py225except 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.py267except Exception:CODE
HIGHpageindex/flash/parser_pdfium_charlevel/pipeline.py279except 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.py99except (ValueError, AttributeError):CODE
Deep Nesting89 hits · 67 pts
SeverityFileLineSnippetContext
LOWpageindex/cloud_api.py342CODE
LOWpageindex/cloud_api.py376CODE
LOWpageindex/client.py2412CODE
LOWpageindex/mcp_bridge.py263CODE
LOWpageindex/utils.py323CODE
LOWpageindex/utils.py341CODE
LOWpageindex/utils.py537CODE
LOWpageindex/utils.py675CODE
LOWpageindex/utils.py343CODE
LOWpageindex/page_index_md.py32CODE
LOWpageindex/page_index_md.py137CODE
LOWpageindex/page_index_classic.py431CODE
LOWpageindex/page_index_classic.py469CODE
LOWpageindex/page_index_classic.py814CODE
LOWpageindex/page_index_classic.py854CODE
LOWpageindex/page_index_classic.py1301CODE
LOWpageindex/agent_tools.py536CODE
LOWpageindex/agent_tools.py837CODE
LOWpageindex/local_chat.py50CODE
LOWpageindex/local_chat.py721CODE
LOWpageindex/local_chat.py776CODE
LOWpageindex/local_chat.py845CODE
LOWpageindex/local_chat.py1043CODE
LOWpageindex/local_chat.py1363CODE
LOWpageindex/local_chat.py1140CODE
LOWpageindex/flash/embedded_toc.py351CODE
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.py184CODE
LOWpageindex/flash/classification/toc_boilerplate.py306CODE
LOWpageindex/flash/classification/header_footer.py153CODE
LOWpageindex/flash/classification/header_footer.py230CODE
LOWpageindex/flash/classification/header_footer.py279CODE
LOWpageindex/flash/classification/header_footer.py290CODE
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
LOW…eindex/flash/parser_pdfium_charlevel/text_normalize.py123CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py25CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py116CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py190CODE
LOWpageindex/flash/parser_pdfium_charlevel/font_unicode.py397CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py52CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py210CODE
29 more matches not shown…
Cross-Language Confusion10 hits · 60 pts
SeverityFileLineSnippetContext
HIGHtests/test_local_chat.py1281 'data: {"type":"message_start","message":{"id":"msg_1","type":"message","role":"assistant","model":"claude-test"CODE
HIGHtests/test_local_chat.py1293 'data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":CODE
HIGHtests/test_agent_tools.py1986 """A 200 body of null, a batched array, or an SSE string frame mustSTRING
HIGHpageindex/utils.py417 # In Linux, only '/' and '\0' (null) are invalid in filenames.COMMENT
HIGHpageindex/agent_tools.py1336 # 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.py206 stack.push(stack_outline_node)CODE
Decorative Section Separators18 hits · 54 pts
SeverityFileLineSnippetContext
MEDIUMpageindex/tree_optimize.py95# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py97# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py142# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py144# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py243# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py245# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py308# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py310# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py412# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py414# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py480# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py482# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py609# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py611# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py860# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/tree_optimize.py862# --------------------------------------------------------------------------COMMENT
MEDIUMpageindex/flash/parser_pdfium_charlevel/glyph_tables.py11# ---------------------------------------------------------------------------COMMENT
MEDIUMpageindex/flash/parser_pdfium_charlevel/glyph_tables.py39# ---------------------------------------------------------------------------COMMENT
Excessive Try-Catch Wrapping50 hits · 54 pts
SeverityFileLineSnippetContext
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.py128 except Exception as e:CODE
LOWpageindex/local_api.py150 except Exception as e:CODE
MEDIUMpageindex/utils.py249def extract_json(content):CODE
LOWpageindex/utils.py49 except Exception:CODE
LOWpageindex/utils.py91 except Exception:CODE
LOWpageindex/utils.py189 except Exception as e:CODE
LOWpageindex/utils.py221 except Exception as e:CODE
LOWpageindex/utils.py275 except Exception:CODE
LOWpageindex/utils.py278 except Exception as e:CODE
LOWpageindex/utils.py1094 except Exception as e:STRING
LOWpageindex/utils.py1193 except Exception as e:STRING
LOWpageindex/tree_optimize.py751 except Exception as exc:CODE
LOWpageindex/agent_tools.py1162 except Exception as exc:CODE
LOWpageindex/agent_tools.py1248 except Exception as exc: # tool calls must never raise into the agent loopCODE
LOWpageindex/agent_tools.py1395 except Exception as exc:CODE
LOWpageindex/local_chat.py252 except Exception:CODE
LOWpageindex/local_chat.py290 except Exception:CODE
LOWpageindex/local_chat.py582 except Exception:CODE
LOWpageindex/flash/parser_pdfium_parallel.py114 except Exception:CODE
LOWpageindex/flash/parser_pdfium_parallel.py167 except Exception:CODE
LOWpageindex/flash/parser_pdfium_parallel.py176 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.py232 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py267 except Exception:CODE
LOWpageindex/flash/parser_pdfium_charlevel/pipeline.py279 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
MEDIUMpageindex/flash/parser_pdfium_charlevel/pdf_objects.py162def close(self) -> None:CODE
Over-Commented Block32 hits · 32 pts
SeverityFileLineSnippetContext
LOWpageindex/config.yaml1# Models — index_model indexes documents (structure and summaries),COMMENT
LOWpageindex/flash/main.py241COMMENT
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.py193__all__ = ["parse_charlevel_meta_parallel"]CODE
LOWpageindex/flash/__init__.py5__all__ = ["page_index_flash"]CODE
LOWpageindex/flash/api.py251__all__ = ["page_index_flash"]CODE
LOWpageindex/flash/embedded_toc.py610__all__ = [CODE
LOWpageindex/flash/main.py306__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__.py125__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 Patterns24 hits · 22 pts
SeverityFileLineSnippetContext
LOWpageindex/client.py457CODE
LOWpageindex/client.py1025CODE
LOWpageindex/client.py1045CODE
LOWpageindex/client.py1065CODE
LOWpageindex/client.py1085CODE
LOWpageindex/client.py1105CODE
LOWpageindex/client.py1125CODE
LOWpageindex/client.py1145CODE
LOWpageindex/client.py1165CODE
LOWpageindex/client.py1491CODE
LOWpageindex/client.py1669CODE
LOWpageindex/client.py1766CODE
LOWpageindex/client.py2690CODE
LOWpageindex/utils.py741CODE
LOWpageindex/page_index_md.py245CODE
LOWpageindex/page_index_classic.py1290CODE
LOWpageindex/tree_optimize.py878CODE
LOWpageindex/local_chat.py335CODE
LOWpageindex/local_chat.py637CODE
LOWpageindex/local_chat.py908CODE
LOWpageindex/local_chat.py941CODE
LOWpageindex/local_chat.py1043CODE
LOWpageindex/local_chat.py1363CODE
LOWpageindex/flash/api.py180CODE
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md14# PageIndex: Vectorless, Reasoning-based RAGCOMMENT
MEDIUMREADME.md62### Compare with Vector RAGCOMMENT
Redundant / Tautological Comments4 hits · 6 pts
SeverityFileLineSnippetContext
LOWpageindex/utils.py362 # Check if the node is a leaf nodeCOMMENT
LOWpageindex/utils.py678 # Check if item is a dictionary and has 'physical_index' keyCOMMENT
LOWpageindex/page_index_classic.py937 # Check if list_index is validCOMMENT
LOWpageindex/page_index_classic.py991 # 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.py1270 # Create a clean structure without unnecessary fields for description generationCOMMENT
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_local_chat.py2049CODE
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
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOW.github/scripts/comment-on-duplicates.sh5# Usage:COMMENT