Files
volt b5760bcaa3 mailmap: fold the four Volt identities this history actually carries into the canonical one (158 authored commits, one row after)
The canonical side of .mailmap already folded volt@troupe.local,
volt@troupe.invalid and volt@stackchain.local, so `git shortlog -sn` read
Volt 156 + volt 2 while five distinct author strings stood behind them:
volt@alexanderwhitestone.com (3 as `Volt` + 2 as `volt`), volt@stackchain.ai
(3), and timmy@stackchain.ai on one commit whose own subject is
"tools (volt): ...". Four mappings are appended here; no history is rewritten
(this is .mailmap's stated scope, .mailmap:1-3).

Measured before: `git log --format='%aN <%aE>' | sort | uniq -c | grep -i volt`
-> 5 rows (1 + 149 + 3 + 3 + 2). After: 1 row, `158 Volt <volt@agents.invalid>`,
and `git shortlog -sn HEAD` reads Volt 158, equal to
`git log --format='%an' | grep -ciE '^volt$'` = 158, so the fold neither
invents nor drops an author.

Evidence for the timmy@stackchain.ai row is that commit's own text:
9f7bc3b "tools (volt): ruff -F,E9 3 -> 0 ..." (2026-10-19 07:34:05Z).
2026-10-22 05:26:24 +00:00

23 lines
1.3 KiB
Plaintext

# Normalize troupe commit attribution for `git log` / `git shortlog`.
# This does NOT rewrite history — it only affects how names/emails are displayed.
# Canonical per wizard:
Timmy <timmy@stackchain.ai> timmy <timmy@stackchain.ai>
Timmy <timmy@stackchain.ai> <timmy@alexanderwhitestone.com>
Timmy <timmy@stackchain.ai> <timmy@agents.invalid>
Timmy <timmy@stackchain.ai> <timmy@stackchain.invalid>
Timmy <timmy@stackchain.ai> <timmy@hermes>
Timmy <timmy@stackchain.ai> <timmy@stacktimmy.invalid>
Timmy <timmy@stackchain.ai> <timmy@localhost>
Zephyrus Sparkborn <zephyrus-sparkborn@agents.invalid> <zephyrus-sparkborn@users.noreply.forge.alexanderwhitestone.com>
Zephyrus Sparkborn <zephyrus-sparkborn@agents.invalid> <zephyrus-sparkborn@users.noreply.github.com>
Zephyrus Sparkborn <zephyrus-sparkborn@agents.invalid> <zephyrus-sparkborn@noreply.local>
Cassian Assayborn <cassian@agents.invalid> <cassian@forge.local>
Volt <volt@agents.invalid> volt <volt@troupe.invalid>
Volt <volt@agents.invalid> volt <volt@troupe.local>
Volt <volt@agents.invalid> Volt <volt@troupe.local>
Volt <volt@agents.invalid> Volt <volt@stackchain.local>
Volt <volt@agents.invalid> Volt <volt@alexanderwhitestone.com>
Volt <volt@agents.invalid> volt <volt@alexanderwhitestone.com>
Volt <volt@agents.invalid> Volt <volt@stackchain.ai>
Volt <volt@agents.invalid> Volt <timmy@stackchain.ai>