[Feature] Add license entitlement diagnostics and issuance workflow hooks #211

Closed
opened 2026-07-07 15:03:34 +02:00 by zemion · 1 comment
Owner

Problem

Core can check offline license feature requirements for catalog installs, but operators need diagnostics and a path for issuance/renewal.

Proposed Capability

Add license status APIs and operator UI that show configured license id, subject, validity window, trusted signature state, available features, missing features for a selected catalog entry, and renewal/import guidance.

Acceptance Criteria

  • Admin module catalog panel shows license validity and missing entitlement details without exposing secrets.
  • CLI can validate a license file and print the trusted signature state.
  • Docs describe issuance, renewal, revocation, and emergency fallback.
  • Tests cover signed valid, expired, missing, unsigned, and missing-feature licenses.

Codex-Fingerprint: license-entitlement-diagnostics-issuance-hooks

## Problem Core can check offline license feature requirements for catalog installs, but operators need diagnostics and a path for issuance/renewal. ## Proposed Capability Add license status APIs and operator UI that show configured license id, subject, validity window, trusted signature state, available features, missing features for a selected catalog entry, and renewal/import guidance. ## Acceptance Criteria - [ ] Admin module catalog panel shows license validity and missing entitlement details without exposing secrets. - [ ] CLI can validate a license file and print the trusted signature state. - [ ] Docs describe issuance, renewal, revocation, and emergency fallback. - [ ] Tests cover signed valid, expired, missing, unsigned, and missing-feature licenses. Codex-Fingerprint: license-entitlement-diagnostics-issuance-hooks
Author
Owner

Codex State: done

Summary

  • Implemented license entitlement diagnostics and issuance hooks. Core now exposes signed offline license issuance, structured diagnostics, CLI validation/issuance flags, and trusted-key parsing shared with catalog validation. The admin module package catalog API now returns a license diagnostics block, and the admin WebUI package catalog panel displays license validity, trusted signature state, configured id/subject/window/key id, features, missing entitlements, and renewal guidance without exposing secrets. Docs now cover issuance, validation, renewal, revocation, and emergency fallback.

Changed Files

  • Core: src/govoplan_core/core/module_license.py, src/govoplan_core/commands/module_installer.py, tests/test_module_system.py, docs/CATALOG_TRUST_AND_LICENSING.md, docs/RELEASE_DEPENDENCIES.md. Admin: /mnt/DATA/git/govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py, schemas.py, webui/src/api/admin.ts, webui/src/features/admin/ModuleManagementPanel.tsx.

Verification

  • ./.venv/bin/python -m py_compile src/govoplan_core/core/module_license.py src/govoplan_core/commands/module_installer.py /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
  • ./.venv/bin/python -m unittest tests.test_module_system.ModuleSystemTests.test_module_license_decision_is_observe_only_unless_enforced tests.test_module_system.ModuleSystemTests.test_module_license_validates_signed_feature_license tests.test_module_system.ModuleSystemTests.test_module_license_issuer_writes_signed_license tests.test_module_system.ModuleSystemTests.test_module_license_diagnostics_report_expired_unsigned_missing_and_missing_feature tests.test_module_system.ModuleSystemTests.test_module_installer_cli_issues_and_validates_license tests.test_module_system.ModuleSystemTests.test_module_installer_validates_package_catalog_from_cli
  • PATH=/mnt/DATA/git/govoplan-core/webui/node_modules/.bin:/home/zemion/.nvm/versions/node/v22.22.3/bin:/home/zemion/.local/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 (from webui; passed, with existing npm tmp warning)
  • ./.venv/bin/python scripts/check_dependency_boundaries.py
  • git diff --check for changed core/admin files
  • ./.venv/bin/python -m unittest tests.test_module_system (53 tests passed; existing SQLite ResourceWarnings only)
## Codex State: done ### Summary - Implemented license entitlement diagnostics and issuance hooks. Core now exposes signed offline license issuance, structured diagnostics, CLI validation/issuance flags, and trusted-key parsing shared with catalog validation. The admin module package catalog API now returns a license diagnostics block, and the admin WebUI package catalog panel displays license validity, trusted signature state, configured id/subject/window/key id, features, missing entitlements, and renewal guidance without exposing secrets. Docs now cover issuance, validation, renewal, revocation, and emergency fallback. ### Changed Files - `Core: src/govoplan_core/core/module_license.py, src/govoplan_core/commands/module_installer.py, tests/test_module_system.py, docs/CATALOG_TRUST_AND_LICENSING.md, docs/RELEASE_DEPENDENCIES.md. Admin: /mnt/DATA/git/govoplan-admin/src/govoplan_admin/backend/api/v1/routes.py, schemas.py, webui/src/api/admin.ts, webui/src/features/admin/ModuleManagementPanel.tsx.` ### Verification - `./.venv/bin/python -m py_compile src/govoplan_core/core/module_license.py src/govoplan_core/commands/module_installer.py /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` - `./.venv/bin/python -m unittest tests.test_module_system.ModuleSystemTests.test_module_license_decision_is_observe_only_unless_enforced tests.test_module_system.ModuleSystemTests.test_module_license_validates_signed_feature_license tests.test_module_system.ModuleSystemTests.test_module_license_issuer_writes_signed_license tests.test_module_system.ModuleSystemTests.test_module_license_diagnostics_report_expired_unsigned_missing_and_missing_feature tests.test_module_system.ModuleSystemTests.test_module_installer_cli_issues_and_validates_license tests.test_module_system.ModuleSystemTests.test_module_installer_validates_package_catalog_from_cli` - `PATH=/mnt/DATA/git/govoplan-core/webui/node_modules/.bin:/home/zemion/.nvm/versions/node/v22.22.3/bin:/home/zemion/.local/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 (from webui; passed, with existing npm tmp warning)` - `./.venv/bin/python scripts/check_dependency_boundaries.py` - `git diff --check for changed core/admin files` - `./.venv/bin/python -m unittest tests.test_module_system (53 tests passed; existing SQLite ResourceWarnings only)`
zemion added the
type
feature
status
ready
area/module-system
labels 2026-07-07 23:07:49 +02:00
zemion added the
module/core
label 2026-07-07 23:41:30 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

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