cncf / cncf/maintainer-d

Bootstrap sheet import: mismatched maintainer_ref for Tekton sub-projects and NMState

Open
#128 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
9
Forks
10
Avg merge
16h 55m
Merged PRs (30d)
6

Description

## Summary

10 project rows in the production DB have an incorrect `maintainer_ref` (a.k.a. `LegacyMaintainerRef`), all pointing to Agones's governance doc instead of their own project's maintainer file:

- NMState (id 263)
- Tekton Governance Committee (264)
- Tekton Pipeline (265)
- Tekton Pipelines-as-Code (266)
- Tekton Triggers (267)
- Tekton Results (268)
- Tekton CLI (269)
- Tekton Dashboard (270)
- Tekton Chains (271)
- Tekton Operator (272)

All 10 rows have `maintainer_ref = https://github.com/agones-dev/agones/blob/main/docs/governance/community_membership.md`, and all also have an empty `git_hub_org`. Because `git_hub_org` is blank, dot-project sync fails immediately with `"project github org is required"`, so these projects surface as `dot_project_adoption_status = error` rather than `not_found` — masking the fact that we don't actually know their adoption status.

## Root cause

`loadMaintainersAndProjects()` in `db/bootstrap.go` (~lines 120-244), invoked by `cmd/bootstrap`, imports project rows from an external Google Sheet (`MD_WORKSHEET`). For each row it reads the "OWNERS/MAINTAINERS" column and assigns it directly to `project.LegacyMaintainerRef` (bootstrap.go:195, 202) with no validation that the URL corresponds to that project's own org/repo. It looks like a copy/paste error in the source spreadsheet propagated straight through into prod on the next bootstrap run.

## Suggested fixes

1. **Data fix**: correct the "OWNERS/MAINTAINERS" column for these 10 rows in the source spreadsheet, and fill in `git_hub_org` for the Tekton/NMState rows.
2. **Guardrail**: add a sanity check in `loadMaintainersAndProjects()` that flags/warns when a row's maintainer_ref URL doesn't match the row's own `git_hub_org` (e.g. different org segment in the URL path), so a copy-paste error like this is caught at import time instead of silently propagating to prod.

## Discovered via

Reported while building the "generate MAINTAINERS.yaml for projects without a `.project` repo" feature — this project (Tekton Operator, id 272) was originally used to manually test the new UI, but its `error` adoption status vs `not_found` is what led to this investigation.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in db/bootstrap.go, especially loadMaintainersAndProjects() around lines 120-244, and trace how cmd/bootstrap reads the MD_WORKSHEET OWNERS/MAINTAINERS and git_hub_org columns. Inspect the ten listed project rows and the existing dot-project sync path. Done means the source data is corrected and bootstrap flags maintainer URLs that do not match the project organization, with the affected projects no longer masked by the current import error.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend, databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.