Skip to content

[claude] Bump SIL.Harmony to rc.228 and fix config-time freeze - #2463

Closed
myieye wants to merge 1 commit into
developfrom
claude/harmony-version-serialization-dfe3cb
Closed

[claude] Bump SIL.Harmony to rc.228 and fix config-time freeze#2463
myieye wants to merge 1 commit into
developfrom
claude/harmony-version-serialization-dfe3cb

Conversation

@myieye

@myieye myieye commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

[Claude, autonomous]

Bumps SIL.Harmony 0.2.1-rc.211 → rc.228.

rc.228 makes CrdtConfig.JsonSerializerOptions a lazy that freezes ChangeTypeListBuilder when built, so reading it inside ConfigureCrdt (before remote-resource change types are registered) threw ChangeTypeListBuilder is frozen. Moved the JSON-options finalization into a single PostConfigure that runs after every Configure; ConfigureCrdt is now pure type registration.

DataModelSnapshotTests.VerifyChangeModels now reads change discriminators from the synthetic $type property (rc.228 dropped built-in IChange PolymorphismOptions for a converter). Verified snapshot is byte-identical, so the registered change set and discriminators are unchanged — on-disk/wire format stays compatible.

harmony-sentinel reviewed: no data-loss or format-compat risk (commit hash chain doesn't depend on change payload; $type name/value/position unchanged).

rc.228 makes CrdtConfig.JsonSerializerOptions a lazy that freezes
ChangeTypeListBuilder when built. The old code read it inside ConfigureCrdt
before remote-resource change types were registered, throwing
"ChangeTypeListBuilder is frozen". Move the JSON options finalization out of
ConfigureCrdt into a single PostConfigure (runs after every Configure) so all
change types are registered first; ConfigureCrdt is now pure type registration.

Also update DataModelSnapshotTests to read change discriminators from the new
synthetic $type property, since rc.228 drops built-in IChange PolymorphismOptions
for a converter. The verified snapshot is unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions github-actions Bot added the 💻 FW Lite issues related to the fw lite application, not miniLcm or crdt related label Jul 21, 2026
@myieye myieye changed the title Bump SIL.Harmony to rc.228 and fix config-time freeze [claude] Bump SIL.Harmony to rc.228 and fix config-time freeze Jul 21, 2026
@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 61fc316b-38cc-496a-8184-8190d6ef2c43

📥 Commits

Reviewing files that changed from the base of the PR and between bd2c823 and 88ac708.

📒 Files selected for processing (4)
  • backend/Directory.Packages.props
  • backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.cs
  • backend/FwLite/LcmCrdt.Tests/TestJsonOptions.cs
  • backend/FwLite/LcmCrdt/LcmCrdtKernel.cs

📝 Walkthrough

Walkthrough

Updates Harmony package versions, changes CRDT JSON options finalization timing, moves remote resource registration, and revises change-model snapshot verification to derive polymorphic discriminators from concrete change types.

Changes

CRDT JSON polymorphism and configuration

Layer / File(s) Summary
Finalize CRDT JSON configuration
backend/Directory.Packages.props, backend/FwLite/LcmCrdt/LcmCrdtKernel.cs
Harmony packages are updated; JSON options finalization is post-configured, and LcmFileMetadata registration is moved into CRDT configuration.
Verify registered change discriminators
backend/FwLite/LcmCrdt.Tests/TestJsonOptions.cs, backend/FwLite/LcmCrdt.Tests/DataModelSnapshotTests.cs
Test setup invokes JSON finalization, while change-model snapshots derive JsonDerivedType entries from concrete change discriminators.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

  • sillsdev/languageforge-lexbox#2462: Changes IChange registration and ConfigureCrdt, which directly intersects the updated discriminator snapshot logic and CRDT configuration.

Suggested reviewers: hahn-kev

Poem

A bunny hops through JSON bright,
Discriminators line up right.
CRDT options bloom and flow,
New Harmony versions glow.
Hop, hop—snapshots sing tonight!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the Harmony bump and the config-time freeze fix.
Description check ✅ Passed The description is directly related to the package bump, config change, and test update.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/harmony-version-serialization-dfe3cb

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@argos-ci

argos-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Argos notifications ↗︎

Build Status Details Updated (UTC)
default (Inspect) ✅ No changes detected - Jul 21, 2026, 6:02 PM
e2e (Inspect) ⚠️ Changes detected (Review) 12 removed, 2 failures Jul 21, 2026, 6:41 PM

var discriminatorProperty = _jsonSerializerOptions.GetTypeInfo(changeType).Properties
.SingleOrDefault(p => p.Name == CrdtConstants.ChangeDiscriminatorProperty);
discriminatorProperty.Should().NotBeNull("change type {0} should declare a $type discriminator", changeType);
var discriminator = discriminatorProperty!.Get!(RuntimeHelpers.GetUninitializedObject(changeType));

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should probably make a helper function that does this, as I think we've done this in other places already and each one is a little different.

@myieye

myieye commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator Author

We want to make bigger changes on the Harmony side, so closing this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💻 FW Lite issues related to the fw lite application, not miniLcm or crdt related

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants