Repair release and interface CI gates
Dependency Audit / dependency-audit (push) Successful in 1m35s
Deployment Installer / deployment-installer (push) Successful in 6s
Security Audit / security-audit (push) Successful in 10m5s

This commit is contained in:
2026-08-03 02:02:48 +02:00
parent cbbe08d912
commit e8f7e2c194
3 changed files with 159 additions and 1 deletions
+1 -1
View File
@@ -59,7 +59,7 @@ jobs:
git config --global --add url."https://git.add-ideas.de/GovOPlaN/govoplan".insteadOf "ssh://git@git.add-ideas.de/GovOPlaN/govoplan" git config --global --add url."https://git.add-ideas.de/GovOPlaN/govoplan".insteadOf "ssh://git@git.add-ideas.de/GovOPlaN/govoplan"
- name: Bootstrap release sources - name: Bootstrap release sources
working-directory: govoplan working-directory: govoplan
run: python tools/repo/bootstrap-repositories.py --parent .. --transport public-https --exclude-repo addideas-govoplan-website run: python tools/repo/bootstrap-repositories.py --parent .. --transport public-https --reuse-checkout-auth --exclude-repo addideas-govoplan-website
- name: Build release wheel roots and WebUI - name: Build release wheel roots and WebUI
working-directory: govoplan working-directory: govoplan
run: | run: |
+30
View File
@@ -340,6 +340,7 @@ def add_scoped_workflow_manifest(repo: Path) -> None:
(backend / "__init__.py").write_text("", encoding="utf-8") (backend / "__init__.py").write_text("", encoding="utf-8")
(backend / "manifest.py").write_text( (backend / "manifest.py").write_text(
"""from govoplan_core.core.modules import DocumentationCondition, DocumentationTopic, ModuleManifest, PermissionDefinition """from govoplan_core.core.modules import DocumentationCondition, DocumentationTopic, ModuleManifest, PermissionDefinition
from govoplan_core.core.provider_governance import declared_module_architecture
def get_manifest(): def get_manifest():
@@ -368,6 +369,20 @@ def get_manifest():
conditions=(DocumentationCondition(required_scopes=("access:item:read",)),), conditions=(DocumentationCondition(required_scopes=("access:item:read",)),),
metadata={"kind": "workflow"}, metadata={"kind": "workflow"},
), ),
DocumentationTopic(
id="access.admin.reference",
title="Administer access",
summary="Static administrator documentation for the release fixture.",
documentation_types=("admin",),
metadata={"kind": "reference"},
),
),
architecture=declared_module_architecture(
layer="institutional_foundation",
kind="foundation",
maturity="scaffold",
documentation_ref="pyproject.toml",
known_limits=("Release-test fixture only.",),
), ),
) )
""", """,
@@ -387,6 +402,7 @@ def replace_with_unscoped_workflow_manifest(repo: Path) -> None:
manifest = repo / "src" / "govoplan_access" / "backend" / "manifest.py" manifest = repo / "src" / "govoplan_access" / "backend" / "manifest.py"
manifest.write_text( manifest.write_text(
"""from govoplan_core.core.modules import DocumentationTopic, ModuleManifest """from govoplan_core.core.modules import DocumentationTopic, ModuleManifest
from govoplan_core.core.provider_governance import declared_module_architecture
def get_manifest(): def get_manifest():
@@ -402,6 +418,20 @@ def get_manifest():
documentation_types=("user",), documentation_types=("user",),
metadata={"kind": "workflow"}, metadata={"kind": "workflow"},
), ),
DocumentationTopic(
id="access.admin.reference",
title="Administer access",
summary="Static administrator documentation for the release fixture.",
documentation_types=("admin",),
metadata={"kind": "reference"},
),
),
architecture=declared_module_architecture(
layer="institutional_foundation",
kind="foundation",
maturity="scaffold",
documentation_ref="pyproject.toml",
known_limits=("Release-test fixture only.",),
), ),
) )
""", """,
@@ -1581,6 +1581,134 @@
"path": "/workflow/definitions/{}/triggers", "path": "/workflow/definitions/{}/triggers",
"rationale": "This capability-first module intentionally exposes a headless API for other modules and integrations.", "rationale": "This capability-first module intentionally exposes a headless API for other modules and integrations.",
"repository": "govoplan-workflow-engine" "repository": "govoplan-workflow-engine"
},
{
"category": "ui_reachable",
"method": "POST",
"path": "/addresses/contact-merges/{}/split",
"rationale": "The Addresses WebUI constructs the selected merge id and recovery action dynamically.",
"repository": "govoplan-addresses"
},
{
"category": "ui_reachable",
"method": "POST",
"path": "/addresses/contact-merges/{}/undo",
"rationale": "The Addresses WebUI constructs the selected merge id and recovery action dynamically.",
"repository": "govoplan-addresses"
},
{
"category": "intentionally_headless",
"method": "POST",
"path": "/addresses/contact-point-snapshots",
"rationale": "Campaign and other modules consume the governed contact-point snapshot capability without a direct Addresses screen.",
"repository": "govoplan-addresses"
},
{
"category": "intentionally_headless",
"method": "GET",
"path": "/addresses/contact-point-snapshots/{}",
"rationale": "Campaign and other modules consume the governed contact-point snapshot capability without a direct Addresses screen.",
"repository": "govoplan-addresses"
},
{
"category": "intentionally_headless",
"method": "POST",
"path": "/addresses/contact-point-sources/preview",
"rationale": "This capability endpoint previews a module-supplied contact source and is consumed by integrations rather than a direct screen.",
"repository": "govoplan-addresses"
},
{
"category": "intentionally_headless",
"method": "POST",
"path": "/addresses/contact-points/resolve",
"rationale": "This governed recipient-resolution endpoint is consumed by Campaign and other modules.",
"repository": "govoplan-addresses"
},
{
"category": "intentionally_headless",
"method": "GET",
"path": "/addresses/contacts/{}/redirect",
"rationale": "Stored references and module capabilities resolve merged-contact redirects without a direct user action.",
"repository": "govoplan-addresses"
},
{
"category": "missing_ui",
"method": "GET",
"path": "/addresses/imports/{}",
"rationale": "The import flow can create, apply, and roll back a run, but the WebUI does not yet resume a saved run by id after navigation or reload.",
"repository": "govoplan-addresses",
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-addresses/issues/22"
},
{
"category": "ui_reachable",
"method": "GET",
"path": "/campaigns/{}/versions/{}/print-output/download",
"rationale": "The Campaign WebUI validates and follows the build artifact's server-provided download path.",
"repository": "govoplan-campaign"
},
{
"category": "missing_ui",
"method": "GET",
"path": "/relationships",
"rationale": "IDM documents typed relationships but its current administration page exposes function assignments only.",
"repository": "govoplan-idm",
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-idm/issues/11"
},
{
"category": "missing_ui",
"method": "POST",
"path": "/relationships",
"rationale": "IDM documents typed relationships but its current administration page exposes function assignments only.",
"repository": "govoplan-idm",
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-idm/issues/11"
},
{
"category": "missing_ui",
"method": "PATCH",
"path": "/relationships/{}",
"rationale": "IDM documents typed relationships but its current administration page exposes function assignments only.",
"repository": "govoplan-idm",
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-idm/issues/11"
},
{
"category": "missing_ui",
"method": "POST",
"path": "/relationships/{}/revoke",
"rationale": "IDM documents typed relationships but its current administration page exposes function assignments only.",
"repository": "govoplan-idm",
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-idm/issues/11"
},
{
"category": "missing_ui",
"method": "GET",
"path": "/typed-groups",
"rationale": "IDM documents typed groups but its current administration page exposes function assignments only.",
"repository": "govoplan-idm",
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-idm/issues/11"
},
{
"category": "missing_ui",
"method": "POST",
"path": "/typed-groups",
"rationale": "IDM documents typed groups but its current administration page exposes function assignments only.",
"repository": "govoplan-idm",
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-idm/issues/11"
},
{
"category": "missing_ui",
"method": "PATCH",
"path": "/typed-groups/{}",
"rationale": "IDM documents typed groups but its current administration page exposes function assignments only.",
"repository": "govoplan-idm",
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-idm/issues/11"
},
{
"category": "missing_ui",
"method": "GET",
"path": "/typed-groups/{}/memberships",
"rationale": "IDM lacks the typed-group membership explanation surface for this existing API.",
"repository": "govoplan-idm",
"tracking_issue": "https://git.add-ideas.de/GovOPlaN/govoplan-idm/issues/11"
} }
], ],
"schema_version": 1 "schema_version": 1