-
Notifications
You must be signed in to change notification settings - Fork 107
Description
What broke?
We have noticed an issue where automated code formatting tools alter the AI vs. Human authorship percentage. GIT-AI currently attributes the lines modified by formatters to human authors, which skews the actual generation metrics.
Steps to reproduce
Generate a new file from scratch entirely using AI (e.g., a Java class with 100 lines). At this point, it is 100% AI-generated.
Run an auto-formatter via the CLI. For example, run mvn spotless:apply.
The formatter modifies a portion of the file (e.g., 14 lines are adjusted for indentation, spacing, etc.).
Check the authorship calculation in git-ai.
Expected vs actual behavior
Expected Behavior:
Since the code was 100% generated by AI and merely auto-formatted without any structural or logical human intervention, git-ai should ideally not count these automated formatting changes as "human authorship". It should either ignore formatting-only changes or provide a mechanism to exclude specific commits (like format/lint commits) from the calculation.
Actual Behavior:
git-ai calculates the formatted lines as human-written. In the example above, it reports the file as 14% Human and 86% AI, even though no human actually wrote any code.
Diagnostics (git-ai debug)
git-ai debug report
Generated (UTC): 2026-03-17T08:58:44.373063300+00:00
== Versions ==
Git AI version: 1.1.13
Git AI binary: C:\Users\tcabdanisman\.git-ai\bin\git-ai.exe
Git binary path: C:\Program Files\Git\cmd\git.exe
Git version: git version 2.53.0.windows.1
== Platform ==
OS family: windows
OS: windows
Arch: x86_64
Kernel: Microsoft Windows [Version 10.0.22631.6783]
Hostname: TT04876561
Shell: C:\WINDOWS\system32\cmd.exe
Current dir: D:\Dev\GIT-AI-TCELL\git-ai
== Hardware ==
CPU: AMD Ryzen 7 PRO 5850U with Radeon Graphics
Physical cores: 8
Logical cores: 16
Memory: 14.83 GB (15919931392 bytes)
== Repository ==
In repository: true
Workdir: D:/Dev/GIT-AI-TCELL/git-ai
Git dir: D:\Dev\GIT-AI-TCELL\git-ai\.git
Git common dir: D:\Dev\GIT-AI-TCELL\git-ai\.git
Branch: master
HEAD: cf68062253599a06f43143da43e992b1c22e93f3
Remotes:
origin = https://stash.turkcell.com.tr/git/scm/dev1234/git-ai.git
== Git Config ==
Command: C:\Program Files\Git\cmd\git.exe config --list --show-origin --show-scope
system file:C:/Program Files/Git/etc/gitconfig diff.astextplain.textconv=astextplain
system file:C:/Program Files/Git/etc/gitconfig filter.lfs.clean=git-lfs clean -- %f
system file:C:/Program Files/Git/etc/gitconfig filter.lfs.smudge=git-lfs smudge -- %f
system file:C:/Program Files/Git/etc/gitconfig filter.lfs.process=git-lfs filter-process
system file:C:/Program Files/Git/etc/gitconfig filter.lfs.required=true
system file:C:/Program Files/Git/etc/gitconfig http.sslbackend=schannel
system file:C:/Program Files/Git/etc/gitconfig core.autocrlf=true
system file:C:/Program Files/Git/etc/gitconfig core.fscache=true
system file:C:/Program Files/Git/etc/gitconfig core.symlinks=false
system file:C:/Program Files/Git/etc/gitconfig pull.rebase=false
system file:C:/Program Files/Git/etc/gitconfig credential.helper=manager
system file:C:/Program Files/Git/etc/gitconfig credential.https://dev.azure.com.usehttppath=true
system file:C:/Program Files/Git/etc/gitconfig init.defaultbranch=master
global file:C:/Users/tcabdanisman/.gitconfig credential.https://stash.turkcell.com.tr.provider=generic
global file:C:/Users/tcabdanisman/.gitconfig user.name=tcsastan
global file:C:/Users/tcabdanisman/.gitconfig user.email=mert.astan@turkcell.com.tr
global file:C:/Users/tcabdanisman/.gitconfig core.compression=0
global file:C:/Users/tcabdanisman/.gitconfig core.longpaths=true
global file:C:/Users/tcabdanisman/.gitconfig core.editor="d:\Microsoft VS Code\bin\code" --wait
global file:C:/Users/tcabdanisman/.gitconfig credential.https://stash-test.turkcell.com.tr.provider=generic
global file:C:/Users/tcabdanisman/.gitconfig filter.lfs.clean=git-lfs clean -- %f
global file:C:/Users/tcabdanisman/.gitconfig filter.lfs.smudge=git-lfs smudge -- %f
global file:C:/Users/tcabdanisman/.gitconfig filter.lfs.process=git-lfs filter-process
global file:C:/Users/tcabdanisman/.gitconfig filter.lfs.required=true
global file:C:/Users/tcabdanisman/.gitconfig http.sslverify=false
global file:C:/Users/tcabdanisman/.gitconfig safe.directory=*
global file:C:/Users/tcabdanisman/.gitconfig safe.directory=*
global file:C:/Users/tcabdanisman/.gitconfig safe.directory=*
local file:.git/config core.repositoryformatversion=0
local file:.git/config core.filemode=false
local file:.git/config core.bare=false
local file:.git/config core.logallrefupdates=true
local file:.git/config core.symlinks=false
local file:.git/config core.ignorecase=true
local file:.git/config remote.origin.url=https://stash.turkcell.com.tr/git/scm/dev1234/git-ai.git
local file:.git/config remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
local file:.git/config branch.master.remote=origin
local file:.git/config branch.master.merge=refs/heads/master
== Git AI Config ==
config_file_path: C:\Users\tcabdanisman\.git-ai\config.json
git_ai_dir: C:\Users\tcabdanisman\.git-ai
runtime_config:
{
"git_path": "C:\\Program Files\\Git\\cmd\\git.exe",
"exclude_prompts_in_repositories": [],
"include_prompts_in_repositories": [],
"allow_repositories": [],
"exclude_repositories": [],
"telemetry_oss_disabled": false,
"telemetry_enterprise_dsn": null,
"disable_version_checks": true,
"disable_auto_updates": true,
"update_channel": "latest",
"feature_flags": {
"rewrite_stash": false,
"inter_commit_move": false,
"auth_keyring": false,
"git_hooks_enabled": false,
"git_hooks_externally_managed": false
},
"api_base_url": "https://usegitai.com",
"prompt_storage": "default",
"default_prompt_storage": null,
"api_key": null,
"quiet": false,
"custom_attributes": {}
}
== Git AI Login ==
Credential backend: file
Status: logged out
== Git AI Environment ==
No GIT_AI_* environment variables are set.