G
YouTube TikTok Games
Skip to content

feat: read gerrit maintainers from lf releng info.yaml - #5336

Open
joanagmaia wants to merge 9 commits into
mainfrom
feat/issue-1131-info-yaml-maintainers
Open

joanagmaia wants to merge 9 commits into
mainfrom
feat/issue-1131-info-yaml-maintainers

Conversation

@joanagmaia

@joanagmaia joanagmaia commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

Summary

LF-hosted Gerrit projects (ONAP, OpenDaylight, FD.io, O-RAN-SC) list their project lead and committers in a root INFO.yaml, in the LF Release Engineering format. Maintainer detection never read it, so those committers weren't tagged as maintainers on the contributor leaderboard and didn't count as curated maintainers for bus factor. Most of these repositories ended up with no maintainer file or with AUTHORS, CONTRIBUTORS or a README. Reported in linuxfoundation/insights#2480 (point 3).

The maintainer service now reads INFO.yaml directly, the same way it reads CNCF maintainers.yaml (ADR-0023).

Changes

  • New services/maintainer/info_yaml_maintainers.py:
    • Accepts a root INFO.yaml only when it has a project_lead object and a committers list. Anything else returns None, and detection carries on as before.
    • The project lead (role "Project Lead") and each committer (role "Committer") become maintainers. The lead, usually also listed as a committer, is kept once.
    • The tsc section is ignored: it's a log of approved changes, including removed committers.
  • extract_maintainers checks INFO.yaml after the CNCF step and before the saved-file shortcut. Repositories already locked onto AUTHORS or CONTRIBUTORS (140 of 162 FD.io repositories and 88 of 196 OpenDaylight ones in production) switch on their next maintainer run. No LLM call is made for these files.
  • People resolve by email through the existing lookup. All 30 committers sampled from ONAP, FD.io, OpenDaylight and O-RAN-SC files resolve to a verified identity in production.
  • Tests for parsing, the tsc log, other formats, the switch from a saved file and the fallback.
  • ADR-0038 records the decision and the alternatives (adding INFO.yaml to the known file names, reading Gerrit groups).
  • git_integration README: detection order.

The GitHub mirrors of these repositories also contain INFO.yaml and get the same maintainers. Since #5327 mirrors only count toward security in the project Health Score, so this only duplicates leaderboard tags.

Type of change

  • Bug fix
  • New feature
  • Refactor / cleanup
  • Performance improvement
  • Chore / dependency update
  • Documentation

Deploy

Rebuild and deploy the git integration worker. No migrations or new environment variables. Repositories pick up INFO.yaml on their next maintainer run (MAINTAINER_UPDATE_INTERVAL_HOURS, or MAINTAINER_RETRY_INTERVAL_DAYS for repositories where no maintainer file was found last time).

Related issue

Closes linuxfoundation/lfx-cdp-insights-ops#1131

Refs linuxfoundation/lfx-cdp-insights-ops#1131

Signed-off-by: Joana Maia <jmaia@contractor.linuxfoundation.org>
Copilot AI balanced review requested due to automatic review settings November 12, 2026 16:22
@cursor

cursor Bot commented Nov 12, 2026 •

Copy link
Copy Markdown

PR Summary

Medium Risk
Changes maintainer source priority and roster data for many Gerrit/mirror repos; mis-parsed or stale INFO.yaml could tag wrong maintainers until the next diff run.

Overview
Adds deterministic maintainer extraction for LF Release Engineering Gerrit repos via root INFO.yaml (after CNCF .project files, before the saved-file shortcut), so FD.io/OpenDaylight-style repos stuck on AUTHORS/CONTRIBUTORS self-correct on the next run without LLM cost.

info_yaml_maintainers accepts only LF-shaped YAML (project_lead + committers list), maps lead and committers as maintainers, dedupes, and ignores tsc. Invalid or partial files are rejected and excluded from saved-file retry and AI paths.

Fork handling gains get_maintainer_emails_for_repo and email matching in exclude_parent_repo_maintainers so email-only rosters still filter inherited maintainers. Documented in ADR-0038 and the git integration README; covered by new pytest cases.

Reviewed by Cursor Bugbot for commit 26bd46c. Bugbot is set up for automated code reviews on this repo. Configure here.

@greptile-apps

greptile-apps Bot commented Nov 12, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable issues remain from this review.

Summary

Adds direct maintainer extraction from LF Release Engineering INFO.yaml files.

  • LF Gerrit repositories now get maintainers from INFO.yaml rosters.
  • Forks now filter inherited maintainers by email as well as username.

No new actionable issues were found. The four supplied, unnumbered previous threads are addressed in the current code.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Extract maintainers] --> B{CNCF roster accepted?}
  B -- Yes --> G[Use parsed roster]
  B -- No --> C{Root INFO.yaml accepted?}
  C -- Yes --> G
  C -- No --> D[Try saved file]
  D --> E[Try governance candidates]
  E --> F[Ask AI to select another file]
  G --> H[Remove inherited fork maintainers]
  H --> I[Resolve identities and save changes]
Loading

Reviews (9) · Last reviewed commit: "Merge branch 'main' of https://github.co..." · Reviewed by Greptile

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Email-only maintainer entries bypass parent filtering on forks, while rejected saved INFO.yaml files can still reach AI analysis, reintroducing removed people and mislabeling current maintainers.

