### Problem Since commit `84116e6`, the server returns "Internal server error" (`INTERNAL_SERVER_ERROR`) for every invalid query: a query that is too deep, an unknown field or a syntax error. The client should get the real code, such as `GRAPHQL_VALIDATION_FAILED` or `GRAPHQL_PARSE_FAILED`. Because of this, the test `rejects a query that is too deep` in `backend/src/server/server.test.ts` fails on `dev`. ### Cause In `backend/src/server/formatError.ts`, the line `const wrapsUnknownError = original !== error` treats every error that Apollo wraps as unknown. Apollo wraps all validation and syntax errors, so they are all hidden. ### Fix Let Apollo's client error codes through before the masking, for example `GRAPHQL_PARSE_FAILED`, `GRAPHQL_VALIDATION_FAILED` and `BAD_USER_INPUT`. ### Done when - [ ] The depth limit test passes. - [ ] A test checks that an unknown field and a syntax error get their real codes. - [ ] Unexpected errors in resolvers are still hidden as `INTERNAL_SERVER_ERROR`. Generated with _Claude Code_