Repository navigation
fix(ack)!: make preserveBoundary a detached JSON-object wire view - #246
Merged
Merged
Conversation
leoafarias
marked this pull request as ready for review
October 27, 2026 13:56
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
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.
Summary
Ack.preserveBoundaryto JSON-object roots:preserveBoundary<R>(AckSchema<Map<String, Object?>, R>), with a non-genericBoundarySchema. The generatedwireSchemagetter type is unchanged.jsonDecodelist/map roots were re-encoded through codecs and came back changed, encode accepted values parse rejected, and the wire view returned the caller's mutable map.Ack.anyOffields directly as JSON values, so an explicit wire view is no longer needed for heterogeneous JSON fields. Branches are rejected by static type when they decode (codec, enum, instance) or when their declared runtime type is not JSON.Ack.any,Ack.anyOfandAck.maproots behind type-erased aliases are rejected through arootflag. Numbers in preserved maps infer asnum, because wire values are no longer normalised.allOfrestriction only while null is still reachable in the exported inner model.wireSchemais a validating JSON wire view, not a raw structural schema. Breaking and Fixed entries added under 2.0.0-alpha.2 in both CHANGELOGs.PR #228's null-policy design is kept unchanged.
Validation
dart testinpackages/ack: 2147 passed.dart run melos run test:gen --no-select: 762 passed..g.dartfiles, no diff.dart scripts/api_check.dart 1.7.0 --allow-additive: exit 0. The report lists thepreserveBoundaryandBoundarySchemachanges under breaking changes, allowed by the 2.0 major bump.Integration
This is the breaking layer of the 2.0.0-alpha.2 stack. It targets
release/2.0after #228–#245 merged; thechore(stack): merge updated parent branchcommit joins that base so this diff shows only this layer. Breaking relative to published 2.0.0-alpha.1 for thepreserveBoundarysignature and for generated number field types inside preserved maps. Follow-up outside this repo: Stargate's two handwrittenpreserveBoundarywrappers inhuman_interaction.dartbecome unnecessary once pinned to this change.