runbooks 1.1.4__py3-none-any.whl → 1.1.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. runbooks/__init__.py +31 -2
  2. runbooks/__init___optimized.py +18 -4
  3. runbooks/_platform/__init__.py +1 -5
  4. runbooks/_platform/core/runbooks_wrapper.py +141 -138
  5. runbooks/aws2/accuracy_validator.py +812 -0
  6. runbooks/base.py +7 -0
  7. runbooks/cfat/assessment/compliance.py +1 -1
  8. runbooks/cfat/assessment/runner.py +1 -0
  9. runbooks/cfat/cloud_foundations_assessment.py +227 -239
  10. runbooks/cli/__init__.py +1 -1
  11. runbooks/cli/commands/cfat.py +64 -23
  12. runbooks/cli/commands/finops.py +1005 -54
  13. runbooks/cli/commands/inventory.py +135 -91
  14. runbooks/cli/commands/operate.py +9 -36
  15. runbooks/cli/commands/security.py +42 -18
  16. runbooks/cli/commands/validation.py +432 -18
  17. runbooks/cli/commands/vpc.py +81 -17
  18. runbooks/cli/registry.py +22 -10
  19. runbooks/cloudops/__init__.py +20 -27
  20. runbooks/cloudops/base.py +96 -107
  21. runbooks/cloudops/cost_optimizer.py +544 -542
  22. runbooks/cloudops/infrastructure_optimizer.py +5 -4
  23. runbooks/cloudops/interfaces.py +224 -225
  24. runbooks/cloudops/lifecycle_manager.py +5 -4
  25. runbooks/cloudops/mcp_cost_validation.py +252 -235
  26. runbooks/cloudops/models.py +78 -53
  27. runbooks/cloudops/monitoring_automation.py +5 -4
  28. runbooks/cloudops/notebook_framework.py +177 -213
  29. runbooks/cloudops/security_enforcer.py +125 -159
  30. runbooks/common/accuracy_validator.py +17 -12
  31. runbooks/common/aws_pricing.py +349 -326
  32. runbooks/common/aws_pricing_api.py +211 -212
  33. runbooks/common/aws_profile_manager.py +40 -36
  34. runbooks/common/aws_utils.py +74 -79
  35. runbooks/common/business_logic.py +126 -104
  36. runbooks/common/cli_decorators.py +36 -60
  37. runbooks/common/comprehensive_cost_explorer_integration.py +455 -463
  38. runbooks/common/cross_account_manager.py +197 -204
  39. runbooks/common/date_utils.py +27 -39
  40. runbooks/common/decorators.py +29 -19
  41. runbooks/common/dry_run_examples.py +173 -208
  42. runbooks/common/dry_run_framework.py +157 -155
  43. runbooks/common/enhanced_exception_handler.py +15 -4
  44. runbooks/common/enhanced_logging_example.py +50 -64
  45. runbooks/common/enhanced_logging_integration_example.py +65 -37
  46. runbooks/common/env_utils.py +16 -16
  47. runbooks/common/error_handling.py +40 -38
  48. runbooks/common/lazy_loader.py +41 -23
  49. runbooks/common/logging_integration_helper.py +79 -86
  50. runbooks/common/mcp_cost_explorer_integration.py +476 -493
  51. runbooks/common/mcp_integration.py +99 -79
  52. runbooks/common/memory_optimization.py +140 -118
  53. runbooks/common/module_cli_base.py +37 -58
  54. runbooks/common/organizations_client.py +175 -193
  55. runbooks/common/patterns.py +23 -25
  56. runbooks/common/performance_monitoring.py +67 -71
  57. runbooks/common/performance_optimization_engine.py +283 -274
  58. runbooks/common/profile_utils.py +111 -37
  59. runbooks/common/rich_utils.py +315 -141
  60. runbooks/common/sre_performance_suite.py +177 -186
  61. runbooks/enterprise/__init__.py +1 -1
  62. runbooks/enterprise/logging.py +144 -106
  63. runbooks/enterprise/security.py +187 -204
  64. runbooks/enterprise/validation.py +43 -56
  65. runbooks/finops/__init__.py +26 -30
  66. runbooks/finops/account_resolver.py +1 -1
  67. runbooks/finops/advanced_optimization_engine.py +980 -0
  68. runbooks/finops/automation_core.py +268 -231
  69. runbooks/finops/business_case_config.py +184 -179
  70. runbooks/finops/cli.py +660 -139
  71. runbooks/finops/commvault_ec2_analysis.py +157 -164
  72. runbooks/finops/compute_cost_optimizer.py +336 -320
  73. runbooks/finops/config.py +20 -20
  74. runbooks/finops/cost_optimizer.py +484 -618
  75. runbooks/finops/cost_processor.py +332 -214
  76. runbooks/finops/dashboard_runner.py +1006 -172
  77. runbooks/finops/ebs_cost_optimizer.py +991 -657
  78. runbooks/finops/elastic_ip_optimizer.py +317 -257
  79. runbooks/finops/enhanced_mcp_integration.py +340 -0
  80. runbooks/finops/enhanced_progress.py +32 -29
  81. runbooks/finops/enhanced_trend_visualization.py +3 -2
  82. runbooks/finops/enterprise_wrappers.py +223 -285
  83. runbooks/finops/executive_export.py +203 -160
  84. runbooks/finops/helpers.py +130 -288
  85. runbooks/finops/iam_guidance.py +1 -1
  86. runbooks/finops/infrastructure/__init__.py +80 -0
  87. runbooks/finops/infrastructure/commands.py +506 -0
  88. runbooks/finops/infrastructure/load_balancer_optimizer.py +866 -0
  89. runbooks/finops/infrastructure/vpc_endpoint_optimizer.py +832 -0
  90. runbooks/finops/markdown_exporter.py +337 -174
  91. runbooks/finops/mcp_validator.py +1952 -0
  92. runbooks/finops/nat_gateway_optimizer.py +1512 -481
  93. runbooks/finops/network_cost_optimizer.py +657 -587
  94. runbooks/finops/notebook_utils.py +226 -188
  95. runbooks/finops/optimization_engine.py +1136 -0
  96. runbooks/finops/optimizer.py +19 -23
  97. runbooks/finops/rds_snapshot_optimizer.py +367 -411
  98. runbooks/finops/reservation_optimizer.py +427 -363
  99. runbooks/finops/scenario_cli_integration.py +64 -65
  100. runbooks/finops/scenarios.py +1277 -438
  101. runbooks/finops/schemas.py +218 -182
  102. runbooks/finops/snapshot_manager.py +2289 -0
  103. runbooks/finops/types.py +3 -3
  104. runbooks/finops/validation_framework.py +259 -265
  105. runbooks/finops/vpc_cleanup_exporter.py +189 -144
  106. runbooks/finops/vpc_cleanup_optimizer.py +591 -573
  107. runbooks/finops/workspaces_analyzer.py +171 -182
  108. runbooks/integration/__init__.py +89 -0
  109. runbooks/integration/mcp_integration.py +1920 -0
  110. runbooks/inventory/CLAUDE.md +816 -0
  111. runbooks/inventory/__init__.py +2 -2
  112. runbooks/inventory/aws_decorators.py +2 -3
  113. runbooks/inventory/check_cloudtrail_compliance.py +2 -4
  114. runbooks/inventory/check_controltower_readiness.py +152 -151
  115. runbooks/inventory/check_landingzone_readiness.py +85 -84
  116. runbooks/inventory/cloud_foundations_integration.py +144 -149
  117. runbooks/inventory/collectors/aws_comprehensive.py +1 -1
  118. runbooks/inventory/collectors/aws_networking.py +109 -99
  119. runbooks/inventory/collectors/base.py +4 -0
  120. runbooks/inventory/core/collector.py +495 -313
  121. runbooks/inventory/core/formatter.py +11 -0
  122. runbooks/inventory/draw_org_structure.py +8 -9
  123. runbooks/inventory/drift_detection_cli.py +69 -96
  124. runbooks/inventory/ec2_vpc_utils.py +2 -2
  125. runbooks/inventory/find_cfn_drift_detection.py +5 -7
  126. runbooks/inventory/find_cfn_orphaned_stacks.py +7 -9
  127. runbooks/inventory/find_cfn_stackset_drift.py +5 -6
  128. runbooks/inventory/find_ec2_security_groups.py +48 -42
  129. runbooks/inventory/find_landingzone_versions.py +4 -6
  130. runbooks/inventory/find_vpc_flow_logs.py +7 -9
  131. runbooks/inventory/inventory_mcp_cli.py +48 -46
  132. runbooks/inventory/inventory_modules.py +103 -91
  133. runbooks/inventory/list_cfn_stacks.py +9 -10
  134. runbooks/inventory/list_cfn_stackset_operation_results.py +1 -3
  135. runbooks/inventory/list_cfn_stackset_operations.py +79 -57
  136. runbooks/inventory/list_cfn_stacksets.py +8 -10
  137. runbooks/inventory/list_config_recorders_delivery_channels.py +49 -39
  138. runbooks/inventory/list_ds_directories.py +65 -53
  139. runbooks/inventory/list_ec2_availability_zones.py +2 -4
  140. runbooks/inventory/list_ec2_ebs_volumes.py +32 -35
  141. runbooks/inventory/list_ec2_instances.py +23 -28
  142. runbooks/inventory/list_ecs_clusters_and_tasks.py +26 -34
  143. runbooks/inventory/list_elbs_load_balancers.py +22 -20
  144. runbooks/inventory/list_enis_network_interfaces.py +26 -33
  145. runbooks/inventory/list_guardduty_detectors.py +2 -4
  146. runbooks/inventory/list_iam_policies.py +2 -4
  147. runbooks/inventory/list_iam_roles.py +5 -7
  148. runbooks/inventory/list_iam_saml_providers.py +4 -6
  149. runbooks/inventory/list_lambda_functions.py +38 -38
  150. runbooks/inventory/list_org_accounts.py +6 -8
  151. runbooks/inventory/list_org_accounts_users.py +55 -44
  152. runbooks/inventory/list_rds_db_instances.py +31 -33
  153. runbooks/inventory/list_rds_snapshots_aggregator.py +192 -208
  154. runbooks/inventory/list_route53_hosted_zones.py +3 -5
  155. runbooks/inventory/list_servicecatalog_provisioned_products.py +37 -41
  156. runbooks/inventory/list_sns_topics.py +2 -4
  157. runbooks/inventory/list_ssm_parameters.py +4 -7
  158. runbooks/inventory/list_vpc_subnets.py +2 -4
  159. runbooks/inventory/list_vpcs.py +7 -10
  160. runbooks/inventory/mcp_inventory_validator.py +554 -468
  161. runbooks/inventory/mcp_vpc_validator.py +359 -442
  162. runbooks/inventory/organizations_discovery.py +63 -55
  163. runbooks/inventory/recover_cfn_stack_ids.py +7 -8
  164. runbooks/inventory/requirements.txt +0 -1
  165. runbooks/inventory/rich_inventory_display.py +35 -34
  166. runbooks/inventory/run_on_multi_accounts.py +3 -5
  167. runbooks/inventory/unified_validation_engine.py +281 -253
  168. runbooks/inventory/verify_ec2_security_groups.py +1 -1
  169. runbooks/inventory/vpc_analyzer.py +735 -697
  170. runbooks/inventory/vpc_architecture_validator.py +293 -348
  171. runbooks/inventory/vpc_dependency_analyzer.py +384 -380
  172. runbooks/inventory/vpc_flow_analyzer.py +1 -1
  173. runbooks/main.py +49 -34
  174. runbooks/main_final.py +91 -60
  175. runbooks/main_minimal.py +22 -10
  176. runbooks/main_optimized.py +131 -100
  177. runbooks/main_ultra_minimal.py +7 -2
  178. runbooks/mcp/__init__.py +36 -0
  179. runbooks/mcp/integration.py +679 -0
  180. runbooks/monitoring/performance_monitor.py +9 -4
  181. runbooks/operate/dynamodb_operations.py +3 -1
  182. runbooks/operate/ec2_operations.py +145 -137
  183. runbooks/operate/iam_operations.py +146 -152
  184. runbooks/operate/networking_cost_heatmap.py +29 -8
  185. runbooks/operate/rds_operations.py +223 -254
  186. runbooks/operate/s3_operations.py +107 -118
  187. runbooks/operate/vpc_operations.py +646 -616
  188. runbooks/remediation/base.py +1 -1
  189. runbooks/remediation/commons.py +10 -7
  190. runbooks/remediation/commvault_ec2_analysis.py +70 -66
  191. runbooks/remediation/ec2_unattached_ebs_volumes.py +1 -0
  192. runbooks/remediation/multi_account.py +24 -21
  193. runbooks/remediation/rds_snapshot_list.py +86 -60
  194. runbooks/remediation/remediation_cli.py +92 -146
  195. runbooks/remediation/universal_account_discovery.py +83 -79
  196. runbooks/remediation/workspaces_list.py +46 -41
  197. runbooks/security/__init__.py +19 -0
  198. runbooks/security/assessment_runner.py +1150 -0
  199. runbooks/security/baseline_checker.py +812 -0
  200. runbooks/security/cloudops_automation_security_validator.py +509 -535
  201. runbooks/security/compliance_automation_engine.py +17 -17
  202. runbooks/security/config/__init__.py +2 -2
  203. runbooks/security/config/compliance_config.py +50 -50
  204. runbooks/security/config_template_generator.py +63 -76
  205. runbooks/security/enterprise_security_framework.py +1 -1
  206. runbooks/security/executive_security_dashboard.py +519 -508
  207. runbooks/security/multi_account_security_controls.py +959 -1210
  208. runbooks/security/real_time_security_monitor.py +422 -444
  209. runbooks/security/security_baseline_tester.py +1 -1
  210. runbooks/security/security_cli.py +143 -112
  211. runbooks/security/test_2way_validation.py +439 -0
  212. runbooks/security/two_way_validation_framework.py +852 -0
  213. runbooks/sre/production_monitoring_framework.py +167 -177
  214. runbooks/tdd/__init__.py +15 -0
  215. runbooks/tdd/cli.py +1071 -0
  216. runbooks/utils/__init__.py +14 -17
  217. runbooks/utils/logger.py +7 -2
  218. runbooks/utils/version_validator.py +50 -47
  219. runbooks/validation/__init__.py +6 -6
  220. runbooks/validation/cli.py +9 -3
  221. runbooks/validation/comprehensive_2way_validator.py +745 -704
  222. runbooks/validation/mcp_validator.py +906 -228
  223. runbooks/validation/terraform_citations_validator.py +104 -115
  224. runbooks/validation/terraform_drift_detector.py +461 -454
  225. runbooks/vpc/README.md +617 -0
  226. runbooks/vpc/__init__.py +8 -1
  227. runbooks/vpc/analyzer.py +577 -0
  228. runbooks/vpc/cleanup_wrapper.py +476 -413
  229. runbooks/vpc/cli_cloudtrail_commands.py +339 -0
  230. runbooks/vpc/cli_mcp_validation_commands.py +480 -0
  231. runbooks/vpc/cloudtrail_audit_integration.py +717 -0
  232. runbooks/vpc/config.py +92 -97
  233. runbooks/vpc/cost_engine.py +411 -148
  234. runbooks/vpc/cost_explorer_integration.py +553 -0
  235. runbooks/vpc/cross_account_session.py +101 -106
  236. runbooks/vpc/enhanced_mcp_validation.py +917 -0
  237. runbooks/vpc/eni_gate_validator.py +961 -0
  238. runbooks/vpc/heatmap_engine.py +185 -160
  239. runbooks/vpc/mcp_no_eni_validator.py +680 -639
  240. runbooks/vpc/nat_gateway_optimizer.py +358 -0
  241. runbooks/vpc/networking_wrapper.py +15 -8
  242. runbooks/vpc/pdca_remediation_planner.py +528 -0
  243. runbooks/vpc/performance_optimized_analyzer.py +219 -231
  244. runbooks/vpc/runbooks_adapter.py +1167 -241
  245. runbooks/vpc/tdd_red_phase_stubs.py +601 -0
  246. runbooks/vpc/test_data_loader.py +358 -0
  247. runbooks/vpc/tests/conftest.py +314 -4
  248. runbooks/vpc/tests/test_cleanup_framework.py +1022 -0
  249. runbooks/vpc/tests/test_cost_engine.py +0 -2
  250. runbooks/vpc/topology_generator.py +326 -0
  251. runbooks/vpc/unified_scenarios.py +1297 -1124
  252. runbooks/vpc/vpc_cleanup_integration.py +1943 -1115
  253. runbooks-1.1.6.dist-info/METADATA +327 -0
  254. runbooks-1.1.6.dist-info/RECORD +489 -0
  255. runbooks/finops/README.md +0 -414
  256. runbooks/finops/accuracy_cross_validator.py +0 -647
  257. runbooks/finops/business_cases.py +0 -950
  258. runbooks/finops/dashboard_router.py +0 -922
  259. runbooks/finops/ebs_optimizer.py +0 -973
  260. runbooks/finops/embedded_mcp_validator.py +0 -1629
  261. runbooks/finops/enhanced_dashboard_runner.py +0 -527
  262. runbooks/finops/finops_dashboard.py +0 -584
  263. runbooks/finops/finops_scenarios.py +0 -1218
  264. runbooks/finops/legacy_migration.py +0 -730
  265. runbooks/finops/multi_dashboard.py +0 -1519
  266. runbooks/finops/single_dashboard.py +0 -1113
  267. runbooks/finops/unlimited_scenarios.py +0 -393
  268. runbooks-1.1.4.dist-info/METADATA +0 -800
  269. runbooks-1.1.4.dist-info/RECORD +0 -468
  270. {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/WHEEL +0 -0
  271. {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/entry_points.txt +0 -0
  272. {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/licenses/LICENSE +0 -0
  273. {runbooks-1.1.4.dist-info → runbooks-1.1.6.dist-info}/top_level.txt +0 -0
@@ -8,20 +8,21 @@ Strategic Achievement: Manager requires business scenario intelligence with smar
8
8
  parameter recommendations per business case type.
9
9
  """
10
10
 
11
- import click
12
11
  import time
13
- from typing import Dict, List, Optional, Any
12
+ from typing import Any, Dict, List, Optional
13
+
14
+ import click
14
15
  from rich.console import Console
15
- from rich.table import Table
16
16
  from rich.panel import Panel
17
+ from rich.table import Table
17
18
 
19
+ from ..common.rich_utils import print_header, print_info, print_success, print_warning
18
20
  from .business_case_config import (
21
+ BusinessScenarioMatrix,
22
+ ScenarioParameter,
19
23
  get_business_case_config,
20
24
  get_business_scenario_matrix,
21
- BusinessScenarioMatrix,
22
- ScenarioParameter
23
25
  )
24
- from ..common.rich_utils import print_header, print_info, print_success, print_warning
25
26
 
26
27
 
27
28
  class SimplifiedScenarioMessaging:
@@ -47,14 +48,14 @@ class SimplifiedScenarioMessaging:
47
48
  Achieves 75% reduction: 5 operations → 1 panel.
48
49
  """
49
50
  self.operation_count += 5 # Would have been 5 separate prints
50
- self.template_count += 1 # Now using 1 panel template
51
+ self.template_count += 1 # Now using 1 panel template
51
52
 
52
53
  scenario_content = self._format_scenario_content(scenario_config)
53
54
  scenario_panel = Panel(
54
55
  scenario_content,
55
56
  title=f"[bold cyan]Scenario: {scenario_config.display_name}[/bold cyan]",
56
57
  border_style="cyan",
57
- padding=(1, 2)
58
+ padding=(1, 2),
58
59
  )
59
60
  self.console.print(scenario_panel)
60
61
 
@@ -75,7 +76,7 @@ class SimplifiedScenarioMessaging:
75
76
  param_content,
76
77
  title="[bold green]🎯 Intelligent Parameter Recommendations[/bold green]",
77
78
  border_style="green",
78
- padding=(1, 2)
79
+ padding=(1, 2),
79
80
  )
80
81
  self.console.print(param_panel)
81
82
 
@@ -96,7 +97,7 @@ class SimplifiedScenarioMessaging:
96
97
  suggestion_content,
97
98
  title=f"[bold yellow]💡 Parameter Optimization Suggestions for '{scenario_key}'[/bold yellow]",
98
99
  border_style="yellow",
99
- padding=(1, 2)
100
+ padding=(1, 2),
100
101
  )
101
102
  self.console.print(suggestion_panel)
102
103
 
@@ -111,7 +112,7 @@ class SimplifiedScenarioMessaging:
111
112
  "template_operations_used": self.template_count,
112
113
  "operations_saved": self.operation_count - self.template_count,
113
114
  "efficiency_percentage": efficiency,
114
- "target_achieved": efficiency >= 75.0
115
+ "target_achieved": efficiency >= 75.0,
115
116
  }
