Repository navigation
chore(contract): sync flipcash2 protos to e1f4116c and add the 0.8.0 entry - #14
Merged
Merged
Conversation
StartChatRequest gains a required idempotency_key (field 9), backed by a new IdempotencyKey message in chat/v1/model.proto. Nothing existing changed shape and no enum was renumbered. Upstream also carries a CLAUDE.md edit (#101) that touches no contract file.
This was referenced Sep 16, 2026
Merged
The required idempotency_key is the part a consumer has to act on: the contract is additive, but 0.7.0 cannot set the field, and a key minted per retry attempt passes validation while defeating the point of it. Also says group chat is still in flux, so the minor bump is not read as the surface having settled.
bmc08gt
force-pushed
the
chore/sync-flipcash2-e1f4116c
branch
from
September 16, 2026 18:52
783a42b to
7b67a7f
Compare
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.
Syncs the contract to
e1f4116cand adds the0.8.0changelog entry.The range picks up two upstream commits: #102, which is the contract change, and #101, a
CLAUDE.mdedit that touches no contract file.The contract diff
20 added lines across two files. Nothing removed, nothing changed shape, nothing renumbered.
chat/v1/model.proto— newIdempotencyKeymessage: onebytes value(field 1), validated to exactly 16 bytes viamin_len: 16/max_len: 16. Client-minted, never exposed as the created object's identity.chat/v1/chat_service.proto— new field onStartChatRequest:Field 9, between the
parametersoneof (field 1) andauth(field 10). Both keep their numbers.StartChatResponse.Resultis untouched — all six cases (OK,DENIED,TITLE_MODERATED,PICTURE_BLOB_NOT_ACCEPTED,INVALID_RULES,RULES_NOT_SATISFIED) stay in place, so the positionalrawValuemapping iOS uses over result enums does not shift.The field being
requiredis the part consumers have to act on: the contract is additive, but0.7.0has no way to set it, and a key minted fresh per retry attempt passes validation while defeating the point of the field. The changelog entry says so rather than leaving it to be rediscovered.Consumers
Both apps are scaffolded and building against this branch through the local override, each pinning
0.8.0in a draft PR that cannot go green until this merges and publishes:Checks
./gradlew buildpasses.scripts/generate-swift.shis idempotent against the committedSources/, so the "committed Swift is up to date" gate will pass.swift buildwas not verified locally. It fails on this machine for reasons unrelated to this change — Xcode 27 / Swift 6.2.1 cannot compilegrpc-swift-protobuf's command plugin orswift-protobuf's generated resource accessor for the host-macOS target — and it fails identically on an unmodifiedmaincheckout. The generated Swift itself was verified by building the package for an iOS destination, which succeeds. CI runs onmacos-15, where this is expected to be green.scripts/toolchain.envis unchanged, and theSources/diff moves only withproto/.