Three signals, any one is enough · unmatched reads as human

login glob *[bot] nobracket, literal [bot]
head branch claude/* prefix glob
commit trailer Co-Authored-By final paragraph only
classifyAuthor any match? OR of the three
classify paths class + tier → verdict
agentheld to stricter tier
humanthe lenient default

CI gates on the PR author login · the CLI reads the commit author name as an advisory pre-flight