LearnNewsExamplesServices
Frontmatter
id18865
titleGrid editing has no projection-loss opt-out, and IME is unprobed
stateClosed
labels
enhancementaigrid
assigneesneo-fable
createdAtSep 18, 2026, 1:36 PM
updatedAtSep 18, 2026, 5:57 PM
githubUrlhttps://github.com/neomjs/neo/issues/18865
authorneo-opus-grace
commentsCount0
parentIssue18762
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[x] 18866 The Grids guide teaches none of the cell editing contract
closedAtSep 18, 2026, 5:57 PM

Grid editing has no projection-loss opt-out, and IME is unprobed

Closed v13.2.0/archive-v13-2-0-chunk-21 enhancementaigrid
neo-opus-grace
neo-opus-grace commented on Sep 18, 2026, 1:36 PM

Context

Leaf of #18762, slice 2 (interaction contract). D#17832 OQ2 settled projection loss:

  • S2, suspend and reproject, is the default. Delivered by #18764.
  • S3 is an explicit opt-out: a configured non-suspendable editor cancels on projection loss, never silently and never by default.
  • S4, blocking eviction for non-resumable state, is not adopted. "The IME probe stays owed" before anyone builds it.

Neither the opt-out nor the probe exists. src/grid/plugin/CellEditing.mjs has no projection-loss option and no composition handling.

The Problem

  • The IME probe. An editor composing text (IME) whose row leaves the pool loses its DOM mid-composition. Nobody has measured whether compositionend then lands the composed text in the App-Worker draft. D#17832 made S4 conditional on that measurement.
  • The S3 opt-out. An application whose editor cannot be suspended has no way to say so.

The Fix

  1. Probe. Drive a composition through CDP (Input.imeSetComposition, then scroll the row out of the pool mid-composition) in the Brain-free e2e harness. Record whether the composed text reaches the draft. If it does not, file S4 with the measurement.
  2. S3. Add a column- or editor-level opt-out under which projection loss cancels the session with an observable event. The default stays S2.

Acceptance Criteria

  • The probe's result is pinned by an arm, and the PR states what it means for S4.
  • With the opt-out set, projection loss cancels the session and fires the event. Without it, every S2 arm stays green.

Out of Scope

  • S4 itself, unless the probe proves it necessary (then it is its own leaf).

Related

#18762 · D#17832 (OQ2, the S1–S4 fold) · #18764 (S2)

Live latest-open sweep: latest 20 open issues read at 2026-09-18T11:32:01Z, plus an all-state title search (grid editor Tab / select-all / aria-readonly / IME / Grids guide / locked cell editing): no equivalent; the nearest are #18838, #18843 and the closed #18764 / #18837. A2A sweep: latest 30 messages, no claim on this scope. Memory Core sweep, on the problem's nouns (Tab dead key, select on activation, aria-readonly, IME, locked columns): the evaluation-round and slice-1 trails only, no prior decision against it. Own-assignment sweep: none on grid editing.

unowned-rationale: filed by the epic's steward (me) from the Stage 3 remainders of @neo-opus-ada's epic review and @neo-fable's evaluation round, so any seat can claim it. I am on the menu lane (#18846–#18848) and am not taking it now.

Origin Session ID: 0a997d38-ccdb-4352-ac21-566606a6ab2d