case-collision
two sibling paths that differ only by casing
The argument
Case collisions are latent breakage. Two sibling entries whose names differ only by casing — readme.md beside README.md, or a source file whose stem matches a sibling folder's name in another case, like Gates.ts beside gates/ — resolve to one entry on a case-insensitive filesystem (macOS, Windows) and to two on a case-sensitive one (Linux CI). An import that works on the machine that wrote it silently picks a different target on the machine that checks it. A type checker only objects once both spellings are imported in one build, and a plain-JavaScript repo has no type checker at all — so the tree itself must never carry the ambiguity. Rename one side.
Graduating a component or class into its PascalCase folder is the common way to create one of these (Markdown/ beside markdown.d.ts) — the folder-casing rule says how to resolve it: move or rename the sibling first, never drop the folder's casing.
The proof
export { renderGreeting } from './gates/renderGreeting';
export { renderGreeting } from './gates/renderGreeting';
Turn it down
Both lines go in your lightsout.config.json.
"standards-checks": { "case-collision": "advisory" }"standards-checks": { "case-collision": "off" }