Generate
Deterministic Rust realizers enumerate structurally valid written forms for spans in the transcript. The model cannot invent an output that the candidate layer did not generate.Score
DeBERTa encodes the complete sentence once. It gives each candidate a score based on the source span, proposed replacement, candidate kinds, and sentence context.the room code is one oh five is the room code is 105. This does
not imply that every ambiguity is resolved correctly; see the
benchmark limitations.
Decode
Candidates can overlap. Exact dynamic programming selects the highest-scoring compatible set of edits across the complete sentence. Leaving source text unchanged is always available through a zero-scoreKEEP path.
The rules decide what can be written. The model decides what fits the context.
The decoder decides which edits can coexist. The temporal resolver then adds a
canonical value only when the selected span and caller context make it
deterministic.
Enrich temporal values
normalize_structured() retains the decoder’s exact source and normalized
offsets, then applies deterministic contextual rules to compatible DATE
spans and unchanged temporal text. For example:
text remains call me tomorrow. The structured span carries
resolved_value="2026-09-21". Without a reference datetime, the span remains
annotated but unresolved. normalize(), normalize_resolved(), and
normalize_structured() share the same internal result and model inference.