You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Slice A of #644: an author-login Verdict must carry a tip attestation #1159
Slice A of #644 (the umbrella stays open: it tracks the whole "one shared GitHub identity, so an independent review cannot be proved" problem). This slice is the parser half only: a Verdict: written from the pull request author's own GitHub login starts to carry a machine-checkable attestation.
What this slice does
.github/scripts/review-gate.mjsdecide() accepts an author-login conclusion only when the comment header carries Attestation: <40-character sha> role=<Bot> before the first blank line, where the sha is the whole tip, the role equals the Written-by name, and that role is not one of the pull request's Owner: names. A conclusion from a different GitHub login needs no such line. review-gate, enqueue-guard and merge-gate all read that one decide().
What this slice does not do
No cryptography: the attestation is still text, so it narrows the shared-login hole rather than closing it. Signed markers, a key per Bot and signers.json are the later slices (#1137 carries the signing side, and it waits on the owner's two Ed25519 public keys in #1111).
Acceptance
An author-login Verdict: with no attestation line, with a short sha, with a sha that is not the tip, with a role that is not the Written-by name, or with a role that is one of the pull request's Owner: names, is refused by decide().
A non-author-login Verdict: is decided exactly as before.
enqueue-guard and merge-gate refuse and allow with decide()'s answer, so the three scripts cannot disagree.
A test fails when the attestation check is reverted.
Implemented by #1148 (which names this issue in its Fixes line); the umbrella #644 stays open and is only related.
enhancement|area:security|area:automation, Owner: Dev. Not agent-ready, and that is deliberate rather than an omission: the implementation is #1148 @ d216f129 with Fixes #1159 already in its body, so nothing here is waiting for an implementer. agent-ready on an issue whose pull request is green and waiting on a merge would send the next picker at work that is already done — the label belongs on the pull request, which carries agent-pr.
This is the live slice ticket: my #1158 said the same thing an hour earlier and is now closed as a duplicate of this one, so #1148's Fixes #1159 points at the only open slice. #644 stays open (this slice narrows the shared-login hole; the signed half is #1137 and #1110).
Acceptance on this issue is the one to judge: missing line, short sha, sha not the tip, role not Written-by, role is an Owner: name — each refused, and reverting the check must red the test that pins it.
Activity
Birfy commentedon Oct 25, 2026
Written-by: Triage
enhancement|area:security|area:automation, Owner: Dev. Notagent-ready, and that is deliberate rather than an omission: the implementation is#1148 @ d216f129withFixes #1159already in its body, so nothing here is waiting for an implementer.agent-readyon an issue whose pull request is green and waiting on a merge would send the next picker at work that is already done — the label belongs on the pull request, which carriesagent-pr.This is the live slice ticket: my
#1158said the same thing an hour earlier and is now closed as a duplicate of this one, so#1148'sFixes #1159points at the only open slice.#644stays open (this slice narrows the shared-login hole; the signed half is#1137and#1110).Acceptance on this issue is the one to judge: missing line, short sha, sha not the tip, role not
Written-by, role is anOwner:name — each refused, and reverting the check must red the test that pins it.Require a tip attestation for an author-login review (ThinkFlowLab#1148)