# ls-lint file/directory naming linter (https://ls-lint.org). # Run via `mise run ls-lint-check`. ls-lint walks the working tree (not git), so the build/vendor/codegen trees are # ignored below and only hand-written source is linted. Each rule lists the casings actually used in the repo today. ls: # Directories are kebab-case (most) or snake_case (a few generated-style names). # The regex alternative permits leading-dot tool dirs (.github, .mise). .dir: kebab-case | snake_case | regex:\.[a-z_]+ .rs: snake_case | kebab-case .py: snake_case | regex:__[a-z]+__ .js: snake_case .zig: snake_case .c: snake_case .cpp: snake_case .dart: snake_case .wit: snake_case | kebab-case .rego: snake_case | kebab-case .yaml: snake_case | kebab-case .cs: PascalCase .java: PascalCase .kt: PascalCase # Gradle build scripts: the fixed names `build.gradle.kts` / `settings.gradle.kts`. .gradle.kts: regex:(build|settings) # Ban the `.conf` extension: config files standardize on `.ini`/`.rc`, as rclone.ini and ripgrep.rc do. # `regex:^$` matches no basename, so every `*.conf` file fails the check. .conf: regex:^$ ignore: # Every entry is a literal path -- no glob or wildcard syntax of any kind. # ls-lint snapshots glob ignores once at startup and drops any key matching nothing then (internal/glob/glob.go # deletes zero-match keys), so a glob covering a dir that a parallel task creates mid-run silently stops applying # and the tree gets walked. A literal path is never expanded, so it holds whenever the dir appears -- and costs # nothing on a tree where it never does. - .git - target - generated # The npm dependency graphs `mise lock` records beside a scenario's lockfile, named by the package and version. - verification/published/output/math1/.mise # The same graphs for the repo's own lockfiles, named by tool and version (`0.86.0~93de97fa` and the like). - .mise/locks # Bundled data/model assets -- names are not hand-chosen. # This also covers the pnpm symlink farm under data/split-learning-demo, whose nested package dirs are vendored. - data # pnpm puts node_modules at the workspace root and under each member package (pnpm-workspace.yaml). - node_modules - services/ws-server/static/node_modules - modules/web/js-data1/node_modules # Built module artifacts (wheels, .wasm, generated JS) live under each module's pkg/. - modules/web/audio1/pkg - modules/web/bluetooth/pkg - modules/web/comm1/pkg - modules/web/dart-comm1/pkg - modules/web/dart-data1/pkg - modules/web/dart-math1/pkg - modules/web/data1/pkg - modules/web/dotnet-data1/pkg - modules/web/dotnet-math1/pkg - modules/web/except1/pkg - modules/web/face-detection/pkg - modules/web/geolocation/pkg - modules/web/graphics-info/pkg - modules/web/har1/pkg - modules/web/java-data1/pkg - modules/web/java-math1/pkg - modules/web/js-data1/pkg - modules/web/js-math1/pkg - modules/web/kotlin-data1/pkg - modules/web/kotlin-math1/pkg - modules/web/math1-sender/pkg - modules/web/math1/pkg - modules/web/nfc/pkg - modules/web/pic-viewer/pkg - modules/web/pydata1/pkg - modules/web/pydemo1/pkg - modules/web/pyeye1/pkg - modules/web/pyface1/pkg - modules/web/pymath1/pkg - modules/web/pyspeech1/pkg - modules/web/pywasm1/pkg - modules/web/rcomm1/pkg - modules/web/rdata1/pkg - modules/web/rmath1/pkg - modules/web/sensor1/pkg - modules/web/speech-recognition/pkg - modules/web/video1/pkg - modules/wasi/wasi-comm1/pkg - modules/wasi/wasi-data1/pkg - modules/wasi/wasi-lidar1/pkg - modules/wasi/wasi-math1/pkg - modules/wasi/wasi-graphics-info/pkg - modules/web/zig-data1/pkg - modules/web/zig-except1/pkg - modules/web/zig-math1/pkg - services/ws-wasm-agent/pkg # Python venvs plus the pytest and bytecode caches each Python module's test run leaves behind. - .venv - .pytest_cache - .ruff_cache # The YAML lint cache, one subdir per linter version (`0.26.0`), which no naming rule admits. - .ryl_cache - modules/web/pydata1/pydata1/__pycache__ - modules/web/pydemo1/pydemo1/__pycache__ - modules/web/pymath1/pymath1/__pycache__ - modules/web/pydemo1/tests/__pycache__ - modules/web/pyeye1/pyeye1/__pycache__ - modules/web/pyeye1/tests/__pycache__ - modules/web/pyface1/pyface1/__pycache__ - modules/web/pyface1/tests/__pycache__ - modules/web/pyspeech1/pyspeech1/__pycache__ - modules/web/pyspeech1/tests/__pycache__ - modules/web/pywasm1/__pycache__ - modules/wasi/wasi-graphics-info/__pycache__ - modules/wasi/wasi-graphics-info/componentize_py_async_support/__pycache__ - modules/wasi/wasi-graphics-info/wasi_graphics_info/__pycache__ - modules/wasi/wasi-graphics-info/wit_world/__pycache__ - modules/wasi/wasi-graphics-info/wit_world/exports/__pycache__ - modules/wasi/wasi-graphics-info/wit_world/imports/__pycache__ - modules/pyo3/cowsay-probe/__pycache__ - modules/pyo3/echo/__pycache__ - modules/pyo3/fanout/__pycache__ - modules/pyo3/no-hooks/__pycache__ - modules/pyo3/storage-pingpong/__pycache__ - modules/pyo3/torch-inference/__pycache__ - modules/web/pydata1/.venv - modules/web/pydata1/.pytest_cache - modules/web/pydemo1/.venv - modules/web/pydemo1/.pytest_cache - modules/web/pyeye1/.venv - modules/web/pyeye1/.pytest_cache - modules/web/pyface1/.venv - modules/web/pyface1/.pytest_cache - modules/web/pymath1/.venv - modules/web/pymath1/.pytest_cache - modules/web/pyspeech1/.venv - modules/web/pyspeech1/.pytest_cache - modules/web/pywasm1/.venv - modules/web/pywasm1/.pytest_cache - modules/wasi/wasi-graphics-info/.venv - modules/wasi/wasi-graphics-info/.pytest_cache # dotnet build output. - modules/web/dotnet-data1/obj - modules/web/dotnet-data1/bin/Debug - modules/web/dotnet-data1/bin/Release - modules/web/dotnet-math1/obj - modules/web/dotnet-math1/bin/Debug - modules/web/dotnet-math1/bin/Release # Zig build output and caches, plus the codegen templates dir whose name carries a literal `.in` suffix. - modules/web/zig-data1/.zig-cache - modules/web/zig-data1/zig-out - modules/web/zig-except1/.zig-cache - modules/web/zig-except1/zig-out - modules/web/zig-math1/.zig-cache - modules/web/zig-math1/zig-out - utilities/int-gen/src/zig.in # Gradle build + cache trees, plus the one tracked source dir whose name ls-lint would reject. # wasmJsMain stays tracked but its camelCase name is fixed by Kotlin Multiplatform's # `src//kotlin` layout contract. - modules/web/kotlin-data1/.gradle - modules/web/kotlin-data1/.kotlin - modules/web/kotlin-data1/build - modules/web/kotlin-data1/src/wasmJsMain - modules/web/kotlin-math1/.gradle - modules/web/kotlin-math1/.kotlin - modules/web/kotlin-math1/build - modules/web/kotlin-math1/src/wasmJsMain