Move platform admin services and models into owning modules #63
Closed
opened 2026-07-06 13:45:00 +02:00 by zemion
·
16 comments
No Branch/Tag Specified
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/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/audit
GovOPlaN Audit 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/connectors
GovOPlaN Connectors module behavior or integration.
module/core
GovOPlaN core runner, shared primitives, shell, or extension points.
module/dataflow
GovOPlaN Dataflow module behavior or integration.
module/datasources
GovOPlaN governed datasource contracts, catalogs, and integrations.
module/dist-lists
GovOPlaN Distribution Lists module behavior or integration.
module/dms
GovOPlaN Dms module behavior or integration.
module/erp
GovOPlaN Erp module behavior or integration.
module/evaluation
GovOPlaN Evaluation 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/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/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/reporting
GovOPlaN Reporting 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/views
GovOPlaN governed task views, interface projections, and workflow view integration.
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/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.
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: GovOPlaN/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.