0.5.1 — roots that overlap are refused
Completes the design record 0.5.0 implements.
Overlapping roots are refused. roots = { "src/kernels", "src" } was accepted: a file reachable from both has two namespace paths, and which one it got depended on the order of the list. It was also read twice and merged with itself, so the entry looked like two implementations agreeing rather than one file counted twice. A misconfiguration that produces a plausible result is worse than one that stops.
A file root globs nothing beside it. The re-run glob was registered from a root's base directory, which for a single-file root is that file's parent, so an unrelated file beside it became an input to the build program. The glob is now registered only for a directory root, and a root that is the package root itself no longer produces a ./**/* pattern.
The floor does not move: mcpp 2026.9.8.1.