Uh oh!
There was an error while loading. Please reload this page.
fix(timeline): enforce track lock invariants - #26
Open
lightninglu10 wants to merge 5 commits into
Open
Conversation
lightninglu10
marked this pull request as ready for review
August 27, 2026 05:25
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 freeto 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
This makes the track-lock control an actual editing invariant. Locked items cannot change timing, lane, source placement, reverse state, or existence; linked cohorts reject atomically when any companion is locked; lock overrides sync-lock; and track-header content reorder refuses affected locked lanes or cohorts.
Unlocked standalone tracks can still participate in cross-track ripple/push while locked lanes stay fixed. Rejected operations create no history entry, accepted compound edits remain one undo command, and track Solo is additive instead of replacing the previous soloed track.
Verification
Current head
af56cb4bb45523a8134ce16f6846718fb7ee8f8dadds shared atomic mutation preflight across split/join/rate/freeze/source edits, every trim mode, range removal, captions, transitions, inherited group locks, and linked cohorts. Lottie reverse and segment timing fields are protected, and async actions revalidate immediately before committing.The 190 affected tests and full 4,820-test suite pass under Node 22.
npm run check,npm run build, boundaries, dependency contracts, changed-health, and all seven push gates also pass. Fresh independent code review and browser QA are pending for this head, so the PR remains draft.