decision: agent commits are landing under three different author identities, including yours #186

Open
opened 2026-08-09 18:31:19 +02:00 by clawbot · 1 comment
Collaborator

Surfacing a question only you can answer. Not blocking anything; I am not
holding any PR on it.

Observation

The branch feat/issue-181-e2e-harness on PR
#185 carries commits under three
different author identities
:

  • sneak@sneak.berlin
  • clawbot@eeqj.de
  • cai2025@acidhou.se

The cause is mechanical: the shared clone's user.email is configured as you,
so any agent that commits without overriding it inherits your identity. Agents
that do set their own identity get clawbot, and at least one run picked up a
third address from the environment.

Why I am raising it rather than quietly normalizing it

Every commit in this repo's recent history is machine-authored. git log and
git blame are how anyone - including future agents, including you in six
months - works out who to ask about a line. Right now they answer that question
wrongly: work neither written nor reviewed by you is attributed to you.

For most repos this is untidy. For a wallet that signs transactions, the
provenance of a line of code is a security-relevant property, and a signed or
attributed commit that misstates its origin is worse than one that is honestly
attributed to a bot. It also interacts badly with any future decision to sign
commits or require signed commits on protected main.

I did not want to normalize this silently, because "make the history say
something different about who wrote this" is not a call an agent should make on
its own initiative.

Options

  • (a) All agent commits author as clawbot@eeqj.de. Honest, uniform, and
    makes git log immediately legible: your commits are yours, everything else
    is the bot. Requires setting user.name/user.email explicitly in the agent
    workflow rather than inheriting from the clone. Existing history is left
    alone.
  • (b) As (a), plus rewrite the existing mixed commits on unmerged branches
    so they land uniformly. Only touches unmerged branches - PRs
    #169,
    #171,
    #175,
    #178 and
    #185 - so nothing already on main
    is rewritten. Costs a force-push on each branch.
  • (c) Leave it. Zero effort. The history stays misleading about authorship,
    and it gets harder to fix the longer it runs.

Recommendation

(a), and not (b). Fixing it going forward is cheap and unambiguous.
Rewriting five in-flight branches to correct attribution is a lot of
force-pushing - and force-pushing branches that already carry completed review
history is exactly the kind of churn that loses review context. The mixed
commits already in flight are a small, bounded, comprehensible mess; I would
rather leave them legible than rewrite them.

If you disagree and want (b), say so and I will do it as a single sweep before
any of the five merge, rather than piecemeal.

Also worth your explicit call

Should main require signed commits? If yes, that decision is much cheaper to
make now, while the number of in-flight branches is five, than after 1.0.0. I
have not assumed either way and this issue is not blocked on it.

Surfacing a question only you can answer. Not blocking anything; I am not holding any PR on it. ## Observation The branch `feat/issue-181-e2e-harness` on PR https://git.eeqj.de/sneak/AutistMask/pulls/185 carries commits under **three different author identities**: - `sneak@sneak.berlin` - `clawbot@eeqj.de` - `cai2025@acidhou.se` The cause is mechanical: the shared clone's `user.email` is configured as you, so any agent that commits without overriding it inherits your identity. Agents that do set their own identity get `clawbot`, and at least one run picked up a third address from the environment. ## Why I am raising it rather than quietly normalizing it Every commit in this repo's recent history is machine-authored. `git log` and `git blame` are how anyone - including future agents, including you in six months - works out who to ask about a line. Right now they answer that question wrongly: work neither written nor reviewed by you is attributed to you. For most repos this is untidy. For a **wallet that signs transactions**, the provenance of a line of code is a security-relevant property, and a signed or attributed commit that misstates its origin is worse than one that is honestly attributed to a bot. It also interacts badly with any future decision to sign commits or require signed commits on protected `main`. I did not want to normalize this silently, because "make the history say something different about who wrote this" is not a call an agent should make on its own initiative. ## Options - **(a) All agent commits author as `clawbot@eeqj.de`.** Honest, uniform, and makes `git log` immediately legible: your commits are yours, everything else is the bot. Requires setting `user.name`/`user.email` explicitly in the agent workflow rather than inheriting from the clone. Existing history is left alone. - **(b) As (a), plus rewrite the existing mixed commits** on unmerged branches so they land uniformly. Only touches unmerged branches - PRs https://git.eeqj.de/sneak/AutistMask/pulls/169, https://git.eeqj.de/sneak/AutistMask/pulls/171, https://git.eeqj.de/sneak/AutistMask/pulls/175, https://git.eeqj.de/sneak/AutistMask/pulls/178 and https://git.eeqj.de/sneak/AutistMask/pulls/185 - so nothing already on `main` is rewritten. Costs a force-push on each branch. - **(c) Leave it.** Zero effort. The history stays misleading about authorship, and it gets harder to fix the longer it runs. ## Recommendation **(a), and not (b).** Fixing it going forward is cheap and unambiguous. Rewriting five in-flight branches to correct attribution is a lot of force-pushing - and force-pushing branches that already carry completed review history is exactly the kind of churn that loses review context. The mixed commits already in flight are a small, bounded, comprehensible mess; I would rather leave them legible than rewrite them. If you disagree and want (b), say so and I will do it as a single sweep before any of the five merge, rather than piecemeal. ## Also worth your explicit call Should `main` require signed commits? If yes, that decision is much cheaper to make now, while the number of in-flight branches is five, than after 1.0.0. I have not assumed either way and this issue is not blocked on it.
sneak was assigned by clawbot 2026-08-09 18:31:19 +02:00
Author
Collaborator

Update that changes the decision: squash-merging through Gitea rewrites the landed commit's author and committer to clawbot, whatever identity the branch commits carried. Verified on the commit that just landed on next (d93eda3, from #192) and on the three before it — all clawbot, none sneak.

So under the current workflow (branch per issue, squash-merged into next through the tracker) the misattribution never reaches next or main. It exists only on unmerged feature-branch commits, which the squash discards.

That makes (b) unnecessary — there is no mixed history to rewrite once those branches land — and reduces (a) to belt-and-braces. I am setting user.name/user.email to clawbot per clone in every worker dispatch regardless, since it costs nothing and keeps the branch commits honest before they are squashed.

Still open and unchanged: whether main should require signed commits. That one is worth your call before 1.0.0.

Update that changes the decision: squash-merging through Gitea rewrites the landed commit's author and committer to `clawbot`, whatever identity the branch commits carried. Verified on the commit that just landed on `next` (`d93eda3`, from https://git.eeqj.de/sneak/AutistMask/pulls/192) and on the three before it — all `clawbot`, none `sneak`. So under the current workflow (branch per issue, squash-merged into `next` through the tracker) the misattribution never reaches `next` or `main`. It exists only on unmerged feature-branch commits, which the squash discards. That makes (b) unnecessary — there is no mixed history to rewrite once those branches land — and reduces (a) to belt-and-braces. I am setting `user.name`/`user.email` to `clawbot` per clone in every worker dispatch regardless, since it costs nothing and keeps the branch commits honest before they are squashed. Still open and unchanged: whether `main` should require signed commits. That one is worth your call before 1.0.0.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/AutistMask#186