ADR-0053: Addressees Per Document + Process Owner (amends ADR-0052 K-1)¶
- Status: accepted
- Amended by: ADR-0054 (owner is a ROLE, not a user)
- Date: 2026-07-07
- Deciders: Nicolas Burri ("sounds all good" to P-1a..P-4a; wants a nice multi-select)
- Amends: ADR-0052 (K-1 addressee declaration — moves from type-primary to document-primary); the fan-out / ack-record / late-joiner-sweep / status-view machinery of ADR-0052 is unchanged.
- Relates to the DECIDED checkpoint addressees-per-document-design.md
Context¶
Demo feedback (2026-07-07): addressees genuinely differ per document, not per type — a Marketing
SOP and a Development SOP share type=SOP but have disjoint audiences. ADR-0052's type-level
policy is too coarse to be the primary declaration. Nicolas also named a second per-document
concept: the process owner (responsible for the SOP), distinct from addressees (must be
trained on it).
Decisions (P-1a..P-4a)¶
- Per-document addressees are primary; type policy is an optional pre-fill default (P-1a).
Each document carries its own addressee role-set (
document_addressee_role(document_id, scope_id, role_id)— promote the ADR-0052 delta table to a first-class direct set; the add/removeincludeddelta is dropped). A document type's acknowledgement policy still exists as: (i) therequiresAckflag and (ii) a default role-set that PRE-FILLS a new document's addressees, which the author then edits freely. Type policy is a convenience + the requires-ack switch, not a governance lock. - Declaring addressees is an authoring act (P-2a). Editable on the DRAFT by the EDIT_DRAFT holder (the author/owner knows the audience), in the create form and the draft editor — document metadata, like folder placement, not frozen content. Audited. A MANAGE_TRAINING officer retains oversight (may view/adjust) but authoring does not require them. UI: a multi-select of the scope's roles (Nicolas's ask — a proper chip/checkbox multiselect, pre-filled from the type default).
- Process owner per document (P-3a), now. A per-document
owner(a user in scope) declared at authoring, shown on the detail page, audited — distinct from addressees (responsible-for ≠ must-read). Natural future tie-in: periodic-review / revision prompts address the owner (deferred refinement, not this slice). - Audience frozen per version (P-4a). The addressee set is captured with the released version; changing the audience means a new version (which re-fans acknowledgement anyway) — consistent with immutable released content. On release the fan-out reads the released document's addressee set (the per-document set, no longer the type policy's).
Consequences¶
- Migration Vnn:
document_addressee_roleas a first-class set (migrate/replace the ADR-0052 delta table — check whether any demo data exists; the T1 override table is new/empty so a clean replace is fine),document.owner_user_idnullable FK. Theacknowledgement_policykeepsrequiresAck+ default role-set (now pre-fill semantics). - Fan-out resolve step reads the document's own addressee roles (small change to
lqms_fanout_acknowledgement+ the late-joiner sweep — recreate per the established pattern). - Slices: T1.5 per-document addressees (schema promote, draft write path, multi-select UI in create + editor, detail display, fan-out resolve change); T1.6 process owner. Both amend ADR-0052 via this ADR.
- Requirements: refines the REQ-TRN realization (addressees per document); v1.7 citations.
- Deferred: owner-addressed periodic review; per-document questionnaire (T2).