Added
--producer NAMEonowners resolveand onpython -m owners_yaml, and aproducerargument onOwnersResolver. Without it, a team that mapsnotificationsper producer was never matched, so every bot fell back to the team'sslackchannel. A name the root file'sproducerslist does not declare is an error, because it would silently route to the people channel. SPEC section 7.1 now defines the producer as part of a resolver request.- An optional
additionsfield, at file level and in rules, names the owners of additions below a directory, separate from the owners of the files in it. The format only names them; a consumer decides what counts as an addition and what to do with the list. Unlikeowners, the owners of additions from every file on the walk and every matching rule add up, andinherit: falsestill cuts them.SPEC.mdsection 3.6 defines it. - The resolver response carries an
additionsmember, andResolutionanadditionsfield. Consumers that ignore unknown members, as SPEC section 7.4 requires, are unaffected. SPEC section 7.4 requires a consumer to treat a missing member as an empty array. lintfails on a rule that names a tracked directory without the trailing/, such asdocsfordocs/. A literal last segment also matches a file of that name, so the slash says which one is meant.- Conformance cases may state
additions. A case that leaves it out expects an empty list, so existing cases need no edit.
Changed
- Path normalization removes a trailing
/.products/new/andproducts/newnow resolve alike; before, the slash put the directory's own ownership file on the walk. - Every matching rule in a file now applies, and each replaces only the fields it sets. Before, the last matching rule replaced the earlier ones entirely, so a rule that set only
statusdropped theownersan earlier rule had set.SPEC.mdsection 3.4 records the amendment.
Docs
- The PyPI project page links to the new website, owners-yaml.posthog.dev, as its homepage. The README links to it too.
- The
notificationsexample in the README and the command next to it now agree: a per-producer mapping needs--purpose notifications --producer review-bot. A plain channel string covers all automation. - The install section warns that the PyPI project named
ownersis a different package. Always writeowners-yaml. - "Lint in CI" says what plain
lintdoes not check: it does not know which teams exist,lint --liveasks GitHub through theghCLI, andwhoandresolveanswer from the parent directory when a file does not parse. - SPEC section 10 and the README record a non-goal: CODEOWNERS is an export target and a one-time migration source, never a second input format.