← Back to work
TITAN — social share cover
Social share preview · 1200 × 630
Software Engineering Research · 2026

TITAN

Repository Intelligence for Change-Impact Analysis

A change in one file can affect other files, but the relevant dependencies and historical co-change relationships are not always obvious. TITAN asks: can structural relationships in a codebase and historical file co-change patterns provide complementary signals for predicting change impact?

Role
Solo — research design, static analysis, Git history mining, ranking models, evaluation.
Timeline
Software Engineering Research · Program Analysis · Repository Intelligence
PythonProgram AnalysisGit MiningDependency GraphsRanking
01 · Challenges

What was hard.

01

Overview — why change-impact analysis matters

When a developer edits a file, reviewers and test suites need to know what else might break. TITAN ranks the files most likely to be affected so testing and review effort can be focused. It is a repository-intelligence research project — not an LLM agent, bug fixer, or code generator.

02

Two signal families that see different things

Static dependencies capture what the code says is connected; co-change history captures what developers have actually changed together. Neither alone sees the whole picture — the research question is whether they are complementary.

03

Evaluating without leaking the future

Mining history makes it easy to accidentally train on commits that happen after the one being predicted. TITAN uses an 80/20 chronological split so predictions are only made from past history.

02 · Architecture

How it fits together.

Change → structural + historical signals → hybrid ranking → ranked impact list

  • ▸Static analysis builds dependency relationships from source-code structure.
  • ▸Co-change analysis mines Git history to learn which files tend to change together across commits.
  • ▸Evaluated across 11 open-source Python, JavaScript, and TypeScript repositories.
Changed file(s)
query from a commit
Dependency graph
program structure
Dependency graph
program structure
Static Dependency Analysis
dependency graph from source
Git history
commit log
Historical Co-change Analysis
files that change together
Git history
commit log
Hybrid Ranking
combine both signal families
Chronological Evaluation
80/20 split · MRR
Ranked impacted files
for testing & review
03 · Outcomes

What shipped.

0.4577
MRR · Hybrid Model G
0.3947
MRR · historical baseline
0.2016
MRR · static two-hop baseline
04 · Learnings
  • —Evaluation design shapes the conclusion — a chronological split is the difference between prediction and hindsight.
  • —Candidate generation is part of the model. Comparing rankers over different candidate sets is not an apples-to-apples comparison.
  • —History is a strong baseline. A structural signal has to beat co-change, not a strawman.
05 · Evidence

What the evidence supports.

Reported MRR by model
Hybrid Model G0.4577
Historical baseline0.3947
Static two-hop baseline0.2016

Higher is better. Hybrid Model G uses an expanded union candidate set — see limitations.

Experimental setup

  • ▸11 open-source repositories across Python, JavaScript, and TypeScript.
  • ▸1,493 query instances drawn from 417 test commits.
  • ▸80/20 chronological split — models only see history that precedes each test commit.
  • ▸Metric: Mean Reciprocal Rank (MRR) — rewards placing a truly affected file closer to the top of the ranked list.

Interpretation & limitations

Hybrid Model G reports a higher MRR than both baselines. However, Model G uses an expanded union candidate set, so it is scoring a different pool of candidate files than the baselines. The observed improvement therefore cannot be attributed solely to adding static structural information — part of it may come from the larger candidate set. No statistical significance testing, production deployment, or causal claim is made here.