mirror of
https://github.com/expo/code-review-cli.git
synced 2026-11-15 03:38:09 -10:00
* Add config-driven trigger policy; fix ai-review:skip matching Move which-PRs-to-review policy into config (.expo-code-review/config.jsonc -> review.trigger), so it's a declarative per-repo knob alongside agents/ noise/policy/auth rather than hardcoded in each repo's workflow YAML. ecr ci now self-gates: skipLabel (ai-review:skip) always wins; trigger "label" requires an ai-review (or ai-review:<agent>) label; trigger "all" reviews every non-skipped PR. Default is "all". Keep per-PR skip as a LABEL, not a config flag: labels are write-gated to maintainers, so a PR author can't edit config to dodge review (config.jsonc is read from the PR ref in the auto-workflow). The workflow if: gate stays available for repos that prefer gating in YAML, but is fixed to use contains()'s array form for an EXACT match — the old join()+substring form treated 'ai-review:skip' as containing 'ai-review', so skip didn't actually skip. It's now a coarse opt-out (run unless skip) on top of the config policy. Adds shouldReview unit tests. Co-authored-by: brentvatne <[email protected]> * Sync templates/workflow.yml gate with the fixed workflow Follow-up to the same PR: the scaffolded template still shipped the old substring gate (contains(join(labels), 'ai-review')), so `ecr init` would give newly adopting repos the bug this PR fixes (ai-review:skip satisfying the ai-review check). Bring it in line with .github/workflows/expo-code-review.yml — exact-match opt-out — keeping templates in sync with the code (AGENTS.md). Co-authored-by: brentvatne <[email protected]> --------- Co-authored-by: expo-tuft[bot] <288127324+expo-tuft[bot]@users.noreply.github.com> Co-authored-by: brentvatne <[email protected]>