ADR-0129: Role Identity from a GLOBAL Assignment Acts in GLOBAL Alone¶
- Status: accepted (2026-08-29 — row 43, ruled "43 agree"; the residual half of the library-staffing catch that produced ADR-0128)
- Date: 2026-08-29
- Deciders: Nicolas Burri
- Relates to: ADR-0128 (the permission half — administration cascades, content does not),
V015 (
lqms_effective_roles, the function this amends), V037/V038/V072 (the holder views in the same family), ADR-0122 + rows 21–24 (org-level staffing — the MANDATOR cascade this deliberately KEEPS), ADR-0127 §1 (the library whose staffing needs this closed before the QMS team arrives).
Context¶
ADR-0128 stopped content PERMISSIONS cascading from GLOBAL — but workflow acts (approve,
release, revoke, review) are gated by ROLE IDENTITY (lqms_effective_roles; there is no
APPROVE permission), and role identity still cascades whole. A person holding a content role at
GLOBAL plus any independently-acquired VIEW in a project could exercise that GLOBAL role's
workflow authority there: the QMS librarian approving a customer project's documents. The
boundary ADR-0128 drew for reads and writes must hold for workflow authority too.
Decision¶
Role identity from an assignment at the GLOBAL scope is effective in GLOBAL alone. The
MANDATOR-anchor role cascade is UNCHANGED: org-level staffing of workflow roles into the org's
own projects is a ruled feature (rows 21–24, ADR-0122's sovereignty-flows-downhill), and it
stops at the organization boundary, which is exactly where the top quality goal lives.
Direct per-scope assignments are untouched. The rule lands in lqms_effective_roles and every
sibling that answers "who holds a role here" — the holder views, the authority view, the
notification fan-out — from one shared predicate, so the answers cannot diverge; the build
inventories the family and brings any hand-spelled copy into lockstep (the ADR-0128 precedent).
Consequences by persona: the GLOBAL-staffed QMS team authors, reviews and releases IN THE
LIBRARY and nowhere else; an org's QM staffed at the anchor keeps every project of that org;
lqms-admin is untouched (administration never rode role identity). Rejected: a per-role
cascade flag (a second mechanism; the scope of an assignment IS the statement of reach).
Consequences¶
- The two reach systems now state one philosophy: a GLOBAL grant means "run the installation and work in the library" — never "act inside someone's project".
- Sequenced BEFORE the genesis rebuild's staffing phase (checklist G-5), so the QMS team is staffed under the complete rule from day one.
- Migration V122; the guard family (
GlobalCascadeClassificationTest's sibling) pins the predicate structurally.