feat(git): commit identity from the target repo's local config and a pre-push identity guard (#425 item 1) #448

Merged
hexajon merged 1 commit from issue-425-commit-identity-from-target-repo into main 2026-08-18 18:28:16 +00:00
Owner

Summary

#425 item 1: madt_commit and the commit step of madt_finish take the author and committer from the TARGET repo's local git config (never the process-global identity), resolved per-checkout including dir= targets (ADR 0025/0027). A new pre-push/pre-finish guard reads each commit OBJECT on the branch and refuses, naming the sha, when an author or committer email does not match the repo's local identity - a config check is not enough, because the config can be right while the object is wrong. On a first push with no remote base it checks every commit reachable from the pushed branch. Items 2 and 3 (signing verification, the unsigned merge commit in finish) stay blocked on #424, so this references #425 rather than closing it.

Refs #425

## Summary #425 item 1: `madt_commit` and the commit step of `madt_finish` take the author and committer from the TARGET repo's local git config (never the process-global identity), resolved per-checkout including `dir=` targets (ADR 0025/0027). A new pre-push/pre-finish guard reads each commit OBJECT on the branch and refuses, naming the sha, when an author or committer email does not match the repo's local identity - a config check is not enough, because the config can be right while the object is wrong. On a first push with no remote base it checks every commit reachable from the pushed branch. Items 2 and 3 (signing verification, the unsigned merge commit in finish) stay blocked on #424, so this references #425 rather than closing it. Refs #425
feat(git): resolve commit author/committer from the target repo's local config and add a pre-push identity guard (#425 item 1)
Some checks failed
drift / govulncheck (pull_request) Has been skipped
drift / surface-diff (pull_request) Has been cancelled
drift / forgejo-smoke (pull_request) Has been cancelled
ci / gate (pull_request) Has been cancelled
ci / mcp-conformance (pull_request) Has been cancelled
75922699dc
Merge branch 'main' into issue-425-commit-identity-from-target-repo
All checks were successful
drift / govulncheck (pull_request) Has been skipped
drift / surface-diff (pull_request) Successful in 1m14s
drift / forgejo-smoke (pull_request) Has been skipped
ci / mcp-conformance (pull_request) Successful in 1m50s
ci / gate (pull_request) Successful in 18m28s
16afb0f0a1
hexajon scheduled this pull request to auto merge when all checks succeed 2026-08-18 18:01:54 +00:00
hexajon force-pushed issue-425-commit-identity-from-target-repo from 16afb0f0a1
All checks were successful
drift / govulncheck (pull_request) Has been skipped
drift / surface-diff (pull_request) Successful in 1m14s
drift / forgejo-smoke (pull_request) Has been skipped
ci / mcp-conformance (pull_request) Successful in 1m50s
ci / gate (pull_request) Successful in 18m28s
to 48b08b7151
Some checks failed
ci / gate (pull_request) Failing after 8m13s
drift / govulncheck (pull_request) Has been skipped
ci / mcp-conformance (push) Successful in 28s
drift / forgejo-smoke (push) Has been skipped
drift / forgejo-smoke (pull_request) Has been skipped
drift / surface-diff (pull_request) Successful in 1m39s
ci / mcp-conformance (pull_request) Successful in 2m5s
drift / govulncheck (push) Has been skipped
drift / surface-diff (push) Successful in 8s
ci / gate (push) Successful in 8m53s
2026-08-18 18:24:44 +00:00
Compare
Sign in to join this conversation.
No reviewers
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
sixfold-space/madtea!448
No description provided.