What the pair rule and read-back change, one moment at a time
Said, heard, the recognizer's own certainty, the gate's verdict with its reason code, and what the same gate writes with only its threshold and validators left on. Where the two last columns disagree is where the pair rule and the standing read-back earn their place.
Six moments, decided by the shipped gate and without its two rules
Each row is one synthesised candidate decided by the shipped gate as this page renders. The last column runs the same candidate through the same decision function with the pair rule and the standing read-back switched off, which leaves a confidence threshold plus the validators.
| Moment | Said | Heard | Recognizer certainty | Gate verdict | Threshold and validators only |
|---|---|---|---|---|---|
| A clean dosage form | tablet | tablet | certainty 0.99 | PASSA_VALIDATOR_PASSED_HIGH_CONF | Written: TABLET |
| A look-alike name at full certainty | hydromorphone | morphineon the ISMP list with hydromorphone | certainty 1.00outranked by the published pair | RE-ASKE_LASA_HIT | Written: morphine |
| A fluent turn naming a listed partner of the spoken drug | hydralazine | hydroxyzineon the ISMP list with hydralazine, hydrochlorothiazide, hydrogesic, hydromorphone, hydroxyurea | certainty 1.00outranked by the published pair | RE-ASKE_LASA_HIT | Written: hydroxyzine |
| A dosage spoken too quietly | ten milligrams | ten milligrams | certainty 0.61 | RE-ASKE_LOW_CONFIDENCE | Also asks:E_LOW_CONFIDENCE |
| An NPI whose checksum fails | one two three four five six seven eight nine zero | one two three four five six seven eight nine zero | certainty 0.97 | REFUSEDE_VALIDATOR_CHECKSUM | Also asks:E_VALIDATOR_CHECKSUM |
| A name the catalogue does not hold | veltaprine | veltaprine | certainty 0.97 | REFUSEDE_VALIDATOR_CATALOG | Also asks:E_VALIDATOR_CATALOG |
The rows are synthesised; the verdicts are computed
These candidates are synthesised from the documented message shapes, not recorded from a live call. The verdicts are not: every one of them is computed by decide() from the gate package, over the real field policy table.