Core extraction: render the prompt, call the base model (maxTokens 128), parse
the newline list, clean + canonicalize each surface, and de-duplicate by stem.
Pure w.r.t. the DB. Returns the extracted entities AND the raw newline-line
count (pre-dedup) so instruments can report the canonicalizer's parse health.
Core extraction: render the prompt, call the base model (maxTokens 128), parse the newline list, clean + canonicalize each surface, and de-duplicate by stem. Pure w.r.t. the DB. Returns the extracted entities AND the raw newline-line count (pre-dedup) so instruments can report the canonicalizer's parse health.