This repository has no way to count its AI attributions correctly. Git's own trailer parser happens to agree with a whole-body count on dev today, 10 and 10, but only because no squash merge here has yet buried one. The exposure is structural rather than hypothetical: the same command reports 4 of 43 on ZoneX, 2 of 17 on GUIX and 148 of 196 on ThreadX.
Git reads trailers only from a block at the very end of a commit message. A squash merge concatenates the branch's commit messages, so every trailer but the last is left buried mid-message, and an indented trailer is skipped for the same reason. Both forms are real attributions and both are invisible to the parser.
This matters beyond tidiness. The Assisted-by trailer exists because the Eclipse Foundation's Generative AI Usage Guidelines oblige committers to be transparent about their use of generative AI, and the trailer is the per-change, dated record that obligation rests on. A count that silently misses most of them cannot answer the question it was put there to answer.
ThreadX added scripts/count_assisted_by.sh in eclipse-threadx/threadx#775. It reads whole commit bodies instead of relying on git's trailer parser, so the count is complete:
scripts/count_assisted_by.sh # HEAD, grouped by value
scripts/count_assisted_by.sh dev # a branch
scripts/count_assisted_by.sh dev -- <path> # limited to a path
scripts/count_assisted_by.sh --list dev # one line per commit
Port that script here. It is plain bash with nothing repository-specific in it, so it should need no change beyond the copyright header.
This repository has no way to count its AI attributions correctly. Git's own trailer parser happens to agree with a whole-body count on
devtoday, 10 and 10, but only because no squash merge here has yet buried one. The exposure is structural rather than hypothetical: the same command reports 4 of 43 on ZoneX, 2 of 17 on GUIX and 148 of 196 on ThreadX.Git reads trailers only from a block at the very end of a commit message. A squash merge concatenates the branch's commit messages, so every trailer but the last is left buried mid-message, and an indented trailer is skipped for the same reason. Both forms are real attributions and both are invisible to the parser.
This matters beyond tidiness. The
Assisted-bytrailer exists because the Eclipse Foundation's Generative AI Usage Guidelines oblige committers to be transparent about their use of generative AI, and the trailer is the per-change, dated record that obligation rests on. A count that silently misses most of them cannot answer the question it was put there to answer.ThreadX added
scripts/count_assisted_by.shin eclipse-threadx/threadx#775. It reads whole commit bodies instead of relying on git's trailer parser, so the count is complete:Port that script here. It is plain bash with nothing repository-specific in it, so it should need no change beyond the copyright header.