- Add ValidationError class for client-side input errors - POST /events: ref format, type mismatch, nonexistent type → 400 - POST /objects: undefined type → 400 - POST /event-defs: schema validation → 400 - POST /projection-defs: value_schema, initial_value, source validation → 400 - All API handlers: catch ValidationError → 400 INVALID_INPUT - Update 10 test cases to expect 400 + INVALID_INPUT