Skip to content

Commit 6f87204

Browse files
committed
Docs: Define governance approval workflow
Added - ADR-025 for approval-driven governance request handling - ADR index entry for the approval workflow decision Result The governance roadmap now has an explicit architectural decision for approval-specific runtime behavior, separate from the generic pending lifecycle and versioned request resolution work.
1 parent 7c410d0 commit 6f87204

2 files changed

Lines changed: 68 additions & 0 deletions

File tree

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# ADR-025: Governance Approval Workflow
2+
3+
## Tag
4+
#adr_025
5+
6+
## Status
7+
Proposed
8+
9+
## Date
10+
2026-06-22
11+
12+
## Scope
13+
ModularityKit.Mutator.Governance
14+
15+
## Context
16+
17+
The core mutation model already supports `PolicyRequirement`, and the governance package already introduces pending mutation requests.
18+
19+
What is still missing is the explicit approval flow that connects both concepts:
20+
21+
- a mutation request enters `PendingApproval`
22+
- request-level requirements become visible and durable
23+
- approvers can approve or reject
24+
- decisions become part of request history
25+
- approved requests move toward execution
26+
27+
Without this workflow, approval remains only a modeled intention and not an executable governance capability.
28+
29+
## Decision
30+
31+
The governance package should implement approval as a first-class specialization of pending request lifecycle.
32+
33+
Expected direction:
34+
35+
- `PolicyRequirement` should map into request-level approval requirements
36+
- approval should not be represented only as a policy denial outcome
37+
- approval and rejection must be explicit governance actions
38+
- approval decisions must be recorded through `MutationRequestDecision`
39+
- approved requests must have a defined path toward execution
40+
- rejected requests must transition into a terminal governed status
41+
42+
Multi-step and multi-actor approvals should be supported by the model, even if the first runtime implementation starts with a simpler flow.
43+
44+
## Design Rationale
45+
46+
- Approval is one of the main reasons to introduce governance separately from core runtime.
47+
- The request model already provides the right seam for deferred approval-based execution.
48+
- Approval should build on pending lifecycle rather than creating a parallel flow model.
49+
50+
## Consequences
51+
52+
### Positive
53+
54+
- Governance gains a real approval process instead of a placeholder concept.
55+
- Request history becomes meaningful for approval-driven changes.
56+
- Future integrations with identity, ticketing, or compliance systems have a natural workflow hook.
57+
58+
### Negative
59+
60+
- Approval introduces additional lifecycle complexity and version-drift concerns.
61+
- The runtime must define how approved requests behave when state has changed since submission.
62+
63+
## Related ADRs
64+
65+
- ADR-021: Governance Pending Mutation Lifecycle
66+
- ADR-023: Governance Versioned Request Resolution
67+
- ADR-024: Governance Runtime Pending Request Handling

Docs/Decision/listadr.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,6 @@ These ADRs describe the `ModularityKit.Mutator.Governance` extension layer and i
4040
| ADR-022 | Governance Request Decisions and Storage | [ADR-022](Adr/ADR_022_Governance_Request_Decisions_and_Storage.md) |
4141
| ADR-023 | Governance Versioned Request Resolution | [ADR-023](Adr/ADR_023_Governance_Versioned_Request_Resolution.md) |
4242
| ADR-024 | Governance Runtime Pending Request Handling | [ADR-024](Adr/ADR_024_Governance_Runtime_Pending_Request_Handling.md) |
43+
| ADR-025 | Governance Approval Workflow | [ADR-025](Adr/ADR_025_Governance_Approval_Workflow.md) |
4344

4445
> See individual ADRs for detailed context, decision rationale, and consequences.

0 commit comments

Comments
 (0)