Parent: #1936
Problem
Common OSS gate bots (e.g. the standard "CLA assistant" pattern, or a license-file/SPDX-header check) have no analog in this repo. Because this gate auto-merges green PRs with no human in the loop, a repo that legally requires contributor sign-off before merge (common for foundations/dual-licensed projects) currently has no deterministic way to enforce that through gittensory — a maintainer would have to bolt on a separate GitHub Action as a required status check outside gittensory's own gate model, creating a second source of truth that has to be reconciled with gittensory's own merge decision. Low priority: no evidence any current self-host operator actually needs this yet.
Requirements
- Add a
gate.claMode: off|advisory|block dimension, off by default, mirroring the existing deterministic-phrase-match pattern already built for pre_merge_checks' titleContains/descriptionContains.
- Support checking either: a CLA-bot check-run's conclusion (if the repo also runs a separate CLA Action), or a documented consent phrase in the PR body (e.g. "I have read and agree to the CLA").
- Must integrate with the existing gate blocker/hold semantics — a
block mode CLA failure should behave like any other configured gate blocker (one-shot close for contributors, held for the owner).
Deliverables
- The
gate.claMode setting wired through the full config-as-code chain.
- A CLA-check evaluator supporting both the check-run-conclusion and phrase-match modes.
- Tests covering advisory vs. block mode, both detection methods, and the owner/admin exemption.
Acceptance criteria
- A repo with
gate.claMode: block configured and a PR missing CLA consent is blocked/closed per the existing gate disposition rules.
- Off by default — zero behavior change for repos that haven't opted in.
Expected outcome
A repo with a legal CLA requirement gets a first-class, deterministic gittensory gate dimension instead of having to bolt on and reconcile a separate, disconnected CI check.
Parent: #1936
Problem
Common OSS gate bots (e.g. the standard "CLA assistant" pattern, or a license-file/SPDX-header check) have no analog in this repo. Because this gate auto-merges green PRs with no human in the loop, a repo that legally requires contributor sign-off before merge (common for foundations/dual-licensed projects) currently has no deterministic way to enforce that through gittensory — a maintainer would have to bolt on a separate GitHub Action as a required status check outside gittensory's own gate model, creating a second source of truth that has to be reconciled with gittensory's own merge decision. Low priority: no evidence any current self-host operator actually needs this yet.
Requirements
gate.claMode: off|advisory|blockdimension, off by default, mirroring the existing deterministic-phrase-match pattern already built forpre_merge_checks'titleContains/descriptionContains.blockmode CLA failure should behave like any other configured gate blocker (one-shot close for contributors, held for the owner).Deliverables
gate.claModesetting wired through the full config-as-code chain.Acceptance criteria
gate.claMode: blockconfigured and a PR missing CLA consent is blocked/closed per the existing gate disposition rules.Expected outcome
A repo with a legal CLA requirement gets a first-class, deterministic gittensory gate dimension instead of having to bolt on and reconcile a separate, disconnected CI check.