Move platform admin services and models into owning modules #63
Closed
opened 2026-07-06 13:45:00 +02:00 by zemion
·
16 comments
Labels
Clear labels
area/api
HTTP API contracts, routers, schemas, or API smoke behavior.
area/auth
Authentication, sessions, access bootstrap, or login behavior.
area/db
Database sessions, models, transactions, or persistence primitives.
area/deployment
Deployment, release, operations, or runtime packaging.
area/devex
Local developer workflow, scripts, tests, tooling, or release helpers.
area/docs
Durable documentation and project guidance.
area/governance
Governance policy, audit, privacy, retention, or compliance behavior.
area/marketing
Public website, product messaging, publication copy, or legal page content.
area/migrations
Alembic migrations, schema bootstrap, or persistence evolution.
area/module-system
Module discovery, manifests, capabilities, routing, or optional integrations.
area/rbac
Permissions, roles, delegation, or authorization policy.
area/release
Versioning, release locks, tags, packaging, or dependency pins.
area/security
Security posture, static analysis, supply-chain hardening, or vulnerability remediation.
area/tenancy
Tenant boundaries, provisioning, or tenant-scoped data behavior.
area/webui
Shared WebUI shell, frontend components, routing, or frontend tests.
audit/complexity
Complexity finding from Radon, Xenon, or equivalent maintainability scans.
audit/duplication
Duplicated-code finding from jscpd or equivalent similarity scans.
audit/false-positive
Audit finding reviewed as a narrow false positive or acceptable risk.
audit/needs-design
Audit finding that needs an architectural or product decision before implementation.
audit/quick-fix
Audit finding that appears narrow and directly fixable.
audit/structural
Audit finding that needs design, refactoring, or behavior review.
codex/needs-human
Needs an explicit human decision before Codex should implement.
codex/ready
Suitable for Codex to pick up with the existing issue context.
module/access
GovOPlaN access, identity, authentication, RBAC, and administration behavior.
module/addresses
GovOPlaN Addresses module behavior or integration.
module/admin
GovOPlaN Admin module behavior or integration.
module/appointments
GovOPlaN Appointments module behavior or integration.
module/approvals
GovOPlaN Approvals module behavior or integration.
module/assets
GovOPlaN Assets module behavior or integration.
module/audit
GovOPlaN Audit module behavior or integration.
module/booking
GovOPlaN Booking module behavior or integration.
module/calendar
GovOPlaN Calendar module behavior or integration.
module/campaign
GovOPlaN campaign module behavior or integration.
module/cases
GovOPlaN Cases module behavior or integration.
module/certificates
GovOPlaN Certificates module behavior or integration.
module/committee
GovOPlaN Committee module behavior or integration.
module/connectors
GovOPlaN Connectors module behavior or integration.
module/consultation
GovOPlaN Consultation module behavior or integration.
module/contracts
GovOPlaN Contracts module behavior or integration.
module/core
GovOPlaN core runner, shared primitives, shell, or extension points.
module/dist-lists
GovOPlaN Distribution Lists module behavior or integration.
module/dms
GovOPlaN Dms module behavior or integration.
module/docs
GovOPlaN documentation layer behavior or integration.
module/erp
GovOPlaN Erp module behavior or integration.
module/evaluation
GovOPlaN Evaluation module behavior or integration.
module/facilities
GovOPlaN Facilities module behavior or integration.
module/files
GovOPlaN files module behavior or integration.
module/fit-connect
GovOPlaN Fit Connect module behavior or integration.
module/forms
GovOPlaN Forms module behavior or integration.
module/forms-runtime
GovOPlaN Forms Runtime module behavior or integration.
module/grants
GovOPlaN Grants module behavior or integration.
module/helpdesk
GovOPlaN Helpdesk module behavior or integration.
module/identity
GovOPlaN Identity module behavior or integration.
module/identity-trust
GovOPlaN Identity Trust module behavior or integration.
module/idm
GovOPlaN Idm module behavior or integration.
module/inspections
GovOPlaN Inspections module behavior or integration.
module/issue-reporting
GovOPlaN Issue Reporting module behavior or integration.
module/learning
GovOPlaN Learning module behavior or integration.
module/ledger
GovOPlaN Ledger module behavior or integration.
module/mail
GovOPlaN mail module behavior or integration.
module/notifications
GovOPlaN Notifications module behavior or integration.
module/ops
GovOPlaN Ops module behavior or integration.
module/organizations
GovOPlaN Organizations module behavior or integration.
module/payments
GovOPlaN Payments module behavior or integration.
module/permits
GovOPlaN Permits module behavior or integration.
module/policy
GovOPlaN Policy module behavior or integration.
module/poll
GovOPlaN Poll module behavior or integration.
module/portal
GovOPlaN Portal module behavior or integration.
module/postbox
GovOPlaN Postbox module behavior or integration.
module/procurement
GovOPlaN Procurement module behavior or integration.
module/records
GovOPlaN Records module behavior or integration.
module/reporting
GovOPlaN Reporting module behavior or integration.
module/resources
GovOPlaN Resources module behavior or integration.
module/risk-compliance
GovOPlaN Risk Compliance module behavior or integration.
module/scheduling
GovOPlaN Scheduling module behavior or integration.
module/search
GovOPlaN Search module behavior or integration.
module/tasks
GovOPlaN Tasks module behavior or integration.
module/templates
GovOPlaN Templates module behavior or integration.
module/tenancy
GovOPlaN Tenancy module behavior or integration.
module/transparency
GovOPlaN Transparency module behavior or integration.
module/web
GovOPlaN public website, product page, or publication content.
module/workflow
GovOPlaN Workflow module behavior or integration.
module/xoev
GovOPlaN Xoev module behavior or integration.
module/xrechnung
GovOPlaN Xrechnung module behavior or integration.
module/xta-osci
GovOPlaN Xta Osci module behavior or integration.
priority
p0
Immediate stop-the-line priority.
priority
p1
High priority for the next focused work window.
priority
p2
Normal planned priority.
priority
p3
Low priority or opportunistic cleanup.
source/backlog-import
Imported from markdown backlog, roadmap, plan, or TODO files.
source/module-roadmap
Created from GovOPlaN module and integration roadmap planning.
source/security-audit
Created from a structured security or code-quality audit report.
source/todo-scan
Imported from inline TODO/FIXME/HACK markers by the Gitea TODO importer.
status
blocked
Cannot progress without a decision, dependency, credential, or external change.
status
in-progress
Currently being worked.
status
needs-info
Needs clarifying input before implementation can proceed safely.
status
ready
Ready for implementation.
status
triage
Needs review, ownership, priority, or acceptance criteria.
type
bug
A reproducible defect, regression, or incorrect behavior.
type
debt
Cleanup, refactoring, risk reduction, or deferred engineering work.
type
docs
Documentation, process, or developer workflow work.
type
feature
New user-visible behavior or platform capability.
type
task
Implementation, maintenance, migration, or operational work.
type
user-story
End-to-end user journey or real-world process story used to steer product slices.
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: add-ideas/govoplan-core#63
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Scope
Follow-up after the route-handler split. Route handlers now live in access, admin, tenancy, policy, and audit module routers; the remaining debt is that several service helpers, schemas kept for compatibility, and persistence models still live in the access/core compatibility layer.
Acceptance criteria
Out of scope
No table/data migration should be bundled blindly; persistence moves need explicit Alembic planning.
Codex State: progress
Summary
Changed Files
src/govoplan_core/admin/common.pysrc/govoplan_core/admin/settings.pysrc/govoplan_core/tenancy/service.pysrc/govoplan_core/core/runtime.pysrc/govoplan_access/backend/directory.pysrc/govoplan_tenancy/backend/capabilities.pyscripts/check_dependency_boundaries.pydocs/ACCESS_EXTRACTION_PLAN.mdVerification
./scripts/check-focused.sh: passedpython -m unittest tests.test_module_system tests.test_access_contracts: passedNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
src/govoplan_core/core/access.pysrc/govoplan_access/backend/directory.pysrc/govoplan_files/backend/storage/access.pysrc/govoplan_files/backend/storage/files.pysrc/govoplan_files/backend/router.pyscripts/check_dependency_boundaries.pydocs/ACCESS_EXTRACTION_PLAN.mdVerification
./scripts/check-focused.sh: passedNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
govoplan_core/core/campaigns.pygovoplan_core/core/access.pygovoplan_files/backend/router.pygovoplan_files/backend/storage/files.pygovoplan_mail/backend/mail_profiles.pygovoplan_mail/backend/db/models.pygovoplan_campaign/backend/capabilities.pygovoplan_campaign/backend/router.pydocs/MODULE_ARCHITECTURE.mddocs/ACCESS_EXTRACTION_PLAN.mdVerification
python -m compileall core/access/admin/tenancy/policy/audit/files/mail/campaign source trees: passedscripts/check_dependency_boundaries.py: passed (8 transitional exceptions tracked)python -m unittest tests.test_access_contracts tests.test_module_system: passedselected tests.test_api_smoke tests: passedempty SQLite migrate_database with full modules: passed, heads 2c3d4e5f7081 and 3d4e5f708192scripts/check-focused.sh: passed, including WebUI module permutation builds and mail/campaign UI focused testsNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
src/govoplan_core/core/campaigns.pysrc/govoplan_core/celery_app.pysrc/govoplan_core/privacy/retention.pysrc/govoplan_core/db/bootstrap.pysrc/govoplan_core/server/default_config.pydocs/MODULE_ARCHITECTURE.mddocs/ACCESS_EXTRACTION_PLAN.mdVerification
./.venv/bin/python scripts/check_dependency_boundaries.py./.venv/bin/python -m unittest tests.test_access_contracts tests.test_module_system./.venv/bin/python -m unittest tests.test_api_smoke.ApiSmokeTests.test_system_governance_defaults_templates_and_central_accounts tests.test_api_smoke.ApiSmokeTests.test_policy_responses_include_source_provenance tests.test_api_smoke.ApiSmokeTests.test_health_schema_and_dev_mailbox_gates./.venv/bin/python -m unittest tests.test_database_migrations.DatabaseMigrationTests.test_repairs_create_all_schema_drift_and_upgrades_to_head tests.test_database_migrations.DatabaseMigrationTests.test_repairs_current_schema_stamped_at_file_folders./scripts/check-focused.shNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
govoplan-access/webui/src/module.tsgovoplan-access/webui/src/features/admingovoplan-access/src/govoplan_access/backend/manifest.pygovoplan-core/webui/src/App.tsxgovoplan-core/webui/src/layout/IconRail.tsxgovoplan-core/webui/src/platform/modules.tsgovoplan-core/tests/test_module_system.pyVerification
npm run build: passed before cleanupnpm run test:module-permutations: passed, including access-only and full-productpython -m unittest tests.test_module_system tests.test_access_contracts: passedpython scripts/check_dependency_boundaries.py: passed with 0 transitional exceptionsNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
govoplan-access/src/govoplan_access/backend/db/models.pygovoplan-access/src/govoplan_access/backend/db/base.pygovoplan-access/src/govoplan_access/backend/auth/roles.pygovoplan-core/src/govoplan_core/db/models.pygovoplan-core/src/govoplan_core/db/bootstrap.pygovoplan-core/tests/test_module_system.pygovoplan-core/docs/ACCESS_EXTRACTION_PLAN.mdVerification
python -m compileall core/access/admin/tenancy/audit/policy packages: passedpython -m unittest tests.test_module_system tests.test_access_contracts tests.test_database_migrations: passedpython -m unittest tests.test_api_smoke: passedpython scripts/check_dependency_boundaries.py: passed with 0 transitional exceptionsNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
govoplan_core/db/models.pygovoplan_core/server/registry.pygovoplan_core/core/migrations.pygovoplan_core/docs/MODULE_ARCHITECTURE.mdgovoplan_core/docs/ACCESS_EXTRACTION_PLAN.mdgovoplan_access/backend/db/models.pygovoplan_tenancy/backend/db/models.pygovoplan_admin/backend/db/models.pygovoplan_audit/backend/db/models.pyVerification
python -m compileall core/access/admin/tenancy/audit/policy sources: passedpython -m unittest tests.test_module_system tests.test_access_contracts tests.test_database_migrations: 24 passedpython -m unittest tests.test_api_smoke: 39 passednpm run test:module-permutations: passedscripts/check_dependency_boundaries.py: passedNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
govoplan_admin/backend/governance.pygovoplan_admin/backend/api/v1/routes.pygovoplan_admin/backend/api/v1/schemas.pygovoplan_access/backend/api/v1/routes.pygovoplan_access/backend/admin/governance.pygovoplan_core/api/v1/admin_schemas.pygovoplan_core/admin/governance.pydocs/MODULE_ARCHITECTURE.mddocs/ACCESS_EXTRACTION_PLAN.mdVerification
python -m compileall core/access/admin/tenancy/audit sources: passedpython -m unittest tests.test_module_system tests.test_access_contracts tests.test_database_migrations: 25 passedpython -m unittest tests.test_api_smoke: 39 passedscripts/check_dependency_boundaries.py: passedgit diff --check in core/access/admin: passedNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
govoplan-core/webui/src/types.tsgovoplan-core/webui/src/platform/moduleLogic.tsgovoplan-core/webui/src/components/admin/govoplan-access/webui/src/features/admin/AdminPage.tsxgovoplan-admin/webui/src/Verification
npm run build passed in govoplan-core/webuinpm run test:module-permutations passed, including admin-only and access-with-adminpython3 scripts/check_dependency_boundaries.py passedNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
govoplan-core/src/govoplan_core/db/models.pygovoplan-core/src/govoplan_core/access/govoplan-core/src/govoplan_core/api/v1/audit.pygovoplan-core/src/govoplan_core/auth/dependencies.pygovoplan-audit/src/govoplan_audit/backend/api/v1/routes.pygovoplan-admin/src/govoplan_admin/backend/govoplan-tenancy/src/govoplan_tenancy/backend/api/v1/routes.pyVerification
python3 -m compileall passed for core/access/admin/tenancy/audit/policy/files/mail/campaignpython3 scripts/check_dependency_boundaries.py passed; 4 explicit transitional exceptions tracked./.venv/bin/python -m unittest tests.test_module_system tests.test_access_contracts tests.test_database_migrations passed./.venv/bin/python -m govoplan_core.devserver --smoke --no-reload passedNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
govoplan-core/src/govoplan_core/core/access.pygovoplan-core/scripts/check_dependency_boundaries.pygovoplan-access/src/govoplan_access/backend/auth/dependencies.pygovoplan-access/src/govoplan_access/backend/administration.pygovoplan-access/src/govoplan_access/backend/governance_materializer.pygovoplan-access/src/govoplan_access/backend/tenancy/provisioning.pygovoplan-admin/src/govoplan_admin/backend/governance.pygovoplan-admin/src/govoplan_admin/backend/api/v1/routes.pygovoplan-tenancy/src/govoplan_tenancy/backend/api/v1/routes.pygovoplan-audit/src/govoplan_audit/backend/api/v1/routes.pyVerification
python3 -m compileall -q src/govoplan_core ../govoplan-access/src/govoplan_access ../govoplan-admin/src/govoplan_admin ../govoplan-tenancy/src/govoplan_tenancy ../govoplan-audit/src/govoplan_audit ../govoplan-policy/src/govoplan_policy ../govoplan-files/src/govoplan_files ../govoplan-mail/src/govoplan_mail ../govoplan-campaign/src/govoplan_campaignpython3 scripts/check_dependency_boundaries.py./.venv/bin/python -m unittest tests.test_module_system tests.test_access_contracts tests.test_database_migrationsNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Verification
./.venv/bin/python -m govoplan_core.devserver --smoke --no-reloadNext / Blocked
Suggested status label:
status/in-progressCodex State: checked 2026-07-09
Most of the acceptance is now complete: route/model ownership has been split, module WebUI contributions are in place, and python3 scripts/check_dependency_boundaries.py passes with 0 transitional exceptions.
I would keep this open for the remaining strict ownership cleanup: tenant/policy/audit-specific service and UI pieces are not fully in their owning modules yet, and core tenancy/bootstrap/retention still directly touch access models in a few places. A good next slice is extracting tenant counts/governance helpers and remaining service calls behind tenancy/access capabilities, then reassessing closure.
Review 2026-07-10: keeping this open.
scripts/check_dependency_boundaries.pypasses with 0 transitional exceptions, but strict ownership is not complete yet. Current remaining examples: core bootstrap still imports access services/models (govoplan_core/db/bootstrap.py), core tenant summary counts still query accessUser/Group/ApiKey(govoplan_core/tenancy/service.py), and retention/audit plumbing still imports audit/access ORM models directly (govoplan_core/privacy/retention.py,govoplan_core/audit/logging.py). Admin still aggregates system settings, governance, tenant counts, and retention policy surfaces across module boundaries. Close path: replace the remaining cross-module service/model access with capabilities/providers/events, then keep direct SQL only inside the owning module.Progress 2026-07-10: implemented a focused ownership cleanup slice. Core no longer statically imports access ORM/admin/API-key services for tenant counts, user/group privacy settings, or dev bootstrap.
AccessAdministrationnow owns tenant counts and scoped user/group settings access;TenantAccessProvisionernow owns development admin/user/API-key bootstrap. Core audit logging no longer statically importsAuditLog; audit SQL recording and audit-detail retention are now audit-owned providers (audit.recorder,audit.retention). Boundary check still passes with 0 transitional exceptions. Keeping this open because policy retention service ownership still lives in core,govoplan_core.authremains a compatibility re-export of access auth, and the broader provider/event-contract inventory is intentionally deferred to #50.Completed the platform admin/service/model ownership cleanup targeted by this issue: audit persistence is behind audit capabilities, retention implementation moved to
govoplan-policywith a core compatibility facade, tenant counts/settings access use access capabilities, andgovoplan_core.authno longer importsgovoplan_access. Focused tests and dependency boundary checks pass. Closing; remaining historical migration and direct fallback SQL cleanup are tracked in #78/#50.