Type Alias: GestureDroppedReason
GestureDroppedReason =
"data-changed"|"superseded"|"discarded"|"entry-gone"|"inverted-span"
Defined in: model/error-report.ts:217
Why core dropped a held gesture itself, instead of a before* handler saying no (#272, #273,
#377). Never a consumer's own veto, so a dropped report carries no reason — there are no words
to quote, only one of these.
'data-changed' — the rows the draft was measured from were replaced while a handler was still
deciding. 'entry-gone' — the entry the settle would write was removed. 'superseded' — a new
gesture armed before the handler decided. 'discarded' — the user pressed Escape, or the Gantt
was destroyed, before the handler decided.
severity alone already tells "the user did this on purpose" ('superseded', 'discarded',
severity: 'info') from "real work was lost" (the other two, severity: 'warning') — see
buildGestureDroppedReport. What severity cannot do is tell 'data-changed' apart from
'entry-gone': two different failures a consumer may want to handle two different ways.
droppedReason carries that, without matching on message's English sentence
(ErrorReport.droppedReason, branch review).
'inverted-span' — an installed EditExtender cascaded an end that falls before its start.
Core refuses to store that and drops the gesture. The entry keeps its stored dates, so nothing
is lost but the gesture (#143, 2026-09-06: an inverted span is refused, never stored). This one
reports by: <the plugin> and carries the InvertedSpanError as cause; every other reason
reports by: 'core'.
A user gesture never raises it. layout/gesture-draft.ts's resizeEdit clamps the dragged edge
at zero length, and nudge() runs the same draft, so neither a drag nor a key can invert a span.
ADR 0026 retired 'write-refused', which this used to carry, on the premise that the store only
ever refused an envelope-only cascade against a several-Segment Entry. Branch review
disproved it by running the case: isEnvelopeRefusal named two errors, and only
SegmentsOutOfSyncError died with the Segment. InvertedSpanError never was Segment-specific.
'inverted-span' replaces the retired name rather than restoring it, because the envelope the
old name described is gone and the condition it now reports is the one this name states.