When both exist, which one overrides the other must be explicit, or conflict is unpredictable
Aliases: dual-write conflict · last-write-wins ambiguity · channel precedence
What it is
The sentence says “two hundred words.” The slider sits at 80. After send, a piece of about ninety words comes back. There is no way to know whether the slider won, the parser missed the sentence, or the model split the difference. NL-widget override precedence is the conflict function a hybrid surface must publish: when both sides assign the same field, which assignment is live. Without that function, coexistence wrecks predictability — each extra entry is another way to have filled something that did not count.
Coexistence argues both sides should be present. Override argues the world should still be foreseeable in a clash. Missing the latter turns the former into a trap.
Why it happens
Two writers on one internal field, and the system must pick a value. Common implicit policies: last write wins, controls win (easier to validate), language wins (fresher), compromise, or a coin flip that depends on whether parse succeeded. An implicit policy has no counterpart on the surface; people can only fit, by trial, a mental model that does not exist. Trial is further polluted by sampling noise: the same conflict may crown a different winner next time, so even the rule looks unstable.
Partial conflicts are worse. The sentence owns tone, the slider owns length — no apparent crash — but “make it shorter and formal” lets “shorter” crash into length. The conflict boundary is larger than the field boundary, and undeclared override detonates at those crossings.
Studying it
Build submits with obvious conflicts (contradictory assignments on word count, format, tone). Before send, ask “which side do you think will take effect,” then compare actual effect and later attribution. Independent variables: whether conflict is highlighted before send with a named winner, winner policy (last write / control / language), whether the highlight lets people change the winner. Dependent variables: prediction accuracy, surprise, whether they edit one side to resolve, whether they stop using one channel.
Separate parse failure (the language side never assigned a value) from true override. The former is a parse problem people will misread as override, and must be coded on its own.
Where it stops holding
If the two sides are never left out of sync, and every send is forced to align on a single source, conflict is eliminated and override has no job — at the cost of losing the speed of “change only one side.” Read-only fill-back (language edits the control, the control immediately becomes the only source) shrinks the conflict window to the half-second before fill-back. In speech, “last write” is hard to timestamp and needs an explicit confirm. This entry does not require fill-back itself, only that conflict be predictable; fill-back is a different job, making understanding visible.
Applying it
- Pick a simple rule and write it at the conflict site: for example “the side changed later wins,” or “controls are authority for length and format, language for bans.” Per-field-type rules are more predictable than one global “language wins.”
- If dual-write on the same field is detected before send, stop and let the person pick once. Do not pick in silence.
- After the fact, leave a line by the result: “length used the slider’s 80, ignored two hundred in the sentence,” so the rule can be seen.
- Check: one deliberate dual-write. Ask before send which side will apply; compare after. If most people guess wrong, or guess right and cannot state the rule, override is still implicit. Then watch whether the next round they abandon one channel — abandoning is a behavioral vote that the rule cannot be learned.
Related
- Same group: L2.04.1 Natural language is suited to expressing intent · L2.04.2 Parameter controls are suited to precise adjustment · L2.04.3 Having both beats choosing one · L2.04.4 Natural language is strong at goals and constraints; parameter controls are strong at degree and numeric values · L2.04.5 Parameter controls provide a revertible determinate state; natural language does not · L2.04.7 Filling parsed language back into controls lets users see what the system understood · L2.04.8 A control’s value range is itself a display of the capability boundary
- Nearby: L2.15 Ambiguity and Clarifying Follow-ups · L5.01 Types of Explainability · L2.06 Granularity of Control
- Search terms:
NL-widget override precedence·dual-write conflict·last-write-wins
Cards in the same group
- L2.04.1Natural language is suited to expressing intent
- L2.04.2Parameter controls are suited to precise adjustment
- L2.04.3Having both beats choosing one
- L2.04.4Natural language is strong at goals and constraints; parameter controls are strong at degree and numeric values
- L2.04.5Parameter controls provide a revertible determinate state; natural language does not
- L2.04.7Filling parsed language back into controls lets users see what the system understood
- L2.04.8A control’s value range is itself a display of the capability boundary