Skip to content

1. Role and permission definition ADR #409

Description

@BryanttV

Description

This task is the foundation for the whole epic. It requires making concrete decisions about:

  • Declarative definition format: validate whether the YAML proposed in the document (roles, permissions, scope, display_name, description, resource) is sufficient or needs additional fields (schema version, contributing module namespace, etc).
  • Stable identifiers: define the naming convention for roles and permissions (e.g. course_observer, courses.view_course) so they don't collide across different modules.
  • Action inheritance: decide whether one permission can inherit from another (e.g. courses.edit_course implies courses.view_course) and how that's expressed in the schema.
  • Contribution attribution: decide what metadata gets stored to know which module contributed which role/permission.
  • Boundary for extending built-in roles: define how far a module can go in adding permissions to a core role without breaking security guarantees — can a third-party module extend the instructor role without restrictions?
  • Conflict handling: even though the document leaves this as an "open decision," the ADR should at least propose an initial stance (hard-fail on load? last-write-wins? require namespacing?).
  • Minimum required validations: duplicate identifiers, references to undefined permissions, unsupported scope types, conflicting metadata — the ADR should specify what happens in each case (hard-fail error vs. warning).

Concrete deliverable: ADR document approved by the team.

Metadata

Metadata

Labels

willowReleased in Willow

Type

No type

Projects

Status
Ready for Development

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions