Semantic commit analysis for Python — catch what Git misses.
Ripple sits at the commit moment and understands what your code change actually means. Not which lines changed — which functions, which dependencies, what breaks.
Git tracks text. It has no idea what your code does.
# You delete this function
def generate_token(username):
return "token_" + username
# Git commits it cleanly.
# Three other functions that call it will crash at runtime.
# Git never warned you.
Ripple catches this before the commit enters your repository.
from auth import logout as sign_out tracked correctlypip install ripple-git
Then in any Python project:
cd your-project
ripple install
That's it. Every git commit now runs semantic analysis automatically.
If your project uses the pre-commit framework,
add Ripple to your .pre-commit-config.yaml:
repos:
- repo: https://github.com/TheArcDev/ripple-git
rev: v0.1.0
hooks:
- id: ripple
Then install:
pre-commit install
Running Ripple semantic analysis...
=======================================================
RIPPLE - SEMANTIC COMMIT ANALYSIS ENGINE
=======================================================
File: auth.py
----------------------------------------
[🔴 CRITICAL] [DELETED] generate_token()
→ Had parameters: ['username']
Real breakage detected:
'generate_token' was deleted but is still called in 3 location(s)
→ auth.py line 2 (1 passed)
→ auth.py line 18 (1 passed)
→ app.py line 14 (1 passed)
=======================================================
🔴 COMMIT BLOCKED
Fix the issues above before committing
Use --no-verify to override if intentional
=======================================================
# Analyze staged changes without committing
ripple check
# Analyze working tree including unstaged changes
ripple check --working
# Analyze only staged changes
ripple check --staged
# Smart commit — analyzes changes and suggests an accurate message
ripple commit
# Install hook into current repository
ripple install
# Remove hook from current repository
ripple uninstall
Instead of git commit -m "fixed stuff", Ripple reads what actually
changed and suggests an accurate message:
Suggested commit message:
----------------------------------------
add check_session(session_id) to auth
----------------------------------------
[U] Use suggested message
[W] Write your own message
[Q] Quit — don't commit
Messages are generated from real semantic data — not AI guessing. Always accurate. Always specific.
Ripple uses three layers of analysis at every commit:
1. Semantic layer — AST parsing turns code into structured meaning. Not which lines changed — which functions, parameters, and call relationships changed.
2. Graph layer — dependency graph maps how every function connects to every other function across your entire codebase. When something changes, Ripple knows the full blast radius.
3. Call site layer — verifies whether callers of changed functions are actually broken. Only blocks when real breakage exists — never on clean refactors.
| Level | Meaning | Action |
|---|---|---|
| 🔴 CRITICAL | Real breakage — will crash at runtime | Commit blocked |
| 🟠 WARN | Other functions depend on this change | Review before pushing |
| 🟢 INFO | Isolated change — no dependents affected | Commit proceeds |
Ripple is a static analysis tool. It cannot detect:
getattr() or eval()These are accepted limitations of static analysis. Ripple catches the structural breakage that causes the most common and most painful production failures.
MIT
3 commits
2 commits
Python
100.0%
Semantic commit analysis for Python — catch what Git misses.
Ripple sits at the commit moment and understands what your code change actually means. Not which lines changed — which functions, which dependencies, what breaks.
Git tracks text. It has no idea what your code does.
# You delete this function
def generate_token(username):
return "token_" + username
# Git commits it cleanly.
# Three other functions that call it will crash at runtime.
# Git never warned you.
Ripple catches this before the commit enters your repository.
from auth import logout as sign_out tracked correctlypip install ripple-git
Then in any Python project:
cd your-project
ripple install
That's it. Every git commit now runs semantic analysis automatically.
If your project uses the pre-commit framework,
add Ripple to your .pre-commit-config.yaml:
repos:
- repo: https://github.com/TheArcDev/ripple-git
rev: v0.1.0
hooks:
- id: ripple
Then install:
pre-commit install
Running Ripple semantic analysis...
=======================================================
RIPPLE - SEMANTIC COMMIT ANALYSIS ENGINE
=======================================================
File: auth.py
----------------------------------------
[🔴 CRITICAL] [DELETED] generate_token()
→ Had parameters: ['username']
Real breakage detected:
'generate_token' was deleted but is still called in 3 location(s)
→ auth.py line 2 (1 passed)
→ auth.py line 18 (1 passed)
→ app.py line 14 (1 passed)
=======================================================
🔴 COMMIT BLOCKED
Fix the issues above before committing
Use --no-verify to override if intentional
=======================================================
# Analyze staged changes without committing
ripple check
# Analyze working tree including unstaged changes
ripple check --working
# Analyze only staged changes
ripple check --staged
# Smart commit — analyzes changes and suggests an accurate message
ripple commit
# Install hook into current repository
ripple install
# Remove hook from current repository
ripple uninstall
Instead of git commit -m "fixed stuff", Ripple reads what actually
changed and suggests an accurate message:
Suggested commit message:
----------------------------------------
add check_session(session_id) to auth
----------------------------------------
[U] Use suggested message
[W] Write your own message
[Q] Quit — don't commit
Messages are generated from real semantic data — not AI guessing. Always accurate. Always specific.
Ripple uses three layers of analysis at every commit:
1. Semantic layer — AST parsing turns code into structured meaning. Not which lines changed — which functions, parameters, and call relationships changed.
2. Graph layer — dependency graph maps how every function connects to every other function across your entire codebase. When something changes, Ripple knows the full blast radius.
3. Call site layer — verifies whether callers of changed functions are actually broken. Only blocks when real breakage exists — never on clean refactors.
| Level | Meaning | Action |
|---|---|---|
| 🔴 CRITICAL | Real breakage — will crash at runtime | Commit blocked |
| 🟠 WARN | Other functions depend on this change | Review before pushing |
| 🟢 INFO | Isolated change — no dependents affected | Commit proceeds |
Ripple is a static analysis tool. It cannot detect:
getattr() or eval()These are accepted limitations of static analysis. Ripple catches the structural breakage that causes the most common and most painful production failures.
MIT
3 commits
2 commits
Python
100.0%