New Features in git11

git11 is an AI workspace for engineering teams. It understands repositories, auto-generates documentation, answers deep code questions, and works securely across your GitHub organization.

✦ AI Documentation for any repository

✦ Ask anything about your codebase

✦ Organization & team access with permissions

✦ Secure GitHub App integration with audit logs

git11 repository intelligence dashboard

How AI is transforming codebase understanding

A technical analysis

By git11 Engineering · Mon May 04 2026 · 7 min read

How AI is transforming codebase understanding
{
 "title": "The End of Manual Code Audits",
 "subtitle": "Large language models have fundamentally shifted the cost of codebase comprehension from human hours to compute cycles.",
 "content": "Engineers spend 70% of their time reading code rather than writing it. This metric has remained static for three decades despite better IDEs and documentation tools. We are now seeing the first significant drop in that number as automated comprehension replaces manual tracing. \n\nGrepping for strings and following definition chains in `node_modules` is an inefficient use of a senior engineer's time. We are moving toward a model where the machine holds the entire dependency graph in active memory. You no longer need to keep the state of a 50,000-line monolith in your head to make a safe change.\n\n## The Indexing Problem\n\nTraditional search tools like `ripgrep` or `git grep` are fast but linguistically blind. They find syntax, not intent. If you search for an authentication flaw, you might find the string `auth`, but you will miss a logic gap in a middleware file named `security_filter.go`. \n\nModern understanding requires **vector embeddings**. We convert code snippets into high-dimensional vectors to capture semantic meaning. A function that validates a JWT and a class that checks an OAuth token will sit near each other in vector space regardless of their naming conventions. \n\nIndexing a repository like `kubernetes/kubernetes` involves several distinct phases:\n\n1. Extraction of abstract syntax trees (ASTs) for every file.\n2. Chunking code into logical units while preserving local context.\n3. Generating embeddings for those chunks using models like `text-embedding-3-small`.\n4. Storing these vectors in a specialized database like `Pinecone` or `Chroma`.\n\nOnce indexed, the codebase becomes a queryable database. You ask questions about the architecture, and the system retrieves the most relevant blocks of code based on logic, not keywords. \n\n## Context Injection Limits\n\nPassing an entire repository into a prompt is impossible. Even with a 128k context window, a standard React frontend and its Go backend will exceed the limit. We use **Retrieval-Augmented Generation** (RAG) to solve this. \n\nWe select the top five or ten code segments most relevant to your query. These are injected into the prompt along with your question. The model then synthesizes an answer based solely on the provided snippets. \n\nEffective RAG requires more than just vector search. You need metadata. We tag snippets with:\n\n- File paths and line numbers.\n- Function signatures and return types.\n- Git history to identify the last author and commit message.\n- Dependency relationships between files.\n\nWithout this metadata, the model lacks the "where" and "why" behind the code. It might explain what a function does but fail to notice that the function has been deprecated since version 1.4.2.\n\n## Graph Based Traversal\n\nVectors alone cannot capture the hierarchy of a complex system. A call to `api.v1.Users.Get()` involves multiple layers of abstraction. We use **Graph RAG** to map these connections. \n\nWe build a directed graph where nodes are functions and edges are calls. When you ask about a specific API endpoint, the tool traverses the graph to find every internal service it touches. It follows the data flow from `main.go` through the controller and down to the database layer.\n\nThis approach identifies side effects that humans often miss. A change in `util/formatter.ts` might seem localized. A graph traversal reveals that this utility is used by twenty-four different services, including three critical billing modules. \n\n## Natural Language Queries\n\nTechnical debt is often documented in comments or Jira tickets, not the code itself. AI bridge the gap between human language and implementation. You can ask "Where do we handle late payments?" instead of searching for `LatePaymentProcessor`. \n\nThis shift allows new hires to contribute on day one. They do not need a three-week onboarding period to learn the "tribal knowledge" of the folder structure. The tool provides the documentation they need in real-time. \n\nConsider these common query types:\n\n- Impact analysis: \"What breaks if I change the signature of `auth.VerifyToken`?\"\n- Implementation discovery: \"Show me how we handle retry logic for S3 uploads.\"\n- Logic verification: \"Are there any places where we call `db.Exec` without a transaction?\"\n- Refactoring assistance: \"Suggest a way to consolidate these three redundant logger classes.\"\n\n## Automated Refactoring Loops\n\nCodebase understanding is the prerequisite for automated refactoring. You cannot fix what you do not understand. Once the model understands the pattern, it can apply fixes across the entire repository. \n\nWe use a loop of: Understand -> Propose -> Validate. \n\n1. The model identifies an anti-pattern, such as hardcoded timeout values.\n2. It searches the entire repository for instances of this pattern.\n3. It generates a pull request with the necessary changes.\n4. It runs the existing test suite to ensure no regressions occurred.\n\nThis is not a theoretical workflow. We see teams using this to migrate from `CommonJS` to `ESM` or to update deprecated library calls. It turns a month-long manual effort into a ten-minute automated task.\n\n## The Cost of Latency\n\nSpeed is a feature. If an engineer has to wait sixty seconds for a code explanation, they will go back to manual grepping. We optimize for sub-second retrieval. \n\nMost of this time is spent in embedding generation and vector search. We pre-index repositories on every `git push`. By the time you open a PR, the index is already updated with the latest changes. \n\nWe also use a tiered cache for common queries. If three people ask about the `OAuth` flow in one morning, the system returns the cached explanation immediately. This reduces both latency and API costs.\n\n## Data Residency Concerns\n\nEnterprise teams are hesitant to send their source code to external APIs. Security is non-negotiable. We address this by running local models or using VPC-isolated instances. \n\nTools like `Llama-3` or `Mistral-Large` are now capable enough to handle complex code reasoning. You can run these models on internal hardware. The data never leaves your infrastructure, meeting strict compliance requirements like SOC2 or HIPAA.\n\nInternal models also allow for fine-tuning. We can train a model on your specific coding standards and internal libraries. The model learns that `InternalLogger` is preferred over `console.log` and flags deviations automatically.\n\n## Beyond Simple Completion\n\nEarly AI tools focused on the next line of code. This is the "autocomplete" phase. We are now in the "comprehension" phase. The tool understands the system as a whole rather than a sequence of characters.\n\nUnderstanding code requires understanding state. A function might be theoretically correct but fail because it assumes a specific environment variable is set. Modern tools index `Dockerfile`, `docker-compose.yml`, and `.env` files to provide this missing context.\n\nWhen you ask why a test is failing, the AI looks at:\n\n- The test code in `tests/integration/auth_test.py`.\n- The implementation in `app/services/auth_service.py`.\n- The database schema in `migrations/001_initial.sql`.\n- The infrastructure config in `terraform/rds.tf`.\n\n## Evaluation Metrics\n\nHow do we measure if an AI tool actually understands a codebase? We use specialized benchmarks. Accuracy is measured by the percentage of retrieved code blocks that are actually necessary to solve a bug. \n\nWe track: \n\n- Recall@K: Does the correct code block appear in the top K results?\n- Mean Reciprocal Rank (MRR): How high up in the list is the correct answer?\n- Hallucination rate: How often does the model suggest a function that does not exist?\n\nIf the MRR is low, the tool is a distraction. If the hallucination rate is high, it is a liability. We aim for an MRR above 0.8 on repository-scale queries.\n\n## The Role of the Senior Engineer\n\nSenior engineers will spend less time on "where is this defined" and more time on "should we do this." The machine handles the retrieval; the human handles the judgment. \n\nThe ability to read code remains vital. You must be able to verify the AI's output. However, you will no longer start from a blank screen. You will start from a synthesized summary and a set of relevant pointers.\n\nThis change is permanent. Teams that continue to rely on manual grep and tribal knowledge will ship slower than those using automated comprehension. The complexity of software is increasing, and human memory cannot scale to meet it.\n\nStop reading code to find where a variable is defined.",
 "tags": ["ai", "engineering", "devops"],
 "category": "technical",
 "read_time": 7
}

Ask this question directly on your own repo →