2 open issues
What changed in this PR

Adds direct parsing of LF Release Engineering INFO.yaml files to the git integration worker, enabling maintainer detection for Gerrit projects and their GitHub mirrors.

Changes:

  • Extracts and deduplicates project leads and committers as maintainers, ignoring the tsc change log.
  • Checks INFO.yaml after CNCF detection and before saved-file reuse, without AI extraction for recognized files.
  • Adds parser and fallback tests, updates detection-order documentation, and records the decision in ADR-0037.
File Description
services/​apps/​git_integration/​src/​test/​test_extract_maintainers_info_yaml.py Tests parsing, source precedence, and fallback behavior.
services/​apps/​git_integration/​src/​crowdgit/​services/​maintainer/​maintainer_service.py Integrates structured INFO.yaml detection before saved-file reuse.
services/​apps/​git_integration/​src/​crowdgit/​services/​maintainer/​info_yaml_maintainers.py Finds and parses lead and committer rosters.
services/​apps/​git_integration/​README.md Documents the updated detection order.
docs/​adr/​README.md Adds ADR-0037 to the decision index.
docs/​adr/​0037-lf-info-yaml-maintainers.md Records the source-selection decision, alternatives, and risks.

Review effort: Balanced

Refs linuxfoundation/lfx-cdp-insights-ops#1131

Signed-off-by: Joana Maia <jmaia@contractor.linuxfoundation.org>
Copilot AI balanced review requested due to automatic review settings November 12, 2026 16:40
Refs linuxfoundation/lfx-cdp-insights-ops#1131

Signed-off-by: Joana Maia <jmaia@contractor.linuxfoundation.org>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Mixed-case INFO.yaml emails are passed unchanged to a case-sensitive identity lookup, causing existing lowercase identities to be missed and maintainers to be skipped.

No open issues 🎉

1 previously missed issue

In code that hasn't changed since last review

Medium severity Lowercase email before identity lookup

services/​apps/​git_integration/​src/​crowdgit/​services/​maintainer/​info_yaml_maintainers.py:26

Normalize the email to lowercase here before passing it to identity resolution. find_maintainer_identity_by_email uses value = $1 (crud.py:359), while email-shaped identity values are stored lowercase (services/libs/common/src/member.ts:28–32). An INFO.yaml entry such as OpenVPP@barachs.net therefore fails to resolve an existing openvpp@barachs.net identity and is skipped. Lowercasing only the deduplication key below does not normalize the email sent to the lookup.

2 resolved since last review

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings November 12, 2026 16:45
Refs linuxfoundation/lfx-cdp-insights-ops#1131

Signed-off-by: Joana Maia <jmaia@contractor.linuxfoundation.org>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The maintainer email lookup excludes verified Git usernames, allowing inherited INFO.yaml entries to bypass the fork filter for maintainers known only through Git ingestion.

No open issues 🎉

1 previously missed issue

In code that hasn't changed since last review

High severity Resolve verified Git usernames in maintainer email lookup

services/​apps/​git_integration/​src/​crowdgit/​database/​crud.py:463

For maintainers known only through Git ingestion, this query returns no email: commit_service.py:316–334 creates a verified git/username containing the email and an unverified git/email. find_maintainer_identity_by_email resolves the verified username, so an inherited INFO.yaml entry can be saved on the parent yet still pass the fork filter. Include verified Git usernames in this lookup and add a regression case using that identity shape.

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings November 12, 2026 16:50
Refs linuxfoundation/lfx-cdp-insights-ops#1131

Signed-off-by: Joana Maia <jmaia@contractor.linuxfoundation.org>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Human assessment is needed because an identity-resolution gap can allow inherited maintainers to survive fork filtering.

No open issues 🎉

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings November 12, 2026 16:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues block the direct INFO.yaml maintainer parsing change.

No open issues 🎉

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings November 13, 2026 10:57
Refs linuxfoundation/lfx-cdp-insights-ops#1131

Signed-off-by: Joana Maia <jmaia@contractor.linuxfoundation.org>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

A malformed committer entry is silently dropped while the remaining roster is treated as authoritative, causing reconciliation to end-date an existing maintainer who is still listed.

1 open issue

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings November 13, 2026 11:02
Refs linuxfoundation/lfx-cdp-insights-ops#1131

Signed-off-by: Joana Maia <jmaia@contractor.linuxfoundation.org>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are recorded for the INFO.yaml maintainer-detection change.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

Copilot AI balanced review requested due to automatic review settings November 13, 2026 11:05
@joanagmaia
joanagmaia requested a review from mbani01 November 13, 2026 11:08
@joanagmaia joanagmaia self-assigned this Nov 13, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues block the INFO.yaml maintainer-detection changes.

No open issues 🎉

Review effort: Balanced

…nto feat/issue-1131-info-yaml-maintainers

Signed-off-by: Joana Maia <jmaia@contractor.linuxfoundation.org>

# Conflicts:
#	docs/adr/README.md
Copilot AI balanced review requested due to automatic review settings November 13, 2026 12:24

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The INFO.yaml maintainer-parsing change has no active review issues.

No open issues 🎉

Review effort: Balanced

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants