Delegate more review work to Codex and add a peer-agent channel (#3902)
.claude/codex-agent.py owns the role allowlist because a Markdown bridge cannot
enforce one; a rejected role exits 2 with empty stdout. pr-review-validator
stays on Claude - codex exec --sandbox read-only has no network, so a gh-based
role answers from an empty view instead of failing, measured on this PR.
pr-babysit now tracks what each comment is still owed, keyed by findingId and a
digest of the body, so an edited comment stops the run rather than resolving a
thread whose point went unanswered.
Each paragraph carries a why the diff can't show: why enforcement moved to Python, why one role is exempt from Codex, and why findings needed stable identity. Everything the diff states plainly — file lists, test counts, the both → all rename — is left out. No trailers.
19 files changed