mirror of
https://github.com/cozystack/cozystack.git
synced 2026-10-30 16:47:20 +09:00
CODEOWNERS applies only the last matching pattern and it replaces every broader rule including the catch-all, it does not merge them. Half of what that costs is already fixed:bd7b76691added the architects to the rules that were missing them, and hack/codeowners-invariant.bats keeps them there. That invariant reads "every rule with owners is a superset of the catch-all owners", and a rule naming nothing but the architects satisfies it perfectly while gating on two people. Eleven rules on main have that shape, 182 files between them. The catch-all is those same two handles, so the invariant makes them the floor for the whole repository and every path without a rule of its own sits on that floor. Raising the floor means raising the catch-all, after which the invariant carries the new set into every rule by itself. Hence the shape here: the catch-all goes from two owners to five, and all fifty rules carry those five. This widens who may approve, not who may change code. Write access is unchanged for all twelve collaborators, owner approval is OR and always was, and the required checks that actually hold these paths are untouched, api-review-gate.yaml included, so a sizeable API change still needs an approval from one of its own two owners. Three of the nine maintainers in MAINTAINERS.md own no path, for two different reasons.c13c6ee2cgave kingdonb the two FluxCD tenant addon packages and7cca3d75edeleted them along with the addon, so his rules went with the packages while the flux paths that stayed were never handed to him. matthieu-robin and mattia-eleuteri were never in the file at all. CONTRIBUTOR_LADDER.md says a maintainer may approve changes to any area of the project. Rules now group by area rather than by package, every rule names at least five owners, and an area whose owner set does not differ from its tier is left to the tier rule. Reviewers keep the areas MAINTAINERS.md records for them, so that file needs no change. The two-owner rule on /cmd/api-gate/, /internal/apigate/ and the api-review-gate workflow goes with the rest. Those paths still require an owner review, now under the Go source and CI rules. The invariant test's exemption for a rule owned by exactly tym83 and kvaps is dead code once the governance block is gone, and dead code in that position is a hole: any future two-owner rule matching that set would be waived. Dropping it puts such a rule back under the invariant, where it belongs. Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com> Assisted-by: LLM
84 lines
6.4 KiB
Plaintext
84 lines
6.4 KiB
Plaintext
# Path-to-owner mapping for this repository. MAINTAINERS.md names the people and
|
|
# points here for the areas; CONTRIBUTOR_LADDER.md defines the roles. Security
|
|
# reports do NOT come through this file — see SECURITY.md.
|
|
#
|
|
# Two mechanics shape the file, and both fail silently.
|
|
#
|
|
# Matching REPLACES, it does not merge. Only the LAST matching pattern applies,
|
|
# and it discards every broader one including the * catch-all, so exactly one
|
|
# line decides the owners of any given path. There is no syntax for "these
|
|
# people may review anything" — repeating the handles on every line is that
|
|
# statement. A rule that omits someone strips their ownership of those paths.
|
|
#
|
|
# A handle without write access to this repository is ignored and no error is
|
|
# reported, which leaves the paths it scopes gating on nobody. Check write access
|
|
# before adding a handle.
|
|
#
|
|
# Rules run broad to specific. An area with no rule of its own is owned by the
|
|
# tier rule above it — add a person to an existing rule rather than carving a new
|
|
# path for them.
|
|
|
|
* @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters
|
|
|
|
/api/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @sircthulhu
|
|
/cmd/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @sircthulhu
|
|
/internal/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @sircthulhu
|
|
/pkg/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @sircthulhu
|
|
|
|
/packages/core/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @sircthulhu @kingdonb
|
|
/packages/system/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @sircthulhu @mattia-eleuteri
|
|
/packages/extra/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @sircthulhu @mattia-eleuteri
|
|
/packages/apps/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @matthieu-robin @scooby87
|
|
|
|
/packages/apps/vm-*/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @scooby87 @mattia-eleuteri
|
|
/packages/system/kubevirt*/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @scooby87 @mattia-eleuteri
|
|
/packages/system/vm-*/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @scooby87 @mattia-eleuteri
|
|
/packages/system/gpu-operator/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @scooby87 @mattia-eleuteri
|
|
/packages/system/hami/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @scooby87 @mattia-eleuteri
|
|
/dashboards/gpu/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @scooby87 @mattia-eleuteri
|
|
/dashboards/kubevirt/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @scooby87 @mattia-eleuteri
|
|
|
|
/api/backups/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @androndo @mattia-eleuteri
|
|
/cmd/backup*-controller/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @androndo @mattia-eleuteri
|
|
/internal/backupcontroller/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @androndo @mattia-eleuteri
|
|
/examples/backups/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @androndo @mattia-eleuteri
|
|
/packages/system/backup*-controller/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @androndo @mattia-eleuteri
|
|
/packages/system/velero/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @androndo @mattia-eleuteri
|
|
/packages/system/vsnap-crd/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @androndo @mattia-eleuteri
|
|
|
|
/packages/system/keycloak*/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @sircthulhu
|
|
|
|
/cmd/flux-*/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @kingdonb
|
|
/internal/flux*/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @kingdonb
|
|
/packages/core/flux-aio/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @kingdonb
|
|
/packages/system/flux-*/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @kingdonb
|
|
/dashboards/flux/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @kingdonb
|
|
|
|
/.github/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters
|
|
/hack/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters
|
|
/test/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters
|
|
/tools/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters
|
|
/Makefile @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters
|
|
/.pre-commit-config.yaml @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters
|
|
|
|
/docs/ @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @tym83
|
|
/ADOPTERS.md @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @tym83
|
|
/CODE_OF_CONDUCT.md @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @tym83
|
|
/CONTRIBUTING.md @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @tym83
|
|
/CONTRIBUTOR_LADDER.md @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @tym83
|
|
/GENERAL_TECHNICAL_REVIEW.md @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @tym83
|
|
/GOVERNANCE.md @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @tym83
|
|
/LICENSE @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @tym83
|
|
/MAINTAINERS.md @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @tym83
|
|
/README.md @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @tym83
|
|
/ROADMAP.md @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @tym83
|
|
/SECURITY.md @kvaps @lllamnyp @lexfrei @myasnikovdaniil @IvanHunters @tym83
|
|
|
|
# `make generate` produces the paths below from each app's values.yaml, which is
|
|
# already reviewed under the rules above, and the pre-commit run-make-generate /
|
|
# run-make-generate-root CI hooks regenerate and fail on any diff. A pattern
|
|
# listed with no owner is what waives the rules above for just these paths.
|
|
/api/apps/v1alpha1/*/types.go
|
|
/api/apps/v1alpha1/*/zz_generated.deepcopy.go
|
|
/packages/system/*/cozyrds/
|