fn parse_dotted_path(raw: &str) -> Result<Vec<PathSeg>, String>Expand description
Parses a dotted path (user.cards.0.number), tolerating a leading $.
or $. Purely numeric segments become array indices. Empty segments
(e.g. a..b) are rejected.