Parent: #560 . Lands before #562 (slide surface).
Scope
1. Feature flag
NEXT_PUBLIC_MAIC_EDITOR_ENABLED, default OFF.
Gates only the Pro toggle in Header; StageMode union unchanged.
Retained as kill-switch post-rollout.
2. Slide DSL schema versioning
slide.schemaVersion: number on slide content; current shape is v1.
migrateSlide(slide) keyed by version; v1 body empty, shape + tests in.
Slide loader funnels through migrateSlide.
Tests: pure, idempotent, v1 round-trip is identity.
3. Round-trip integration test harness
4. Edit history persistence
5. Concurrency guards
AI regen lock — reverse of feat(maic-editor): framework primitives + edit StageMode #564 's auto-exit. Edit mode holding a scene → any regenerate-this-scene call (manual retry, auto-on-failure) is refused (pessimistic; no queue).
Multi-tab detect — BroadcastChannel with localStorage event fallback. Second tab attempting edit on the same course is refused with a clear message.
i18n: 2 strings × 6 locales.
Out of scope
Server-side history sync (Phase 2).
Cross-device conflict resolution.
Optimistic regen guard (revisit if pessimistic friction shows up).
Acceptance criteria
Note
No new user-visible edit affordances ship here — Pro mode behavior is identical to #568 with flag ON. Tests dominate the diff.
Parent: #560. Lands before #562 (slide surface).
Scope
1. Feature flag
NEXT_PUBLIC_MAIC_EDITOR_ENABLED, default OFF.Header;StageModeunion unchanged.2. Slide DSL schema versioning
slide.schemaVersion: numberon slide content; current shape is v1.migrateSlide(slide)keyed by version; v1 body empty, shape + tests in.migrateSlide.3. Round-trip integration test harness
tests/edit/round-trip/directory.noop+ one trivial op (e.g. change a text element's content).pnpm test.4. Edit history persistence
5. Concurrency guards
BroadcastChannelwithlocalStorageevent fallback. Second tab attempting edit on the same course is refused with a clear message.Out of scope
Acceptance criteria
feat/maic-editor-v0tipslide.schemaVersionin type + serialized;migrateSlidetestedNote
No new user-visible edit affordances ship here — Pro mode behavior is identical to #568 with flag ON. Tests dominate the diff.