A Source backed by a directory tree laid out like a registry:
<root>/<namespace>/<name>/<version>.webc, or <root>/<name>/<version>.webc
for un-namespaced packages.
The package id encoded by a webc’s location under root
(<namespace>/<name>/<version>.webc or <name>/<version>.webc), if it
fits the layout. Used where a walk finds a file and its id must be derived
backwards; named lookups go the other way via package_dir_path.
Open one matched webc and build its summary. The layout’s id (when given)
wins over the manifest’s; a <stem>.sha256 sibling, if present, must match
the content.
Where the layout would keep a package’s published versions: the full
name’s components (namespace, then name) become path components under
root. Only builds the path — existence is the caller’s question.
None for names the layout can’t hold (empty or path-like components),
rather than letting them escape the root.