Role system — builtin roles, role specs, and extensible role schema factory.
Defines the authorization policy vocabulary: which roles exist, their
required credential types, the scope kinds each role applies to, and
the grant paths through which each role can be granted. Each role
gets a structured RoleSpec; the factory create_role_schema merges
builtins with consumer-declared specs and validates every cross-axis
field against the corresponding open registries
(create_credential_type_schema, create_scope_kind_schema,
create_grant_path_schema) at construction time so misconfigurations
fire at server startup, not at first call.
RoleSpec carries the four cross-axis fields that the dispatcher
branches on: credential type, scope kind, grant path, and the
role-name itself. v1 keeps the cross-axis fields informative-only
(registry-membership validation, no INSERT-time enforcement); v2 may
add (role, scope_kind) enforcement once the shape is clear from
real consumer usage.