pub fn validate_edge_type(edge_type: &str) -> Result<()>Expand description
Edge types are [A-Z0-9]+ (§4.1).
The constraint is not cosmetic: edge types are concatenated into
transaction_log.entity_id with | separators, so a type containing a
separator would corrupt the key that replay reads the log back by.
This comment used to also claim the constraint protected the traversal CTE,
which spliced edge types in as quoted literals. It did not: this function
runs from EdgeAssertion::normalized on the write path only, and
super::TraversalBuilder::edge_types never called it. The CTE now binds
them as parameters (D-039), so that half of the justification is gone rather
than merely unenforced.