Software Requirements: Notifications & Tasks¶
Introduced in requirements baseline v1.2 (GAP-07, ADR-0019).
| ID | Requirement | Trace |
|---|---|---|
| REQ-NOT-001 | The system shall distinguish actionable tasks (tracked to completion) from informational notifications. | STR-023; ADR-0019 |
| REQ-NOT-002 | Tasks shall be generated from domain events (review requested, approval/signature required, rejection, periodic-review due/overdue, disposal-due, derivation source updated/revoked) and assigned to the role(s) required by the applicable review policy or to a specific user. | STR-007, STR-023; ADR-0019, ADR-0003 |
| REQ-NOT-003 | A task shall track state (open → done / cancelled) and auto-resolve when its underlying action is completed or no longer applies. | STR-023; ADR-0019 |
| REQ-NOT-004 | Tasks shall support configurable reminders and optional escalation (e.g. to a higher role or administrator) when overdue. | STR-007, STR-023; ADR-0019 |
| REQ-NOT-005 | Notifications shall inform users of relevant events (e.g. a derivation source released a new version, a source was revoked, a document was released) and track read/unread. | STR-023; ADR-0019, REQ-DOC-012, REQ-LC-013 |
| REQ-NOT-006 | Notifications and tasks shall be scope-keyed and subject to RLS; a user shall see only those for scopes they are authorized for. | STR-003, STR-023; ADR-0019, ADR-0009 |
| REQ-NOT-007 | Delivery shall always include an in-app inbox, plus a pluggable channel interface with an email implementation configurable per deployment; absence of email configuration shall not impair in-app delivery. | STR-023; ADR-0019 |
| REQ-NOT-008 | Overdue periodic reviews (REQ-EFF-007) and disposal-due records (REQ-DPR-005) shall surface as tasks. | STR-020, STR-021, STR-023; ADR-0019, ADR-0015, ADR-0016 |
| REQ-NOT-009 | Notifications and tasks are an operational layer; the authoritative record of actions remains the audit trail and they need not be retained as records. | STR-009, STR-023; ADR-0019, REQ-AUD-001 |
| REQ-NOT-010 | The system shall provide a session-authenticated live event channel (Server-Sent Events) that, after a domain transaction commits (never before commit), relays scope-filtered hints {scopeId, documentId, versionId, kind} (kinds: STATE_CHANGED, DOCUMENT_MOVED, DOCUMENT_CREATED, PRESENCE_CHANGED) to connections whose authorized scope set contains the event's scope. Payloads shall carry identifiers only — the channel is a refresh hint, not a data channel — so clients refetch through the normal RLS-checked API and a relay defect cannot become a separation defect. |
STR-007, STR-023, STR-003; ADR-0050, ADR-0034 |
| REQ-NOT-011 | Draft-editing presence shall be ephemeral: held in memory with a short TTL and heartbeat, never persisted, never audited, and not a controlled record. Presence broadcasts shall be scope-filtered at the relay and shall carry only data the receiver is already authorized to see (user display name and version id). Presence is advisory only; the optimistic-locking conflict path (REQ-DOC-016) remains the authoritative protection against concurrent overwrites. | STR-007, STR-003; ADR-0050 |