core/layout/non-overlapping-root Keep component roots disjoint
Each tracked path has one declared component owner.
error
Examples
schema_version = 1repository_id = "example-repository"policy = "example"policy_version = 1
[[components]]id = "payments"kind = "service"path = "services/payments"owner = "@example/payments"
[[components]]id = "worker"kind = "worker"path = "services/payments/worker"owner = "@example/payments"schema_version = 1repository_id = "example-repository"policy = "example"policy_version = 1
[[components]]id = "payments"kind = "service"path = "services/payments"owner = "@example/payments"
[[components]]id = "worker"kind = "worker"path = "workers/payments"owner = "@example/payments"Why it matters
The same files acquire multiple owners, making affected-component and policy results ambiguous.
How detection works
Reports when two component paths are equal after case-folding, or one component path is nested beneath another.
What is inspected
- Component paths from the exact selected manifest.
Limits
- Path comparison is case-insensitive and respects complete path segments.
How to fix it
Give each component one disjoint ownership root.
- Choose which component owns the overlapping files.
- Merge duplicate declarations or move one component to a disjoint root.
Verify
- Run repo-lint check and confirm no component roots overlap.