D305 - A plain symbol name is hashed into a NID

Status: decided Date: 2026-08-26

A dynamic symbol whose name is not NID-encoded is hashed with the registry's hasher, so every RawImport carries a NID and resolves one way. Library and module attribution is a NameForm whose accessors return Option. The symbol count is read from DT_HASH when present and walked out of DT_GNU_HASH otherwise.

Why: a vendor module exporting socket publishes the hash of that name, so a plain name is a NID nobody hashed yet, not a second kind of import. Dropping names that do not decode reported a module with dozens of imports as needing none. A standard name carries no attribution, and reading it as library zero would misattribute every import. A stated count cannot be walked wrong.

Rejected: