[Feature] Platform-wide conditional GET and delta API foundation #222
Closed
opened 2026-07-09 11:32:59 +02:00 by zemion
·
13 comments
No Branch/Tag Specified
main
v0.1.46
v0.1.45
v0.1.44
v0.1.43
v0.1.42
v0.1.41
v0.1.40
v0.1.39
v0.1.38
v0.1.37
v0.1.36
v0.1.35
v0.1.34
v0.1.33
v0.1.32
v0.1.31
v0.1.30
v0.1.29
v0.1.28
v0.1.27
v0.1.26
v0.1.25
v0.1.24
v0.1.23
v0.1.22
v0.1.21
v0.1.20
v0.1.19
v0.1.18
v0.1.17
v0.1.16
v0.1.15
v0.1.14
v0.1.13
v0.1.12
v0.1.11
v0.1.8
v0.1.7
v0.1.6
v0.1.4
v0.1.3
v0.1.2
v0.1.1
v0.1.0
Labels
Clear labels
area/api
area/auth
area/db
area/devex
area/docs
area/governance
area/marketing
area/migrations
area/module-system
area/rbac
area/release
area/security
area/tenancy
area/webui
audit/complexity
audit/duplication
audit/false-positive
audit/needs-design
audit/quick-fix
audit/structural
codex/needs-human
codex/ready
module/access
module/addresses
module/admin
module/appointments
module/approvals
module/audit
module/calendar
module/campaign
module/cases
module/committee
module/connectors
module/core
module/dashboard
module/dataflow
module/datasources
module/decisions
module/dist-lists
module/dms
module/docs
module/encryption
module/erp
module/evaluation
module/files
module/fit-connect
module/forms
module/forms-runtime
module/helpdesk
module/identity
module/identity-trust
module/idm
module/ledger
module/mail
module/mandates
module/notifications
module/ops
module/organizations
module/parties
module/payments
module/permits
module/policy
module/poll
module/portal
module/postbox
module/projects
module/quick-access
module/records
module/reporting
module/risk-compliance
module/scheduling
module/search
module/services
module/tasks
module/templates
module/tenancy
module/tickets
module/views
module/voting
module/wiki
module/workflow
module/workflow-engine
module/xoev
module/xrechnung
module/xta-osci
source/backlog-import
source/security-audit
source/todo-scan
HTTP API contracts, routers, schemas, or API smoke behavior.
Authentication, sessions, access bootstrap, or login behavior.
Database sessions, models, transactions, or persistence primitives.
Local developer workflow, scripts, tests, tooling, or release helpers.
Durable documentation and project guidance.
Governance policy, audit, privacy, retention, or compliance behavior.
Public website, product messaging, publication copy, or legal page content.
Alembic migrations, schema bootstrap, or persistence evolution.
Module discovery, manifests, capabilities, routing, or optional integrations.
Permissions, roles, delegation, or authorization policy.
Versioning, release locks, tags, packaging, or dependency pins.
Security posture, static analysis, supply-chain hardening, or vulnerability remediation.
Tenant boundaries, provisioning, or tenant-scoped data behavior.
Shared WebUI shell, frontend components, routing, or frontend tests.
Complexity finding from Radon, Xenon, or equivalent maintainability scans.
Duplicated-code finding from jscpd or equivalent similarity scans.
Audit finding reviewed as a narrow false positive or acceptable risk.
Audit finding that needs an architectural or product decision before implementation.
Audit finding that appears narrow and directly fixable.
Audit finding that needs design, refactoring, or behavior review.
Needs an explicit human decision before Codex should implement.
Suitable for Codex to pick up with the existing issue context.
GovOPlaN access, identity, authentication, RBAC, and administration behavior.
GovOPlaN Addresses module behavior or integration.
GovOPlaN Admin module behavior or integration.
GovOPlaN Appointments module behavior or integration.
GovOPlaN Approvals module behavior or integration.
GovOPlaN Audit module behavior or integration.
GovOPlaN Calendar module behavior or integration.
GovOPlaN campaign module behavior or integration.
GovOPlaN Cases module behavior or integration.
GovOPlaN Committee module behavior or integration.
GovOPlaN Connectors module behavior or integration.
GovOPlaN core runner, shared primitives, shell, or extension points.
GovOPlaN Dashboard module behavior or integration.
GovOPlaN Dataflow module behavior or integration.
GovOPlaN governed datasource contracts, catalogs, and integrations.
GovOPlaN formal Decisions module behavior or integration.
GovOPlaN Distribution Lists module behavior or integration.
GovOPlaN Dms module behavior or integration.
GovOPlaN Docs module behavior or integration.
GovOPlaN Encryption key custody, cryptographic policy, and E2EE integration.
GovOPlaN Erp module behavior or integration.
GovOPlaN Evaluation module behavior or integration.
GovOPlaN files module behavior or integration.
GovOPlaN Fit Connect module behavior or integration.
GovOPlaN Forms module behavior or integration.
GovOPlaN Forms Runtime module behavior or integration.
GovOPlaN Helpdesk module behavior or integration.
GovOPlaN Identity module behavior or integration.
GovOPlaN Identity Trust module behavior or integration.
GovOPlaN Idm module behavior or integration.
GovOPlaN Ledger module behavior or integration.
GovOPlaN mail module behavior or integration.
GovOPlaN Mandates, jurisdiction, responsibility, and authority behavior or integration.
GovOPlaN Notifications module behavior or integration.
GovOPlaN Ops module behavior or integration.
GovOPlaN Organizations module behavior or integration.
GovOPlaN procedure Parties, representation, and delivery-authority behavior or integration.
GovOPlaN Payments module behavior or integration.
GovOPlaN Permits module behavior or integration.
GovOPlaN Policy module behavior or integration.
GovOPlaN Poll module behavior or integration.
GovOPlaN Portal module behavior or integration.
GovOPlaN Postbox module behavior or integration.
GovOPlaN Projects module behavior or integration.
GovOPlaN configurable task-local Quick Access behavior and integrations.
GovOPlaN Records and eAkte lifecycle behavior or integration.
GovOPlaN Reporting module behavior or integration.
GovOPlaN Risk Compliance module behavior or integration.
GovOPlaN Scheduling module behavior or integration.
GovOPlaN Search module behavior or integration.
GovOPlaN versioned institutional Services behavior or integration.
GovOPlaN Tasks module behavior or integration.
GovOPlaN Templates module behavior or integration.
GovOPlaN Tenancy module behavior or integration.
GovOPlaN Tickets module behavior or integration.
GovOPlaN governed task views, interface projections, and workflow view integration.
GovOPlaN Voting module behavior or integration.
GovOPlaN Wiki module behavior or integration.
GovOPlaN Workflow module behavior or integration.
GovOPlaN Workflow Engine runtime, persistence, or integration.
GovOPlaN Xoev module behavior or integration.
GovOPlaN Xrechnung module behavior or integration.
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.
Imported from markdown backlog, roadmap, plan, or TODO files.
Created from a structured security or code-quality audit report.
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 labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: GovOPlaN/govoplan-core#222
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.
Problem
Repeated reloads fetch complete JSON payloads even when the user-visible data has not changed. This is especially expensive for table/list views and settings pages where one row or one setting changes but the frontend reloads the whole resource.
Proposed Capability
Add a platform-wide conditional GET and delta foundation:
Ownership
Acceptance Criteria
Verification Target
Implemented the first platform foundation pass in core:
Verification passed:
Follow-up verification added:
Verification rerun:
Codex State: progress
Summary
Changed Files
src/govoplan_core/core/change_sequence.pyalembic/versions/3f4a5b6c7d8e_core_change_sequence.pysrc/govoplan_files/backend/change_tracking.pysrc/govoplan_files/backend/router.pywebui/src/types.tsVerification
python -m unittest tests.test_change_sequence tests.test_conditional_requests tests.test_api_smoke.ApiSmokeTests.test_managed_file_runtime_flow tests.test_api_smoke.ApiSmokeTests.test_files_delta_tracks_uploads_folders_and_delete_tombstonespython -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 tests.test_module_system.ModuleSystemTests.test_module_migrations_are_registered_only_for_enabled_modulesnpm run buildnpm run test:module-capabilitiesNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
webui/src/features/files/FilesPage.tsxwebui/src/features/files/components/ManagedFileChooser.tsxVerification
npm run buildnpm run test:module-capabilitiesSuggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
src/govoplan_core/core/change_sequence.pydocs/MODULE_ARCHITECTURE.mdtests/test_change_sequence.pytests/test_api_smoke.py../govoplan-files/src/govoplan_files/backend/router.py../govoplan-campaign/src/govoplan_campaign/backend/change_tracking.py../govoplan-campaign/src/govoplan_campaign/backend/router.py../govoplan-campaign/src/govoplan_campaign/backend/schemas.py../govoplan-campaign/webui/src/api/campaigns.ts../govoplan-campaign/webui/src/features/campaigns/CampaignListPage.tsx../govoplan-campaign/webui/src/features/campaigns/hooks/useCampaignWorkspaceData.tsVerification
./.venv/bin/python -m unittest tests.test_change_sequence tests.test_api_smoke.ApiSmokeTests.test_files_delta_omits_private_tombstones_from_broad_reader_feed tests.test_api_smoke.ApiSmokeTests.test_files_delta_tracks_uploads_folders_and_delete_tombstones tests.test_api_smoke.ApiSmokeTests.test_campaign_delta_tracks_create_update_and_delete_tombstone tests.test_api_smoke.ApiSmokeTests.test_campaign_workspace_delta_tracks_version_autosave./.venv/bin/python -m py_compile src/govoplan_core/core/change_sequence.py ../govoplan-files/src/govoplan_files/backend/router.py ../govoplan-campaign/src/govoplan_campaign/backend/change_tracking.py ../govoplan-campaign/src/govoplan_campaign/backend/router.py ../govoplan-campaign/src/govoplan_campaign/backend/schemas.pyPATH=/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-arg0WEB8kZ:/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 npm run build (govoplan-core/webui)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-arg0WEB8kZ:/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 npm run test:module-capabilities (govoplan-core/webui)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-arg0WEB8kZ:/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 npm run test:policy-ui (govoplan-campaign/webui)Next / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
webui/src/utils/delta.tswebui/src/index.tsdocs/MODULE_ARCHITECTURE.mdtests/test_api_smoke.py../govoplan-campaign/src/govoplan_campaign/backend/router.py../govoplan-campaign/src/govoplan_campaign/backend/schemas.py../govoplan-campaign/webui/src/api/campaigns.ts../govoplan-campaign/webui/src/features/campaigns/CampaignListPage.tsx../govoplan-campaign/webui/src/features/campaigns/CampaignReportPage.tsxVerification
./.venv/bin/python -m unittest tests.test_change_sequence tests.test_api_smoke.ApiSmokeTests.test_campaign_jobs_delta_tracks_single_job_update tests.test_api_smoke.ApiSmokeTests.test_campaign_delta_tracks_create_update_and_delete_tombstone tests.test_api_smoke.ApiSmokeTests.test_campaign_workspace_delta_tracks_version_autosave tests.test_api_smoke.ApiSmokeTests.test_files_delta_omits_private_tombstones_from_broad_reader_feed./.venv/bin/python -m py_compile src/govoplan_core/core/change_sequence.py ../govoplan-campaign/src/govoplan_campaign/backend/change_tracking.py ../govoplan-campaign/src/govoplan_campaign/backend/router.py ../govoplan-campaign/src/govoplan_campaign/backend/schemas.py ../govoplan-files/src/govoplan_files/backend/router.pyPATH=/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-arg0WEB8kZ:/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 npm run build (govoplan-core/webui)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-arg0WEB8kZ:/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 npm run test:module-capabilities (govoplan-core/webui)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-arg0WEB8kZ:/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 npm run test:policy-ui (govoplan-campaign/webui)Next / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
govoplan-core/webui/src/utils/deltaHooks.tsgovoplan-core/webui/src/index.tsgovoplan-campaign/webui/src/features/campaigns/utils/jobDeltas.tsgovoplan-campaign/webui/src/features/campaigns/hooks/useCampaignWorkspaceData.tsgovoplan-campaign/webui/src/features/campaigns/CampaignReportPage.tsxgovoplan-campaign/webui/src/features/campaigns/ReviewSendPage.tsxgovoplan-campaign/webui/src/features/operator/OperatorQueuePage.tsxVerification
govoplan-core/webui: npm run buildgovoplan-campaign/webui: npm run test:policy-uigovoplan-campaign/webui: npm run test:template-previewgovoplan-campaign/webui: npm run test:import-utilsNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
govoplan-access/src/govoplan_access/backend/api/v1/routes.pygovoplan-access/src/govoplan_access/backend/api/v1/admin_schemas.pygovoplan-access/webui/src/api/admin.tsgovoplan-access/webui/src/features/admin/utils/deltaRows.tsgovoplan-access/webui/src/features/admin/UsersPanel.tsxgovoplan-access/webui/src/features/admin/GroupsPanel.tsxgovoplan-access/webui/src/features/admin/RolesPanel.tsxgovoplan-access/webui/src/features/admin/SystemRolesPanel.tsxgovoplan-access/webui/src/features/admin/SystemUsersPanel.tsxgovoplan-access/webui/src/features/admin/ApiKeysPanel.tsxgovoplan-core/tests/test_api_smoke.pyVerification
py_compile access routes/schemas and updated smoke test file: passpython -m unittest tests.test_api_smoke.ApiSmokeTests.test_access_admin_users_delta_tracks_create_and_update tests.test_api_smoke.ApiSmokeTests.test_access_admin_api_key_delta_returns_tombstone_when_revoked_hidden: passgovoplan-core/webui npm run build: passNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
govoplan-core/src/govoplan_core/core/change_sequence.pygovoplan-core/src/govoplan_core/core/configuration_control.pygovoplan-core/src/govoplan_core/audit/logging.pygovoplan-core/tests/test_api_smoke.pygovoplan-admin/src/govoplan_admin/backend/api/v1/routes.pygovoplan-admin/src/govoplan_admin/backend/api/v1/schemas.pygovoplan-admin/webui/src/api/admin.tsgovoplan-admin/webui/src/features/admin/SystemSettingsPanel.tsxgovoplan-admin/webui/src/features/admin/ConfigurationChangesPanel.tsxgovoplan-tenancy/src/govoplan_tenancy/backend/api/v1/routes.pygovoplan-tenancy/src/govoplan_tenancy/backend/api/v1/schemas.pygovoplan-audit/src/govoplan_audit/backend/api/v1/routes.pygovoplan-audit/src/govoplan_audit/backend/api/v1/schemas.pygovoplan-access/src/govoplan_access/backend/api/v1/routes.pygovoplan-access/src/govoplan_access/backend/api/v1/admin_schemas.pygovoplan-access/webui/src/api/admin.tsgovoplan-access/webui/src/features/admin/AdminAuditPanel.tsxgovoplan-access/webui/src/features/admin/TenantSettingsPanel.tsxgovoplan-access/webui/src/features/admin/RetentionPoliciesPanel.tsxgovoplan-access/webui/src/features/admin/MailProfilesPanel.tsxgovoplan-access/webui/src/features/admin/FileConnectorsPanel.tsxVerification
py_compile changed backend modules and tests: passpython -m unittest tests.test_api_smoke.ApiSmokeTests.test_access_admin_users_delta_tracks_create_and_update tests.test_api_smoke.ApiSmokeTests.test_access_admin_api_key_delta_returns_tombstone_when_revoked_hidden tests.test_api_smoke.ApiSmokeTests.test_settings_deltas_track_sections_and_system_language_dependency tests.test_api_smoke.ApiSmokeTests.test_configuration_changes_delta_tracks_requests tests.test_api_smoke.ApiSmokeTests.test_admin_audit_delta_tracks_new_events: passgovoplan-core/webui npm run build: passgit diff --check on touched files only: pass; full worktree still has unrelated pre-existing whitespace noiseNext / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
Audit deltas now support filtered/sorted first-page views.Core change-sequence now has an explicit retention-floor/pruning contract plus Alembic retention metadata.Docs now list current consumers, section-level settings deltas, retention-floor rules, and open retrofit scope.Verification
unittest delta/change-sequence/access/audit focused suite passed.webui npm run build passed.git diff --check and migration py_compile passed for touched files.Next / Blocked
Suggested status label:
status/in-progressCodex State: progress
Summary
Changed Files
Added /api/v1/mail/settings/delta with mail profile row deltas, scoped policy refreshes, sequence write hooks, and WebUI consumption in the mail settings panel.Added /api/v1/files/connectors/settings/delta with connector profile, credential, connector-space, and policy deltas; credential changes include dependent profiles.Updated module WebUI API clients and settings panels to consume the new deltas; documented the implemented consumers in docs/MODULE_ARCHITECTURE.md.Verification
Focused unittest delta suite passed, including mail settings and file connector settings deltas.Core WebUI npm run build passed.Mail WebUI test:mail-ui passed using the shared core WebUI TypeScript binary.Python py_compile and git diff --check passed for touched files.Next / Blocked
Suggested status label:
status/in-progressImplemented the remaining cursor/keyset dependency for arbitrary-page delta safety.
What changed:
govoplan_core.core.pagination(encode_keyset_cursor,decode_keyset_cursor,keyset_query_fingerprint).cursorandnext_cursorwhile keeping existingpage/offsetcompatibility.Verification:
./.venv/bin/python -m unittest tests.test_pagination./.venv/bin/python -m unittest tests.test_api_smoke.ApiSmokeTests.test_admin_audit_cursor_pagination_is_stable_after_newer_insert./.venv/bin/python -m compileall src/govoplan_core ../govoplan-audit/src/govoplan_audit ../govoplan-access/src/govoplan_accessnpm run buildingovoplan-core/webuiRemaining rollout is endpoint-by-endpoint adoption of the same cursor contract, with files lists as the next recommended target and campaign jobs after that.
Rollout scan completed. Direct implementation added for campaign jobs, the other high-value candidates are now tracked as module-specific issues.
Implemented now:
govoplan-campaign: campaign job list/delta now supports cursor/keyset paging withcursorandnext_cursor; WebUI report/review pages preserve page cursors; smoke coverage added.Deferred by domain-specific dependency:
This closes #222 as the platform/foundation issue. Future endpoint work should use the shared contract from the start.