Dispatch consumes telemetry.driver-location-updated — W006 slice 5, CritterCab's first cross-service flow - #47
Merged
Conversation
…ver (W006 slice 5)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the last pending W006 slice. W006's slice walk is complete: all five slices now run.
Dispatch consumes
telemetry.driver-location-updatedinto per-driverAvailableDriverdocuments, backs the slice-5.3INearbyAvailableDriversSourceport with an H3 k-ring query over them, and demotesNearbyAvailableDriversStubto a test double — closing W001 §10 parking-lot #4 in code, three months after the design closed it on paper.This is CritterCab's first cross-service flow. Until now "two services" meant two services that never spoke; a GPS ping entering Telemetry over gRPC now comes out as a document write in Dispatch, over Kafka, in a different bounded context.
Firsts
.proto. Deliberately not a shared assembly: Wolverine's message identity isType.FullName-based and assembly-agnostic, so the real coupling is the proto'scsharp_namespace, not the assembly.CandidateSelectionAutomation.csdoes not appear in the diff — which was the entire point of building the port as a seam back in slice 5.3.Decisions escalated rather than absorbed
Four forks, all signed off:
Available/STANDARDwas rejected: it would fabricate a capability claim Dispatch has no source for, invisibly, at the point of query.EtaSecondsis derived from distance against a constant invented at implementation time and labelled as such.BeginAtLatest()cold-start policy, chosen on W006 §6.4's own eviction logic.BeginAtEarliest()would have turned four failing tests green in one line while quietly committing the service to replaying its entire retained topic on every fresh deploy.Two real defects found before merge
code-review's two-axis pass — with both axes converging on it independently — after a source-verification pass and two convention audits had run clean. Fixed by separating business ordering (per-side timestamp comparison) from write concurrency (an incrementing revision plus aConcurrencyExceptionretry policy). The regression tests were themselves verified by reverting the old behaviour; a first version of them passed against both implementations and proved nothing.DeriveKdivided by the axis-aligned hexagon spacing (edge × √3) rather than the worst-case per-ring advance (edge × 1.5), so at the production 5 km radius drivers near the edge were silently dropped. Invisible at the 1 km value the test originally used.Also
wolverine-kafkalistener DEBT row from shipped code — the row was deferred in PR Telemetry slice 3 — DriverLocationUpdated to Kafka + ADR-019 transport-agnostic topic naming #46 precisely because it could only be fixed honestly once a real consumer existed.apphost.csfor Dispatch (verified by hand — CI still cannot build that file).57/57 tests green (35 Dispatch, 22 Telemetry), up from 33. No pre-existing test modified.
Prompt:
docs/prompts/implementations/009-dispatch-w006-slice-5-nearby-available-drivers.mdRetro:
docs/retrospectives/implementations/009-dispatch-w006-slice-5-nearby-available-drivers.md