Back to Plate

Restore DOM Family Closure Matrix

docs/plans/2026-04-12-restore-dom-family-closure-matrix.md

53.0.63.4 KB
Original Source

Restore DOM Family Closure Matrix

Historical batch note. The live closure read is now folded into release-file-review-ledger.md.

Purpose

Break the deleted legacy restore-dom family into behavior rows that can be proved, cut, or left tooling-blocked explicitly.

Legacy source:

Current owners:

Behavior Matrix

Legacy behaviorLegacy mechanismCurrent readClassificationCurrent owner / gap
buffer browser mutations only during real user inputreceivedUserInput gatecurrent runtime does not use the same pre-commit DOM replay lifecyclejustified-omissionnon-current lifecycle guard; see 2026-04-12-restore-dom-was-a-rerender-era-guard-not-a-current-v2-runtime-need.md
restore removed/added DOM nodes before React commitmutation observer + getSnapshotBeforeUpdatecurrent runtime owns direct DOM commit on input / compositionend instead of pre-commit DOM replay; visible behavior rows are green on the current seamsjustified-omissionsuperseded by current root-owned DOM commit plus direct behavior rows
ignore characterData mutation restore during compositionexplicit skip in restore managermain IME rows are green on the behavior-bearing current surfaces without this familycovered-by-current-proofcurrent IME proof lanes own this user-visible behavior
Android-only activation of the restore-dom wrapperIS_ANDROID guardcurrent Android rows are green on placeholder, no-FEFF placeholder, inline-edge, void-edge, and split/join without this wrappercovered-by-current-proofAndroid proof is narrower than the full legacy matrix, but this guard no longer stands as its own unresolved family
restore before update, clear after update, then resume observationclass lifecycle contractcurrent runtime no longer depends on that rerender-era lifecycle to keep visible editor behavior correctjustified-omissionold lifecycle shape is not the current architecture contract

Current Hard Read

The deleted family is not one thing.

It mixes:

  • Android-only runtime protection
  • mutation replay around React commit timing
  • composition-sensitive guardrails

The current proof stack already says:

  • main IME rows are green without restore-dom
  • transient DOM-point focus failure already fails closed

What it now says:

  • the behavior-bearing rows formerly protected by restore-dom are either directly green or no longer current runtime lifecycle requirements

Closure Read

The family is ready to reclose as:

  • behavior rows covered on current proof surfaces
  • rerender-era mutation replay lifecycle explicitly non-current