[Feature] Emit notifications for core module installer queue lifecycle #248

Closed
opened 2026-07-13 01:57:44 +02:00 by zemion · 1 comment
Owner

Connect the file-backed core module installer queue to the notification capability so long-running package/install work reports useful lifecycle events.

Acceptance Criteria

  • Emit an in-app notification when a module installer request is queued and when a worker claims it.
  • Emit completion, failure, cancellation, and rollback-result notifications with links back to the module management UI/run record.
  • Keep the installer usable when notifications are disabled or unavailable.
  • Avoid leaking secrets from installer logs, command lines, environment-derived values, or run records into notification payloads.
  • Add focused tests for notification emission and disabled-notifications fallback.

Notes

  • The installer queue currently persists JSON records under the runtime directory, while notifications are DB-backed; the implementation should add a narrow bridge rather than making module_installer import optional module code.
Connect the file-backed core module installer queue to the notification capability so long-running package/install work reports useful lifecycle events. ## Acceptance Criteria - [ ] Emit an in-app notification when a module installer request is queued and when a worker claims it. - [ ] Emit completion, failure, cancellation, and rollback-result notifications with links back to the module management UI/run record. - [ ] Keep the installer usable when notifications are disabled or unavailable. - [ ] Avoid leaking secrets from installer logs, command lines, environment-derived values, or run records into notification payloads. - [ ] Add focused tests for notification emission and disabled-notifications fallback. ## Notes - The installer queue currently persists JSON records under the runtime directory, while notifications are DB-backed; the implementation should add a narrow bridge rather than making module_installer import optional module code. <!-- codex-source:notification-followups-2026-07-13 -->
Author
Owner

Codex State: done

Summary

  • Installer requests now carry tenant_id so daemon-side lifecycle events can produce tenant-scoped notifications.
  • Admin queue/cancel/retry actions emit best-effort notification events through the notifications.dispatch capability.
  • The installer daemon emits running/completed/failed notifications through the same capability when notifications is enabled; it no-ops if unavailable.

Changed Files

  • src/govoplan_core/core/module_installer.py
  • src/govoplan_core/core/module_installer_notifications.py
  • src/govoplan_core/commands/module_installer.py
  • ../govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py

Verification

  • python -m unittest tests.test_module_system.ModuleSystemTests.test_module_installer_request_queue_round_trips: OK
  • python -m py_compile touched Python files: OK
  • ruff focused checks for new/touched bridge files: OK
## Codex State: done ### Summary - Installer requests now carry tenant_id so daemon-side lifecycle events can produce tenant-scoped notifications. - Admin queue/cancel/retry actions emit best-effort notification events through the notifications.dispatch capability. - The installer daemon emits running/completed/failed notifications through the same capability when notifications is enabled; it no-ops if unavailable. ### Changed Files - `src/govoplan_core/core/module_installer.py` - `src/govoplan_core/core/module_installer_notifications.py` - `src/govoplan_core/commands/module_installer.py` - `../govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py` ### Verification - `python -m unittest tests.test_module_system.ModuleSystemTests.test_module_installer_request_queue_round_trips: OK` - `python -m py_compile touched Python files: OK` - `ruff focused checks for new/touched bridge files: OK`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: add-ideas/govoplan-core#248
No description provided.