refactor(studio): gate Acorn writer migration#2164
Conversation
1bf2e0c to
864beed
Compare
68e485e to
676273e
Compare
864beed to
4dd9950
Compare
b79a434 to
67ff080
Compare
406554a to
fab40bd
Compare
1756777 to
bfa3733
Compare
fab40bd to
a4a115e
Compare
bfa3733 to
a26085e
Compare
a4a115e to
8134c99
Compare
a26085e to
f95673f
Compare
8134c99 to
f66d284
Compare
f95673f to
abe7134
Compare
f66d284 to
7d48c5b
Compare
eb2ee81 to
e23a2dd
Compare
|
Fixed the fresh-head CI compile failure on head 0038842: atomic split batches now resolve the selected GSAP writer once at the route boundary and pass it through each split mutation, matching regular mutation batches. Validated with files.test.ts (66/66), Studio Server typecheck, diff check, and commit hooks. Fresh exact-head CI is running. |
|
Fixed the Windows-only CI failure on head bb7820d: Windows Core compilation types process.env without the selector field, so both GSAP route boundaries now pass an explicit HYPERFRAMES_GSAP_WRITER value instead of the entire environment. Behavior is unchanged. Validated files.test.ts (66/66), Studio Server typecheck, Core build, diff check, and commit hooks. Fresh exact-head CI is running. |
miguel-heygen
left a comment
There was a problem hiding this comment.
The regular mutation route now selects the writer explicitly and returns a clean 400 for an invalid flag, and the new Acorn motion-path differential coverage is strong. The capability matrix is also compile-time exhaustive.
Blocker
packages/studio-server/src/routes/files.ts:2045—foldAtomicCutFiledispatches the split with the selectedwriter, but after a changed script it unconditionally callsloadGsapParser()and runs the Recast hold synchronizer. ThereforeHYPERFRAMES_GSAP_WRITER=acornatomic split batches still import and execute Recast, violating this migration gate's stated no-Recast runtime invariant and mixing writer semantics in one mutation. The current capability test only scansapplyGsapMutations, so this sibling path is not covered. Please use the same writer-conditioned hold synchronization as the regular route and add an atomic Acorn regression proving the Recast import gate is untouched.
Verdict: REQUEST CHANGES
Reasoning: The primary Acorn route and parity suite look solid, but the atomic split path still crosses into Recast under the Acorn flag; the migration gate is incomplete until that path and its regression coverage are corrected.
— Magi
|
Fixed the atomic Acorn split-path blocker on exact head 8dd7e3d. After a split mutation changes the script, hold synchronization now follows the selected writer: Acorn uses the Acorn synchronizer and never loads Recast; the default Recast path is unchanged. Extended the writer capability regression to cover foldAtomicCutFile and assert the same conditioned hold-sync boundary. Validation passed: files + capability suites 70/70, Studio Server typecheck, formatting, diff check, and commit hooks. The full stack was restacked and republished; fresh exact-head CI is running. |
miguel-heygen
left a comment
There was a problem hiding this comment.
Fresh exact-head delta review at 8dd7e3dfc.
packages/studio-server/src/routes/files.ts:2045now keeps post-split hold synchronization writer-conditioned: Acorn stays onsyncPositionHoldsBeforeKeyframes, while the unchanged default path lazily loads Recast.packages/studio-server/src/routes/gsapMutationCapabilities.test.ts:47now includesfoldAtomicCutFilein the migration-boundary regression, pinning both the Acorn and Recast branches.
The prior atomic-path blocker is resolved. I rechecked the one-commit delta, all existing reviews/comments and threads, exact-head required CI, mergeability, and the surrounding writer plumbing; no remaining blocker found.
Verdict: APPROVE
Reasoning: The Acorn atomic split path is now Recast-free under the flag, the default Recast behavior is preserved, and regression coverage plus all required exact-head checks are green.
— Magi

What
Put the Recast-to-Acorn writer migration behind an executable capability and parity gate.
Why
Acorn lacked motion-path operations and still depended on Recast-only hold synchronization after mutation.
How
Generate the operation matrix, implement missing Acorn paths and shared hold behavior, differentially test semantics/source placement, and keep the flag gated until graduation.
Test plan