Validates caller-owned collection identity independently of corpus I/O.
The public struct stays in DocShell.Generate.Collection for compatibility.
This module handles only descriptor fields and their portable representation;
it never reads artifacts, resolves source revisions, or contacts source URLs.
Atom and string field names are accepted, but aliases that collide are errors
so caller identity cannot depend on map enumeration order.
Summary
Functions
Normalizes a descriptor, returning structured validation errors.
Removes local import location and nil fields from validated identity.
Functions
@spec new(term()) :: {:ok, DocShell.Generate.Collection.t()} | {:error, term()}
Normalizes a descriptor, returning structured validation errors.
@spec portable(DocShell.Generate.Collection.t()) :: map()
Removes local import location and nil fields from validated identity.