From 1444e50d8b1237524ab7fab78ba2d4ca519c99c7 Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Mon, 20 Jul 2026 20:01:50 +0200 Subject: [PATCH] fix(manifest): normalize distribution list contract ids --- docs/DISTRIBUTION_LISTS_ARCHITECTURE.md | 6 +++--- docs/IMPLEMENTATION_PLAN.md | 2 +- src/govoplan_dist_lists/backend/manifest.py | 8 ++++---- tests/test_manifest.py | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/DISTRIBUTION_LISTS_ARCHITECTURE.md b/docs/DISTRIBUTION_LISTS_ARCHITECTURE.md index ba327f5..c829714 100644 --- a/docs/DISTRIBUTION_LISTS_ARCHITECTURE.md +++ b/docs/DISTRIBUTION_LISTS_ARCHITECTURE.md @@ -66,10 +66,10 @@ delivery-channel hints, provenance, and a policy/readiness state. The first capabilities should be: -- `distLists.source`: list visible distribution lists as reusable recipient +- `dist_lists.source`: list visible distribution lists as reusable recipient sources. -- `distLists.expand`: expand a distribution list into immutable recipient rows. -- `distLists.writer`: explain whether a caller can create or change a list. +- `dist_lists.expand`: expand a distribution list into immutable recipient rows. +- `dist_lists.writer`: explain whether a caller can create or change a list. Consumers must resolve those capabilities through core and must not import distribution-list ORM or service internals. diff --git a/docs/IMPLEMENTATION_PLAN.md b/docs/IMPLEMENTATION_PLAN.md index 1e8052b..45986de 100644 --- a/docs/IMPLEMENTATION_PLAN.md +++ b/docs/IMPLEMENTATION_PLAN.md @@ -34,7 +34,7 @@ Tasks: - add CRUD routes and permissions - add local raw email/postal entries - add references to address contacts and address lists via capabilities -- expose `distLists.source` and `distLists.expand` +- expose `dist_lists.source` and `dist_lists.expand` - add tests for expansion and snapshots ## Milestone 3: Provider Integrations diff --git a/src/govoplan_dist_lists/backend/manifest.py b/src/govoplan_dist_lists/backend/manifest.py index 51ef300..ae8ea0a 100644 --- a/src/govoplan_dist_lists/backend/manifest.py +++ b/src/govoplan_dist_lists/backend/manifest.py @@ -43,7 +43,7 @@ ROLE_TEMPLATES = ( DOCUMENTATION = ( DocumentationTopic( - id="dist-lists.boundary", + id=f"{MODULE_ID}.boundary", title="Distribution list boundary", summary="Distribution lists model operational Verteiler separately from address-book lists and workflow Umlauf execution.", body=( @@ -81,9 +81,9 @@ manifest = ModuleManifest( ), optional_capabilities=(CAPABILITY_AUTH_PRINCIPAL_RESOLVER, CAPABILITY_AUTH_PERMISSION_EVALUATOR), provides_interfaces=( - ModuleInterfaceProvider(name="distLists.source", version=MODULE_VERSION), - ModuleInterfaceProvider(name="distLists.expand", version=MODULE_VERSION), - ModuleInterfaceProvider(name="distLists.writer", version=MODULE_VERSION), + ModuleInterfaceProvider(name="dist_lists.source", version=MODULE_VERSION), + ModuleInterfaceProvider(name="dist_lists.expand", version=MODULE_VERSION), + ModuleInterfaceProvider(name="dist_lists.writer", version=MODULE_VERSION), ), permissions=PERMISSIONS, role_templates=ROLE_TEMPLATES, diff --git a/tests/test_manifest.py b/tests/test_manifest.py index 7e99ac7..c6fc135 100644 --- a/tests/test_manifest.py +++ b/tests/test_manifest.py @@ -15,7 +15,7 @@ class DistributionListsManifestTests(unittest.TestCase): self.assertFalse(manifest.dependencies) self.assertIn("addresses", manifest.optional_dependencies) self.assertIn("auth.principalResolver", manifest.optional_capabilities) - self.assertIn("distLists.expand", {interface.name for interface in manifest.provides_interfaces}) + self.assertIn("dist_lists.expand", {interface.name for interface in manifest.provides_interfaces}) self.assertIn("dist_lists:list:read", {permission.scope for permission in manifest.permissions}) self.assertIsNone(manifest.route_factory) self.assertIsNone(manifest.migration_spec)