[Feature] Make modules installable, activatable, deactivatable, and uninstallable via the admin interface, including migration and rollback constraints #36

Closed
opened 2026-07-06 11:31:54 +02:00 by zemion · 12 comments
Owner

Imported from the consolidated GovOPlaN product backlog.

  • Source: /mnt/DATA/Nextcloud/ADD ideas UG/Products/govoplan/backlog.md
  • Line: 222
  • Section: Milestones > Milestone 13 - Full Module Administration
  • Source status: OPEN.

Imported backlog item:

- [ ] Make modules installable, activatable, deactivatable, and uninstallable via the admin interface, including migration and rollback constraints.
<!-- codex-backlog-fingerprint:45adcc4409098d8bb7116b5b --> Imported from the consolidated GovOPlaN product backlog. - Source: `/mnt/DATA/Nextcloud/ADD ideas UG/Products/govoplan/backlog.md` - Line: `222` - Section: `Milestones > Milestone 13 - Full Module Administration` - Source status: `OPEN.` Imported backlog item: ```markdown - [ ] Make modules installable, activatable, deactivatable, and uninstallable via the admin interface, including migration and rollback constraints. ```
zemion added this to the Milestone 13 - Full Module Administration milestone 2026-07-06 13:07:03 +02:00
Author
Owner

Codex State: progress

Summary

  • Implemented safe module install-plan layer: admin API stores tagged install/uninstall intent, renders operator commands, and preserves desired module state separately.
  • Added maintenance-mode foundation with system:maintenance:access enforcement for authenticated API calls and a public platform status payload for login-screen UI.

Changed Files

  • src/govoplan_core/core/module_management.py
  • src/govoplan_core/core/maintenance.py
  • src/govoplan_core/commands/module_install_plan.py
  • src/govoplan_core/server/platform.py
  • src/govoplan_core/security/permissions.py
  • ../govoplan-access/src/govoplan_access/backend/auth/dependencies.py
  • ../govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py
  • ../govoplan-admin/src/govoplan_admin/backend/api/v1/schemas.py
  • ../govoplan-admin/webui/src/features/admin/ModuleManagementPanel.tsx
  • ../govoplan-admin/webui/src/features/admin/SystemSettingsPanel.tsx
  • docs/MODULE_ARCHITECTURE.md
  • docs/RELEASE_DEPENDENCIES.md

Verification

  • ./.venv/bin/python -m compileall src/govoplan_core ../govoplan-access/src/govoplan_access ../govoplan-admin/src/govoplan_admin
  • ./.venv/bin/python -m unittest tests.test_module_system
  • cd webui && PATH=/mnt/DATA/git/govoplan-core/webui/node_modules/.bin:/home/zemion/.nvm/versions/node/v22.22.3/bin:/home/zemion/.codex/tmp/arg0/codex-arg0EWzbZZ:/app/bin:/app/bin:/app/bin:/usr/bin:/usr/lib/sdk/openjdk25/bin:/home/zemion/.var/app/com.vscodium.codium/data/node/bin:/home/zemion/.var/app/com.vscodium.codium/data/cargo/bin:/home/zemion/.var/app/com.vscodium.codium/data/python/bin:/home/zemion/.var/app/com.vscodium.codium/data/codium/extensions/openai.chatgpt-26.5623.101652-linux-x64/bin/linux-x86_64 /home/zemion/.nvm/versions/node/v22.22.3/bin/npm run build

Next / Blocked

  • Remaining for this issue: trusted package installer/rollback design, frontend bundle/package loading strategy, and uninstall guards that verify data/workers/routes before package removal.

Suggested status label: status/in-progress

## Codex State: progress ### Summary - Implemented safe module install-plan layer: admin API stores tagged install/uninstall intent, renders operator commands, and preserves desired module state separately. - Added maintenance-mode foundation with system:maintenance:access enforcement for authenticated API calls and a public platform status payload for login-screen UI. ### Changed Files - `src/govoplan_core/core/module_management.py` - `src/govoplan_core/core/maintenance.py` - `src/govoplan_core/commands/module_install_plan.py` - `src/govoplan_core/server/platform.py` - `src/govoplan_core/security/permissions.py` - `../govoplan-access/src/govoplan_access/backend/auth/dependencies.py` - `../govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py` - `../govoplan-admin/src/govoplan_admin/backend/api/v1/schemas.py` - `../govoplan-admin/webui/src/features/admin/ModuleManagementPanel.tsx` - `../govoplan-admin/webui/src/features/admin/SystemSettingsPanel.tsx` - `docs/MODULE_ARCHITECTURE.md` - `docs/RELEASE_DEPENDENCIES.md` ### Verification - `./.venv/bin/python -m compileall src/govoplan_core ../govoplan-access/src/govoplan_access ../govoplan-admin/src/govoplan_admin` - `./.venv/bin/python -m unittest tests.test_module_system` - `cd webui && PATH=/mnt/DATA/git/govoplan-core/webui/node_modules/.bin:/home/zemion/.nvm/versions/node/v22.22.3/bin:/home/zemion/.codex/tmp/arg0/codex-arg0EWzbZZ:/app/bin:/app/bin:/app/bin:/usr/bin:/usr/lib/sdk/openjdk25/bin:/home/zemion/.var/app/com.vscodium.codium/data/node/bin:/home/zemion/.var/app/com.vscodium.codium/data/cargo/bin:/home/zemion/.var/app/com.vscodium.codium/data/python/bin:/home/zemion/.var/app/com.vscodium.codium/data/codium/extensions/openai.chatgpt-26.5623.101652-linux-x64/bin/linux-x86_64 /home/zemion/.nvm/versions/node/v22.22.3/bin/npm run build` ### Next / Blocked - Remaining for this issue: trusted package installer/rollback design, frontend bundle/package loading strategy, and uninstall guards that verify data/workers/routes before package removal. Suggested status label: `status/in-progress`
Author
Owner

Codex State: progress

Summary

  • Tightened maintenance enforcement on interactive login: non-bypass users now receive the maintenance 503 before a session is created.

Changed Files

  • ../govoplan-access/src/govoplan_access/backend/api/v1/auth.py

Verification

  • ./.venv/bin/python -m compileall src/govoplan_core ../govoplan-access/src/govoplan_access ../govoplan-admin/src/govoplan_admin
  • ./.venv/bin/python -m unittest tests.test_module_system

Suggested status label: status/in-progress

## Codex State: progress ### Summary - Tightened maintenance enforcement on interactive login: non-bypass users now receive the maintenance 503 before a session is created. ### Changed Files - `../govoplan-access/src/govoplan_access/backend/api/v1/auth.py` ### Verification - `./.venv/bin/python -m compileall src/govoplan_core ../govoplan-access/src/govoplan_access ../govoplan-admin/src/govoplan_admin` - `./.venv/bin/python -m unittest tests.test_module_system` Suggested status label: `status/in-progress`
Author
Owner

Codex State: progress

Summary

  • Added trusted module installer CLI with preflight, maintenance-mode requirement, uninstall guards, runtime lock, run records, pip/WebUI snapshots, dry-run, apply, and rollback support.
  • Admin module manager now returns/displays installer preflight blockers and the canonical govoplan-module-installer workflow.
  • Documented the current frontend strategy: package install plus WebUI rebuild/reload; true remote runtime bundle loading remains a separate hardening track.

Changed Files

  • src/govoplan_core/core/module_installer.py
  • src/govoplan_core/commands/module_installer.py
  • src/govoplan_core/core/module_management.py
  • pyproject.toml
  • ../govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py
  • ../govoplan-admin/src/govoplan_admin/backend/api/v1/schemas.py
  • ../govoplan-admin/webui/src/api/admin.ts
  • ../govoplan-admin/webui/src/features/admin/ModuleManagementPanel.tsx
  • webui/src/styles/components.css
  • docs/MODULE_ARCHITECTURE.md
  • docs/RELEASE_DEPENDENCIES.md
  • tests/test_module_system.py

Verification

  • ./.venv/bin/python -m compileall src/govoplan_core ../govoplan-admin/src/govoplan_admin
  • ./.venv/bin/python -m unittest tests.test_module_system
  • cd webui && PATH=/mnt/DATA/git/govoplan-core/webui/node_modules/.bin:/home/zemion/.nvm/versions/node/v22.22.3/bin:/home/zemion/.codex/tmp/arg0/codex-arg0EWzbZZ:/app/bin:/app/bin:/app/bin:/usr/bin:/usr/lib/sdk/openjdk25/bin:/home/zemion/.var/app/com.vscodium.codium/data/node/bin:/home/zemion/.var/app/com.vscodium.codium/data/cargo/bin:/home/zemion/.var/app/com.vscodium.codium/data/python/bin:/home/zemion/.var/app/com.vscodium.codium/data/codium/extensions/openai.chatgpt-26.5623.101652-linux-x64/bin/linux-x86_64 /home/zemion/.nvm/versions/node/v22.22.3/bin/npm run build
  • ./.venv/bin/python scripts/check_dependency_boundaries.py

Next / Blocked

  • Remaining later: signed remote runtime WebUI bundle loader if we want package changes without rebuilding/reloading the shell.

Suggested status label: status/in-progress

## Codex State: progress ### Summary - Added trusted module installer CLI with preflight, maintenance-mode requirement, uninstall guards, runtime lock, run records, pip/WebUI snapshots, dry-run, apply, and rollback support. - Admin module manager now returns/displays installer preflight blockers and the canonical govoplan-module-installer workflow. - Documented the current frontend strategy: package install plus WebUI rebuild/reload; true remote runtime bundle loading remains a separate hardening track. ### Changed Files - `src/govoplan_core/core/module_installer.py` - `src/govoplan_core/commands/module_installer.py` - `src/govoplan_core/core/module_management.py` - `pyproject.toml` - `../govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py` - `../govoplan-admin/src/govoplan_admin/backend/api/v1/schemas.py` - `../govoplan-admin/webui/src/api/admin.ts` - `../govoplan-admin/webui/src/features/admin/ModuleManagementPanel.tsx` - `webui/src/styles/components.css` - `docs/MODULE_ARCHITECTURE.md` - `docs/RELEASE_DEPENDENCIES.md` - `tests/test_module_system.py` ### Verification - `./.venv/bin/python -m compileall src/govoplan_core ../govoplan-admin/src/govoplan_admin` - `./.venv/bin/python -m unittest tests.test_module_system` - `cd webui && PATH=/mnt/DATA/git/govoplan-core/webui/node_modules/.bin:/home/zemion/.nvm/versions/node/v22.22.3/bin:/home/zemion/.codex/tmp/arg0/codex-arg0EWzbZZ:/app/bin:/app/bin:/app/bin:/usr/bin:/usr/lib/sdk/openjdk25/bin:/home/zemion/.var/app/com.vscodium.codium/data/node/bin:/home/zemion/.var/app/com.vscodium.codium/data/cargo/bin:/home/zemion/.var/app/com.vscodium.codium/data/python/bin:/home/zemion/.var/app/com.vscodium.codium/data/codium/extensions/openai.chatgpt-26.5623.101652-linux-x64/bin/linux-x86_64 /home/zemion/.nvm/versions/node/v22.22.3/bin/npm run build` - `./.venv/bin/python scripts/check_dependency_boundaries.py` ### Next / Blocked - Remaining later: signed remote runtime WebUI bundle loader if we want package changes without rebuilding/reloading the shell. Suggested status label: `status/in-progress`
Author
Owner

Codex State: progress

Summary

  • Implemented supervised installer hardening: SQLite DB snapshot/restore for --migrate, fresh-process manifest verification, migration-retirement uninstall blocker, and admin run-history/lock endpoints plus UI.

Changed Files

  • src/govoplan_core/core/module_installer.py
  • src/govoplan_core/commands/module_verify.py
  • ../govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py
  • ../govoplan-admin/webui/src/features/admin/ModuleManagementPanel.tsx

Verification

  • ./.venv/bin/python -m unittest tests.test_module_system (26 tests, OK)
  • /home/zemion/.nvm/versions/node/v22.22.3/bin/npm run build in govoplan-core/webui (OK)

Suggested status label: status/in-progress

## Codex State: progress ### Summary - Implemented supervised installer hardening: SQLite DB snapshot/restore for --migrate, fresh-process manifest verification, migration-retirement uninstall blocker, and admin run-history/lock endpoints plus UI. ### Changed Files - `src/govoplan_core/core/module_installer.py` - `src/govoplan_core/commands/module_verify.py` - `../govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py` - `../govoplan-admin/webui/src/features/admin/ModuleManagementPanel.tsx` ### Verification - `./.venv/bin/python -m unittest tests.test_module_system (26 tests, OK)` - `/home/zemion/.nvm/versions/node/v22.22.3/bin/npm run build in govoplan-core/webui (OK)` Suggested status label: `status/in-progress`
Author
Owner

Codex State: progress

Summary

  • Extended installer rollback to cover deployment-provided database restore hooks in addition to SQLite snapshots, so supervised install/uninstall plans can fail back through package, WebUI, and database restore phases.

Changed Files

  • src/govoplan_core/core/module_installer.py
  • src/govoplan_core/commands/module_installer.py

Verification

  • ./.venv/bin/python -m unittest tests.test_module_system (28 tests, OK)

Suggested status label: status/in-progress

## Codex State: progress ### Summary - Extended installer rollback to cover deployment-provided database restore hooks in addition to SQLite snapshots, so supervised install/uninstall plans can fail back through package, WebUI, and database restore phases. ### Changed Files - `src/govoplan_core/core/module_installer.py` - `src/govoplan_core/commands/module_installer.py` ### Verification - `./.venv/bin/python -m unittest tests.test_module_system (28 tests, OK)` Suggested status label: `status/in-progress`
Author
Owner

Codex State: progress

Summary

  • Implemented the installer daemon handoff: admin/CLI can queue supervised install requests, govoplan-module-installer --daemon claims and executes them under the existing rollback/health logic, and request history is visible in admin and CLI.
  • Added file-backed module package catalog support via GOVOPLAN_MODULE_PACKAGE_CATALOG with admin UI integration for adding approved refs to install plans.
  • Extended supervisor process orchestration to support multiple restart commands and health URLs for web/worker/scheduler process sets.

Changed Files

  • src/govoplan_core/core/module_installer.py
  • src/govoplan_core/commands/module_installer.py
  • src/govoplan_core/core/module_package_catalog.py
  • ../govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py
  • ../govoplan-admin/webui/src/features/admin/ModuleManagementPanel.tsx

Verification

  • ./.venv/bin/python -m unittest tests.test_module_system (31 tests, OK)
  • /home/zemion/.nvm/versions/node/v22.22.3/bin/npm run build in govoplan-core/webui (OK)

Suggested status label: status/in-progress

## Codex State: progress ### Summary - Implemented the installer daemon handoff: admin/CLI can queue supervised install requests, govoplan-module-installer --daemon claims and executes them under the existing rollback/health logic, and request history is visible in admin and CLI. - Added file-backed module package catalog support via GOVOPLAN_MODULE_PACKAGE_CATALOG with admin UI integration for adding approved refs to install plans. - Extended supervisor process orchestration to support multiple restart commands and health URLs for web/worker/scheduler process sets. ### Changed Files - `src/govoplan_core/core/module_installer.py` - `src/govoplan_core/commands/module_installer.py` - `src/govoplan_core/core/module_package_catalog.py` - `../govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py` - `../govoplan-admin/webui/src/features/admin/ModuleManagementPanel.tsx` ### Verification - `./.venv/bin/python -m unittest tests.test_module_system (31 tests, OK)` - `/home/zemion/.nvm/versions/node/v22.22.3/bin/npm run build in govoplan-core/webui (OK)` Suggested status label: `status/in-progress`
Author
Owner

Codex State: progress

Summary

  • Added installer request cancellation and retry for queued/failed daemon handoffs.
  • Added daemon heartbeat/status reporting for CLI and admin UI.
  • Added package-catalog validation and migration-retirement provider contract scaffolding.

Changed Files

  • src/govoplan_core/core/module_installer.py
  • src/govoplan_core/commands/module_installer.py
  • src/govoplan_core/core/modules.py
  • src/govoplan_core/core/module_package_catalog.py
  • docs/MODULE_ARCHITECTURE.md
  • docs/RELEASE_DEPENDENCIES.md

Verification

  • ./.venv/bin/python -m unittest tests.test_module_system
  • npm run build in govoplan-core/webui
  • ./.venv/bin/python scripts/check_dependency_boundaries.py

Suggested status label: status/in-progress

## Codex State: progress ### Summary - Added installer request cancellation and retry for queued/failed daemon handoffs. - Added daemon heartbeat/status reporting for CLI and admin UI. - Added package-catalog validation and migration-retirement provider contract scaffolding. ### Changed Files - `src/govoplan_core/core/module_installer.py` - `src/govoplan_core/commands/module_installer.py` - `src/govoplan_core/core/modules.py` - `src/govoplan_core/core/module_package_catalog.py` - `docs/MODULE_ARCHITECTURE.md` - `docs/RELEASE_DEPENDENCIES.md` ### Verification - `./.venv/bin/python -m unittest tests.test_module_system` - `npm run build in govoplan-core/webui` - `./.venv/bin/python scripts/check_dependency_boundaries.py` Suggested status label: `status/in-progress`
Author
Owner

Codex State: progress

Summary

  • Recorded decisions: default uninstall is non-destructive, manual/shell daemon is the supported executor, and npm install/build stays daemon-driven.
  • Added Ed25519 signed package-catalog validation with approved channel checks and CLI signing support.
  • Added database restore-check command support before non-SQLite migrations; created PostgreSQL follow-up issue #207.

Changed Files

  • src/govoplan_core/core/module_package_catalog.py
  • src/govoplan_core/core/module_installer.py
  • src/govoplan_core/core/module_guards.py
  • src/govoplan_core/commands/module_installer.py
  • docs/MODULE_ARCHITECTURE.md
  • docs/RELEASE_DEPENDENCIES.md

Verification

  • ./.venv/bin/python -m unittest tests.test_module_system
  • npm run build in govoplan-core/webui
  • ./.venv/bin/python scripts/check_dependency_boundaries.py

Suggested status label: status/in-progress

## Codex State: progress ### Summary - Recorded decisions: default uninstall is non-destructive, manual/shell daemon is the supported executor, and npm install/build stays daemon-driven. - Added Ed25519 signed package-catalog validation with approved channel checks and CLI signing support. - Added database restore-check command support before non-SQLite migrations; created PostgreSQL follow-up issue #207. ### Changed Files - `src/govoplan_core/core/module_package_catalog.py` - `src/govoplan_core/core/module_installer.py` - `src/govoplan_core/core/module_guards.py` - `src/govoplan_core/commands/module_installer.py` - `docs/MODULE_ARCHITECTURE.md` - `docs/RELEASE_DEPENDENCIES.md` ### Verification - `./.venv/bin/python -m unittest tests.test_module_system` - `npm run build in govoplan-core/webui` - `./.venv/bin/python scripts/check_dependency_boundaries.py` Suggested status label: `status/in-progress`
Author
Owner

Codex State: progress

Summary

  • Implemented concrete admin/daemon install-uninstall flow: catalog entries save install plans, disabled installed modules generate uninstall plans, and daemon requests carry activation/removal options.
  • Installer now reconciles saved startup state after successful package changes and restores previous desired state when supervised rollback runs.

Changed Files

  • src/govoplan_core/core/module_management.py
  • src/govoplan_core/core/module_installer.py
  • src/govoplan_core/commands/module_installer.py
  • src/govoplan_admin/backend/api/v1/routes.py
  • src/govoplan_admin/backend/api/v1/schemas.py
  • webui/src/features/admin/ModuleManagementPanel.tsx
  • webui/src/api/admin.ts
  • docs/RELEASE_DEPENDENCIES.md
  • docs/MODULE_ARCHITECTURE.md

Verification

  • ./.venv/bin/python -m unittest tests.test_module_system: OK
  • ./.venv/bin/python -m py_compile /mnt/DATA/git/govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py /mnt/DATA/git/govoplan-admin/src/govoplan_admin/backend/api/v1/schemas.py: OK
  • npm run build in govoplan-core/webui: OK
  • ./.venv/bin/python scripts/check_dependency_boundaries.py: OK

Next / Blocked

  • Next remaining gap: true destructive retirement providers remain module-specific future work; default uninstall is non-destructive.

Suggested status label: status/in-progress

## Codex State: progress ### Summary - Implemented concrete admin/daemon install-uninstall flow: catalog entries save install plans, disabled installed modules generate uninstall plans, and daemon requests carry activation/removal options. - Installer now reconciles saved startup state after successful package changes and restores previous desired state when supervised rollback runs. ### Changed Files - `src/govoplan_core/core/module_management.py` - `src/govoplan_core/core/module_installer.py` - `src/govoplan_core/commands/module_installer.py` - `src/govoplan_admin/backend/api/v1/routes.py` - `src/govoplan_admin/backend/api/v1/schemas.py` - `webui/src/features/admin/ModuleManagementPanel.tsx` - `webui/src/api/admin.ts` - `docs/RELEASE_DEPENDENCIES.md` - `docs/MODULE_ARCHITECTURE.md` ### Verification - `./.venv/bin/python -m unittest tests.test_module_system: OK` - `./.venv/bin/python -m py_compile /mnt/DATA/git/govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py /mnt/DATA/git/govoplan-admin/src/govoplan_admin/backend/api/v1/schemas.py: OK` - `npm run build in govoplan-core/webui: OK` - `./.venv/bin/python scripts/check_dependency_boundaries.py: OK` ### Next / Blocked - Next remaining gap: true destructive retirement providers remain module-specific future work; default uninstall is non-destructive. Suggested status label: `status/in-progress`
Author
Owner

Codex State: progress

Summary

  • Added opt-in destructive module retirement via uninstall plan row destroy_data.
  • Added reusable table-drop retirement provider and registered providers for files, mail, campaigns, audit, and calendar.
  • Installer now snapshots the database before destructive retirement, drops module-owned tables while the package is still installed, and restores the snapshot if destructive package removal fails.

Changed Files

  • src/govoplan_core/core/modules.py
  • src/govoplan_core/core/module_guards.py
  • src/govoplan_core/core/module_management.py
  • src/govoplan_core/core/module_installer.py
  • /mnt/DATA/git/govoplan-files/src/govoplan_files/backend/manifest.py
  • /mnt/DATA/git/govoplan-mail/src/govoplan_mail/backend/manifest.py
  • /mnt/DATA/git/govoplan-campaign/src/govoplan_campaign/backend/manifest.py
  • /mnt/DATA/git/govoplan-audit/src/govoplan_audit/backend/manifest.py
  • /mnt/DATA/git/govoplan-calendar/src/govoplan_calendar/backend/manifest.py
  • /mnt/DATA/git/govoplan-admin/src/govoplan_admin/backend/api/v1/schemas.py
  • /mnt/DATA/git/govoplan-admin/webui/src/api/admin.ts
  • /mnt/DATA/git/govoplan-admin/webui/src/features/admin/ModuleManagementPanel.tsx
  • docs/MODULE_ARCHITECTURE.md
  • docs/RELEASE_DEPENDENCIES.md

Verification

  • ./.venv/bin/python -m unittest tests.test_module_system: OK
  • npm run build in govoplan-core/webui: OK
  • ./.venv/bin/python scripts/check_dependency_boundaries.py: OK
  • py_compile core/admin/module manifests: OK

Next / Blocked

  • Destructive retirement remains opt-in and table-oriented; future module-specific providers can retire external resources such as object storage or mailbox state.

