Skip to content

fix: correct NavigationSuperchargerRequest wire-format tag (BREAKING) - #32

Merged
Bre77 merged 2 commits into
mainfrom
fm/tapp-supercharger-tag-fix
Aug 17, 2026
Merged

fix: correct NavigationSuperchargerRequest wire-format tag (BREAKING)#32
Bre77 merged 2 commits into
mainfrom
fm/tapp-supercharger-tag-fix

Conversation

@Bre77

@Bre77 Bre77 commented Aug 17, 2026

Copy link
Copy Markdown
Member

Intent

  • CarServer.NavigationSuperchargerRequest.order was published at tag 1 as int32. Two independent lines of evidence show that's wrong: a recovered-schema cross-check found tag 1 is actually an unrelated int64 value with the trip-order enum at tag 2, and a live send of the as-shipped command (tag 1 encoding) to a real vehicle produced a signed-delivery ack but no navigation-state change at all - the vehicle silently no-ops it.
    • Fixes it the only way buf breaking allows for an already-published tag: reserved 1; reserved "order"; (blocks reuse of both), then a new remote_nav_trip_order field (new RemoteNavTripOrder enum: Unknown/Replace/Prepend/Append) at tag 2 - matching the sibling NavigationRequest / NavigationGpsRequest / NavigationGpsDestinationRequest messages, which already use this exact enum shape for their own order fields.
    • This is a breaking rename, not a wire-compatible fix: any consumer building a supercharger-nav command with the old order field was sending a malformed request the vehicle ignored. Callers must switch to remoteNavTripOrder (TypeScript) / remote_nav_trip_order (Python). Major changeset.
  • Adds a golden-payload fixture (fixtures/golden/navigation_supercharger.json) covering all four enum values, plus matching TypeScript/Python round-trip tests, pinning the corrected tag-2 encoding.
  • buf lint, buf breaking (against main), scripts/upstream_coverage.py --mode pinned, scripts/check_reply_coverage.py, and scripts/build_catalog.py are all green; both language test suites pass.
  • Documents the reserve-and-rename pattern in AGENTS.md as the sanctioned fix for a wrong published tag, since a straight in-place renumber is rejected by buf breaking (tried it - FIELD_NO_DELETE requires reserving the name too, which then collides with reusing that name at the new tag).

order was published at tag 1 as int32; live-vehicle and recovered-schema
evidence both show tag 1 carries an unrelated value and the trip-order enum
is actually at tag 2. Reserves tag 1/"order" and adds remote_nav_trip_order
(RemoteNavTripOrder enum) at tag 2, matching the sibling NavigationRequest /
NavigationGpsRequest / NavigationGpsDestinationRequest messages.
@Bre77 Bre77 added the fm Opened by a Firstmate crewmate label Aug 17, 2026
The new NavigationSuperchargerRequest.RemoteNavTripOrder enum from the
tag fix moves the catalog's total enum count from 236 to 237.
@Bre77
Bre77 merged commit 7dec33b into main Aug 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fm Opened by a Firstmate crewmate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant