Problem. #96 rejects a blank [module].name, but validate_module_name still accepts surrounding whitespace: name = "cow " survives parse, becomes a state-directory component with a trailing space, and downstream consumers that bind ids to the manifest name (videre venue ids) inherit the invisible mismatch.
Scope. Extend validate_module_name to reject a name that is not equal to its own trim. Follows the #96 pattern: two lines plus tests. Reject, do not trim: a silent trim makes two spellings one name.
Dependencies. None. Refs: #96, nullislabs/videre-nexum-module#39.
AI Assistance: Claude Fable filed this as the upstream half of videre #39 (2026-08-06 groom).
Problem. #96 rejects a blank
[module].name, butvalidate_module_namestill accepts surrounding whitespace:name = "cow "survives parse, becomes a state-directory component with a trailing space, and downstream consumers that bind ids to the manifest name (videre venue ids) inherit the invisible mismatch.Scope. Extend
validate_module_nameto reject a name that is not equal to its own trim. Follows the #96 pattern: two lines plus tests. Reject, do not trim: a silent trim makes two spellings one name.Dependencies. None. Refs: #96, nullislabs/videre-nexum-module#39.
AI Assistance: Claude Fable filed this as the upstream half of videre #39 (2026-08-06 groom).