repowiserepowise
Sign in
vectifyai/pageindex
OverviewDocsArchitectureKnowledge GraphFilesCode HealthSecurityRefactoring

People & History

CommitsContributorsDecisions
Chat
Stats
repowiserepowise
ExplorePricingDocs
Sign in
repowisevectifyai/pageindex
PA
PA

vectifyai / pageindex

pythonmaind2693d833.7K linessynced 1w ago

Code health

5.1out of 10Needs work

This codebase scores 5.1 out of 10 for code health, which we rate needs work. It also scores maintainability 5.6 and static performance 9.7 out of 10. The three are scored separately and never blended into one number. Risk is concentrated, as it usually is: 19 of 140 files are git hotspots, and they average 3.7 — which is where the fixes pay off most.

Full health report →
Documentation246pages15 with model-written prose, 231 built from the indexScore validation9/204.5× baselineTop-ranked files that did go on to need a bug fixDead code2exportsUnused exports that nothing in the graph reaches

Do next

4 things worth doing in the week to Sep 29, the last indexed commit, 4 of them now.

Now

  • Critical

    Clean up what this week's commits left: 5 serious findings in 4 files

    1 commit in the last 7 days added or worsened them, and they are still open. Start with pageindex/flash/api.py, which has 1 critical.

    serious findings
    5
    critical
    2
    files
    4
    Medium effort
  • High

    Start breaking up detect_font_heading (CCN 158, 153 lines): first lift lines 192-198

    pageindex/flash/heading_detection/style_detectors.py:192

    detect_font_heading has many independent paths through it; 2 files import it, changed 1 time in 90 days.

    gain
    +0.9 health on this file(inferred)
    health recoverable
    +0.9(inferred)
    size
    CCN 158, 153 lines
    steps
    2 (2 mechanical)
    Small effort
  • High

    Start breaking up _parse_tounicode_cmap (CCN 89, 194 lines): first lift lines 193-201

    pageindex/flash/parser_pdfium_charlevel/cmap_parse.py:193

    _parse_tounicode_cmap nests its control flow deeply, and part of it is duplicated, so splitting it also removes a copy; 4 files import it, changed 1 time in 90 days.

    gain
    +0.8 health on this file(inferred)
    health recoverable
    +0.8(inferred)
    size
    CCN 89, 194 lines, nests 7 deep
    steps
    1 (1 mechanical)
    Small effort
  • High

    Start breaking up _tokenize_show_operators (CCN 112, 248 lines): first lift lines 349-363

    pageindex/flash/parser_pdfium_charlevel/content_stream.py:349

    _tokenize_show_operators nests its control flow deeply, and part of it is duplicated, so splitting it also removes a copy; 3 files import it, changed 1 time in 90 days.

    gain
    +0.9 health on this file(inferred)
    health recoverable
    +0.9(inferred)
    size
    CCN 112, 248 lines, nests 6 deep
    steps
    2 (2 mechanical)
    Small effort

Improve what Repowise can see

  • Add a test coverage report

    Without one, Repowise cannot tell tested code from untested code, so every test-related action says “unknown”.

    line coverage
    Unknown, no report
    Small effort
Lines of code
33.7K
Files
140
Symbols
2,040
Modules
4
Languages
3

Recent activity

All commits →

Commits

  • d2693d80ci(publish): gate releases on the live cloud tests again (#538)1w ago
  • 619cbd89ci(publish): run the release gate without the live cloud tests (#537)1w ago
  • 037a7dbaperf: summaries run deepest-first and start while expand is still deciding (#432)2w ago
  • 8eff7733Anthropic lanes: send the model as written; the prefix picks the route (#443)2w ago
  • 9c4c3ff2test(sdk): cover list_documents regression boundaries2w ago
  • ed06ec69fix(sdk): list_documents review followups2w ago

Decisions

  • Make Flash (full optimization) the default local indexing mode and tighten mode/optimize handlingproposed · 1w ago
  • Introduce local mode for PageIndex SDK with Flash tree build and OpenAI-style chatproposed · 1w ago
  • Route chat() through chat_completions, add Claude managed-prefix cache marking on LiteLLM routes, and document local tool/history contractproposed · 1w ago
  • Ensure Responses reasoning_effort merges via caller extra_body and unset empty reasoning/model on both lanesproposed · 1w ago
  • Flash PDF outline improvements with TOC fallback and toc_source labelingproposed · 1w ago
  • Route chat lane through LiteLLM and fix OpenAI model failuresproposed · 1w ago
▸

Everything we found

978 open

Every detector's open count by area, each with its worst example. An inventory, not a to-do list: the actions above are the part worth doing.

  • worst item is critical severity. Code health734Nested complexity · pageindex/local_chat.py54 findings · 8.0 deducted→
  • worst item is medium severity. Refactoring101detect_title+1.5 health, S effort · pageindex/flash/title/detect.py→
  • worst item is medium severity. Decisions38pageindex/client.py19 awaiting review · 19 hotspots ungoverned→
  • worst item is medium severity. Ownership105pageindex/client.py96% single-owner concentration, 44 commits in 90d→

Composition

Open the graph →
python 98%
javascript 1%shell 1%

Explore this codebase

  • Docs246 pages across 4 modules→
  • ChatAsk this codebase a question and get an answer with its sources.→
  • Files140 files with per-file docs, health and history→
  • ArchitectureDependency graph, layers, and 2 entry points→
  • Code healthPer-file scores, 771 open findings, coverage and refactoring targets→
  • Knowledge graphEntities, communities, and the paths between them→
  • Change couplingFiles that keep changing together, mined from commit history→
  • CommitsChange-risk ranked history with agent provenance→
  • ContributorsBus factor, per-file maintainers, and the human/agent split→
  • StatsSize class, origin, lifetime churn, rhythm and records→
  • CostsWhat indexing this snapshot cost, by model and by run.→