feat(enrichment): commit-signature / verified-author provenance analyzer - #1777
Conversation
…t in the commit-signature analyzer
…re-provenance-analyzer # Conflicts: # review-enrichment/src/brief.ts # review-enrichment/src/render.ts # review-enrichment/src/types.ts
…re-provenance-analyzer # Conflicts: # review-enrichment/src/brief.ts # review-enrichment/src/render.ts # review-enrichment/src/types.ts
|
Tip 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 ✅ Gittensory review result - approve/merge recommendedReview updated: 2026-06-29 22:27:51 UTC
✅ Suggested Action - Approve/Merge
Review summary Nits — 6 non-blocking
Review context
Contributor next steps
Signal definitions
🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
What
A new REES (review-enrichment service) analyzer that flags head-commit signature and author-provenance risks the no-checkout reviewer cannot derive: an unsigned or unverified-signature head commit, an author/committer login mismatch, and a never-before-seen committer whose login has no verified history in a repo that otherwise carries verified commits. These are supply-chain and impersonation signals.
Data source
GitHub REST. It reads
commit.verification.{verified, reason}and the author/committer login fromGET /repos/{owner}/{repo}/commits/{headSha}, and establishes the new-committer-vs-verified-history signal with at most two boundedGET /commits?per_page=30queries (author-filtered, then repo-wide). The output is public-safe: only GitHub'sverifiedboolean, itsreasonstring, boolean provenance flags, and the public commit-author login GitHub already shows on the PR. No tokens, emails, local paths, or private signals.Behavior
Additive and fail-safe: it never throws, and returns no finding on a missing token or head SHA, an unresolvable repo slug, or any fetch error. A clean verified head with a matching author and no new-committer signal produces no finding. It follows the established analyzer pattern entirely within
review-enrichment/(finding type intypes.ts, a pure analyzer with injectedfetchinanalyzers/commit-signature.ts, registration inbrief.ts, a public-safe block inrender.ts), outside the engine scope.Tests
12
node:testcases with a mockedfetchcover verified and unverified heads, the reason passthrough, the author/committer mismatch, the new-committer-vs-verified-history signal, the fail-safe paths (no token, bad slug, fetch error), and a public-safe render assertion (no token prefixes, no emails). Full suite: rees build clean, 167 of 167 tests pass.Closes #1517