carepath-api / docs /decisions /0010-shared-normalization-contract.md
tranth3truong's picture
Deploy public Scribe-only CarePath Space
cc678b9
|
Raw
History Blame Contribute Delete
1.17 kB
# 0010 Shared Normalization Contract
Date: 2026-07-13
## Status
Accepted
## Context
Interpreter, Scribe scoring, training scoring, and both lexical retrievers
carried local normalization implementations. Their names overlapped, but their
contracts differed: the Interpreter normalizes units, Vietnamese number words,
and relative dates; scoring compares case-insensitively without semantic
conversion; lexical retrieval additionally folds diacritics and punctuation.
## Decision
Create the installable `shared/carepath_shared` package. Move the Interpreter
normalizer there unchanged as `normalize_text`, and make every former local
normalizer a direct import from this package. Keep the existing scoring and
retrieval semantics as the separately named `normalize_for_metrics` and
`normalize_for_match` functions, rather than silently changing metric scores or
term matching.
## Consequences
- Normalization algorithms have one owner and one characterization suite.
- Existing module import paths remain compatible.
- A future semantic consolidation must explicitly revise the characterization
suite and evaluation baseline; it is not part of this restructure.