Skip to content

2.1.2: the reference v2.1.1 rulings (U3, U6, U9, U15) - #28

Merged
rowan-claude merged 1 commit into
mainfrom
rowan/2.1.2-rulings
Oct 28, 2026
Merged

rowan-claude merged 1 commit into
mainfrom
rowan/2.1.2-rulings

Conversation

@rowan-claude

Copy link
Copy Markdown
Collaborator

Applies the rulings of mas-bandwidth/serialize v2.1.1 (IMPLEMENTING.md U3, U6, U9, U15).

  • Re-vendored from v2.1.1 (STANDARD.md, conformance/, conformance-controls/ unchanged); interop pin SERIALIZE_REF moved to v2.1.1.
  • U15 copy_string: SerializeUtil.copyString( source, destSize ), on the strict UTF-8 encoding; destSize < 1 and a lone surrogate are write misuse (AssertionError under -ea). Every reference vector except the two ill-formed byte vectors a Java String cannot hold. Tests: U15: copyString keeps the longest whole-character UTF-8 prefix..., U9 U15: copyString with destSize below 1, or a lone surrogate....
  • U9/U10 room: was broken: a multi-group write (bits64, int64, int128, uint128, double, fixed, fixed128, int_relative) asserted room per 32-bit group, so the low group reached the wire ahead of the assertion. Now asserted for the whole operation before the first bit. Test: U9 U10: every operation that does not fit the room left asserts before writing any bit, and latches nothing (red before the fix).
  • Kept (tests added): failing nested object on write/measure returns false and records nothing; measure catches non-finite float/double/compressed_float; measure bits width (fixed in 2.1.1); fail/reject (existing U9 tests).
  • U15 exports: three compressed-float helpers outside the allowed list made package-private.
  • U3/U9 docs: '?'/U+FFFD and the compressed_float clamp without -ea are unspecified output, never documented behaviour.
  • Roadmap: u15 item closed; ROADMAP.md regenerated.

🤖 Generated with Claude Code

- Re-vendor from mas-bandwidth/serialize v2.1.1 (no corpus change) and move
  the interop pin SERIALIZE_REF to v2.1.1.
- U15: SerializeUtil.copyString, serialize_copy_string on the strict UTF-8
  encoding; destSize < 1 and a lone surrogate assert under -ea (U9).
- U9/U10: every multi-group write (bits64, int64, int128, uint128, double,
  fixed, fixed128, int_relative) asserts the room for the whole operation
  before its first bit; before, a wide value could leave its low group on
  the wire ahead of the assertion.
- U15 exports: compressedFloatMaxIntegerValue, compressedFloatDeclarationIsValid
  and compressedFloatConstantsAreConsistent are package-private now.
- U3/U9 docs: '?'/U+FFFD and the compressed_float clamp without -ea are
  unspecified output, never documented behaviour; the write-misuse contract
  names the trap and cites U9.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@rowan-claude
rowan-claude merged commit e934564 into main Oct 28, 2026
5 checks passed
@rowan-claude rowan-claude mentioned this pull request Oct 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants