Skip to content

[claude] Rebuild FW Lite snapshots when a project opens, not on its first new commit - #2812

Closed
myieye wants to merge 3 commits into
developfrom
claude/fwl-opening-dialog-gsfm69-checkpoints
Closed

myieye wants to merge 3 commits into
developfrom
claude/fwl-opening-dialog-gsfm69-checkpoints

Conversation

@myieye

@myieye myieye commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator

[Claude, autonomous]

Adds major Harmony model version 1, so ReconcileModelVersions regenerates every snapshot once when a project opens, instead of a full replay on the first commit after the checkpoints update.

  • New projects store the current model versions at creation, so their first open doesn't regenerate what the download or import just built.
  • Replaying a legacy /Translation/<ws> patch now gives the translation MissingTranslationId, matching the migration. Before, each client gave it a random id, and edits made against the stable id were dropped. Listed in version 1.
  • A full replay already happened on develop at the first new commit, with these data effects; this PR only moves it to open. MigrationTests fixtures now show the regenerated state: legacy entries read MorphType Stem (the replay default) instead of Unknown (the migration's column default), and in-between snapshots are gone. Snapshot row ids are no longer verified, since regeneration assigns new ones.
  • Risks: the first open of a large project is slow with no progress UI, and a replay that throws now blocks opening rather than the first write.
  • Considered: marking existing commits as checkpoints in an EF migration. That would skip the rebuild entirely, but it doesn't fix the snapshots that replay computes differently.

Generated by Claude Code

A major model version makes ReconcileModelVersions regenerate all snapshots once, when the project is opened, instead of a full replay on the first new commit after the update.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RHiY7udrAXqHqXUiA6jRZq
- Store the current model versions when a project is created, so its first open doesn't regenerate the snapshots it was just built with.
- Replaying a legacy translation patch now uses MissingTranslationId, like the migration did, instead of a random id that differed per client. Listed in model version 1.
- MigrationTests now see the regenerated snapshots, so it ignores their row ids. v1 legacy entries now read MorphType Stem (the replay default) instead of the migration's column default Unknown; v2 drops the in-between snapshots a regeneration doesn't keep.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RHiY7udrAXqHqXUiA6jRZq
@coderabbitai

coderabbitai Bot commented Oct 26, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@github-actions github-actions Bot added the 🔩 FW Lite Core Shared MiniLcm, CRDT and sync libraries that ship in both FW Lite and FwHeadless label Oct 26, 2026

myieye commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator Author

[Claude, autonomous]

The frontend check is red even though all 145 viewer UI tests passed. The job then failed because the Argos upload was rejected with "You have reached the maximum screenshot capacity included in your Free Plan". That is an account quota issue, not something this PR can fix (it changes no frontend code). I haven't re-run the job, since it will fail the same way until the quota resets or the plan changes.


Generated by Claude Code

Opening the live fixture db now regenerates its snapshots, which re-inserts the morph type rows in a different order. GetMorphTypes has no ORDER BY, so only their order in the snapshot changed; the contents are identical and sync matches them by id.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RHiY7udrAXqHqXUiA6jRZq

myieye commented Oct 27, 2026

Copy link
Copy Markdown
Collaborator Author

[Claude, autonomous]

Superseded by #2813, which now has everything here (major version 1, the deterministic translation id, storing model versions at project creation).


Generated by Claude Code

@myieye myieye closed this Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔩 FW Lite Core Shared MiniLcm, CRDT and sync libraries that ship in both FW Lite and FwHeadless

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants