[Feature] Add approval workflow and separation-of-duties gates #22

Closed
opened 2026-07-06 11:23:58 +02:00 by zemion · 2 comments
Owner

Imported from the consolidated GovOPlaN product backlog.

  • Source: /mnt/DATA/Nextcloud/ADD ideas UG/Products/govoplan/backlog.md
  • Line: 177
  • Section: Milestones > Milestone 10 - Collaboration And Advanced Governance
  • Source status: PARTIAL.

Imported backlog item:

- [ ] Add approval workflow and separation-of-duties gates.
<!-- codex-backlog-fingerprint:55958ead110c40a257ac82cf --> Imported from the consolidated GovOPlaN product backlog. - Source: `/mnt/DATA/Nextcloud/ADD ideas UG/Products/govoplan/backlog.md` - Line: `177` - Section: `Milestones > Milestone 10 - Collaboration And Advanced Governance` - Source status: `PARTIAL.` Imported backlog item: ```markdown - [ ] Add approval workflow and separation-of-duties gates. ```
zemion added this to the Milestone 10 - Collaboration And Advanced Governance milestone 2026-07-06 13:14:37 +02:00
Author
Owner

Evaluation and bounded evidence work completed in GovOPlaN/govoplan-campaign@82ddc0c.

Campaign validation and build summaries now record actor/timestamp provenance; review already records the reviewer, immutable build token, message digest, inspected keys, and per-exception reasons. This is enough evidence for a future separation-of-duties decision, but it is not itself an approval.

A Campaign-local approve switch would duplicate the existing module boundary. Generic chains, eligible authority, quorum, delegation/substitution, escalation, expiry, and signatures belong to the currently scaffold-only Approvals module. I created Approvals #1 with the runtime acceptance criteria and remaining policy decisions. Keep this issue open as the Campaign consumer/gate integration after that capability exists.

Evaluation and bounded evidence work completed in GovOPlaN/govoplan-campaign@82ddc0c. Campaign validation and build summaries now record actor/timestamp provenance; review already records the reviewer, immutable build token, message digest, inspected keys, and per-exception reasons. This is enough evidence for a future separation-of-duties decision, but it is not itself an approval. A Campaign-local approve switch would duplicate the existing module boundary. Generic chains, eligible authority, quorum, delegation/substitution, escalation, expiry, and signatures belong to the currently scaffold-only Approvals module. I created [Approvals #1](https://git.add-ideas.de/GovOPlaN/govoplan-approvals/issues/1) with the runtime acceptance criteria and remaining policy decisions. Keep this issue open as the Campaign consumer/gate integration after that capability exists.
zemion added
status
needs-info
and removed
status
triage
labels 2026-07-31 22:54:51 +02:00
Author
Owner

Codex State: done

Summary

  • Implemented an optional exact-execution-snapshot Approval gate with Campaign actor evidence, configurable authority/quorum/signature and separation-of-duties exclusions, UI request/status flow, and enforcement across synchronous, queued, retry, and single-message live delivery.
  • Campaign remains usable without Approvals; a configured gate fails closed if the capability is unavailable or the execution changes. Pushed as GovOPlaN/govoplan-campaign@2afdd38.

Changed Files

  • src/govoplan_campaign/backend/approval_gate.py
  • src/govoplan_campaign/backend/routes/delivery.py
  • webui/src/features/campaigns/ReviewSendPage.tsx

Verification

  • All 80 Campaign backend tests passed.
  • Approval integration tests passed (2 tests); full WebUI module permutations passed.
## Codex State: done ### Summary - Implemented an optional exact-execution-snapshot Approval gate with Campaign actor evidence, configurable authority/quorum/signature and separation-of-duties exclusions, UI request/status flow, and enforcement across synchronous, queued, retry, and single-message live delivery. - Campaign remains usable without Approvals; a configured gate fails closed if the capability is unavailable or the execution changes. Pushed as GovOPlaN/govoplan-campaign@2afdd38. ### Changed Files - `src/govoplan_campaign/backend/approval_gate.py` - `src/govoplan_campaign/backend/routes/delivery.py` - `webui/src/features/campaigns/ReviewSendPage.tsx` ### Verification - `All 80 Campaign backend tests passed.` - `Approval integration tests passed (2 tests); full WebUI module permutations passed.`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-campaign#22