clangd guesses header flags from the wrong file
In a header-heavy C++ project, compile_commands.json only lists the .cpp files. clangd guesses each header's compile command from whichever entry's path looks closest, which can be a vendored dependency (here a Catch2 source under build/_deps). Every project include then fails with pp_file_not_found. A committed .clangd fixes it: set CompileFlags.CompilationDatabase to the build dir, and add -I flags written relative to that build dir (the guessed command's working directory), plus -std and any system includes. Check with clangd --check=path/to/header.hpp. Afterwards it also reports headers that only compiled because of include order, like a header using a type it never includes. Separately: Zed passes an empty arguments list, not None, when settings name only lsp.<server>.binary.path, so an extension's default arguments must also apply to an empty list.