From 59b45a08294e77da9f482ca394dfa05fceef9767 Mon Sep 17 00:00:00 2001 From: Albrecht Degering Date: Sun, 23 Aug 2026 18:14:11 +0200 Subject: [PATCH] chore(release): compose autonomous integration contracts --- .../snapshots/DSAR_PROVIDER_COVERAGE.generated.md | 6 ++++-- packages/govoplan-meta/pyproject.toml | 4 +++- tests/test_package_set_dispatch.py | 8 +++++--- tools/checks/dsar-coverage-exemptions.json | 2 ++ 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/docs/evidence/snapshots/DSAR_PROVIDER_COVERAGE.generated.md b/docs/evidence/snapshots/DSAR_PROVIDER_COVERAGE.generated.md index e77397f..ee7e79d 100644 --- a/docs/evidence/snapshots/DSAR_PROVIDER_COVERAGE.generated.md +++ b/docs/evidence/snapshots/DSAR_PROVIDER_COVERAGE.generated.md @@ -5,9 +5,9 @@ A migration-owning module must register and document its canonical DSAR provider Every other active module requires a reviewed explanation of why it owns no persistent subject-data store. Adding a migration invalidates that explanation. -- Active modules: 70 +- Active modules: 72 - Registered and documented DSAR providers: 48 -- Reviewed no-store rationales: 22 +- Reviewed no-store rationales: 24 - Unexplained coverage gaps: 0 | Module | Repository | Persistence | Coverage | Rationale | @@ -35,9 +35,11 @@ persistent subject-data store. Adding a migration invalidates that explanation. | `dms` | `govoplan-dms` | No module migration | Reviewed no-store rationale | Stateless integration-preview module: DMS retains no document, person, credential, or provider-response store; Files and Records remain the subject-data owners. Reassess before persisting a target binding, plan, receipt, or diagnostic. | | `docs` | `govoplan-docs` | Migration-owned | Provider | Provider `privacy.dsar.docs` is registered and documented. | | `encryption` | `govoplan-encryption` | Migration-owned | Provider | Provider `privacy.dsar.encryption` is registered and documented. | +| `erp` | `govoplan-erp` | No module migration | Reviewed no-store rationale | Stateless integration-contract module: ERP retains no invoice, payable, plan, booking observation, provider response, or credential store; Procurement, Payments, Ledger, Files, and Audit remain the subject-data owners. Reassess before persisting a target binding, plan, receipt, reconciliation decision, or diagnostic. | | `evaluation` | `govoplan-evaluation` | No module migration | Reviewed no-store rationale | Contract-only module: evaluation runs, responses, and scores are not persisted; reassess before adding a migration-owned store. | | `facilities` | `govoplan-facilities` | No module migration | Reviewed no-store rationale | Contract-only module: facility and maintenance persistence are not implemented; reassess before adding a migration-owned store. | | `files` | `govoplan-files` | Migration-owned | Provider | Provider `privacy.dsar.files` is registered and documented. | +| `fit_connect` | `govoplan-fit-connect` | No module migration | Reviewed no-store rationale | Stateless transport-contract module: FIT-Connect retains no submission, attachment, receipt, acknowledgement plan, key, provider response, or diagnostic store; the owning Service, Forms, Cases, Files, and Audit workflows remain responsible for subject data. Reassess before persisting any ingress or event-log evidence. | | `forms` | `govoplan-forms` | Migration-owned | Provider | Provider `privacy.dsar.forms` is registered and documented. | | `forms_runtime` | `govoplan-forms-runtime` | Migration-owned | Provider | Provider `privacy.dsar.forms_runtime` is registered and documented. | | `grants` | `govoplan-grants` | No module migration | Reviewed no-store rationale | Contract-only module: grant applications, awards, and monitoring are not persisted; reassess before adding a migration-owned store. | diff --git a/packages/govoplan-meta/pyproject.toml b/packages/govoplan-meta/pyproject.toml index 4eddf97..7cf3de1 100644 --- a/packages/govoplan-meta/pyproject.toml +++ b/packages/govoplan-meta/pyproject.toml @@ -46,8 +46,10 @@ full = [ "govoplan-dist-lists==0.1.18", "govoplan-dms==0.1.19", "govoplan-encryption==0.1.18", + "govoplan-erp==0.1.19", "govoplan-evaluation==0.1.19", "govoplan-facilities==0.1.19", + "govoplan-fit-connect==0.1.19", "govoplan-forms==0.1.20", "govoplan-forms-runtime==0.1.18", "govoplan-grants==0.1.19", @@ -84,7 +86,7 @@ full = [ "govoplan-wiki==0.1.20", "govoplan-workflow==0.1.21", "govoplan-workflow-engine==0.1.19", - "govoplan-xrechnung==0.1.19", + "govoplan-xrechnung==0.1.20", ] [project.urls] diff --git a/tests/test_package_set_dispatch.py b/tests/test_package_set_dispatch.py index a03c1a0..3fc5087 100644 --- a/tests/test_package_set_dispatch.py +++ b/tests/test_package_set_dispatch.py @@ -22,14 +22,16 @@ class PackageSetDispatchTests(unittest.TestCase): def test_meta_package_resolves_to_exact_tagged_repository_targets(self) -> None: targets = MODULE.package_targets() - self.assertEqual(71, len(targets)) - self.assertEqual(71, len({target.distribution for target in targets})) + self.assertEqual(73, len(targets)) + self.assertEqual(73, len({target.distribution for target in targets})) by_name = {target.distribution: target for target in targets} self.assertEqual("v0.1.37", by_name["govoplan-core"].tag) self.assertEqual("v0.1.20", by_name["govoplan-access"].tag) self.assertEqual("v0.1.19", by_name["govoplan-dms"].tag) + self.assertEqual("v0.1.19", by_name["govoplan-erp"].tag) + self.assertEqual("v0.1.19", by_name["govoplan-fit-connect"].tag) self.assertEqual("v0.1.21", by_name["govoplan-idm"].tag) - self.assertEqual("v0.1.19", by_name["govoplan-xrechnung"].tag) + self.assertEqual("v0.1.20", by_name["govoplan-xrechnung"].tag) self.assertTrue(by_name["govoplan-core"].tag_exists) self.assertTrue(by_name["govoplan-access"].has_webui) self.assertEqual( diff --git a/tools/checks/dsar-coverage-exemptions.json b/tools/checks/dsar-coverage-exemptions.json index 8883a42..2e9d14a 100644 --- a/tools/checks/dsar-coverage-exemptions.json +++ b/tools/checks/dsar-coverage-exemptions.json @@ -5,8 +5,10 @@ "consultation": "Contract-only module: consultation submissions and evaluation persistence are not implemented; reassess before adding a migration-owned store.", "contracts": "Contract-only module: contract, amendment, and obligation persistence are not implemented; reassess before adding a migration-owned store.", "dms": "Stateless integration-preview module: DMS retains no document, person, credential, or provider-response store; Files and Records remain the subject-data owners. Reassess before persisting a target binding, plan, receipt, or diagnostic.", + "erp": "Stateless integration-contract module: ERP retains no invoice, payable, plan, booking observation, provider response, or credential store; Procurement, Payments, Ledger, Files, and Audit remain the subject-data owners. Reassess before persisting a target binding, plan, receipt, reconciliation decision, or diagnostic.", "evaluation": "Contract-only module: evaluation runs, responses, and scores are not persisted; reassess before adding a migration-owned store.", "facilities": "Contract-only module: facility and maintenance persistence are not implemented; reassess before adding a migration-owned store.", + "fit_connect": "Stateless transport-contract module: FIT-Connect retains no submission, attachment, receipt, acknowledgement plan, key, provider response, or diagnostic store; the owning Service, Forms, Cases, Files, and Audit workflows remain responsible for subject data. Reassess before persisting any ingress or event-log evidence.", "grants": "Contract-only module: grant applications, awards, and monitoring are not persisted; reassess before adding a migration-owned store.", "inspections": "Contract-only module: inspections, findings, and measures are not persisted; reassess before adding a migration-owned store.", "learning": "Contract-only module: learning offers, enrollment, and completion are not persisted; reassess before adding a migration-owned store.",