Method
v1 · applies to re audit in every 0.1.x release · this page changes only when the method does
Causari publishes counts about repositories that are not ours. The only honest way to do that is to publish, next to every number, exactly how it was obtained, what it cannot see, and how to reproduce or contest it. This page is that.
1. What is counted
For a repository at a given HEAD, re audit walks git log --no-merges
and classifies each commit from machine-readable metadata only: the commit
message trailers and the author identity. No model, no heuristic on the diff, no guess from
style. Merge commits are excluded.
| Signal | Class |
|---|---|
git-ai note under refs/notes/ai | VERIFIED |
Trailers Drafted-With, Executed-By, AI-Model, AI-Agent, AI-Tool, AI-Assisted: yes and the AI-* family with a positive value | VERIFIED |
Co-Authored-By naming a known agent identity (Claude, Copilot, aider, Codex, ChatGPT, OpenHands; Devin, Jules, Gemini and Cursor only with a bot identity or vendor domain) | VERIFIED |
Author identity of a known agent (aider, noreply@anthropic.com, devin-ai, openhands, cursoragent, google-labs-jules) | VERIFIED |
Message contains (aider) or Generated with Claude Code | PROBABLE |
| Anything else | UNKNOWN · never counted |
VERIFIED and PROBABLE are never summed. Published measurements use VERIFIED only.
2. How survival is computed
Introduced = lines added by each classified commit (git log --numstat),
text files only, excluding lockfiles, vendored and generated paths. Still at HEAD = for
every tracked file, git blame --line-porcelain HEAD; a line counts for the commit
blame attributes it to, capped at that commit's introduced count. The ratio is the sum over all
classified commits, so it is line-weighted.
3. What it cannot see
- Inline completions. Copilot, Cursor Tab, Windsurf, Continue, Zed AI, JetBrains AI leave no trace in git. Their code is counted as human. "No git signal" means no metadata, not no AI.
- Untagged agent commits. Claude Code's trailer can be disabled; many teams strip trailers on squash. Those commits are UNKNOWN.
- Mixed commits. Granularity is the commit. A human's review edits inside an AI co-authored commit count as AI; AI code committed by a human counts as human.
- Paraphrase and rewrite. A line rewritten by a human with the same meaning is a death; a line the AI copied from elsewhere is an introduction.
4. Known ways the number misleads (method v1)
Bulk commits dominate. Because the ratio is line-weighted, one commit that vendors a tree, snapshots documentation or checks in a generated bundle can hold nearly every introduced line of a repository. The published row then measures that commit's fate, not the project's. Example in the current data: one documentation-versioning commit of 3.2 million lines determines a repository's entire ratio. We publish it with the mark "one agent ≥ 90 %" because hiding it would be worse than showing it, and because the fix belongs in the method, not in the table.
Formatting and moves count as death. git blame runs without
-w, -M, -C: a formatter pass, a re-indent, or moving a
function to another file re-attributes those lines.
Small samples. Below 5 AI-tagged commits no ratio is published.
Age. Survival decays with time since the commit. Early adopters look worse than last week's adopters. Method v1 does not normalise for age.
Method v2 (in progress) caps per-commit weight, reports medians and
bootstrap intervals alongside the line-weighted ratio, runs blame with -w -M -C,
parses the trailer block with git's own rules, reads Assisted-by: and Agent Trace
records, and refuses shallow clones. Every published row will carry the method version that
produced it.
5. Reproduce or contest any number
curl -fsSL https://causari.dev/install.sh | sh re audit owner/repo --json # the exact bytes behind the row
If your reproduction differs, or a row is wrong, open an issue with the JSON. Corrections
are made in public and recorded in the data history. Maintainers who do not want their
repository measured add one line to
.github/survival-optout.txt;
the next weekly run drops the row and it is not re-added.
6. What we do not do
- No rank, no colour, no "healthy" or "high churn" wording, no badge about repositories we do not own.
- No audit of a third-party repository on request through our infrastructure. Run it yourself; the tool is free.
- No estimate. Where git carries no signal, the row says so.
Context: "Will It Survive?", arXiv 2601.16809 measures the same question on 201 projects with a different detector and finds agent-authored code is modified less often than human code. Our counts should be read next to it, not instead of it.