116
117
 
117
118
  def _format_scenario_content(self, scenario_config) -> str:
@@ -139,7 +140,7 @@ class SimplifiedScenarioMessaging:
139
140
  content_lines.append(f" [dim]→ {param.business_justification}[/dim]")
140
141
 
141
142
  if param.alternative_values:
142
- alternatives = ', '.join(str(v) for v in param.alternative_values)
143
+ alternatives = ", ".join(str(v) for v in param.alternative_values)
143
144
  content_lines.append(f" [dim]Alternatives: {alternatives}[/dim]")
144
145
  content_lines.append("")
145
146
 
@@ -206,19 +207,21 @@ class ScenarioCliHelper:
206
207
  command_panel = Panel(
207
208
  f"[dim]runbooks finops --scenario {scenario_key} {optimal_command}[/dim]",
208
209
  title="[bold yellow]💡 Optimal Command Example[/bold yellow]",
209
- border_style="yellow"
210
+ border_style="yellow",
210
211
  )
211
212
  self.console.print(command_panel)
212
213
  else:
213
214
  print_info("Using standard parameters for this scenario")
214
215
 
215
216
  # Audit trail for Phase 2 compliance
216
- self.audit_trail.append({
217
- "action": "single_scenario_help",
218
- "scenario": scenario_key,
219
- "simplified_messaging_used": True,
220
- "timestamp": time.time()
221
- })
217
+ self.audit_trail.append(
218
+ {
219
+ "action": "single_scenario_help",
220
+ "scenario": scenario_key,
221
+ "simplified_messaging_used": True,
222
+ "timestamp": time.time(),
223
+ }
224
+ )
222
225
 
