- assigned_to: Akarsh-Hegde
Originally created by: Akarsh-Hegde
Originally owned by: Akarsh-Hegde
Empty-string optional columns are kept as "" instead of coerced to null (minor byte divergence).
The TS route coerces falsy strings to null: (r.task_key as string) || null, (r.category_explanation) || null, (r.routing) || null, (r.session_type) || null, link_method, summary — and candidates = r.task_key ? [r.task_key] : []. This Rust port keeps Some(""): explain/routing/session_type/task_key/link_method/summary stay "", and candidates becomes [""] (r.task_key.clone().into_iter().collect()).
Only bites when those columns actually hold "" rather than NULL (uncommon in practice — the classifier writes NULL), so low severity, but it's a JSON-shape divergence from the stated byte-identical goal. A .filter(|s| !s.is_empty()) on each (and on the candidates push) would match exactly.
_Originally posted by @Akarsh-Hegde in https://github.com/Meridiona/meridian/pull/298#discussion_r3420664905_