GuardrailsProposed — not confirmed yet.
Eight rules nobody can change. Breaking one reads as broken, misunderstood or unsafe.A violation is corrected automatically and the user is told.
MUST guardrails
The IDs and check expressions are proposed. Thresholds such as cv 0.1 are set in the simulator.
gr.triggerTrigger and forbidProposedEvery behavior has a trigger and a forbid condition.Check (proposed)trigger != null && forbid_when != null
gr.no_irregular_tremorNo irregular tremorProposedRepeats keep an even interval.Check (proposed)cv(interval) <= 0.1
gr.amp_limitSize limitProposedROM 40% by default, 70% at most.Check (proposed)amp_pct_rom <= 70
gr.one_meaningOne meaningProposedConfusable pairs differ in at least one of direction, start pose or timing.Check (proposed)diff(axis, start_pose, timing) >= 1
gr.negative_two_channelsNegative = two channelsProposedNegative emotion uses 2+ channels including face or sound.Check (proposed)valence<0 → channels>=2 && (face||sound)
gr.end_holdEnd holdProposedPointing, closing and other signals hold 0.3–0.5 s at the end point.Check (proposed)hold_end_ms >= 300
gr.repeat_max_2Repeat twiceProposedTwo repeats at most, then back to rest.Check (proposed)count(repeat) <= 2
gr.response_timeResponse timeProposedNo silence over 1 s; within 0.1 s for safety.Check (proposed)idle_gap_ms <= 1000, safety_latency_ms <= 100
On violation
MUST is HARD: the generator fixes the motion itself and tells the user what changed.
CheckAfter generation
CorrectClamp · insert · cut · scale down
NotifyThe user sees what changed
MUST and SHOULD
Auto-correctNotify
MUSTBreaking it reads as broken, misunderstood or unsafe. Nobody can change it.
DefaultRange
SHOULDA default and an allowed range. Style moves only inside the range; a designer may go outside with a warning.