Skip to content

[Bug]: Automated code formatting changes (e.g., mvn spotless:apply) are incorrectly calculated as human authorship #725

@adanisman

Description

@adanisman

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.

Extra context (optional)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions