[Feature] Emit Postbox delivery, vacancy, assignment, and escalation notifications #20

Closed
opened 2026-07-28 18:59:05 +02:00 by zemion · 3 comments
Owner

Outcome

Eligible incumbents receive useful notifications for durable Postbox events without duplicating the Postbox as another notification store or leaking message content.

Acceptance criteria

  • Emit versioned events for delivery accepted, newly visible through assignment/delegation, vacancy, escalation due, reassignment, read/acknowledged, and action required.
  • Notifications resolves current recipients from IDM in batches and links back to the source postbox/message and acting context.
  • Do not include sensitive body/attachment content in event payloads; include only stable ids, classification-safe summary, and provenance.
  • Deduplicate retries and assignment churn; withdrawing access removes future deep-link usability but does not rewrite audit history.
  • Respect user notification preferences, quiet periods, classification restrictions, and future email/push channel policy.
  • Keep notification delivery optional: Postbox remains correct when Notifications is absent.

Dependencies

Builds on effective IDM lifecycle events, Postbox delivery/access foundations, and parent user story #16.

## Outcome Eligible incumbents receive useful notifications for durable Postbox events without duplicating the Postbox as another notification store or leaking message content. ## Acceptance criteria - Emit versioned events for delivery accepted, newly visible through assignment/delegation, vacancy, escalation due, reassignment, read/acknowledged, and action required. - Notifications resolves current recipients from IDM in batches and links back to the source postbox/message and acting context. - Do not include sensitive body/attachment content in event payloads; include only stable ids, classification-safe summary, and provenance. - Deduplicate retries and assignment churn; withdrawing access removes future deep-link usability but does not rewrite audit history. - Respect user notification preferences, quiet periods, classification restrictions, and future email/push channel policy. - Keep notification delivery optional: Postbox remains correct when Notifications is absent. ## Dependencies Builds on effective IDM lifecycle events, Postbox delivery/access foundations, and parent user story #16.
Author
Owner

Codex State: progress

Postbox emits versioned delivery/read/ack/evidence/lifecycle events and optionally dispatches one privacy-minimal in-app notification per current incumbent with a message deep link. Retries do not duplicate notifications. Newly-visible, vacancy, scheduled expiry, escalation, and preference-aware multi-channel notification behavior remain open.

## Codex State: progress Postbox emits versioned delivery/read/ack/evidence/lifecycle events and optionally dispatches one privacy-minimal in-app notification per current incumbent with a message deep link. Retries do not duplicate notifications. Newly-visible, vacancy, scheduled expiry, escalation, and preference-aware multi-channel notification behavior remain open.
zemion added
status
in-progress
and removed
status
ready
labels 2026-07-29 00:20:19 +02:00
Author
Owner

Codex State: progress

The delivery notification path remains optional and the new postbox.unread Tasks projection supplies a second, content-safe attention mechanism without duplicating the message store. Shared current-principal resolution now covers account, group, role, function, and function-assignment context.

This issue remains open for vacancy, assignment/delegation visibility, escalation, reassignment, acknowledgement event coverage, batching, quiet periods, and classification-aware channel policy.

## Codex State: progress The delivery notification path remains optional and the new `postbox.unread` Tasks projection supplies a second, content-safe attention mechanism without duplicating the message store. Shared current-principal resolution now covers account, group, role, function, and function-assignment context. This issue remains open for vacancy, assignment/delegation visibility, escalation, reassignment, acknowledgement event coverage, batching, quiet periods, and classification-aware channel policy.
Author
Owner

Implemented and verified in Core 0aae6f0, Postbox 8a21876, and Notifications 5c28ac5.

Acceptance evidence:

  • The existing delivery/read/acknowledgement events are complemented by versioned action-required, escalation-due, newly-visible assignment/delegation, vacancy detected/resolved, reassignment, and visibility-withdrawn events.
  • The periodic Postbox worker resolves IDM incumbencies in bounded tenant batches and advances a durable metadata-only reconciliation cursor. First deployment establishes a quiet baseline; later assignment churn is deduplicated.
  • Notification handoffs are optional and retryable. Failed handoffs do not duplicate platform events, and Postbox remains authoritative when Notifications is absent.
  • Producer modules can set the typed action_required flag through both the Core capability and REST delivery contract.
  • Event and notification payloads contain stable IDs, classification, and provenance only; tests assert that message subject/body and attachment details are never copied.
  • Newly eligible current holders receive generic in-app links. Assignment/delegation and Postbox authorization are re-evaluated on open, so stale links never preserve authority.
  • Notifications now enforces personal source mutes across account, membership, and identity recipient identifiers for both list and badge summaries; tenant-administrator evidence views remain complete. Postbox sends only inbox notifications, leaving quiet-period and future external-channel policy with Notifications.
  • Documentation was updated in the owning Postbox and Notifications manifests, README, and concept document.

Verification:

  • Postbox: 55 tests passed.
  • Notifications: 18 tests passed.
  • Core Postbox worker: 3 tests passed; Core full module suite: 128 tests passed within the focused run.
  • Manifest registry: 68/68.
  • Full tools/checks/check-focused.sh passed, including 1,763 Python syntax checks, backend and migration suites, 57 WebUI permutations, seven Playwright conformance tests, and module UI checks.
Implemented and verified in Core 0aae6f0, Postbox 8a21876, and Notifications 5c28ac5. Acceptance evidence: - The existing delivery/read/acknowledgement events are complemented by versioned action-required, escalation-due, newly-visible assignment/delegation, vacancy detected/resolved, reassignment, and visibility-withdrawn events. - The periodic Postbox worker resolves IDM incumbencies in bounded tenant batches and advances a durable metadata-only reconciliation cursor. First deployment establishes a quiet baseline; later assignment churn is deduplicated. - Notification handoffs are optional and retryable. Failed handoffs do not duplicate platform events, and Postbox remains authoritative when Notifications is absent. - Producer modules can set the typed action_required flag through both the Core capability and REST delivery contract. - Event and notification payloads contain stable IDs, classification, and provenance only; tests assert that message subject/body and attachment details are never copied. - Newly eligible current holders receive generic in-app links. Assignment/delegation and Postbox authorization are re-evaluated on open, so stale links never preserve authority. - Notifications now enforces personal source mutes across account, membership, and identity recipient identifiers for both list and badge summaries; tenant-administrator evidence views remain complete. Postbox sends only inbox notifications, leaving quiet-period and future external-channel policy with Notifications. - Documentation was updated in the owning Postbox and Notifications manifests, README, and concept document. Verification: - Postbox: 55 tests passed. - Notifications: 18 tests passed. - Core Postbox worker: 3 tests passed; Core full module suite: 128 tests passed within the focused run. - Manifest registry: 68/68. - Full tools/checks/check-focused.sh passed, including 1,763 Python syntax checks, backend and migration suites, 57 WebUI permutations, seven Playwright conformance tests, and module UI checks.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-postbox#20