Reference
Computed glossary Every term repowise computes across traversal, graph, git, analysis, generation, workspace, persistence, and MCP. The vocabulary map for wiki pages, graph records, risk signals, contracts, and tool responses.
This glossary describes the data Repowise computes while indexing, analyzing,
generating, serving, and exporting a repository. It is based on the code paths in
packages/core, packages/server, and packages/cli, not only on README files.
Use this as the vocabulary map for wiki pages, graph records, risk signals,
workspace overlays, MCP responses, and CLI output.
Area Main code paths What gets computed Traversal and parsing packages/core/src/repowise/core/ingestion/traverser.py, packages/core/src/repowise/core/ingestion/parser.py, packages/core/src/repowise/core/ingestion/models.pyFiles, languages, entry points, symbols, imports, exports, calls, inheritance, parse errors, content hashes Graph construction packages/core/src/repowise/core/ingestion/graph.py, call_resolver.py, heritage_resolver.py, framework_edges.py, dynamic_hints/File and symbol nodes, import/call/heritage/framework/dynamic/co-change edges, centrality, SCCs, communities, execution flows Git intelligence packages/core/src/repowise/core/ingestion/git_indexer.pyChurn, ownership, hotspots, bus factor, co-change partners, significant commits, temporal scores, rename and merge signals Analysis packages/core/src/repowise/core/analysis/Dead-code findings, decision records, decision staleness, security findings, PR blast radius, execution flows, communities Generation packages/core/src/repowise/core/generation/Wiki page contexts, page types, source hashes, summaries, freshness, confidence decay, RAG context, job checkpoints, reports, costs Workspace intelligence packages/core/src/repowise/core/workspace/Workspace repo scan, cross-repo co-changes, package dependencies, API contracts, contract links, workspace CLAUDE.md data Persistence and search packages/core/src/repowise/core/persistence/, Alembic migrationsORM rows, FTS rows, vector records, answer cache, cost rows, graph rows API, MCP, CLI packages/server/src/repowise/server/, packages/cli/src/repowise/cli/Dashboard schemas, MCP tool payloads, status tables, doctor checks, exports, costs, augment hook context
Term Definition Computed by Example Includable source file A file that survives ignore rules, blocked patterns, size limit, binary detection, generated-file detection, and language detection. FileTraverser._build_file_info()packages/core/src/repowise/core/ingestion/parser.pyFileInfoPer-file metadata used by the parser and graph builder. FileTraverser.traverse(){path: "src/app.py", language: "python", is_test: false, is_entry_point: true}Language tag Canonical language value from file extension, special filename, or shebang. ingestion/models.py, traverser.py, languages/registry.pypython, typescript, go, terraform, openapi, unknownTest file flag Whether a file looks like a test/spec/fixture file. FileTraverser._build_file_info() and community/test-gap helperstests/test_auth.py -> is_test=trueConfig file flag Whether a file is classified as configuration. FileTraverser._build_file_info()pyproject.toml -> is_config=trueAPI contract flag Whether a file is an API contract format. FileTraverser._build_file_info()openapi.yaml -> is_api_contract=trueEntry point flag Whether a filename or language-specific entry pattern marks a file as a starting point. FileTraverser._build_file_info()main.py, server.ts, Dockerfile depending on rulesTraversal stats Counts of included files and skip reasons. TraversalStats in traverser.py{included: 240, skipped_binary: 3, skipped_generated: 12}Package info A package/workspace detected from manifests near the repo root. FileTraverser._detect_monorepo(){name: "core", path: "packages/core", manifest_file: "pyproject.toml"}Repo structure High-level structure summary used by overview generation. FileTraverser.get_repo_structure(){is_monorepo: true, total_files: 820, entry_points: ["packages/cli/src/.../main.py"]}Language distribution Fraction of included files by language. get_repo_structure(){"python": 0.72, "typescript": 0.18, "markdown": 0.10}Estimated LOC Fast line-count estimate from file sizes, not exact source line counting. get_repo_structure()total_loc = sum(size_bytes // 40)Content hash SHA-256 of raw file bytes. compute_content_hash() in ingestion/models.py3f786850e387550fdab836ed7e6dc881de23001b...
Term Definition Computed by Example ParsedFileFull parse result for one file: file metadata, symbols, imports, exports, calls, heritage, docstring, parse errors, content hash. ASTParser.parse_file()ParsedFile(symbols=[...], imports=[...], calls=[...])Symbol A function, class, method, interface, enum, constant, type alias, module, macro, variable, etc. ASTParser._extract_symbols()src/app.py::create_appSymbol ID Stable ID derived from path and name, including parent class for methods. ASTParser._extract_symbols()src/models.py::User::saveQualified name Dot-form symbol name derived from path and parent. _build_qualified_name()src.models.User.saveSymbol kind Canonical symbol type. LanguageConfig.symbol_node_types plus refinersfunction, class, method, interface, struct, traitSignature Compact declaration text. build_signature() via parser extractorsdef create_app(config: Config) -> FastAPISymbol docstring Human text attached to a symbol, when extractable. extract_symbol_docstring()"Create and configure the API app."Module docstring File-level docstring. extract_module_docstring()"Command-line entry points."Visibility Public/private/protected/internal classification. Language-specific visibility helpers _helper -> private, UserService -> publicAsync flag Whether a symbol is async. _is_async_node()async def fetch() -> is_async=trueComplexity estimate Symbol complexity field, persisted to symbols. Parser/model pipeline; defaults to 1 unless language extraction enriches it complexity_estimate: 3Decorators Decorator/modifier strings captured with a symbol. ASTParser._extract_symbols()["@router.get('/users')"]Import Raw import statement plus normalized module path and imported names. ASTParser._extract_imports(){raw_statement: "from .db import Session", module_path: ".db", imported_names: ["Session"]}Named binding Alias-aware import binding. extract_import_bindings(){local_name: "np", exported_name: null, is_module_alias: true}Resolved import Import whose module path was matched to a repo file. GraphBuilder.build() through resolve_import()from .models import User -> src/models.pyExport list Public top-level symbol names exported by a file. ASTParser._derive_exports()["create_app", "Settings"]Call site Raw function or method call extracted from the AST. ASTParser._extract_calls(){target_name: "save", receiver_name: "user", line: 42, argument_count: 1}Enclosing caller symbol The symbol that contains a call site. _find_enclosing_symbol()src/app.py::mainHeritage relation Raw inheritance or implementation relationship. extract_heritage()OrderController extends BaseControllerParse error Non-fatal syntax/tree-sitter error description. _collect_error_nodes()Parse error at line 17
Term Definition Computed by Example Dependency graph Directed NetworkX graph containing file nodes, symbol nodes, and edge metadata. GraphBuildernx.DiGraph with nodes src/app.py, src/app.py::mainFile node Graph node for a source file. GraphBuilder.add_file(){node_type: "file", language: "python", symbol_count: 8}Symbol node Graph node for an extracted symbol. GraphBuilder.add_file(){node_type: "symbol", kind: "function", name: "main"}External node Node for third-party or unresolvable dependencies. Import resolution paths external:reactSynthetic module symbol Symbol node for top-level calls in a file. GraphBuilder.add_file()src/app.py::__module__defines edgeFile-to-symbol containment. GraphBuilder.add_file()src/app.py -> src/app.py::mainimports edgeFile-to-file import relationship. GraphBuilder.build()src/app.py -> src/settings.pyimported_names edge payloadNames imported along an import edge. GraphBuilder.build()["Settings", "load_config"]has_method edgeClass-to-method containment. GraphBuilder.add_file()src/models.py::User -> src/models.py::User::savecalls edgeSymbol-to-symbol call relationship. CallResolver, then GraphBuilder._resolve_calls()src/app.py::main -> src/db.py::connectCall confidence Confidence that a call edge points to the right callee. CallResolver0.95 same-file, 0.90 import binding, 0.50 global uniqueextends edgeClass/struct inheritance edge. HeritageResolverUserView -> BaseViewimplements edgeInterface/trait implementation edge. HeritageResolverUserRepository -> RepositoryHeritage confidence Confidence that inheritance/implementation resolved correctly. HeritageResolver0.95 same-file, 0.90 imported, 0.50 global uniqueframework edgeSynthetic edge from framework conventions. framework_edges.pyurls.py -> views.py, app.py -> routers/users.pyDynamic edge Edge inferred from runtime/dynamic patterns. dynamic_hints/* and GraphBuilder.add_dynamic_edges(){edge_type: "dynamic_imports", hint_source: "django", weight: 1.0}co_changes edgeFile-to-file historical coupling edge. GraphBuilder.add_co_change_edges() from git metadatasrc/a.py -> src/b.py with weight: 4.2Stem map Import-stem to candidate file path lookup used for import resolution. GraphBuilder._build_stem_map(){"models": ["src/models.py", "tests/models.py"]}File subgraph File-only graph used for PageRank and betweenness. GraphBuilder.file_subgraph()All file/external nodes, excluding co_changes edges PageRank File centrality in the import graph. GraphBuilder.pagerank()0.01842Betweenness How often a file sits on shortest paths. GraphBuilder.betweenness_centrality()0.0067SCC Strongly connected component, used to detect dependency cycles. GraphBuilder.strongly_connected_components(){"src/a.py", "src/b.py"}SCC page group Non-singleton SCC that gets a cycle page. PageGenerator.generate_all()scc-3Graph JSON Node-link serialization of the graph. GraphBuilder.to_json(){"directed": true, "nodes": [...], "links": [...]}
Term Definition Computed by Example File community Cluster of related production files, with tests assigned to their most-related production community. detect_file_communities()community_id: 2Symbol community Cluster of symbol nodes based on call and heritage edges. detect_symbol_communities()symbol_community_id: 5Community algorithm Partition algorithm used. communities._partition()leiden, louvain, none, failedOversized community split Second partition pass for communities larger than a graph fraction. _split_oversized()A 300-file cluster split into smaller clusters Community label Human label derived from non-generic path segments or filename keywords. _heuristic_label()api/routes, auth, paymentsCommunity cohesion Ratio of actual intra-community edges to possible edges. _cohesion_score()0.2143Dominant language Most common language among community members. _dominant_language()pythonNeighboring community Adjacent community from graph edges, surfaced by MCP/API. tool_community.py, graph routers{community_id: 4, edge_count: 9}Entry point score 0 to 1 score for a function/method as an execution start. _score_entry_point()0.735 for main()Entry point score signals Weighted fan-out, low in-degree, visibility, name pattern, and file entry flag. _score_entry_point()public main() with many calls scores high Execution flow BFS trace following high-confidence call edges from an entry point. trace_execution_flows()main -> load_config -> connect_dbCross-community flow Execution flow that visits more than one community. _bfs_trace()communities_visited: [0, 3]Flow depth Number of call hops in a traced flow. _bfs_trace()depth: 4Flow deduplication Keeps the longest flow per shared first-three-node prefix. _deduplicate_flows()Two main -> route -> handler traces collapse to one
Term Definition Computed by Example Git metadata row Per-file history, ownership, churn, and coupling record. GitIndexer.index_repo() and _index_file()One git_metadata row for src/app.py Commit counts Total, 90-day, and 30-day commit volumes. _index_file(){commit_count_total: 87, commit_count_90d: 12, commit_count_30d: 3}Commit count capped Whether the history reached the configured commit limit. _index_file()true when len(commits) >= 500First/last commit timestamps Oldest and newest commit timestamps for a file. _index_file()first_commit_at: 2024-05-03T10:00:00ZFile age days Days since first commit. _index_file()age_days: 455Primary owner Dominant owner by blame when available, otherwise by commit count. _get_blame_ownership() and _index_file(){name: "Asha", email: "asha@example.com", pct: 0.64}Top authors Top five authors by commit count. _index_file()[{name: "Asha", commit_count: 20}]Recent owner Dominant committer in the last 90 days. _index_file()recent_owner_name: "Sam"Contributor count Number of distinct authors. _index_file()contributor_count: 6Bus factor Number of contributors needed to account for 80 percent of commits. _index_file()bus_factor: 2Significant commits Filtered, non-noise commit messages useful for decisions and risk. _is_significant_commit()[{sha: "a1b2c3d4", message: "migrate auth to JWT"}]PR number PR/MR number extracted from significant commit messages. _PR_NUMBER_RE in git_indexer.pypr_number: 128Commit categories Message classification counts. _COMMIT_CATEGORIES in git_indexer.py{"feature": 4, "fix": 11, "refactor": 2}Lines added/deleted 90d Recent churn by numstat. _index_file(){lines_added_90d: 340, lines_deleted_90d: 87}Average commit size (lines_added_90d + lines_deleted_90d) / commit_count_90d._index_file()35.6Merge commit count 90d Number of merge commits touching the file recently. _index_file()merge_commit_count_90d: 2Original path Earliest path found through rename-follow history. _detect_original_path()legacy/auth/session.pyTemporal hotspot score Exponentially decayed churn score with 180-day half-life. _index_file()2.43Churn percentile Rank percentile among indexed files by temporal hotspot score, with 90-day commits as tiebreak. _compute_percentiles()0.88Hotspot flag Top churn file: percentile >= 0.75 and has recent commits. _compute_percentiles()is_hotspot: trueStable file flag File with more than 10 total commits and no recent 90-day commits. _index_file()is_stable: trueCo-change partner File historically changed in the same commits, with temporal decay. _compute_co_changes(){file_path: "src/schema.py", co_change_count: 3.72, last_co_change: "2026-04-14"}Git index summary Repo-level indexing result. GitIndexSummary{files_indexed: 420, hotspots: 38, stable_files: 71, duration_seconds: 12.4}
Term Definition Computed by Example Page type Kind of generated documentation page. PageType in generation/models.pyfile_page, module_page, repo_overviewGeneration level Ordered generation tier for page dependencies. GENERATION_LEVELSapi_contract: 0, file_page: 2, repo_overview: 6Generated page Markdown wiki page plus metadata and token counts. GeneratedPage and PageGenerator._build_generated_page(){page_id: "file_page:src/app.py", title: "File: src/app.py"}Page ID Deterministic natural key. compute_page_id()symbol_spotlight:src/app.py::create_appSource hash SHA-256 of rendered prompt/source context for freshness comparisons. compute_source_hash()64-character hex Page summary Deterministic first prose paragraph or overview excerpt. PageGenerator._extract_summary()"This file wires the CLI command group and registers subcommands."Freshness status Whether a page still matches current source and age thresholds. compute_freshness()fresh, stale, expiredConfidence decay Linear decay from 1.0 to 0.0 over expiry days. decay_confidence()0.77 after part of the expiry windowGit-adjusted confidence decay Multiplier adjusted by hotspot/stable state and commit message intent. compute_confidence_decay_with_git()Direct refactor on hotspot decays faster Prompt cache key SHA-256 of model, language, page type, and prompt. PageGenerator._compute_cache_key()9e107d9d372bb6826bd81d3542a419d6...Cached tokens Tokens served from provider cache. Provider response, persisted on pages and report cached_tokens: 12000Hallucination warning LLM output mentions symbol-like backticks not found in parsed symbols. _validate_symbol_references()Unknown symbol: "run_worker"Generation report Run summary by page type, tokens, stale pages, dead-code count, decision count, warnings, elapsed time. GenerationReport.from_pages(){pages_by_type: {"file_page": 45}, total_input_tokens: 980000}Estimated generation cost Token estimate using USD per 1M-token rates. GenerationReport.estimated_cost_usd() and CLI cost_estimator.py$2.3400Generation job checkpoint JSON state for resumable generation. JobSystem{status: "running", completed_pages: 12, current_level: 2}Generation status Job lifecycle state. JobSystem and GenerationJob ORMpending, running, completed, failed, paused
Term Definition Computed by Example File page context Template data for one important source file. ContextAssembler.assemble_file_page(){file_path, symbols, imports, dependencies, pagerank_score}Symbol spotlight context Template data for a top public symbol. assemble_symbol_spotlight()create_app with signature, source body, callersModule page context Aggregate context for top-level directory/module. assemble_module_page(){module_path: "packages/core", total_symbols: 780}SCC page context Context for a circular dependency cycle. assemble_scc_page()cycle_description: "Circular dependency cycle: a.py -> b.py"Repo overview context Whole-repo summary context. assemble_repo_overview()language_distribution, top_files_by_pagerank, circular_dependency_countArchitecture diagram context Top PageRank nodes, selected edges, communities, SCC groups. assemble_architecture_diagram()Mermaid graph inputs for 50 nodes and 200 edges API contract context Raw API contract plus endpoint/schema hints. assemble_api_contract()endpoints: ["GET /users"], schemas: ["User"]Infra page context Raw infra file plus target names. assemble_infra_page()Dockerfile, Makefile, terraform filesDiff summary context Changed files, symbol diffs, affected pages, trigger commit/diff. assemble_diff_summary(){added_files: ["src/new.py"], affected_page_ids: [...]}Cross-package context Monorepo boundary summary between packages. assemble_cross_package(){source_package: "cli", target_package: "core", coupling_strength: 5}Dependency summaries Summaries of already-generated dependency pages. assemble_file_page() with page_summaries{ "src/db.py": "Database access layer..." }RAG context Snippets from vector search for related generated pages. _generate_file_page_from_ctx()["[file_page:src/schema.py]\nDefines API schema..."]Token estimate len(text) // 4 heuristic.ContextAssembler._estimate_tokens()3200Structural summary mode Large-file outline instead of raw source snippet. _build_structural_summary()[Large file - structural summary mode]Significant file File selected for its own file_page. _is_significant_file()Entry point, top PageRank, bridge file, package __init__.py, or test with symbols Top symbol selection Public symbols selected by their file PageRank and percentile budget. PageGenerator.generate_all()Top 10 percent of public symbols, capped by page budget Page budget Hard cap max(50, int(num_files * max_pages_pct)). PageGenerator.generate_all()800 files with 10 percent cap -> 80-page budget
Term Definition Computed by Example Dead-code finding A graph/git finding persisted to dead_code_findings. DeadCodeAnalyzer{kind: "unused_export", file_path: "src/api.py", confidence: 0.7}Unreachable file File with no incoming imports, not an entry point/test/config/contract/whitelisted file. _detect_unreachable_files()src/legacy_adapter.pyUnused export Public symbol in an imported file that no importer names. _detect_unused_exports()symbol_name: "OldClient"Unused internal Private/internal symbol with no incoming calls edges. _detect_unused_internals()_parse_legacy_tokenZombie package Monorepo top-level package with no external package importers. _detect_zombie_packages()packages/old-sdkDead-code confidence Heuristic certainty based on age, recent commits, importers, dynamic imports, and deprecation hints. DeadCodeAnalyzer1.0 for year-old unreachable fileSafe-to-delete flag Whether confidence passes delete threshold and dynamic patterns do not block deletion. _make_unreachable_finding() and other passessafe_to_delete: trueDead-code evidence Human-readable reasons for the finding. DeadCodeAnalyzer["in_degree=0 (no files import this)", "No commits in last 90 days"]Estimated deletable lines Sum of line estimates for safe findings. DeadCodeAnalyzer.analyze()deletable_lines: 420Confidence summary Counts of high, medium, low confidence findings. DeadCodeAnalyzer.analyze(){"high": 12, "medium": 8, "low": 0}Finding status User triage status persisted in DB. DeadCodeFinding.statusopen, acknowledged, resolved, false_positive
Term Definition Computed by Example Decision record ADR-like row from code comments, git, docs, or CLI/manual entry. DecisionExtractor, CRUD, CLI{title: "Use Redis for sessions", status: "active"}Inline marker decision Decision extracted from comments such as WHY:, DECISION:, TRADEOFF:, ADR:. scan_inline_markers()# DECISION: cache auth sessions in RedisGit archaeology decision LLM-structured decision inferred from significant commit messages with decision keywords. mine_git_archaeology()migrate from REST client to generated OpenAPI clientREADME-mined decision Decision extracted from docs such as README, CLAUDE, ARCHITECTURE, DESIGN. mine_readme_docs()"We use SQLite by default because setup should be local-first."Decision source Provenance of a record. DecisionRecord.sourceinline_marker, git_archaeology, readme_mining, cliDecision confidence Source-specific extraction confidence. DecisionExtractor0.95 inline LLM, 0.70 git signal, 0.60 README mining, 1.0 manualAffected files Files linked to a decision from graph neighbors, commit files, or manual input. DecisionExtractor["src/auth.py", "src/session.py"]Affected modules Top-level modules inferred from affected files or text. _infer_modules()["src", "packages"]Decision tags Topic labels inferred from keywords or LLM output. _infer_tags() and promptsauth, database, api, security, testingDecision status Lifecycle state. DecisionRecord.statusproposed, active, deprecated, supersededDecision staleness score 0 to 1 score indicating code has moved since a decision. DecisionExtractor.compute_staleness() and crud.recompute_decision_staleness()0.63Conflict boost Staleness increase when newer commit messages contain contradiction signals and overlap decision text. compute_staleness()+0.3 for "migrate away" touching the same conceptDecision health summary Counts and lists for stale, proposed, and ungoverned hotspots. get_decision_health_summary() and server/CLI routes{active: 10, stale: 2, proposed: 3}Ungoverned hotspot Hot file without related architectural decision coverage. Decision health computation src/payments/processor.py
Term Definition Computed by Example Security finding Regex or symbol-name signal persisted to security_findings. SecurityScanner.scan_file(){kind: "hardcoded_secret", severity: "high", line: 12}High severity finding Dangerous execution, deserialization, shell, or hardcoded secret/password pattern. _PATTERNS in security_scan.pyeval_call, pickle_loads, hardcoded_passwordMedium severity finding SQL construction or TLS verification issue. _PATTERNSfstring_sql, concat_sql, tls_verify_falseLow severity finding Weak hash or security-sensitive symbol name. _PATTERNS and symbol scanweak_hash, security_sensitive_symbolSecurity snippet Trimmed source line or symbol name for context. SecurityScanner.scan_file()password = "admin"
Term Definition Computed by Example File risk score Pagerank centrality multiplied by 1 + temporal_hotspot_score. PRBlastRadiusAnalyzer._score_file()0.018 * (1 + 2.4) = 0.0612Overall PR risk score 0 to 10 composite using average direct risk, max direct risk, and transitive breadth. _compute_overall_risk()7.25Transitive affected file Importer reached by reverse BFS from changed files. _transitive_affected(){path: "src/api.py", depth: 2}Co-change warning Historical co-change partner missing from a PR/change set. _cochange_warnings(){changed: "src/a.py", missing_partner: "src/b.py", score: 4.2}Recommended reviewer Owner aggregate over changed and affected files. _recommend_reviewers(){email: "asha@example.com", files: 7, ownership_pct: 0.63}Test gap File lacking a matching test path by basename conventions. _find_test_gaps() and MCP _check_test_gap()src/auth.py -> trueRisk trend Velocity from 30-day vs prior 60-day commit rates. tool_risk._compute_trend()increasing, stable, decreasingRisk type Human bucket for the kind of risk. tool_risk._classify_risk_type()bug-prone, churn-heavy, bus-factor-risk, high-coupling, stableChange pattern Human label from dominant commit category. tool_risk._derive_change_pattern()feature-active, fix-heavy, dependency-churn, mixed-activityImpact surface Top critical reverse dependencies within two hops. tool_risk._compute_impact_surface()[{file_path: "src/api.py", pagerank: 0.05}]Risk summary One-line synthesized risk sentence for MCP. tool_risk._assess_one_target()src/auth.py - hotspot score 88% (increasing), 6 dependents...Top hotspots Highest churn/hotspot files returned for context. get_risk()[{file_path: "src/db.py", hotspot_score: 0.94}]
Term Definition Computed by Example LCOM4 Lack of cohesion: the number of connected components of a class's methods, where two methods are linked when they share a field or call each other. A value of >= 2 means the class has independent clusters and is a split candidate. low_cohesion marker and the Extract Class detectorA class whose methods fall into 3 unconnected groups has lcom4 = 3 ROC AUC Ranking quality of the health score: the probability that a file which gets bug-fixed later scores riskier than a clean one. 0.5 is random, 1.0 is perfect. Offline validation in repowise-bench against a forward defect window Cross-project mean 0.74 over 21 repos, 9 languages Popt Effort-aware ranking quality: the defects surfaced per line of code reviewed, normalized against the optimal and worst orderings. Offline validation in repowise-bench 0.607 on the 2,770-file head-to-head corpus
Term Definition Computed by Example Search result Unified full-text or vector result. SearchResult in persistence/search.py{page_id, title, page_type, target_path, score, snippet, search_type}FTS5 query Stop-word-stripped OR prefix query for SQLite. _build_fts5_query()"auth"* OR "session"*FTS score Positive score from negated SQLite rank or Postgres ts_rank. FullTextSearch0.734Vector score Cosine similarity between query embedding and page embedding. InMemoryVectorStore.search() and other vector stores0.812Snippet First 200 chars of indexed content. _snippet() or vector metadata"This module handles..."Answer cache row Cached MCP answer payload. tool_answer.py and AnswerCache ORM{question_hash, payload_json, provider_name, model_name}Question hash SHA-256 of normalized question text. tool_answer._hash_question()Same hash for "How auth works?" with extra whitespace/case Answer payload Cached get_answer result. get_answer(){answer, citations, confidence, fallback_targets, retrieval}Retrieval hit Search hit hydrated with page metadata and summary. tool_answer.py retrieval pipeline{target_path: "src/auth.py", score: 3.2, summary: "..."}Retrieval dominance Gating logic comparing top and second search scores. tool_answer.pyTop score high enough to answer from dominant hit Federated RRF score Reciprocal rank fusion score for workspace search across repos. tool_search.pyrrf_score: 0.0164Confidence score Normalized workspace search confidence. tool_search.pyconfidence_score: 0.87
Table or store Computed content Example repositoriesRepo identity plus current indexed head_commit and settings JSON. {name: "repowise", default_branch: "main"}generation_jobsLong-running generation progress. {status: "running", total_pages: 120, completed_pages: 31}wiki_pagesCurrent generated markdown pages and freshness metadata. file_page:src/app.pywiki_page_versionsArchived historical snapshots on regeneration. version: 3graph_nodesFile and symbol nodes with graph metrics and community metadata. {node_id: "src/app.py", pagerank: 0.02}graph_edgesTyped relationships with imported names and confidence. {source: "src/app.py", target: "src/db.py", edge_type: "imports"}wiki_symbolsParsed symbols projected into DB. {symbol_id: "src/app.py::main", kind: "function"}git_metadataPer-file history, churn, ownership, hotspots, co-changes. {file_path: "src/app.py", is_hotspot: true}decision_recordsExtracted/manual architectural decisions and staleness. {title: "Use Postgres for production", status: "active"}dead_code_findingsDead-code analyzer findings and triage status. {kind: "unreachable_file", safe_to_delete: true}security_findingsStatic security signals. {kind: "eval_call", severity: "high"}llm_costsPer-call token and USD cost rows. {operation: "doc_generation", input_tokens: 2500, cost_usd: 0.012}answer_cacheCached MCP answer payloads keyed by normalized question. {question: "How does auth work?", question_hash: "..."}conversations and chat_messagesChat state and structured message JSON. {role: "assistant", content_json: {...}}webhook_eventsReceived external events and processing status. {provider: "github", event_type: "push", processed: false}SQLite page_fts FTS5 mirror of page title/content. Used by full-text search Postgres wiki_pages.embedding pgvector embedding column, conditionally added by migration. 1536-dim vector LanceDB wiki_pages table Local vector index with page metadata. {page_id, vector, title, page_type, target_path}
Term Definition Computed by Example Pricing table USD per million input/output tokens by model. generation/cost_tracker.pyclaude-sonnet-4-6: {input: 3.0, output: 15.0}Fallback pricing Default pricing for unknown models. _get_pricing(){input: 3.0, output: 15.0}Call cost (input_tokens * input_rate + output_tokens * output_rate) / 1_000_000.CostTracker.record()1000 in, 500 out on Sonnet -> $0.0105Session cost Cumulative USD for one tracker instance. CostTracker.session_cost2.37Session tokens Cumulative input plus output tokens. CostTracker.session_tokens845000Cost totals DB aggregate grouped by operation, model, or day. CostTracker.totals(){group: "file_page", calls: 42, cost_usd: 1.12}CLI cost estimate Pre-generation token/cost plan. packages/cli/src/repowise/cli/cost_estimator.py{estimated_pages: 82, estimated_cost_usd: 4.60}
Term Definition Computed by Example Discovered repo Candidate git repo found under a workspace root. workspace/scanner.py{alias: "api", path: "services/api"}Workspace config Parsed .repowise-workspace.yaml. workspace/config.py{repos: [{alias: "web", path: "apps/web"}]}Repo update result Per-repo update outcome for workspace update/watch. workspace/update.py{alias: "core", updated: true, file_count: 420, symbol_count: 2100}Cross-repo co-change File pair in different repos changed by same author within a time window, weighted by recency. detect_cross_repo_co_changes(){source_repo: "api", source_file: "routes/users.py", target_repo: "web", target_file: "users.tsx", strength: 1.34}Cross-repo package dependency Manifest path dependency from one repo to another. detect_package_dependencies(){source_repo: "web", target_repo: "shared", kind: "npm_workspace"}Cross-repo overlay JSON payload saved under workspace data dir. run_cross_repo_analysis(){co_changes: [...], package_deps: [...], repo_summaries: {...}}Cross-repo edge count Per-repo count of co-change and package-dependency edges. _build_repo_summaries(){cross_repo_edge_count: 12}Workspace CLAUDE.md data Per-repo summaries plus cross-repo overlays and contract links. generation/editor_files/data.py, claude_md.py{repos: [...], co_changes: [...], contract_links: [...]}
Term Definition Computed by Example Contract Provider or consumer API endpoint/topic/service extracted from source. workspace/contracts.py and extractors{contract_id: "http::GET::/api/users/{param}", role: "provider"}Contract type API surface kind. Contract extractors http, grpc, topicContract role Whether source provides or consumes the contract. Extractors provider, consumerContract confidence Extraction strategy confidence. Extractors and contract matching 0.8Service boundary Monorepo service path assigned to contracts. workspace/extractors/service_boundary.pyservices/billingNormalized contract ID Lowercase/canonical ID used for matching. normalize_contract_id()http::GET::/Api/Users/ -> http::GET::/api/usersContract link Matched provider-consumer pair across repos/services. match_contracts(){provider_repo: "api", consumer_repo: "web", match_type: "exact"}Manual contract link Workspace-configured provider/consumer link. _build_manual_links(){match_type: "manual", confidence: 1.0}Contract store JSON payload saved as contracts.json. run_contract_extraction(){contracts: [...], contract_links: [...]}
Term Definition Computed by Example Top owner Owner ranked by number of files primarily owned. server/services/knowledge_map.py{email: "asha@example.com", files_owned: 42, percentage: 18.6}Knowledge silo File where one owner has more than 80 percent ownership. compute_knowledge_map(){file_path: "src/auth.py", owner_pct: 0.91}Onboarding target High-PageRank file with few or no documentation words. compute_knowledge_map(){path: "src/core.py", pagerank: 0.04, doc_words: 0}Documentation word count Word count of the generated file page content. compute_knowledge_map()doc_words: 640
Command Computed output Example repowise statusSync state, current HEAD, indexed commit, DB page counts, graph node counts, pages by type, token totals. file_page: 52, Status: 3 new commit(s)repowise status --workspacePer-repo file/symbol counts, indexed age, HEAD short SHA, stale/up-to-date state. api 420 files 2,100 symbols 2h ago a1b2c3d stalerepowise doctorHealth checks for DB, pages, vector store, FTS, graph, stale pages, store drift, coordinator state. SQL <-> Vector Store: 3 missingrepowise searchFull-text/vector/wiki or symbol hits. score 0.83, file_page, src/auth.pyrepowise dead-codeDead-code table or JSON report. unused_export src/api.py OldClient 0.70repowise decisionDecision list, detail view, health summary, stale records, proposed records, ungoverned hotspots. Stale decisions: 2repowise costsGrouped LLM cost totals. group=file_page, calls=45, cost=$1.37repowise exportMarkdown/HTML/JSON export entries, optionally decisions/dead-code/hotspots. wiki_pages.json with page metadatarepowise updateFile diffs, adaptive cascade budget, affected page plan, regenerated/decayed page counts, dead-code/decision refresh results. Adaptive cascade budget: 30repowise reindexEmbedding/indexing progress and page counts. Indexed 430 items -> .repowise/lancedbrepowise watchDebounced changed-path batches and forwarded update output. Detected 3 changed file(s), updating...repowise workspaceWorkspace repo discovery, config entries, update status, cross-repo hook output. Found 2 new repo(s)repowise generate-claude-mdEditor-file data and rendered .claude/CLAUDE.md. hotspots, key_modules, decisions in markdownrepowise augmentHook-time graph/search enrichment for AI tool calls. Related files, symbols, importers, dependencies repowise mcpFastMCP server exposing the computed graph/wiki/risk tools below. stdio or SSE transport
Tool or endpoint concept Definition Example get_answerRAG answer with citations, confidence, fallback targets, retrieval metadata, and answer-cache support. {answer: "...", confidence: "medium", citations: [...]}search_codebaseWiki search using vector/FTS and federated workspace RRF when requested. {results: [{title, relevance_score, confidence_score}]}get_contextCompact page, symbol, freshness, dependency, git, and cross-repo context for targets. With include, also folds in callers/callees, graph metrics (centrality percentiles, entry-point score), and community membership. {targets: {"src/app.py": {docs, graph, freshness}}}get_overviewRepo or workspace overview, module map, entry points, git health, communities, and workspace footer. {summary, modules, git_health, community_summary}get_whyDecision/governance lookup, file origin story, alignment, and decision health modes. {decisions: [...], target_context: {...}}get_riskPer-file risk, trend, risk type, owners, co-change partners, test gaps, security signals, top hotspots, optional PR blast radius. {results: [{risk_summary, hotspot_score}], top_hotspots: [...]}get_dead_codeTiered, grouped, and summarized dead-code findings. {summary: {total_findings: 12}, tiers: {...}}get_dependency_pathDependency-path or bridge context between files/symbols. {path: ["src/a.py", "src/b.py"]}get_symbolExact symbol metadata and source slice. {name: "create_app", signature: "def create_app(...)"}get_execution_flowsEntry-point traces through call edges. {flows: [{entry_point, trace, crosses_community}]}Blast radius API Direct risks, transitive affected files, co-change warnings, reviewers, test gaps, overall score. {overall_risk_score: 7.25}Knowledge map API Top owners, knowledge silos, onboarding targets. {top_owners: [...], knowledge_silos: [...]}Cost summary API Grouped costs and totals. {groups: [...], total_cost_usd: 3.21}Provider API Available provider/model configuration. {providers: [...], active_provider: "gemini"}
Domain Values Page freshness fresh, stale, expired, unknown in type definitionsJob status pending, running, completed, failed, pausedDecision status proposed, active, deprecated, supersededDecision source git_archaeology, inline_marker, readme_mining, cliDead-code kind unreachable_file, unused_export, unused_internal, zombie_packageDead-code status open, acknowledged, resolved, false_positiveSecurity severity high, med, lowSecurity kind eval_call, exec_call, pickle_loads, subprocess_shell_true, os_system, hardcoded_password, hardcoded_secret, fstring_sql, concat_sql, tls_verify_false, weak_hash, security_sensitive_symbolEdge type imports, defines, calls, has_method, has_property, extends, implements, method_overrides, method_implements, co_changes, framework, dynamic, plus dynamic subtypes such as dynamic_uses, dynamic_imports, dynamic_url_routeNode type file, symbol, externalSearch type vector, fulltextContract type http, grpc, topicContract role provider, consumerContract link match type exact, manualRisk trend increasing, stable, decreasing, unknownRisk type bug-prone, churn-heavy, bus-factor-risk, high-coupling, stable, unknownChange pattern feature-active, primarily refactored, fix-heavy, dependency-churn, mixed-activity, uncategorizedChat role user, assistantCoordinator health ok, warning, critical
For a file src/auth/session.py, a typical Repowise index can compute:
FileInfo: language="python", is_test=false, is_entry_point=false.
ParsedFile: symbols such as src/auth/session.py::SessionStore, imports such as from .redis import client, calls such as client.get().
Graph records: a file node, symbol nodes, defines, imports, calls, and maybe framework or dynamic_* edges.
Graph metrics: pagerank=0.013, betweenness=0.004, community_id=2, community_label="auth", cohesion=0.18.
Git metadata: commit_count_90d=11, primary_owner_name="Asha", temporal_hotspot_score=2.1, churn_percentile=0.88, is_hotspot=true.
Analysis rows: maybe a security finding hardcoded_secret, or a decision record from # DECISION: store sessions in Redis.
Generated docs: file_page:src/auth/session.py, source hash, token counts, summary, freshness, and vector/FTS entries.
Risk output: hotspot_score=0.88, trend increasing, risk type churn-heavy, co-change partners, test-gap flag, and an impact surface.
Last updated Jul 11, 2026