223
226
  def _display_all_scenarios_help(self) -> None:
224
227
  """Display overview of all scenarios with parameter summaries."""
@@ -226,7 +229,7 @@ class ScenarioCliHelper:
226
229
  table = Table(
227
230
  title="🎯 Business Scenarios with Intelligent Parameter Defaults",
228
231
  show_header=True,
229
- header_style="bold cyan"
232
+ header_style="bold cyan",
230
233
  )
231
234
 
232
235
  table.add_column("Scenario", style="bold white", width=15)
@@ -240,26 +243,20 @@ class ScenarioCliHelper:
240
243
 
241
244
  # Tier classification for display
242
245
  tier_mapping = {
243
- 'workspaces': 'Tier 1',
244
- 'nat-gateway': 'Tier 1',
245
- 'rds-snapshots': 'Tier 1',
246
- 'ebs-optimization': 'Tier 2',
247
- 'vpc-cleanup': 'Tier 2',
248
- 'elastic-ip': 'Tier 2',
249
- 'backup-investigation': 'Tier 3'
246
+ "workspaces": "Tier 1",
247
+ "nat-gateway": "Tier 1",
248
+ "rds-snapshots": "Tier 1",
249
+ "ebs-optimization": "Tier 2",
250
+ "vpc-cleanup": "Tier 2",
251
+ "elastic-ip": "Tier 2",
252
+ "backup-investigation": "Tier 3",
250
253
  }
