Skip to content

feat(startup): derive git committer.name/email from stand-identity.json - #780

Merged
qingyun-wu merged 1 commit into
mainfrom
feat/git-committer-from-stand-identity
May 17, 2026
Merged

qingyun-wu merged 1 commit into
mainfrom
feat/git-committer-from-stand-identity

Conversation

@sonichi

@sonichi sonichi commented May 17, 2026

Copy link
Copy Markdown
Owner

Summary

Author stays the GitHub-noreply email (CLA-Assistant gate). Committer becomes per-host so git log --format='%h %an / %cn %s' distinguishes which Sutando fleet host crafted each commit.

After this lands:

  • Mini → committer = Echo Act IV (Mini) <mac-mini@noreply.sutando.local>
  • MacBook → committer = <MacBook stand> <macbook@noreply.sutando.local>
  • OSS user → no change (no stand-identity.json → silent skip)

Why

Today's CLA-Assistant incident (#779, #777) root-caused: Mini's commits were authored as Chi <wangchi@Chis-Mac-mini.local> (OS-default hostname email), which CLA can't resolve to any GitHub user → silent PENDING forever. MacBook's commits were authored as 4250911+sonichi@users.noreply.github.com (GitHub privacy noreply) → resolved cleanly → ✅.

Fix in two parts:

  1. Repo-local user.email set to the noreply on every host → unified author → CLA gate consistent. (Done manually on Mini today; this PR doesn't add it because per-host git config --local isn't bash-portable.)
  2. This PR: lift the per-host signal that author used to badly carry into the COMMITTER field, where it belongs — author is who wrote the change (Chi), committer is who put it in this repo on this branch on this machine (Mini, MacBook).

Test plan

  • bash -n src/startup.sh — syntax OK
  • Smoke-test with stand-identity.json present → committer fields set correctly
  • Smoke-test with file missing → silent skip
  • Smoke-test with empty name / machine → silent skip
  • Run bash src/startup.sh on Mini (here) and verify git config committer.email resolves to mac-mini@noreply.sutando.local
  • Same on MacBook — verify the MacBook's stand-identity.json populates the right machine slug

🤖 Generated with Claude Code

Author stays the GitHub-noreply email (CLA-Assistant gate). Committer
becomes per-host so `git log --format='%h %an / %cn %s'` distinguishes
which Sutando fleet host crafted each commit (Mini, MacBook, …).

Opt-in by virtue of having stand-identity.json:
  • Mini  → committer = "Echo Act IV (Mini) <mac-mini@noreply.sutando.local>"
  • MacBook → committer = "<MacBook stand> <macbook@noreply.sutando.local>"
  • OSS user (no stand-identity.json) → no change

Silent fall-through on every "no identity" path: missing file, missing
jq, empty/malformed name or machine. No new env var, no new file, no
hard dep on jq. Smoke-tested all four paths.

Follow-up to today's CLA-Assistant diagnosis (#779, #777): root cause
of the silent CLA-pending was Mini's commit author being
`Chi <wangchi@Chis-Mac-mini.local>` (OS-default hostname email) while
MacBook's was `Chi Wang <4250911+sonichi@users.noreply.github.com>`
(GitHub privacy noreply, resolvable). Author is now uniform via
repo-local config; committer carries the per-host signal that author
used to (badly) carry.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

@qingyun-wu qingyun-wu left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@qingyun-wu
qingyun-wu merged commit db4c888 into main May 17, 2026
2 checks passed
@qingyun-wu
qingyun-wu deleted the feat/git-committer-from-stand-identity branch May 17, 2026 07:18
liususan091219 pushed a commit to liususan091219/sutando-fork that referenced this pull request May 28, 2026
…on (sonichi#780)

Author stays the GitHub-noreply email (CLA-Assistant gate). Committer
becomes per-host so `git log --format='%h %an / %cn %s'` distinguishes
which Sutando fleet host crafted each commit (Mini, MacBook, …).

Opt-in by virtue of having stand-identity.json:
  • Mini  → committer = "Echo Act IV (Mini) <mac-mini@noreply.sutando.local>"
  • MacBook → committer = "<MacBook stand> <macbook@noreply.sutando.local>"
  • OSS user (no stand-identity.json) → no change

Silent fall-through on every "no identity" path: missing file, missing
jq, empty/malformed name or machine. No new env var, no new file, no
hard dep on jq. Smoke-tested all four paths.

Follow-up to today's CLA-Assistant diagnosis (sonichi#779, sonichi#777): root cause
of the silent CLA-pending was Mini's commit author being
`Chi <wangchi@Chis-Mac-mini.local>` (OS-default hostname email) while
MacBook's was `Chi Wang <4250911+sonichi@users.noreply.github.com>`
(GitHub privacy noreply, resolvable). Author is now uniform via
repo-local config; committer carries the per-host signal that author
used to (badly) carry.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants