CODEOWNERS - Overlapping Globs With Documented Winners
Deliberately overlapping rules so every interesting path matches two or three of them, which is the only way to test that a resolver applies last-match-wins rather than most-specific-wins. One rule has no owners at all, which clears inherited ownership instead of adding any.
# Ownership is LAST match wins — the opposite of .gitignore's per-path evaluation
# only in that there are no negations here to reverse it.
* @sample-org/platform
/web/ @sample-org/web
/web/src/format.ts @sample-org/formatting @sample-ada
*.go @sample-org/backend
/internal/ledger/ @sample-org/ledger @sample-ada
/docs/ @sample-org/docs
/docs/security/ @sample-org/security
# A path with no owner at all: an empty owner list clears inherited ownership
/vendor/
# Individual by email rather than by handle
/deploy/ priya.raman@example.invalid
Specifications
- Seed
- 20260807
- Repository Name
- CODEOWNERS
- Rules
- 9
- Match Rule
- last match wins
- Empty Owner Rules
- 1
- Owners By Email
- 1
- Line Endings
- LF
- Encoding
- UTF-8
Testing contract
Expected to pass- Scenario
- Resolve the owners of /internal/ledger/apply.go, /web/src/format.ts, /docs/security/threat-model.md and /vendor/lib.go.
- Expected result
- apply.go resolves to @sample-org/ledger and @sample-ada (not @sample-org/backend), format.ts to @sample-org/formatting and @sample-ada, threat-model.md to @sample-org/security, and /vendor/lib.go to NO owners.
What is a .txt file?
TXT is a plain-text file containing unformatted character data with no styling or structure beyond line breaks. Its interpretation depends on character encoding, most commonly UTF-8, and on line-ending convention. It is the most universal and portable text container.
How to use this file
Use an example TXT to test encoding detection, line-ending (LF versus CRLF) handling, and any tool that reads or streams raw text input.
How to use this file for testing
“CODEOWNERS - Overlapping Globs With Documented Winners” is a deterministic Novus Examples fixture for Config parsing, Config testing, Visual diff / regression. TOML and INI configuration files with nested sections and typed values — for testing config parsers and loaders.
Documented properties for this file: seed 20260807 · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Diff and patch fixtures name their target paths and the exact edge case they exercise — rename, mode change, binary hunk, CRLF↔LF, or missing trailing newline. Apply or render them against the documented before-state; every author, path, and hash is fictional.
Point your config loader at the file and assert it reads the documented sections and typed values, including any deliberately-tricky nesting or comments.
Related files
- gitattributesGitattributes - LFS Filters, Linguist Hints and export-ignoreThe non-EOL half of the format: LFS filter/diff/merge triples, `linguist-generated` and `linguist-vendored` hints that hide files from language statistics and review, `export-ignore` entries that drop paths from `git archive`, and a `merge=union` driver for an append-only changelog. Attribute values are unquoted and space-separated, so column alignment is whitespace a parser must collapse.

- gitconfigGitconfig - includeIf Conditions in Four FlavoursEvery conditional-include form git supports — path prefix, case-insensitive path prefix, branch glob, and a condition on an existing remote URL — plus one unconditional include. Order matters: a later include overrides an earlier one, so a parser that gathers includes into a set rather than a list resolves the wrong identity.

- gitconfigGitconfig - Sections, Quoted Subsections and Shell AliasesA realistic global config exercising the whole INI-like grammar: bracketed sections, quoted subsection names that are case-sensitive while section names are not, values with size suffixes, a shell alias whose leading `!` changes how the rest is executed, and both comment characters.

- gitignoreGitignore - Escaped #, !, Bracket and Trailing SpaceEvery escape the format defines, including the one nobody expects: a trailing space is stripped from a pattern unless it is backslash-escaped, so `draft\ ` and `draft` ignore different files. Editors that trim trailing whitespace on save silently change what this file means.

- gitignoreGitignore - Globstar, Anchors and Character ClassesOne pattern per rule in the gitignore grammar: a leading slash that anchors to the containing directory, the same name unanchored, `**` in all three positions, `?` and `[...]` classes, and a trailing slash that matches only directories. Every line is a separate assertion for a matcher's test suite.

- gitignoreGitignore - Negation After a Directory Exclusion (No Effect)The single most misunderstood rule in the format: once `build/` excludes a directory, git does not descend into it, so `!build/keep.txt` is dead. The file is valid and the behaviour is documented — it is the author's expectation that is wrong, which is exactly why an ignore-matcher must reproduce it rather than being helpful.

Generated by generation/version_control.py. Free for any use, no attribution required — license.