251
254
 
252
255
  for scenario_key, scenario in self.business_config.get_all_scenarios().items():
253
256
  parameter_summary = scenario_summaries.get(scenario_key, "Standard")
254
257
  tier = tier_mapping.get(scenario_key, "Standard")
255
258
 
256
- table.add_row(
257
- scenario_key,
258
- scenario.display_name,
259
- scenario.savings_range_display,
260
- parameter_summary,
261
- tier
262
- )
259
+ table.add_row(scenario_key, scenario.display_name, scenario.savings_range_display, parameter_summary, tier)
263
260
 
264
261
  self.console.print(table)
265
262
 
@@ -282,7 +279,7 @@ class ScenarioCliHelper:
282
279
  • runbooks finops --help-scenarios # All scenarios overview
283
280
  """,
284
281
  title="📚 Scenario Usage Guide",
285
- style="cyan"
282
+ style="cyan",
286
283
  )
287
284
  self.console.print(usage_panel)
288
285
 
@@ -298,7 +295,7 @@ class ScenarioCliHelper:
298
295
  self.console.print(f" [dim]→ {param.business_justification}[/dim]")
299
296
 
300
297
  if param.alternative_values:
301
- alternatives = ', '.join(str(v) for v in param.alternative_values)
298
+ alternatives = ", ".join(str(v) for v in param.alternative_values)
302
299
  self.console.print(f" [dim]Alternatives: {alternatives}[/dim]")
303
300
  self.console.print()
304
301
 
@@ -327,13 +324,15 @@ class ScenarioCliHelper:
327
324
  self.simplified_messaging.display_optimization_suggestions(scenario_key, suggestions)
328
325
 
329
326
  # Audit trail
330
- self.audit_trail.append({
331
- "action": "parameter_validation",
332
- "scenario": scenario_key,
333
- "suggestions_count": len(suggestions),
334
- "simplified_messaging_used": True,
335
- "timestamp": time.time()
336
- })
327
+ self.audit_trail.append(
328
+ {
329
+ "action": "parameter_validation",
330
+ "scenario": scenario_key,
331
+ "suggestions_count": len(suggestions),
332
+ "simplified_messaging_used": True,
333
+ "timestamp": time.time(),
334
+ }
335
+ )
337
336
 
338
337
  def get_scenario_cli_choices(self) -> List[str]:
339
338
  """Get list of valid scenario choices for Click options."""
@@ -363,18 +362,18 @@ class ScenarioCliHelper:
363
362
  "operations_with_simplified_messaging": sum(
364
363
  1 for op in self.audit_trail if op.get("simplified_messaging_used", False)
365
364
  ),
366
- "audit_compliance": "enterprise_ready"
365
+ "audit_compliance": "enterprise_ready",
367
366
  },
368
367
  "target_achievements": {
369
368
  "message_simplification_target": 75.0,
370
369
  "achieved_efficiency": messaging_metrics.get("efficiency_percentage", 0.0),
371
- "target_met": messaging_metrics.get("target_achieved", False)
370
+ "target_met": messaging_metrics.get("target_achieved", False),
372
371
  },
373
372
  "performance_improvements": {
374
373
  "console_operations_reduced": messaging_metrics.get("operations_saved", 0),
375
374
  "template_consolidation": "Rich panel integration implemented",
376
- "information_preservation": "100% content maintained"
377
- }
375
+ "information_preservation": "100% content maintained",
376
+ },
378
377
  }
379
378
 
380
379
 
@@ -417,21 +416,21 @@ def get_scenario_parameter_defaults(scenario_key: str) -> Dict[str, Any]:
417
416
  defaults = {}
418
417
 
419
418
  for param_key, param in recommendations.items():
420
- if param.name == '--time-range':
421
- defaults['time_range'] = param.optimal_value
422
- elif param.name == '--unblended':
423
- defaults['unblended'] = True
424
- elif param.name == '--amortized':
425
- defaults['amortized'] = True
426
- elif param.name == '--dual-metrics':
427
- defaults['dual_metrics'] = True
428
- elif param.name == '--pdf':
429
- defaults['pdf'] = True
430
- elif param.name == '--csv':
431
- defaults['csv'] = True
432
- elif param.name == '--json':
433
- defaults['json'] = True
434
- elif param.name == '--markdown':
435
- defaults['export_markdown'] = True
436
-
437
- return defaults
419
+ if param.name == "--time-range":
420
+ defaults["time_range"] = param.optimal_value
421
+ elif param.name == "--unblended":
422
+ defaults["unblended"] = True
423
+ elif param.name == "--amortized":
424
+ defaults["amortized"] = True
425
+ elif param.name == "--dual-metrics":
426
+ defaults["dual_metrics"] = True
427
+ elif param.name == "--pdf":
428
+ defaults["pdf"] = True
429
+ elif param.name == "--csv":
430
+ defaults["csv"] = True
431
+ elif param.name == "--json":
432
+ defaults["json"] = True
433
+ elif param.name == "--markdown":
434
+ defaults["export_markdown"] = True
435
+
436
+ return defaults