Profiles (removed)
The Profile concept was removed by ADR-0090 D2. Baseline access is now authored with the everyone audience anchor, package isDefault suggestions, and ordinary permission sets distributed via positions.
Profiles — removed (ADR-0090 D2)
ObjectStack no longer has a Profile concept. It was removed pre-launch (ADR-0090 D2) because it duplicated permission sets while adding a second mental model: admins had to learn "the ONE primary set" vs "add-on sets", every user needed a profile picked, and packaged profiles could not compose across packages without an owner.
Everything a profile did is expressed with the remaining vocabulary:
| You wanted a profile for… | Author it as… |
|---|---|
| A user's baseline permissions | A permission set bound to the everyone audience anchor (default grants for all authenticated users), or the configured baseline set (member_default) — both additive (ADR-0090 D5) |
| A package's default access posture | isDefault: true on the package's permission set — an install-time suggestion to bind it to everyone; the admin confirms, nothing auto-binds |
| A job function's permissions ("Sales Rep") | An ordinary permission set bound to a position (sales_rep) via sys_position_permission_set |
| Tab/app visibility defaults | tabPermissions on any permission set (unchanged) |
The former isProfile flag was deleted from PermissionSetSchema; the
profile metadata kind and its plural alias were removed from the metadata
registry. Restriction is done by not granting (the model is additive) —
never by authoring "subtraction profiles".
Migrating v1 metadata. Replace
isProfile: truewith eitherisDefault: true(if the set was the app's default posture) or nothing (if it was a job-function set — bind it to a position instead). The D7 publish linter and the schema both reject the old shape.
See also
- Permission Sets — the only capability container
- Positions — distribution, built-ins, and the
everyone/guestanchors - Decision record: ADR-0090 (D2, D5, D9) · Design reference:
docs/design/permission-model.md