Natural-language descriptions must be verifiable
Aliases: natural language programming · conversational rule creation
What it is
The third expressive route: let users state rules in everyday language — "when I get home and it's dark, turn on the porch light" — and have the system parse them into executable rules. Mature language models have revived this route because it bypasses the syntax barrier head-on: nothing formal to learn.
But the route's success hinges not on understanding but on verification. Natural language is fuzzy, rule engines are not, and parsing necessarily makes a chain of default decisions on the user's behalf. If the user cannot confirm that "the rule the system understood" is "the rule I meant", the barrier has merely moved from "cannot write it" to "cannot catch it" — and the latter hides better.
Why it happens
Every default decision in parsing is a decision the user never took part in: does "dark" mean thirty minutes after sunset, or a lux threshold? Does "I'm home" mean phone GPS or the door lock turning? Does "someone is still here" include the cat? A single rule routinely contains several such forks, each resolved out of sight.
The nature of error changes accordingly. In the conditional-rule era users could not write the rule — failure was explicit, immediate, self-known. In the natural-language era a rule can always be "created successfully" yet quietly diverge from intent: error moves from the syntactic layer to the semantic layer, from "fails on the spot" to "runs wrong in silence". An erroneous rule firing unnoticed for weeks in the background is this mode's signature failure.
Verification is therefore not an appended confirmation dialog but the route's only correction channel: structured read-back, replay against history, and first-trigger alerts are all means of re-presenting "what the system understood" for comparison. Without this layer the natural-language entrance is vacuously usable — users can say it, but cannot know what they got.
Studying it
Studies of natural-language rule creation — from early constrained-language interfaces to recent large-model parsing — share a consistent finding: gaps between user intent and system interpretation almost never surface at input; they surface at confirmation — when users see a structured rendering of the parsed rule, or the first wrong trigger, and discover "that's not what I meant". The trigger-action programming finding that semantically packaged descriptions improve comprehension applies to the read-back layer too: presentation form determines whether users can detect parsing drift.
Standard methods: collect natural-language rules from users, re-present the parsed result to its author, and measure endorsement ("is this what you meant?"); then apply error injection — deliberately present slightly perturbed parses — and measure detection rates, the direct gauge of the verification layer's effectiveness.
One methodological caution: endorsement rates are fooled by "looks right". Detection of slight perturbations (ten minutes off, one room missing from scope) is far below detection of obvious ones; evaluation must stratify injections by perturbation magnitude. Testing only gross errors overestimates the verification layer.
Where it stops holding
- Verification suffices for simple rules, not for complex logic. Single-trigger, single-action rules read back at a glance; combinations with negation, exceptions, and ordering ("lights on when I arrive, except weekends, unless family got home first") make the read-back itself hard to read, and verification degenerates into formality.
- Natural language cannot express quantities the user has not settled. Cooldowns, priorities, active hours — these are decision problems, not language problems; conversational prompting can force the decision, but hands the interaction cost back to the user.
- Verification strength should grade with consequence. A lighting rule needs read-back; rules touching locks, payments, or notifications to others need rehearsal or a second confirmation before activation.
Applying it
- Always read back in structured form: trigger, conditions, actions laid out separately, with the user's own words annotated alongside; explicitly mark where the parse took a default ("'dark' = within 30 minutes of sunset").
- Ask on ambiguity rather than silently taking defaults — a one-time prompt against a persistent undetected drift.
- Offer retrospective verification: "this rule would have fired 4 times last week, most recently Tuesday 18:40" — history lets users audit the rule's actual reach.
- Alert at first trigger with a correction entry point, spreading verification across the first real opportunity to use it.
- How to check: measure detection of slight perturbations (see above); after launch, monitor the share of rules edited or deleted within 48 hours of creation — users reversing immediately is the strongest signal of unreliable parsing.
Related
- Same group: Z5.04.1 Conditional rules are a high barrier for non-programmers · Z5.04.2 Templates lower the barrier but cap expressiveness
- Nearby: Z5.07 Testing and rehearsing rules · Z2.07 Making context judgements explainable and visible
- Search terms:
natural language programming·rule verification·conversational interfaces