Skip to content

feat(gate): add a CLA / license-compatibility gate dimension #2564

Description

@JSONbored

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.

Metadata

Metadata

Assignees

Labels

maintainer-onlyOwner-only work — yields no Gittensor points.roadmapOn the Wave-2 agent-layer roadmap board (project 9)

Projects

Status
Done

Relationships

None yet

Development

No branches or pull requests

Issue actions