feat(roles): expose each role's stable machine key on ListRoles

What

Adds a key field to RoleInfo (the ListRoles RPC's wire type) and to the domain Role type, so a caller gets each role's stable machine identifier (e.g. artifact_admin) alongside its id and name.

Why

Every role YAML definition already carries a key (RoleDef::key), used internally to resolve inherits, but it was dropped before reaching Role or the wire. Callers were left hardcoding a role's UUID instead of referencing it by a stable name the way they reference their own roles internally.

Changes

  • RoleInfo proto message gains string key = 3.
  • Role gains pub key: String; resolve_roles now carries RoleDef::key onto it.
  • list_roles() sets key on the outgoing RoleInfo.
  • Test fixtures across glaz-roles and glaz-engine updated to construct Role with a key.

Testing

  • cargo test --workspace passes
  • cargo clippy --workspace --all-targets is clean
  • cargo fmt --all --check is clean

Author checklist

  • Title follows Conventional Commits and breaking changes are flagged
  • Docs / comments updated where behaviour changed
  • No unrelated changes swept in

Merge request reports

Loading
Loading