Suggested status label: status/in-progress

## Codex State: progress ### Summary - Added opt-in destructive module retirement via uninstall plan row destroy_data. - Added reusable table-drop retirement provider and registered providers for files, mail, campaigns, audit, and calendar. - Installer now snapshots the database before destructive retirement, drops module-owned tables while the package is still installed, and restores the snapshot if destructive package removal fails. ### Changed Files - `src/govoplan_core/core/modules.py` - `src/govoplan_core/core/module_guards.py` - `src/govoplan_core/core/module_management.py` - `src/govoplan_core/core/module_installer.py` - `/mnt/DATA/git/govoplan-files/src/govoplan_files/backend/manifest.py` - `/mnt/DATA/git/govoplan-mail/src/govoplan_mail/backend/manifest.py` - `/mnt/DATA/git/govoplan-campaign/src/govoplan_campaign/backend/manifest.py` - `/mnt/DATA/git/govoplan-audit/src/govoplan_audit/backend/manifest.py` - `/mnt/DATA/git/govoplan-calendar/src/govoplan_calendar/backend/manifest.py` - `/mnt/DATA/git/govoplan-admin/src/govoplan_admin/backend/api/v1/schemas.py` - `/mnt/DATA/git/govoplan-admin/webui/src/api/admin.ts` - `/mnt/DATA/git/govoplan-admin/webui/src/features/admin/ModuleManagementPanel.tsx` - `docs/MODULE_ARCHITECTURE.md` - `docs/RELEASE_DEPENDENCIES.md` ### Verification - `./.venv/bin/python -m unittest tests.test_module_system: OK` - `npm run build in govoplan-core/webui: OK` - `./.venv/bin/python scripts/check_dependency_boundaries.py: OK` - `py_compile core/admin/module manifests: OK` ### Next / Blocked - Destructive retirement remains opt-in and table-oriented; future module-specific providers can retire external resources such as object storage or mailbox state. Suggested status label: `status/in-progress`
zemion added the
priority
p2
label 2026-07-08 03:01:06 +02:00
Author
Owner

Codex Progress Update

PostgreSQL backup/restore policy and rollback validation are now in place for the installer path. The rollback drill passed, including the PostgreSQL restore-check hook scenario.

Still open for this issue:

  • complete admin UI flow for install/update/uninstall
  • package acquisition/execution by the daemon in real deployments
  • retirement-provider UX and destructive uninstall guardrails
  • restart/no-restart lifecycle boundaries for routes, workers, permissions, and frontend bundles
## Codex Progress Update PostgreSQL backup/restore policy and rollback validation are now in place for the installer path. The rollback drill passed, including the PostgreSQL restore-check hook scenario. Still open for this issue: - complete admin UI flow for install/update/uninstall - package acquisition/execution by the daemon in real deployments - retirement-provider UX and destructive uninstall guardrails - restart/no-restart lifecycle boundaries for routes, workers, permissions, and frontend bundles
Author
Owner

Implemented at the current architecture level.

  • Admin API/UI supports module activation/deactivation for installed modules, install/uninstall package planning, catalog-derived install rows, non-destructive uninstall planning, explicit destroy-data retirement options, preflight blockers, maintenance-mode gating, installer daemon request queue, run summaries, and rollback status.
  • Core module architecture docs describe migration/rollback constraints, installer daemon flow, and non-destructive uninstall defaults.
  • This closes the admin-interface lifecycle backlog item; further production hardening can continue in narrower installer/catalog/ops issues.
Implemented at the current architecture level. - Admin API/UI supports module activation/deactivation for installed modules, install/uninstall package planning, catalog-derived install rows, non-destructive uninstall planning, explicit destroy-data retirement options, preflight blockers, maintenance-mode gating, installer daemon request queue, run summaries, and rollback status. - Core module architecture docs describe migration/rollback constraints, installer daemon flow, and non-destructive uninstall defaults. - This closes the admin-interface lifecycle backlog item; further production hardening can continue in narrower installer/catalog/ops issues.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

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