Support multiple OWNERS files across subdirectories with Prow's resolution semantics, replacing today's single root-OWNERS-only lookup.
Scope (agreed 2026-09)
Resolution — for a changed file, walk from its directory up to the repository root collecting every OWNERS on the way (child ∪ parents); options: { no_parent_owners: true } stops the walk. A root-only OWNERS therefore covers everything, which is exactly today's behaviour as a special case.
Authorization (single actor — "Model A")
/approve on a PR: the commenter must be an approver for every changed file.
/lgtm on a PR: the commenter must be a reviewer or approver for at least one changed file (Prow's lgtm rule).
- Issues (no changed files): root
OWNERS as today.
Security — OWNERS files are read from the PR's base branch, never the head, so a PR cannot grant itself approvers.
Failure modes — fail closed: a changed file with no covering OWNERS is an error naming the file; any fetch/parse error is an error. Only when the repository has no OWNERS files at all does the existing org-member/collaborator fallback apply.
Parser — approvers, reviewers (lists of GitHub usernames), options.no_parent_owners; emeritus_* ignored; unknown keys tolerated.
Explicitly out of scope (future issues)
- Aggregated approval across multiple approvers with an
approved label and coverage comment (Prow's approve plugin proper) — depends on the approved-label/merge-gate design.
OWNERS_ALIASES.
filters: per-path regexes, labels:.
- A configurable
owners-file path/URL input (the original 2022 request; superseded by tree discovery — cross-repo/URL sourcing can return later as "where is the tree root").
History: #61 was closed into this issue.
Support multiple
OWNERSfiles across subdirectories with Prow's resolution semantics, replacing today's single root-OWNERS-only lookup.Scope (agreed 2026-09)
Resolution — for a changed file, walk from its directory up to the repository root collecting every
OWNERSon the way (child ∪ parents);options: { no_parent_owners: true }stops the walk. A root-onlyOWNERStherefore covers everything, which is exactly today's behaviour as a special case.Authorization (single actor — "Model A")
/approveon a PR: the commenter must be an approver for every changed file./lgtmon a PR: the commenter must be a reviewer or approver for at least one changed file (Prow's lgtm rule).OWNERSas today.Security —
OWNERSfiles are read from the PR's base branch, never the head, so a PR cannot grant itself approvers.Failure modes — fail closed: a changed file with no covering
OWNERSis an error naming the file; any fetch/parse error is an error. Only when the repository has noOWNERSfiles at all does the existing org-member/collaborator fallback apply.Parser —
approvers,reviewers(lists of GitHub usernames),options.no_parent_owners;emeritus_*ignored; unknown keys tolerated.Explicitly out of scope (future issues)
approvedlabel and coverage comment (Prow's approve plugin proper) — depends on theapproved-label/merge-gate design.OWNERS_ALIASES.filters:per-path regexes,labels:.owners-filepath/URL input (the original 2022 request; superseded by tree discovery — cross-repo/URL sourcing can return later as "where is the tree root").History: #61 was closed into this issue.