Readback
Source code on GitHub (opens in a new tab)

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.

MomentSaidHeardRecognizer certaintyGate verdictThreshold and validators only
A clean dosage formtablettabletcertainty 0.99PASSA_VALIDATOR_PASSED_HIGH_CONFWritten: TABLET
A look-alike name at full certaintyhydromorphonemorphineon the ISMP list with hydromorphonecertainty 1.00outranked by the published pairRE-ASKE_LASA_HITWritten: morphine
A fluent turn naming a listed partner of the spoken drughydralazinehydroxyzineon the ISMP list with hydralazine, hydrochlorothiazide, hydrogesic, hydromorphone, hydroxyureacertainty 1.00outranked by the published pairRE-ASKE_LASA_HITWritten: hydroxyzine
A dosage spoken too quietlyten milligramsten milligramscertainty 0.61RE-ASKE_LOW_CONFIDENCEAlso asks:E_LOW_CONFIDENCE
An NPI whose checksum failsone two three four five six seven eight nine zeroone two three four five six seven eight nine zerocertainty 0.97REFUSEDE_VALIDATOR_CHECKSUMAlso asks:E_VALIDATOR_CHECKSUM
A name the catalogue does not holdveltaprineveltaprinecertainty 0.97REFUSEDE_VALIDATOR_CATALOGAlso 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.