feat(runner): identità git isolata per i commit del runner #3

Merged
claudia merged 1 commit from feat/runner-git-identity into main 2026-06-22 14:37:55 +00:00
Owner

Problema

Sulla VM di sviluppo lo sviluppatore umano e l'agent-runner lavorano sulla stessa cartella, quindi condividono lo stesso .gitconfig globale e lo stesso user. I commit del runner risultavano indistinguibili da quelli fatti a mano.

Soluzione

Il runner inietta l'identità git (GIT_AUTHOR_* + GIT_COMMITTER_*) solo nel sottoprocesso claude che esegue il lavoro:

  • internal/claude: nuovo childEnv() che parte da os.Environ() e sovrascrive in coda le 4 variabili (l'ultima occorrenza vince → battono eventuali GIT_* ereditate). Iniezione solo se nome e email sono valorizzati.
  • internal/config: nuovi campi opzionali git_author_name/git_author_email, default Claudia Soltea / claudia.ai@soltea.it.
  • internal/agent: wiring config → claude.Options.
  • bump versione 0.6.60.6.7.

Non tocca la config globale dell'host: i commit fatti a mano dall'umano restano i suoi, quelli del runner sono dell'agente. Risultato: due commit con autori distinti sullo stesso repo condiviso.

Test

go vet + go test ./... verdi. Aggiunti TestChildEnv_InjectsGitIdentity e TestChildEnv_NoInjectionWhenIdentityMissing.

## Problema Sulla VM di sviluppo lo sviluppatore umano e l'agent-runner lavorano sulla **stessa cartella**, quindi condividono lo stesso `.gitconfig` globale e lo stesso `user`. I commit del runner risultavano indistinguibili da quelli fatti a mano. ## Soluzione Il runner inietta l'identità git (`GIT_AUTHOR_*` + `GIT_COMMITTER_*`) **solo nel sottoprocesso `claude`** che esegue il lavoro: - `internal/claude`: nuovo `childEnv()` che parte da `os.Environ()` e sovrascrive in coda le 4 variabili (l'ultima occorrenza vince → battono eventuali GIT_* ereditate). Iniezione solo se nome **e** email sono valorizzati. - `internal/config`: nuovi campi opzionali `git_author_name`/`git_author_email`, default `Claudia Soltea` / `claudia.ai@soltea.it`. - `internal/agent`: wiring config → claude.Options. - bump versione `0.6.6` → `0.6.7`. Non tocca la config globale dell'host: i commit fatti a mano dall'umano restano i suoi, quelli del runner sono dell'agente. Risultato: due commit con autori distinti sullo stesso repo condiviso. ## Test `go vet` + `go test ./...` verdi. Aggiunti `TestChildEnv_InjectsGitIdentity` e `TestChildEnv_NoInjectionWhenIdentityMissing`.
Il runner inietta GIT_AUTHOR_*/GIT_COMMITTER_* (default Claudia Soltea,
configurabili via git_author_name/git_author_email) solo nel sottoprocesso
claude. Cosi' i commit del runner restano attribuiti all'agente a prescindere
dal .gitconfig globale dell'host (condiviso con lo sviluppatore umano sulla
stessa cartella); i commit fatti a mano restano distinti senza toccare la
config globale.
claudia deleted branch feat/runner-git-identity 2026-06-22 14:37:55 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Soltea-org/soltea-agent-gateway!3
No description provided.