§14. Intent matcher (crate intent)
planarian @ a924e09 · Spec v4.6 · snapshot main · all versions
Deterministic; no language model; identical behavior in degraded mode. Not in the Verus subset.
- Index: every
UnitDef.synonyms, every transition verb with a phrasing list, every change-catalog entry’s description tokens, every runtime-settable option. - Match: normalized token overlap plus a fixed pattern set (“restart X”, “reconnect X”, “turn X on/off”, “make X bigger/smaller”, “stop/pause X [for N minutes|until I say]”, “start X again”/“done with X”). Output
(Transition, confidence). - Thresholds: ≥ 0.8 propose with
Source::Intent; 0.5–0.8 ask the user to confirm one of the top two; < 0.5 unmatched (A: say so; B: summon the model). - Stopping: “stop X” and its variants map to
StopAndSuppress { until: parsed or Explicit }, never to a bareStopUnitor a bareSetOverride; the override is journaled before the stop (§12), so there is no window in which the repair loop restarts the unit. “Turn wifi off” and similar map to an override on the network unit. “Start X again”/“done with X” →LiftOverride, after which the unit is desired-Running again and is repaired if needed. AStopUnitissued through the CLI by an authorized user is rewritten toStopAndSuppress { until: NextBoot }with a notice. The first time a user’s raw stop is caught as the unattributed residue (§11), the notice teaches the attributed form. - Authorization applies as in §11; an unauthorized match is reported as such, not silently dropped.