Ride-hailing backend removes unused GraphQL surface and hardens trip completion
The ride-hailing backend removed its unused Lighthouse and GraphQL scaffold, leaving the service focused on its existing REST and WebSocket interfaces.
The removed layer only exposed the default GraphQL hello query and was not used by ride-hailing business operations or mobile clients. Removing it also drops the associated Composer dependencies, schema validation step, configuration, environment settings, resolver, and GraphQL-specific tests.
A regression test now verifies that the backend does not expose a /graphql endpoint or GraphQL route name. No database migration, REST contract, or WebSocket contract changed as part of this cleanup.
Safer trip completion and booking-stop rollout
Trip completion now protects against delayed retries accidentally closing a driver’s newer ride. When a booking ID is supplied to the end-trip request, that booking is validated and takes precedence over the driver’s current Redis assignment.
Recovery handling was also strengthened so pending driver benefits can be retried independently of driver cleanup. Campaign redemption failures now keep the durable recovery marker active instead of being acknowledged as completed, allowing the reconciler to retry benefit publication safely.
Completed trips now keep route-stop progress synchronized during settlement, and scheduled-booking details remain restricted to the intended driver while preserving the expected pre-acceptance flow for immediate bookings.
The rollout of the normalized booking_stops model was made safer for mixed-version deployments. Legacy pickup and drop-off columns are retained for a compatibility release, new writes keep both representations synchronized, reads can fall back to legacy endpoint data when stop rows are missing, and Redis search state is rebuilt through the same compatibility accessors. A repair migration restores and backfills legacy endpoint columns in environments where they were already removed.