Telemetry v1 protobuf contracts (protos/crittercab/telemetry/v1)#39
Merged
Conversation
Realizes Workshop 006 §10's owed proto surface (design-locked R1–R8,
ADR-018): the TelemetryService.ReportLocations gRPC client-streaming
ingest with LocationPing/LocationIngestAck, and the DriverLocationUpdated
Kafka event (the ADR-018 supplier half). First gRPC client-streaming
surface and first Kafka-event proto in CritterCab.
Decisions (user sign-off 2026-07-04):
- Keep ubiquitous-language message names LocationPing/LocationIngestAck via
the repo's first scoped buf.yaml ignore_only exception (the two
RPC_*_STANDARD_NAME rules, telemetry ingest file only) rather than
renaming to ...Request/...Response.
- Flat lat/lon scalars (workshop's flat shape; lon matches common.v1.Location).
- throttle_policy_version as int64 (verified numeric Marten stream version).
- buf codegen deferred to the implementation session (no service .csproj yet;
buf.gen.yaml already configured).
Forward-constraint recorded (not a design change): WolverineFx.Grpc has no
client-streaming auto-codegen adapter on the verified 5.x line; the
implementation session must hand-wire ReportLocations against IMessageBus
or re-verify 6.8 support first.
buf lint / format / breaking all pass. Prompt + retro under
docs/{prompts,retrospectives}/decisions/003; W006 Document History records
the §10 realization (spec-delta closure loop).
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.
Realizes Workshop 006 §10's owed Telemetry proto surface (design-locked R1–R8, ADR-018). Item 2 of the post-tidy-38 handoff. Transcription of a locked design into wire contracts — no re-grilling, no C#.
First gRPC client-streaming surface and first Kafka-event proto in CritterCab.
Deliverables
protos/crittercab/telemetry/v1/report_locations.proto—TelemetryService.ReportLocations(stream LocationPing) → LocationIngestAck(client-streaming ingest, W006 §6.2).protos/crittercab/telemetry/v1/driver_location_updated.proto—DriverLocationUpdatedKafka event, message-only (W006 §6.3; ADR-018 supplier half). Mirrorsride_assigned.proto's header-comment shape.protos/buf.yaml— the repo's first scopedignore_onlylint exception.docs/{prompts,retrospectives}/decisions/003-protobuf-telemetry-v1.md; index entries; W006## Document Historyrecords the §10 realization (spec-delta closure loop).Decisions (user sign-off 2026-07-04)
Four durable wire/config forks were put to the user (details in the prompt):
LocationPing/LocationIngestAckvia a file-scopedbuf.yamlignore_onlyforRPC_REQUEST_STANDARD_NAME+RPC_RESPONSE_STANDARD_NAME, rather than renaming to...Request/...Response. Service conforms asTelemetryService. Every other proto stays fullySTANDARD.lat/lonscalars (workshop's flat shape;lonmatchescommon.v1.Location; no vestigialstreet_addresson a ping).throttle_policy_version—int64(verified numeric Marten stream version,long).CritterCab.Telemetry.csprojyet;buf.gen.yamlalready configured — PR Add Dispatch business-event protobuf contracts #4 precedent).Forward-constraint for the implementation session (not a design change)
jasperfx-source-verifierconfirmed WolverineFx.Grpc has no client-streaming auto-codegen adapter on the verified 5.x line — a[WolverineGrpcService]-marked stub declaring this RPC fails fast at startup (NotSupportedException). The.protoitself is plain proto3 (Wolverine imposes no proto-side shape), so the locked R5 client-streaming contract stands. The implementation session must hand-wireReportLocationsagainstIMessageBus, or re-verify 6.8's adapter support first (the local checkout was pre-6.0 and could not confirm 6.8).Proto Change Classification
crittercab.telemetry.v1with two files (report_locations.proto,driver_location_updated.proto). Net-new — no existing message, field, service, or RPC modified.buf.yaml: added a file-scopedlint.ignore_onlyfor two RPC-name rules (config-only; no wire impact).Verified locally via the npm-distributed
@bufbuild/buf:buf lint,buf format, andbuf breaking --against mainall pass. (Theignore_onlyexception is load-bearing — lint fails without it.)Notes
protobuf-contractsskill gaps (stale single-file directory diagram; a streaming example that would itself fail the repo'sSTANDARDgate) — registered in the retro for a futuretidy: skillssession, not fixed here (no opportunistic edits).docs/prompts/README.mdDecisions index was already missing its002-bundled-pattern-adrsentry (pre-existing) — left as-is; flagging for housekeeping.