pyalwin / codemesh
Code health
This codebase scores 6.9 out of 10 for code health, which we rate fair. It also scores maintainability 7.3 and static performance 9.5 out of 10. The three are scored separately and never blended into one number. Risk is concentrated, as it usually is: 23 of 71 files are git hotspots, and they average 5.4 — which is where the fixes pay off most.
Do next
2 suggested
2 things worth doing in the week to Apr 20, the last indexed commit, 1 of them now.
Now
- High
Simplify
parseWithQueryinsrc/indexer/query-parser.tswhile the change is fresh1 commit in the last 7 days added or worsened 2 critical or high findings here, still open. Fixing now costs less than after the next change.
- serious findings
- 2
- critical
- 0
- latest commit
- feat(parser): QueryParser infrastructure + Swift .scm queries
Small effort
Worth planning
Start breaking up index (CCN 74, 516 lines): first lift lines 152-176
src/indexer/indexer.ts:152
index nests deeply; easier to read and change once split; function changed in 16 commits; its file is imported by 6 files, changed 17 times in 90 days.
- gain
- up to +1.3 health on this file(inferred)
- finding
- Nested complexity
- size
- CCN 74, 516 lines, nests 5 deep
- severity
- high
Medium effort, worth a check
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
- 9.5K
Recent activity
All commitsCommits
- 8d8fe7a8perf(pagerank): remove 20k-node cap — run on all graphs6mo ago
- a2560efdbuild: regenerate dist/ artifacts for P1–P5 source changes6mo ago
- ba9939caAdd mcpName and server.json for MCP Registry publication6mo ago
- 76f7cd3dPublish to npm as @pyalwin/codemesh and update README6mo ago
- ac547519Remove Smithery integration6mo ago
- 17447efeLazy-import SqliteBackend to fix Smithery scanner 422 error6mo ago
Decisions
- Emit scopePath for symbols instead of concatenated qualified namesproposed · 1d ago
- Prefer FTS5 + vector semantic search at query timeproposed · 1d ago
- Reset cached embedder for tests/model switchingproposed · 1d ago
- Reset cached LanceDB connection for tests/re-initializationproposed · 1d ago
- Lazy-load transformers model for embeddingsproposed · 1d ago
- Run embeddings inference locally for zero API costproposed · 1d ago
Everything we found
400 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 health200Nested complexity · src/indexer/indexer.ts15 findings · 7.8 deducted
- worst item is low severity. Refactoring25main+0.6 health, M effort · eval/judge.py
- worst item is medium severity. Doc drift3docs/experiments/pydantic-eval-responses.mdDocument names tests/test_main.py, which no longer exists.
- worst item is medium severity. Decisions37src/indexer/indexer.ts14 awaiting review · 23 hotspots ungoverned
- worst item is medium severity. Ownership135eval/head_to_head.py100% single-owner concentration, 17 commits in 90d
Composition
Open the graph- typescript82%
- python11%
- shell7%
Explore this codebase
- Docs73 pages across 6 modules
- ChatAsk this codebase a question and get an answer with its sources.
- Files71 files with per-file docs, health and history
- ArchitectureDependency graph, layers, and 3 entry points
- Code healthPer-file scores, 168 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.