From 7b0c9cfdde33eb297b829c6dd9f535ad6c07a0bb Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Sat, 1 Aug 2026 17:48:31 +0200 Subject: [PATCH] docs: declare institutional architecture boundary --- AGENTS.md | 16 ++++++++++++++++ src/govoplan_dist_lists/backend/manifest.py | 15 +++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..f1d6fe9 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,16 @@ +# GovOPlaN Distribution Lists Codex Guide + +## Scope + +This repository owns reusable, versioned distribution lists, membership facts, channel preferences, and governed recipient projections. + +## Documentation Contract + +- Treat documentation as part of every behavior change. Update this module's manifest-driven `DocumentationTopic` contributions for affected user and administrator behavior. +- Keep feature content here; `govoplan-docs` projects it without importing Distribution Lists internals. +- Maintain a static user/admin baseline and run `/mnt/DATA/git/govoplan/tools/checks/check-manifest-shapes.py` after behavior or manifest changes. + +## Boundaries + +- Campaign owns delivery runs; Addresses and IDM own their source records. +- Keep list membership history and source provenance stable across consuming campaigns. diff --git a/src/govoplan_dist_lists/backend/manifest.py b/src/govoplan_dist_lists/backend/manifest.py index 4a3b3c4..9e0614f 100644 --- a/src/govoplan_dist_lists/backend/manifest.py +++ b/src/govoplan_dist_lists/backend/manifest.py @@ -35,6 +35,7 @@ from govoplan_core.core.modules import ( PermissionDefinition, RoleTemplate, ) +from govoplan_core.core.provider_governance import declared_module_architecture from govoplan_core.core.organizations import CAPABILITY_ORGANIZATION_DIRECTORY from govoplan_core.core.views import ViewSurface from govoplan_core.db.base import Base @@ -274,6 +275,20 @@ manifest = ModuleManifest( ), ), documentation=DOCUMENTATION, + architecture=declared_module_architecture( + layer="communication_participation", + kind="domain", + maturity="vertical_slice", + documentation_ref="docs/DISTRIBUTION_LISTS_ARCHITECTURE.md", + test_ref="tests/test_service.py", + known_limits=("Portal self-service and every AdreMa migration path are not yet implemented.",), + supported_authority_modes=("native_authoritative", "external_mirror"), + owned_concepts=("distribution list", "distribution-list revision", "frozen expansion"), + non_owned_concepts=("contact point", "campaign recipient snapshot", "identity", "dataflow output"), + recovery_docs=("docs/DISTRIBUTION_LISTS_ARCHITECTURE.md",), + security_docs=("docs/DISTRIBUTION_LISTS_ARCHITECTURE.md",), + operations_docs=("README.md",), + ), )