Skip to content
core/layout/non-overlapping-root

Keep component roots disjoint

Each tracked path has one declared component owner.

error

Examples

FlaggedFails
schema_version = 1
repository_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"
PassesClean
schema_version = 1
repository_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.

  1. Choose which component owns the overlapping files.
  2. Merge duplicate declarations or move one component to a disjoint root.

Verify

  • Run repo-lint check and confirm no component roots overlap.