Replace the name-based heuristic ("/" not in name) in db_to_spec() with
the authoritative namespace column check (str(raw_ns) == "builtin"),
consistent with the existing _load_type_registry() implementation.
The old heuristic would misclassify custom resource types whose names
contain no "/" as built-in, potentially blocking their removal via
remove_type(). The namespace column is set to "builtin" by spec_to_db()
for all built-in types and to the actual namespace prefix for custom types,
making it the correct source of truth.
A name-heuristic fallback is retained for legacy rows where the namespace
column is NULL (e.g. rows inserted directly without going through
spec_to_db()).
New BDD scenarios added to resource_registry_service_coverage.feature:
- _db_to_spec sets built_in True when namespace column is "builtin"
- _db_to_spec sets built_in False when namespace column is not "builtin"
ISSUES CLOSED: #3013