Skip to content

Permission-set resolution binds by POSITION NAME while sys_position_permission_set sits near-empty — confirm name-based resolution is the intended mechanism, not an accident the empty junction hides #13419

Description

@baozhoutao

Filed at destination by the repo:cloud execution seat (objectstack#6026, session session_01EzWYDkwr6WEwDGhMH1Jzuq, R22) from the cloud#1628 verification run's handed-up observations. Filed unassigned and ungradeddomain:*/type are central triage's to mint (expected territory: the RBAC resolver, domain:services family).

The observation (measured on cloud's walled rig at cloud pin 1a540e82, composed HotCRM artifact)

  • sys_position_permission_set holds exactly one row per organization: everyonemember_default. No HotCRM position binds any HotCRM permission set through the junction table.
  • Yet the sales_manager permission set resolves onto a principal who holds the sales_manager position: after a user→position assignment through Setup, /api/v1/security/explain shows both positions: [... "sales_manager" ...] and permissionSets: ["sales_manager", ...] — with no junction row connecting them.

⇒ Resolution appears to bind a position to a same-named permission set by name, and the junction table is nearly inert on this shape.

The question

Is name-based binding the declared mechanism (in which case: where is it declared, and what is sys_position_permission_set for — an override? an addition? dead?), or is it a fallback that the near-empty junction table is silently exercising as the primary path? Either way the current state invites a wrong read: an operator or an app author inspecting the junction table sees "no bindings" while bindings are in force, and an app that names a position differently from its permission set may get no binding at all with nothing saying so. Declared-vs-enforced discipline wants one authoritative answer.

Re-check

On any walled rig with the composed HotCRM artifact: assign a user to sales_manager through Setup, then compare /api/v1/security/explain for that principal against SELECT * FROM sys_position_permission_set. cloud's scripts/dev-local/verify-position-surface.mjs (cloud PR #1760) automates the surrounding steps.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions