-
fix(dsl): migrate away legacy rotate/height fields on line elements (#1261)
发布于
2026-08-28 06:06:03 +00:00 -
fix(dsl): strip legacy rotate/height from line elements on migration and import (#1260)
-
fix(dsl): cover whiteboard slides in the legacy line strip, drop redundant import wiring
Round-1 review findings (#1261): the strip only walked
scenes[].content.canvas.elements, leaving the same bug class latent on
interactive whiteboard slides (scenes[].whiteboards[*].elements); and the
import-site sanitize was redundant because the document store already runs
the ladder on save, while its comment misdescribed that mechanism. Extend
the strip to whiteboards and let the ladder alone own the cleanup.- fix(dsl): cover stage-level whiteboard boards and row envelopes in the legacy line strip
Round-2 terminal audit findings (#1261): the strip walked only the
document envelope's scene surfaces, so dirty line elements under
stage.whiteboard (the stage-level explainer boards) and under bare
Scene/Stage row envelopes passed through while the runner stamped the
document current. Walk every line-element surface of every migratable
envelope: scene canvas, scene whiteboards, and stage whiteboard, at
document, Scene-row, and Stage-row roots.- fix(dsl): gate the canvas strip on the slide discriminant; run the ladder on legacy-only exports
Round-3 terminal audit findings (#1261): the canvas walk fired on any
canvas-shaped content regardless of the scene kind, so a non-slide scene
carrying a canvas-shaped app extension would have fields deleted from it
— gate on content.type ('slide' or absent, the dirty-line epoch predates
schema enforcement). And the lock-free exportDatabase fallback
hand-stamped DSL_VERSION onto a payload the ladder never walked, so a
backup could read as current on restore and permanently skip the
migration — build the export unstamped and let migrate stamp it.- fix(agent-runtime): bring stale-stamped documents current before incremental scene writes
Round-4 audit finding (#1261): putScene rejects documents whose stored
DSL stamp is older than the current one, and the aggregate read migrates
in memory only, so the first server-side tool write into a course stored
at an older version (every pre-bump course, including previously
imported ones) failed with a version error. Route the server tools'
incremental scene writes through a wrapper whose not-current fallback
reloads the migrated aggregate and full-saves it with the scene spliced
in — the server-side counterpart of the app autosave's
catch-and-full-save.-
style: prettier
-
docs(agent-runtime): record the reviewed concurrency window on the stale-stamp fallback
下载附件
-