Skip to content

Release: develop -> main - #4573

Merged
TaprootFreak merged 1 commit into
mainfrom
develop
Aug 1, 2026
Merged

Release: develop -> main#4573
TaprootFreak merged 1 commit into
mainfrom
develop

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 1, 2026

Copy link
Copy Markdown

Automatic Release PR

This PR was automatically created after changes were pushed to develop.

Commits: 1 new commit(s)

Checklist

  • Review all changes
  • Verify CI passes
  • Approve and merge when ready for production

* Base staff clearance on a verified name rather than a KYC level

Staff clearance required a KYC level of 50 on top of a verified name. That level is unreachable for the DEBUG role — which is not part of the USER role hierarchy and so cannot traverse the KYC flow — and impossible for the service accounts that legitimately hold a gated role, so those callers could never satisfy the gate.

Base clearance on the verified name alone. A verified name is only ever set by an identity-verified path or a reviewed migration, never self-service, so it remains the authoritative identification signal behind a gated account. The role condition, the fail-closed semantics, and the blank-name handling are unchanged.

* Require a verified name before assigning an elevated role

Clearance now rests on the verified name, so the write side must uphold the same invariant: an account may only be given a gated role (Admin, Debug, Compliance, Support, RealUnit) when a verified name is already behind it. Without this, a faceless staff account with no identification signal could be created and would immediately be cleared.

Guard the admin role assignment in updateUserInternal — the only API path that sets an arbitrary role (PUT /user/:id via UpdateUserInternalDto; sign-up and self-service DTOs carry no role field, and createUser only ever receives an internal, non-gated role). Blankness matches the clearance definition, and the account data is reloaded when the relation was not hydrated so the check cannot be slipped past.

* Update the protected-file test to the verified-name message

The staff-clearance message no longer mentions a KYC level, so the getFileByUid protected-file assertion must match the verified-name wording instead.
@TaprootFreak
TaprootFreak merged commit 1516f05 into main Aug 1, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant