Mill::Repo.prepare writes gc.auto and maintenance.auto to the clone (repo.rb:71) and no identity. git clone copies no config, so a clone has no identity of its own. Stages commit inside worktrees of that clone, and prompts/implement.md tells the implement stage to make a commit per task.
On a server whose account has no ~/.gitconfig — the ubuntu-latest shape mill's own CI runs on, and the deployment target the design doc describes — that first commit fails, the stage is charged a strike, and the run burns its attempts on something the machine did to it. Nothing tests this and Mill::Doctor does not check it.
Decided 2026-08-20, written up in the design doc under "Setting up, and preparing a repo". You are the author and mill is the committer, named mill at the author's address, set through GIT_COMMITTER_NAME/GIT_COMMITTER_EMAIL in Mill::Rules.env_for (rules.rb:89). It is mill's own setting, not a .mill.yml key, because that file lives in the repo being worked on and its base branch would decide what name your credentials push under. Unset, the author falls back to the machine's git config, so a laptop needs nothing.
Not implemented. Needs: Repo.prepare writing the identity beside gc.auto (repo.rb:72), the two committer variables in env_for, a doctor check that fails when nothing resolves, and a test that a prepared clone commits with the right author and committer.
Every commit mill has made so far is authored as the operator, indistinguishable in git log and git blame from work typed by hand.
Context: docs/notes/2026-08-20-plan-3a-review-triage.md, blocker zero.
Mill::Repo.preparewritesgc.autoandmaintenance.autoto the clone (repo.rb:71) and no identity.git clonecopies no config, so a clone has no identity of its own. Stages commit inside worktrees of that clone, andprompts/implement.mdtells the implement stage to make a commit per task.On a server whose account has no
~/.gitconfig— theubuntu-latestshape mill's own CI runs on, and the deployment target the design doc describes — that first commit fails, the stage is charged a strike, and the run burns its attempts on something the machine did to it. Nothing tests this andMill::Doctordoes not check it.Decided 2026-08-20, written up in the design doc under "Setting up, and preparing a repo". You are the author and mill is the committer, named
millat the author's address, set throughGIT_COMMITTER_NAME/GIT_COMMITTER_EMAILinMill::Rules.env_for(rules.rb:89). It is mill's own setting, not a.mill.ymlkey, because that file lives in the repo being worked on and its base branch would decide what name your credentials push under. Unset, the author falls back to the machine's git config, so a laptop needs nothing.Not implemented. Needs:
Repo.preparewriting the identity besidegc.auto(repo.rb:72), the two committer variables inenv_for, a doctor check that fails when nothing resolves, and a test that a prepared clone commits with the right author and committer.Every commit mill has made so far is authored as the operator, indistinguishable in
git logandgit blamefrom work typed by hand.Context:
docs/notes/2026-08-20-plan-3a-review-triage.md, blocker zero.