Skip to content

Upgrading / BC-breaks - #133

Merged
zanbaldwin merged 1 commit into
6.xfrom
z/changelog-upgrading
Sep 16, 2026
Merged

zanbaldwin merged 1 commit into
6.xfrom
z/changelog-upgrading

Conversation

@zanbaldwin

Copy link
Copy Markdown
Member

No description provided.

@zanbaldwin zanbaldwin self-assigned this Sep 16, 2026
@greptile-apps

greptile-apps Bot commented Sep 16, 2026 •

Copy link
Copy Markdown

Greptile Summary

The upgraded 6.1 compatibility notes need three documentation corrections: the serialization warning applies only to AbstractIP subclasses, the exception behavior needs clear wording, and the 6to4 entry must identify the full widened detection range.

Confidence Score: 4/5

Safe to merge from a runtime perspective, but the upgrade documentation has three non-blocking accuracy and clarity issues that should be corrected for users upgrading from 6.0.

The verified findings are limited to changelog accuracy and clarity. Source and history comparisons establish the described serialization contract, exception-path change, and widened 6to4 detection behavior.

Files Needing Attention: CHANGELOG.md lines 17-25.

T-Rex T-Rex Logs

What T-Rex did

  • T-Rex produced proofs for the posted P2 findings across multiple reviews.
  • The proof-generation script and associated logs were captured and linked to the proofs.
  • Contract-validation work assessed the JSON serialization contract and IPv6 handling, with explicit proposals documented.
  • A 6to4 detection widening wording was reviewed, and a corresponding changelog entry was drafted.
  • Artifacts were organized to support reviewer inspection, tying each activity to concise supporting artifacts.

View all artifacts

T-Rex Ran code and verified through T-Rex

Comments Outside Diff (3)
  1. General comment

    P2 Changelog incorrectly says all IpInterface implementors with another jsonSerialize return type break

    • Bug
      • CHANGELOG.md lines 17-18 says that user-space classes implementing IpInterface and returning another type now break. But IpInterface gets serialization through OutputInterface, which only extends untyped \JsonSerializable; neither interface declares jsonSerialize(): string. The concrete string signature exists only on AbstractIP, so the incompatibility applies to subclasses overriding that method, not standalone IpInterface implementors.
    • Cause
      • The documentation conflates the concrete implementation signature in AbstractIP with the inherited JsonSerializable contract exposed through OutputInterface and IpInterface.
    • Fix
      • Replace the claim with wording such as: “A concrete string return type was added to AbstractIP::jsonSerialize(). Subclasses overriding that method with a different return type will now break.”

    T-Rex Ran code and verified through T-Rex

  2. General comment

    P2 Clarify malformed PackingException changelog entry

    • Bug
      • CHANGELOG.md:23 accurately intends to describe an exception-behavior BC break, but “throws a custom strategy's PackingException escape” is ungrammatical and does not clearly identify the escaping exception or the prior wrapper. Users cannot reliably infer which exception to catch after upgrading.
    • Cause
      • The changelog entry was written with an invalid verb/object construction and omits the previous wrapper type.
    • Fix
      • Replace line 23 with: `IPv6::fromEmbedded()` now allows a `PackingException` thrown by a custom strategy to escape instead of wrapping it in `InvalidIpAddressException`.

    T-Rex Ran code and verified through T-Rex

  3. General comment

    P2 Changelog omits the full 6to4 widening scope

    • Bug
      • CHANGELOG.md:24-25 says non-canonical 6to4 addresses are now version-4 values but does not state that Derived::isEmbedded() was widened to all of 2002::/16, including inputs whose trailing 80 bits are nonzero. That condition is the precise behavioral distinction from the preceding implementation.
    • Cause
      • The 6.1 changelog consolidation shortened the original fd52e08 release note, which explicitly documented the complete 2002::/16 range and formerly required zeroed 80-bit tail.
    • Fix
      • Revise CHANGELOG.md:24-25 to identify the whole 2002::/16 range and explicitly say addresses with nonzero bits 48–127 are recognized; retain the existing canonical-packing data-loss note.

    T-Rex Ran code and verified through T-Rex

Reviews (1): Last reviewed commit: "docs(changelog): 📚 add an upgrading sec..." | Re-trigger Greptile

Comment thread CHANGELOG.md Outdated
Comment thread CHANGELOG.md Outdated
Comment thread CHANGELOG.md Outdated
Extender-only breaks were scattered across feature bullets or missing. Group them under one heading and drop the bullets it supersedes.
@zanbaldwin
zanbaldwin force-pushed the z/changelog-upgrading branch from b91f215 to 3b607e8 Compare September 16, 2026 12:00
@zanbaldwin
zanbaldwin merged commit f090f60 into 6.x Sep 16, 2026
24 checks passed
@zanbaldwin
zanbaldwin deleted the z/changelog-upgrading branch September 16, 2026 12:02
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.

1 participant