33using ModularityKit . Mutator . Abstractions . Policies ;
44using ModularityKit . Mutator . Governance . Abstractions . Approval . Model ;
55using ModularityKit . Mutator . Governance . Abstractions . Lifecycle . Model ;
6+ using ModularityKit . Mutator . Governance . Abstractions . Queries . Model . Approvals ;
7+ using ModularityKit . Mutator . Governance . Abstractions . Queries . Model . Decisions ;
68using ModularityKit . Mutator . Governance . Abstractions . Requests . Decisions ;
79using ModularityKit . Mutator . Governance . Abstractions . Requests . Factory ;
810using ModularityKit . Mutator . Governance . Abstractions . Requests . Model ;
@@ -76,7 +78,7 @@ public static void PrintRequests(IReadOnlyList<MutationRequest> requests)
7678 Console . WriteLine ( "- none" ) ;
7779 }
7880
79- public static void PrintApprovals ( IReadOnlyList < ModularityKit . Mutator . Governance . Abstractions . Queries . Model . MutationApprovalView > approvals )
81+ public static void PrintApprovals ( IReadOnlyList < MutationApprovalView > approvals )
8082 {
8183 foreach ( var approval in approvals )
8284 {
@@ -88,7 +90,7 @@ public static void PrintApprovals(IReadOnlyList<ModularityKit.Mutator.Governance
8890 Console . WriteLine ( "- none" ) ;
8991 }
9092
91- public static void PrintDecisions ( IReadOnlyList < ModularityKit . Mutator . Governance . Abstractions . Queries . Model . MutationRequestDecisionView > decisions )
93+ public static void PrintDecisions ( IReadOnlyList < MutationRequestDecisionView > decisions )
9294 {
9395 foreach ( var decision in decisions )
9496 {
@@ -114,7 +116,13 @@ private static MutationRequest CreatePendingApprovalRequest(
114116 {
115117 OperationName = "ExampleOperation" ,
116118 Category = category ,
117- Description = $ "Governed request for { category . ToLowerInvariant ( ) } flow"
119+ Description = $ "Governed request for { category . ToLowerInvariant ( ) } flow",
120+ Tags = new HashSet < string > { category . ToLowerInvariant ( ) , "approval" } ,
121+ EstimatedBlastRadius = category == "Security" ? BlastRadius . Module : BlastRadius . Single ,
122+ Metadata = new Dictionary < string , object >
123+ {
124+ [ "risk-owner" ] = category == "Security" ? "platform" : "finance"
125+ }
118126 } ,
119127 context : MutationContext . User ( "requester" , "Requester" , "Need governed change" ) ,
120128 requirements :
@@ -126,6 +134,10 @@ private static MutationRequest CreatePendingApprovalRequest(
126134 RequestId = requestId ,
127135 CreatedAt = createdAt ,
128136 UpdatedAt = createdAt ,
137+ Metadata = new Dictionary < string , object >
138+ {
139+ [ "ticket" ] = category == "Security" ? "INC-42" : "BILL-7"
140+ } ,
129141 ApprovalRequirements =
130142 [
131143 new MutationApprovalRequirement
@@ -150,15 +162,25 @@ private static MutationRequest CreateExternalCheckRequest(
150162 {
151163 OperationName = "ExampleOperation" ,
152164 Category = category ,
153- Description = "Waiting for dependency validation"
165+ Description = "Waiting for dependency validation" ,
166+ Tags = new HashSet < string > { "external-check" } ,
167+ EstimatedBlastRadius = BlastRadius . Single ,
168+ Metadata = new Dictionary < string , object >
169+ {
170+ [ "risk-owner" ] = "release"
171+ }
154172 } ,
155173 context : MutationContext . Service ( "release-orchestrator" , "Waiting for external dependency" ) ,
156174 pendingReason : PendingMutationReason . ExternalCheck )
157175 with
158176 {
159177 RequestId = requestId ,
160178 CreatedAt = createdAt ,
161- UpdatedAt = createdAt
179+ UpdatedAt = createdAt ,
180+ Metadata = new Dictionary < string , object >
181+ {
182+ [ "ticket" ] = "REL-99"
183+ }
162184 } ;
163185
164186 private static MutationRequest CreateRecentlyApprovedRequest (
@@ -175,7 +197,13 @@ private static MutationRequest CreateRecentlyApprovedRequest(
175197 {
176198 OperationName = "ExampleOperation" ,
177199 Category = category ,
178- Description = "Recently approved governed request"
200+ Description = "Recently approved governed request" ,
201+ Tags = new HashSet < string > { category . ToLowerInvariant ( ) , "approved" } ,
202+ EstimatedBlastRadius = category == "Security" ? BlastRadius . Module : BlastRadius . Single ,
203+ Metadata = new Dictionary < string , object >
204+ {
205+ [ "risk-owner" ] = category == "Security" ? "platform" : "finance"
206+ }
179207 } ,
180208 context : MutationContext . User ( "requester" , "Requester" , "Need privileged change" ) ,
181209 requirements :
@@ -189,6 +217,10 @@ private static MutationRequest CreateRecentlyApprovedRequest(
189217 PendingReason = null ,
190218 CreatedAt = approvedAt . AddMinutes ( - 20 ) ,
191219 UpdatedAt = approvedAt ,
220+ Metadata = new Dictionary < string , object >
221+ {
222+ [ "ticket" ] = category == "Security" ? "INC-77" : "BILL-9"
223+ } ,
192224 ApprovalRequirements =
193225 [
194226 new MutationApprovalRequirement
@@ -201,36 +233,36 @@ private static MutationRequest CreateRecentlyApprovedRequest(
201233 ] ,
202234 Decisions =
203235 [
204- MutationRequestDecision . Create (
205- MutationRequestDecisionType . Lifecycle ( MutationRequestLifecycleDecisionType . Submitted ) ,
236+ MutationRequestDecision . Lifecycle (
237+ MutationRequestLifecycleDecisionType . Submitted ,
206238 MutationContext . User ( "requester" , "Requester" , "Submitted" ) )
207239 with
208240 {
209241 Timestamp = approvedAt . AddMinutes ( - 20 )
210242 } ,
211- MutationRequestDecision . Create (
212- MutationRequestDecisionType . Lifecycle ( MutationRequestLifecycleDecisionType . Pending ) ,
243+ MutationRequestDecision . Lifecycle (
244+ MutationRequestLifecycleDecisionType . Pending ,
213245 MutationContext . User ( "requester" , "Requester" , "Pending approval" ) )
214246 with
215247 {
216248 Timestamp = approvedAt . AddMinutes ( - 19 )
217249 } ,
218- MutationRequestDecision . Create (
219- MutationRequestDecisionType . Approval ( MutationRequestApprovalDecisionType . Requested ) ,
250+ MutationRequestDecision . Approval (
251+ MutationRequestApprovalDecisionType . Requested ,
220252 MutationContext . User ( "requester" , "Requester" , "Approval requested" ) )
221253 with
222254 {
223255 Timestamp = approvedAt . AddMinutes ( - 18 )
224256 } ,
225- MutationRequestDecision . Create (
226- MutationRequestDecisionType . Approval ( MutationRequestApprovalDecisionType . Granted ) ,
257+ MutationRequestDecision . Approval (
258+ MutationRequestApprovalDecisionType . Granted ,
227259 MutationContext . User ( approverId , approverId , "Approved" ) )
228260 with
229261 {
230262 Timestamp = approvedAt
231263 } ,
232- MutationRequestDecision . Create (
233- MutationRequestDecisionType . Lifecycle ( MutationRequestLifecycleDecisionType . Approved ) ,
264+ MutationRequestDecision . Lifecycle (
265+ MutationRequestLifecycleDecisionType . Approved ,
234266 MutationContext . User ( approverId , approverId , "Approved" ) )
235267 with
236268 {
@@ -252,7 +284,13 @@ private static MutationRequest CreateResolvedRequest(
252284 {
253285 OperationName = "ExampleOperation" ,
254286 Category = category ,
255- Description = "Resolved governed request"
287+ Description = "Resolved governed request" ,
288+ Tags = new HashSet < string > { category . ToLowerInvariant ( ) , "resolution" } ,
289+ EstimatedBlastRadius = BlastRadius . Single ,
290+ Metadata = new Dictionary < string , object >
291+ {
292+ [ "risk-owner" ] = "governance"
293+ }
256294 } ,
257295 context : MutationContext . Service ( "governance-runtime" , "Resolve stale request" ) )
258296 with
@@ -261,18 +299,21 @@ private static MutationRequest CreateResolvedRequest(
261299 Status = MutationRequestStatus . Approved ,
262300 CreatedAt = decisionTimestamp . AddMinutes ( - 30 ) ,
263301 UpdatedAt = decisionTimestamp ,
302+ Metadata = new Dictionary < string , object >
303+ {
304+ [ "ticket" ] = "CFG-5"
305+ } ,
264306 Decisions =
265307 [
266- MutationRequestDecision . Create (
267- MutationRequestDecisionType . Lifecycle ( MutationRequestLifecycleDecisionType . Submitted ) ,
308+ MutationRequestDecision . Lifecycle (
309+ MutationRequestLifecycleDecisionType . Submitted ,
268310 MutationContext . Service ( "governance-runtime" , "Submitted" ) )
269311 with
270312 {
271313 Timestamp = decisionTimestamp . AddMinutes ( - 30 )
272314 } ,
273- MutationRequestDecision . Create (
274- MutationRequestDecisionType . VersionResolution (
275- MutationRequestVersionResolutionDecisionType . Validated ) ,
315+ MutationRequestDecision . VersionResolution (
316+ MutationRequestVersionResolutionDecisionType . Validated ,
276317 MutationContext . Service ( "governance-runtime" , "Validated current version" ) )
277318 with
278319 {
@@ -294,7 +335,13 @@ private static MutationRequest CreateExecutedRequest(
294335 {
295336 OperationName = "ExampleOperation" ,
296337 Category = category ,
297- Description = "Executed governed request"
338+ Description = "Executed governed request" ,
339+ Tags = new HashSet < string > { category . ToLowerInvariant ( ) , "executed" } ,
340+ EstimatedBlastRadius = BlastRadius . Single ,
341+ Metadata = new Dictionary < string , object >
342+ {
343+ [ "risk-owner" ] = "finance"
344+ }
298345 } ,
299346 context : MutationContext . Service ( "governance-runtime" , "Execute approved request" ) )
300347 with
@@ -304,24 +351,28 @@ private static MutationRequest CreateExecutedRequest(
304351 CreatedAt = executedAt . AddMinutes ( - 15 ) ,
305352 UpdatedAt = executedAt ,
306353 ExecutedAt = executedAt ,
354+ Metadata = new Dictionary < string , object >
355+ {
356+ [ "ticket" ] = "BILL-22"
357+ } ,
307358 Decisions =
308359 [
309- MutationRequestDecision . Create (
310- MutationRequestDecisionType . Lifecycle ( MutationRequestLifecycleDecisionType . Submitted ) ,
360+ MutationRequestDecision . Lifecycle (
361+ MutationRequestLifecycleDecisionType . Submitted ,
311362 MutationContext . Service ( "governance-runtime" , "Submitted" ) )
312363 with
313364 {
314365 Timestamp = executedAt . AddMinutes ( - 15 )
315366 } ,
316- MutationRequestDecision . Create (
317- MutationRequestDecisionType . Lifecycle ( MutationRequestLifecycleDecisionType . Approved ) ,
367+ MutationRequestDecision . Lifecycle (
368+ MutationRequestLifecycleDecisionType . Approved ,
318369 MutationContext . Service ( "governance-runtime" , "Approved" ) )
319370 with
320371 {
321372 Timestamp = executedAt . AddMinutes ( - 5 )
322373 } ,
323- MutationRequestDecision . Create (
324- MutationRequestDecisionType . Lifecycle ( MutationRequestLifecycleDecisionType . Executed ) ,
374+ MutationRequestDecision . Lifecycle (
375+ MutationRequestLifecycleDecisionType . Executed ,
325376 MutationContext . Service ( "governance-runtime" , "Executed" ) )
326377 with
327378 {
0 commit comments