icdev 0.0.3__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 (1214) hide show
  1. args/agent_config.yaml +113 -0
  2. args/audit_regimes/cisa_sbd.json +381 -0
  3. args/audit_regimes/cmmc_l2.json +906 -0
  4. args/audit_regimes/dod_cssp.json +393 -0
  5. args/audit_regimes/dodi_5000_87.json +297 -0
  6. args/audit_regimes/fedramp_moderate.json +650 -0
  7. args/audit_regimes/ieee_1012.json +373 -0
  8. args/audit_regimes/nist_800_171.json +624 -0
  9. args/audit_regimes/nist_800_53.json +907 -0
  10. args/cloudforge_blueprints/aws_commercial.yaml +29 -0
  11. args/cloudforge_blueprints/aws_govcloud_il4.yaml +34 -0
  12. args/cloudforge_blueprints/aws_govcloud_il5.yaml +38 -0
  13. args/cloudforge_blueprints/azure_commercial.yaml +28 -0
  14. args/cloudforge_blueprints/azure_gov_il4.yaml +32 -0
  15. args/cloudforge_blueprints/azure_gov_il5.yaml +36 -0
  16. args/cloudforge_blueprints/gcp_commercial.yaml +28 -0
  17. args/cloudforge_blueprints/oci_commercial.yaml +28 -0
  18. args/cloudforge_config.yaml +231 -0
  19. args/cloudforge_runbook_templates/backup_verify.yaml +98 -0
  20. args/cloudforge_runbook_templates/dr_failover.yaml +107 -0
  21. args/cloudforge_runbook_templates/health_check.yaml +97 -0
  22. args/cloudforge_runbook_templates/incident_response.yaml +101 -0
  23. args/cloudforge_runbook_templates/migration_cutover.yaml +105 -0
  24. args/cloudforge_runbook_templates/patch_rollout.yaml +92 -0
  25. args/cloudforge_runbook_templates/zone_provision.yaml +93 -0
  26. args/code_pattern_config.yaml +151 -0
  27. args/code_quality_config.yaml +47 -0
  28. args/compliance_config.yaml +17 -0
  29. args/control_inheritance.yaml +177 -0
  30. args/csp_mcp_config.yaml +41 -0
  31. args/cui_markings.yaml +35 -0
  32. args/databridge_config.yaml +232 -0
  33. args/db_config.yaml +116 -0
  34. args/decision_tables/agent_trust_decision.yaml +143 -0
  35. args/decision_tables/ato_boundary_impact.yaml +132 -0
  36. args/decision_tables/deployment_approval.yaml +152 -0
  37. args/degradation_matrix.yaml +163 -0
  38. args/devsecops_config.yaml +286 -0
  39. args/endpoint_security_config.yaml +207 -0
  40. args/exit_criteria.yaml +102 -0
  41. args/feature_flags.yaml +235 -0
  42. args/file_access_tiers.yaml +88 -0
  43. args/forge_studio/blueprint_config.yaml +27 -0
  44. args/forge_studio/component_catalog.json +411 -0
  45. args/forge_studio/workflow_templates.yaml +103 -0
  46. args/govcon_config.yaml +41 -0
  47. args/harness_config.yaml +67 -0
  48. args/innovation_config.yaml +321 -0
  49. args/knowledge_graph_config.yaml +113 -0
  50. args/llm_config.yaml +222 -0
  51. args/marketplace_config.yaml +260 -0
  52. args/monitoring_config.yaml +127 -0
  53. args/mosa_config.yaml +190 -0
  54. args/observability_tracing_config.yaml +170 -0
  55. args/owasp_agentic_config.yaml +171 -0
  56. args/pipeline_gates.yaml +197 -0
  57. args/project_defaults.yaml +235 -0
  58. args/prompt_chains.yaml +163 -0
  59. args/rag_config.yaml +167 -0
  60. args/research_config.yaml +89 -0
  61. args/resilience_config.yaml +197 -0
  62. args/ricoas_config.yaml +191 -0
  63. args/security_gates.yaml +763 -0
  64. args/storage_config.yaml +63 -0
  65. args/writeguard_config.yaml +131 -0
  66. args/zta_config.yaml +247 -0
  67. context/__init__.py +6 -0
  68. context/agent/__init__.py +6 -0
  69. context/agent/response_schemas/__init__.py +6 -0
  70. context/agent/response_schemas/debate_position.json +46 -0
  71. context/agent/response_schemas/fitness_scorecard.json +74 -0
  72. context/agent/response_schemas/review_decision.json +39 -0
  73. context/agent/response_schemas/task_decomposition.json +82 -0
  74. context/agent/response_schemas/veto_decision.json +40 -0
  75. context/agentic/__init__.py +6 -0
  76. context/agentic/architecture_patterns.md +269 -0
  77. context/agentic/capability_registry.yaml +223 -0
  78. context/agentic/csp_integration.md +30 -0
  79. context/agentic/csp_mcp_registry.yaml +280 -0
  80. context/agentic/fitness_rubric.md +56 -0
  81. context/agentic/governance_baseline.md +205 -0
  82. context/ci/__init__.py +6 -0
  83. context/ci/worktree_templates.json +44 -0
  84. context/cloud/__init__.py +6 -0
  85. context/cloud/csp_service_registry.json +739 -0
  86. context/compliance/__init__.py +6 -0
  87. context/compliance/ai_rmf_crosswalk.yaml +226 -0
  88. context/compliance/atlas_mitigations.json +293 -0
  89. context/compliance/atlas_techniques.json +833 -0
  90. context/compliance/cisa_sbd_requirements.json +477 -0
  91. context/compliance/cjis_security_policy.json +522 -0
  92. context/compliance/cmmc_practices.json +2494 -0
  93. context/compliance/cmmc_report_template.md +142 -0
  94. context/compliance/cnssi_1253_overlay.json +109 -0
  95. context/compliance/control_crosswalk.json +1914 -0
  96. context/compliance/control_families/__init__.py +6 -0
  97. context/compliance/csp_certifications.json +251 -0
  98. context/compliance/cssp_report_template.md +193 -0
  99. context/compliance/cui_templates/__init__.py +6 -0
  100. context/compliance/cui_templates/banner_block.txt +4 -0
  101. context/compliance/cui_templates/code_header.txt +8 -0
  102. context/compliance/cui_templates/document_template.md +35 -0
  103. context/compliance/data_type_framework_map.json +321 -0
  104. context/compliance/data_type_registry.json +147 -0
  105. context/compliance/dod_cssp_8530.json +463 -0
  106. context/compliance/eu_ai_act_annex_iii.json +108 -0
  107. context/compliance/export_templates/__init__.py +6 -0
  108. context/compliance/export_templates/emass_controls.csv.j2 +4 -0
  109. context/compliance/export_templates/evidence_package.md.j2 +39 -0
  110. context/compliance/export_templates/executive_summary.md.j2 +55 -0
  111. context/compliance/export_templates/poam_tracking.csv.j2 +4 -0
  112. context/compliance/fedramp_20x_ksi_schemas.json +133 -0
  113. context/compliance/fedramp_high_baseline.json +4370 -0
  114. context/compliance/fedramp_moderate_baseline.json +2183 -0
  115. context/compliance/fedramp_report_template.md +181 -0
  116. context/compliance/fips_200_areas.json +362 -0
  117. context/compliance/gao_ai_accountability.json +262 -0
  118. context/compliance/hipaa_security_rule.json +720 -0
  119. context/compliance/hitrust_csf_v11.json +930 -0
  120. context/compliance/impact_level_profiles.json +251 -0
  121. context/compliance/incident_response_template.md +1110 -0
  122. context/compliance/iso27001_2022_controls.json +750 -0
  123. context/compliance/iso27001_nist_bridge.json +382 -0
  124. context/compliance/iso42001_controls.json +254 -0
  125. context/compliance/ivv_checklist_template.md +80 -0
  126. context/compliance/ivv_report_template.md +116 -0
  127. context/compliance/ivv_requirements.json +372 -0
  128. context/compliance/mosa_crosswalk.json +327 -0
  129. context/compliance/mosa_framework.json +250 -0
  130. context/compliance/narrative_templates/AC.md.j2 +101 -0
  131. context/compliance/narrative_templates/AU.md.j2 +106 -0
  132. context/compliance/narrative_templates/IA.md.j2 +104 -0
  133. context/compliance/narrative_templates/SC.md.j2 +102 -0
  134. context/compliance/narrative_templates/SI.md.j2 +111 -0
  135. context/compliance/narrative_templates/__init__.py +6 -0
  136. context/compliance/narrative_templates/default.md.j2 +50 -0
  137. context/compliance/narrative_templates/executive_summary.j2 +27 -0
  138. context/compliance/narrative_templates/poam_milestone.j2 +19 -0
  139. context/compliance/narrative_templates/ssp_section.j2 +11 -0
  140. context/compliance/nist_800_171_controls.json +1552 -0
  141. context/compliance/nist_800_207_crosswalk.json +399 -0
  142. context/compliance/nist_800_207_zta.json +258 -0
  143. context/compliance/nist_800_53.json +324 -0
  144. context/compliance/nist_ai_600_1_genai.json +326 -0
  145. context/compliance/nist_ai_rmf.json +206 -0
  146. context/compliance/nist_sp_800_60_types.json +1667 -0
  147. context/compliance/omb_m25_21_high_impact_ai.json +248 -0
  148. context/compliance/omb_m26_04_unbiased_ai.json +262 -0
  149. context/compliance/owasp_agentic_asi.json +133 -0
  150. context/compliance/owasp_agentic_threats.json +285 -0
  151. context/compliance/owasp_llm_top10.json +274 -0
  152. context/compliance/pci_dss_v4.json +510 -0
  153. context/compliance/poam_template.md +117 -0
  154. context/compliance/safeai_controls.json +512 -0
  155. context/compliance/sbd_report_template.md +77 -0
  156. context/compliance/siem_config_templates/__init__.py +6 -0
  157. context/compliance/siem_config_templates/filebeat.yml +213 -0
  158. context/compliance/siem_config_templates/log_sources.json +208 -0
  159. context/compliance/soc2_trust_criteria.json +661 -0
  160. context/compliance/ssp_template.md +432 -0
  161. context/compliance/stig_templates/__init__.py +6 -0
  162. context/compliance/stig_templates/webapp_stig.json +139 -0
  163. context/compliance/xai_requirements.json +108 -0
  164. context/dashboard/__init__.py +6 -0
  165. context/dashboard/nlq_examples.json +50 -0
  166. context/dashboard/schema_descriptions.json +23 -0
  167. context/icdev_methodology.md +100 -0
  168. context/integration/__init__.py +6 -0
  169. context/integration/approval_workflows.json +32 -0
  170. context/integration/gitlab_field_mappings.json +33 -0
  171. context/integration/jira_field_mappings.json +32 -0
  172. context/integration/reqif_export_schema.json +23 -0
  173. context/integration/servicenow_field_mappings.json +22 -0
  174. context/languages/__init__.py +6 -0
  175. context/languages/framework_patterns.json +205 -0
  176. context/languages/language_registry.json +279 -0
  177. context/llm/__init__.py +6 -0
  178. context/llm/example_provider.py +89 -0
  179. context/marketplace/assets/writeguard-core.yaml +100 -0
  180. context/marketplace/assets/writeguard-govcon.yaml +45 -0
  181. context/marketplace/assets/writeguard-style-guides.yaml +44 -0
  182. context/mbse/__init__.py +6 -0
  183. context/mbse/des_report_template.md +162 -0
  184. context/mbse/des_requirements.json +411 -0
  185. context/mbse/digital_thread_patterns.json +403 -0
  186. context/mbse/reqif_schema.json +280 -0
  187. context/mbse/sysml_element_types.json +432 -0
  188. context/oscal/NIST_SP-800-53_rev5_catalog.json +254987 -0
  189. context/oscal/README.md +43 -0
  190. context/patterns/__init__.py +6 -0
  191. context/profiles/__init__.py +6 -0
  192. context/profiles/dod_baseline_v1.yaml +145 -0
  193. context/profiles/fedramp_baseline_v1.yaml +143 -0
  194. context/profiles/financial_baseline_v1.yaml +142 -0
  195. context/profiles/healthcare_baseline_v1.yaml +135 -0
  196. context/profiles/law_enforcement_v1.yaml +129 -0
  197. context/profiles/startup_v1.yaml +134 -0
  198. context/rag/source_mappings.json +42 -0
  199. context/requirements/__init__.py +6 -0
  200. context/requirements/ambiguity_patterns.json +97 -0
  201. context/requirements/boundary_impact_rules.json +123 -0
  202. context/requirements/default_constitutions.json +67 -0
  203. context/requirements/document_extraction_rules.json +58 -0
  204. context/requirements/gap_patterns.json +108 -0
  205. context/requirements/readiness_rubric.json +78 -0
  206. context/requirements/red_alternative_patterns.json +210 -0
  207. context/requirements/safe_templates.json +72 -0
  208. context/requirements/spec_quality_checklist.json +122 -0
  209. context/research/regulatory_registry.json +114 -0
  210. context/research/verticals/cybersecurity.json +127 -0
  211. context/research/verticals/defense.json +104 -0
  212. context/research/verticals/fintech.json +125 -0
  213. context/research/verticals/healthcare.json +118 -0
  214. context/research/verticals/logistics.json +117 -0
  215. context/research/verticals/trading.json +145 -0
  216. context/simulation/__init__.py +6 -0
  217. context/simulation/architecture_patterns.json +36 -0
  218. context/simulation/coa_templates.json +38 -0
  219. context/simulation/cost_models.json +23 -0
  220. context/simulation/risk_categories.json +46 -0
  221. context/supply_chain/__init__.py +6 -0
  222. context/supply_chain/isa_templates.json +129 -0
  223. context/supply_chain/nist_800_161_controls.json +247 -0
  224. context/supply_chain/scrm_risk_matrix.json +147 -0
  225. context/templates/__init__.py +6 -0
  226. context/templates/ansible/__init__.py +6 -0
  227. context/templates/ansible/playbooks/__init__.py +6 -0
  228. context/templates/ansible/roles/__init__.py +6 -0
  229. context/templates/gitlab_ci/__init__.py +6 -0
  230. context/templates/grafana/__init__.py +6 -0
  231. context/templates/kubernetes/__init__.py +6 -0
  232. context/templates/project/__init__.py +6 -0
  233. context/templates/project/api/__init__.py +6 -0
  234. context/templates/project/cli/__init__.py +6 -0
  235. context/templates/project/data_pipeline/__init__.py +6 -0
  236. context/templates/project/iac/__init__.py +6 -0
  237. context/templates/project/javascript_frontend/__init__.py +6 -0
  238. context/templates/project/javascript_frontend/src/__init__.py +6 -0
  239. context/templates/project/javascript_frontend/tests/__init__.py +6 -0
  240. context/templates/project/microservice/__init__.py +6 -0
  241. context/templates/project/python_backend/__init__.py +6 -0
  242. context/templates/project/python_backend/src/__init__.py +6 -0
  243. context/templates/project/python_backend/tests/__init__.py +6 -0
  244. context/templates/project/python_backend/tests/features/__init__.py +6 -0
  245. context/templates/project/python_backend/tests/steps/__init__.py +6 -0
  246. context/templates/terraform/__init__.py +6 -0
  247. context/templates/terraform/govcloud_base/__init__.py +6 -0
  248. context/templates/terraform/modules/__init__.py +6 -0
  249. context/tone/__init__.py +6 -0
  250. context/writing/grammar_rules/common_errors.json +306 -0
  251. context/writing/grammar_rules/govcon_vocabulary.json +113 -0
  252. context/writing/style_guides/academic.yaml +43 -0
  253. context/writing/style_guides/business.yaml +42 -0
  254. context/writing/style_guides/government.yaml +59 -0
  255. context/writing/style_guides/proposal.yaml +58 -0
  256. context/writing/style_guides/technical.yaml +43 -0
  257. docs/adr/README.md +66 -0
  258. docs/adr/connector-forge-decisions.md +318 -0
  259. docs/adr/core-decisions.md +289 -0
  260. docs/adr/db-decisions.md +94 -0
  261. docs/adr/harness-decisions.md +122 -0
  262. docs/adr/innovation-decisions.md +262 -0
  263. docs/adr/marketplace-decisions.md +109 -0
  264. docs/adr/sbd-decisions.md +109 -0
  265. docs/adr/scale-engine-decisions.md +108 -0
  266. docs/adr/writeguard-decisions.md +136 -0
  267. docs/architecture/bounded-contexts.md +1032 -0
  268. docs/features/phase-65-writeguard.md +139 -0
  269. docs/features/phase-66-marketplace-commerce.md +79 -0
  270. docs/features/phase-67-knowledge-ingestion-rag-autodraft.md +97 -0
  271. docs/features/phase-68-enhanced-autodraft-pipeline.md +109 -0
  272. docs/features/phase-69-proposalai-marketplace-module.md +131 -0
  273. docs/features/phase-70-databridge.md +214 -0
  274. docs/features/phase-71-databridge-messaging.md +102 -0
  275. docs/implementation-plan-architecture-evolution.md +614 -0
  276. docs/marketplace/CONTRIBUTING.md +124 -0
  277. docs/marketplace/module_manifest_schema.yaml +83 -0
  278. docs/research/ai-architecture-patterns-2024-2026.md +1236 -0
  279. docs/research/app-builder-platform-analysis.md +582 -0
  280. docs/research/architecture-patterns-c4-ddd-agentic.md +871 -0
  281. docs/research/flowable-boat-competitive-analysis.md +426 -0
  282. docs/research/modern-dev-practices-2024-2026.md +1615 -0
  283. docs/research/secure-by-design-cloudyrion-adaptation.md +270 -0
  284. goals/agent_management.md +144 -0
  285. goals/ai_accountability.md +90 -0
  286. goals/ai_narratives.md +79 -0
  287. goals/ai_transparency.md +76 -0
  288. goals/ato_simulator.md +78 -0
  289. goals/audit_engine.md +177 -0
  290. goals/bite_sized_plans.md +225 -0
  291. goals/boundary_supply_chain.md +206 -0
  292. goals/brainstorming_gate.md +186 -0
  293. goals/build_app.md +604 -0
  294. goals/cato_live_evidence.md +77 -0
  295. goals/cloudforge.md +106 -0
  296. goals/code_intelligence.md +197 -0
  297. goals/compliance_workflow.md +858 -0
  298. goals/connector_forge.md +133 -0
  299. goals/databridge.md +128 -0
  300. goals/deploy_workflow.md +390 -0
  301. goals/developer_scorecard.md +78 -0
  302. goals/devsecops_workflow.md +408 -0
  303. goals/firmware_sbom.md +79 -0
  304. goals/forge_hub.md +78 -0
  305. goals/golden_path.md +77 -0
  306. goals/harness_engineering.md +91 -0
  307. goals/integration_testing.md +189 -0
  308. goals/knowledge_graph.md +128 -0
  309. goals/maintenance_audit.md +196 -0
  310. goals/manifest.md +50 -0
  311. goals/monitoring.md +126 -0
  312. goals/mosa_workflow.md +463 -0
  313. goals/multi_agent_orchestration.md +68 -0
  314. goals/observability_traceability_xai.md +154 -0
  315. goals/owasp_agentic_security.md +395 -0
  316. goals/pr_intelligence.md +78 -0
  317. goals/requirements_intake.md +213 -0
  318. goals/secure_by_design.md +135 -0
  319. goals/security_scan.md +381 -0
  320. goals/self_healing.md +120 -0
  321. goals/simulation_engine.md +111 -0
  322. goals/subagent_review.md +205 -0
  323. goals/systematic_debugging.md +257 -0
  324. goals/tdd_workflow.md +403 -0
  325. goals/template_exchange.md +77 -0
  326. goals/thread_heatmap.md +77 -0
  327. goals/threat_modeler.md +77 -0
  328. goals/verification_iron_law.md +192 -0
  329. goals/vsm_dashboard.md +76 -0
  330. goals/writeguard.md +89 -0
  331. goals/zero_trust_architecture.md +403 -0
  332. hardprompts/__init__.py +6 -0
  333. hardprompts/agent/__init__.py +6 -0
  334. hardprompts/agent/agentic_architect.md +100 -0
  335. hardprompts/agent/debate_prompt.md +32 -0
  336. hardprompts/agent/fitness_evaluation.md +48 -0
  337. hardprompts/agent/governance_review.md +214 -0
  338. hardprompts/agent/reviewer_prompt.md +34 -0
  339. hardprompts/agent/skill_design.md +172 -0
  340. hardprompts/agent/task_decomposition.md +275 -0
  341. hardprompts/agent/veto_check_prompt.md +33 -0
  342. hardprompts/architect/__init__.py +6 -0
  343. hardprompts/architect/api_design.md +283 -0
  344. hardprompts/architect/data_model.md +277 -0
  345. hardprompts/architect/system_design.md +180 -0
  346. hardprompts/builder/__init__.py +6 -0
  347. hardprompts/builder/code_generation.md +59 -0
  348. hardprompts/builder/refactor.md +58 -0
  349. hardprompts/builder/scaffold_project.md +69 -0
  350. hardprompts/builder/test_generation.md +87 -0
  351. hardprompts/ci/__init__.py +6 -0
  352. hardprompts/ci/worktree_setup.md +35 -0
  353. hardprompts/compliance/__init__.py +6 -0
  354. hardprompts/compliance/cmmc_assessment.md +63 -0
  355. hardprompts/compliance/cssp_assessment.md +75 -0
  356. hardprompts/compliance/cui_marking.md +86 -0
  357. hardprompts/compliance/fedramp_assessment.md +55 -0
  358. hardprompts/compliance/ivv_assessment.md +96 -0
  359. hardprompts/compliance/poam_generation.md +57 -0
  360. hardprompts/compliance/sbd_assessment.md +101 -0
  361. hardprompts/compliance/security_categorization.md +74 -0
  362. hardprompts/compliance/ssp_generation.md +56 -0
  363. hardprompts/compliance/stig_evaluation.md +63 -0
  364. hardprompts/dashboard/__init__.py +6 -0
  365. hardprompts/dashboard/nlq_system_prompt.md +26 -0
  366. hardprompts/infra/__init__.py +6 -0
  367. hardprompts/infra/k8s_manifests.md +118 -0
  368. hardprompts/infra/pipeline_generation.md +160 -0
  369. hardprompts/infra/terraform_generation.md +92 -0
  370. hardprompts/integration/__init__.py +6 -0
  371. hardprompts/integration/approval_review.md +17 -0
  372. hardprompts/integration/jira_mapping.md +25 -0
  373. hardprompts/integration/servicenow_mapping.md +14 -0
  374. hardprompts/knowledge/__init__.py +6 -0
  375. hardprompts/knowledge/pattern_detection.md +73 -0
  376. hardprompts/knowledge/recommendation_engine.md +90 -0
  377. hardprompts/knowledge/root_cause_analysis.md +91 -0
  378. hardprompts/maintenance/__init__.py +6 -0
  379. hardprompts/maintenance/maintenance_assessment.md +82 -0
  380. hardprompts/mbse/__init__.py +6 -0
  381. hardprompts/mbse/digital_thread.md +67 -0
  382. hardprompts/mbse/model_import.md +62 -0
  383. hardprompts/mbse/model_to_code.md +65 -0
  384. hardprompts/modernization/__init__.py +6 -0
  385. hardprompts/modernization/legacy_analysis.md +93 -0
  386. hardprompts/modernization/migration_planning.md +150 -0
  387. hardprompts/modernization/seven_r_assessment.md +107 -0
  388. hardprompts/proposal_draft.md +53 -0
  389. hardprompts/rag_citation.md +12 -0
  390. hardprompts/rag_rerank.md +31 -0
  391. hardprompts/requirements/__init__.py +6 -0
  392. hardprompts/requirements/bdd_generation.md +35 -0
  393. hardprompts/requirements/clarification_prioritization.md +29 -0
  394. hardprompts/requirements/decomposition.md +60 -0
  395. hardprompts/requirements/document_extraction.md +45 -0
  396. hardprompts/requirements/gap_detection.md +70 -0
  397. hardprompts/requirements/intake_conversation.md +101 -0
  398. hardprompts/requirements/readiness_assessment.md +39 -0
  399. hardprompts/requirements/spec_quality.md +33 -0
  400. hardprompts/requirements/traceability_analysis.md +23 -0
  401. hardprompts/security/__init__.py +6 -0
  402. hardprompts/security/endpoint_security.md +78 -0
  403. hardprompts/security/threat_model.md +70 -0
  404. hardprompts/security/vulnerability_assessment.md +81 -0
  405. hardprompts/simulation/__init__.py +6 -0
  406. hardprompts/simulation/architecture_impact.md +27 -0
  407. hardprompts/simulation/coa_alternative.md +27 -0
  408. hardprompts/simulation/coa_generation.md +25 -0
  409. hardprompts/simulation/compliance_impact.md +28 -0
  410. hardprompts/simulation/cost_estimation.md +33 -0
  411. hardprompts/simulation/risk_assessment.md +28 -0
  412. hardprompts/translation/code_translation.md +68 -0
  413. hardprompts/translation/dependency_suggestion.md +44 -0
  414. hardprompts/translation/test_translation.md +64 -0
  415. hardprompts/translation/translation_repair.md +59 -0
  416. icdev-0.0.3.dist-info/METADATA +909 -0
  417. icdev-0.0.3.dist-info/RECORD +1214 -0
  418. icdev-0.0.3.dist-info/WHEEL +5 -0
  419. icdev-0.0.3.dist-info/entry_points.txt +9 -0
  420. icdev-0.0.3.dist-info/licenses/LICENSE +201 -0
  421. icdev-0.0.3.dist-info/licenses/NOTICE +11 -0
  422. icdev-0.0.3.dist-info/top_level.txt +7 -0
  423. memory/MEMORY.md +52 -0
  424. memory/logs/2026-02-14.md +17 -0
  425. memory/logs/2026-03-03.md +2 -0
  426. memory/logs/__init__.py +1 -0
  427. tools/a2a/icdev_callback_client.py +210 -0
  428. tools/agent/cards/architect_card.json +29 -0
  429. tools/agent/cards/builder_card.json +34 -0
  430. tools/agent/cards/compliance_card.json +29 -0
  431. tools/agent/cards/connector_forge_card.json +49 -0
  432. tools/agent/cards/devsecops_zta_card.json +24 -0
  433. tools/agent/cards/knowledge_card.json +29 -0
  434. tools/agent/cards/monitor_card.json +29 -0
  435. tools/agent/cards/orchestrator_card.json +29 -0
  436. tools/agent/cards/requirements_analyst_card.json +24 -0
  437. tools/agent/cards/security_card.json +29 -0
  438. tools/agent/cards/simulation_card.json +24 -0
  439. tools/agent/cards/supply_chain_card.json +24 -0
  440. tools/analysis/__init__.py +1 -0
  441. tools/analysis/code_analyzer.py +770 -0
  442. tools/analysis/runtime_feedback.py +379 -0
  443. tools/analytics/__init__.py +2 -0
  444. tools/analytics/scorecard.py +538 -0
  445. tools/analytics/vsm_engine.py +612 -0
  446. tools/architecture/__init__.py +2 -0
  447. tools/architecture/adr_extractor.py +393 -0
  448. tools/audit/__init__.py +1 -0
  449. tools/audit/audit_logger.py +199 -0
  450. tools/audit/audit_query.py +153 -0
  451. tools/audit/decision_recorder.py +73 -0
  452. tools/audit_engine/__init__.py +12 -0
  453. tools/audit_engine/ai_advisor.py +906 -0
  454. tools/audit_engine/cli.py +286 -0
  455. tools/audit_engine/comparator.py +305 -0
  456. tools/audit_engine/eject_scaffolder.py +399 -0
  457. tools/audit_engine/engine.py +614 -0
  458. tools/audit_engine/git_fetcher.py +341 -0
  459. tools/audit_engine/regime_loader.py +200 -0
  460. tools/audit_engine/regime_updater.py +325 -0
  461. tools/audit_engine/report_card.py +289 -0
  462. tools/audit_engine/scanner.py +684 -0
  463. tools/audit_engine/self_heal.py +1042 -0
  464. tools/ci/__init__.py +2 -0
  465. tools/ci/connectors/__init__.py +2 -0
  466. tools/ci/connectors/base_connector.py +80 -0
  467. tools/ci/connectors/connector_registry.py +188 -0
  468. tools/ci/connectors/mattermost_connector.py +159 -0
  469. tools/ci/connectors/slack_connector.py +197 -0
  470. tools/ci/core/__init__.py +2 -0
  471. tools/ci/core/air_gap_detector.py +115 -0
  472. tools/ci/core/comment_handler.py +192 -0
  473. tools/ci/core/conversation_manager.py +480 -0
  474. tools/ci/core/event_envelope.py +500 -0
  475. tools/ci/core/event_router.py +444 -0
  476. tools/ci/core/failure_parser.py +397 -0
  477. tools/ci/core/recovery_engine.py +527 -0
  478. tools/ci/gate_enforcer.py +361 -0
  479. tools/ci/modules/__init__.py +2 -0
  480. tools/ci/modules/agent.py +271 -0
  481. tools/ci/modules/git_ops.py +175 -0
  482. tools/ci/modules/state.py +117 -0
  483. tools/ci/modules/vcs.py +303 -0
  484. tools/ci/modules/workflow_ops.py +295 -0
  485. tools/ci/modules/worktree.py +337 -0
  486. tools/ci/pipeline_config_generator.py +558 -0
  487. tools/ci/pr_intelligence.py +485 -0
  488. tools/ci/triggers/__init__.py +2 -0
  489. tools/ci/triggers/gitlab_task_monitor.py +327 -0
  490. tools/ci/triggers/poll_trigger.py +237 -0
  491. tools/ci/triggers/webhook_server.py +356 -0
  492. tools/ci/workflows/__init__.py +2 -0
  493. tools/ci/workflows/icdev_build.py +140 -0
  494. tools/ci/workflows/icdev_comply.py +284 -0
  495. tools/ci/workflows/icdev_document.py +152 -0
  496. tools/ci/workflows/icdev_e2e.py +188 -0
  497. tools/ci/workflows/icdev_patch.py +186 -0
  498. tools/ci/workflows/icdev_plan.py +202 -0
  499. tools/ci/workflows/icdev_plan_build.py +41 -0
  500. tools/ci/workflows/icdev_plan_build_test.py +46 -0
  501. tools/ci/workflows/icdev_plan_build_test_review.py +47 -0
  502. tools/ci/workflows/icdev_review.py +126 -0
  503. tools/ci/workflows/icdev_sdlc.py +261 -0
  504. tools/ci/workflows/icdev_test.py +240 -0
  505. tools/cli/__init__.py +1 -0
  506. tools/cli/output_formatter.py +756 -0
  507. tools/cloudforge/__init__.py +12 -0
  508. tools/cloudforge/airgap/__init__.py +2 -0
  509. tools/cloudforge/airgap/il_classifier.py +70 -0
  510. tools/cloudforge/airgap/offline_validator.py +42 -0
  511. tools/cloudforge/airgap/shift_emulator.py +155 -0
  512. tools/cloudforge/airgap/sneakernet.py +91 -0
  513. tools/cloudforge/cd_hub/__init__.py +2 -0
  514. tools/cloudforge/cd_hub/canary_deployer.py +88 -0
  515. tools/cloudforge/cd_hub/gitops_renderer.py +123 -0
  516. tools/cloudforge/cd_hub/hub_controller.py +143 -0
  517. tools/cloudforge/cd_hub/pipeline_bridge.py +30 -0
  518. tools/cloudforge/cd_hub/rollback_engine.py +29 -0
  519. tools/cloudforge/cd_hub/spoke_agent.py +51 -0
  520. tools/cloudforge/compliance/__init__.py +2 -0
  521. tools/cloudforge/compliance/ato_accelerator.py +272 -0
  522. tools/cloudforge/compliance/control_inheritor.py +127 -0
  523. tools/cloudforge/compliance/evidence_generator.py +129 -0
  524. tools/cloudforge/compliance/poam_bridge.py +41 -0
  525. tools/cloudforge/compliance/ssp_bridge.py +52 -0
  526. tools/cloudforge/compliance/stig_bridge.py +41 -0
  527. tools/cloudforge/container_forge/__init__.py +2 -0
  528. tools/cloudforge/container_forge/bigbang_renderer.py +85 -0
  529. tools/cloudforge/container_forge/hardener.py +169 -0
  530. tools/cloudforge/container_forge/image_scanner_bridge.py +33 -0
  531. tools/cloudforge/container_forge/runtime_policy.py +87 -0
  532. tools/cloudforge/container_forge/sbom_bridge.py +42 -0
  533. tools/cloudforge/finops/__init__.py +2 -0
  534. tools/cloudforge/finops/anomaly_detector.py +78 -0
  535. tools/cloudforge/finops/budget_tracker.py +96 -0
  536. tools/cloudforge/finops/chargeback.py +69 -0
  537. tools/cloudforge/finops/cost_collector.py +141 -0
  538. tools/cloudforge/finops/optimizer.py +55 -0
  539. tools/cloudforge/hybrid/__init__.py +2 -0
  540. tools/cloudforge/hybrid/connection_manager.py +141 -0
  541. tools/cloudforge/hybrid/dns_federator.py +56 -0
  542. tools/cloudforge/hybrid/health_monitor.py +108 -0
  543. tools/cloudforge/hybrid/identity_federator.py +53 -0
  544. tools/cloudforge/hybrid/network_bridge.py +68 -0
  545. tools/cloudforge/hybrid/topology_manager.py +147 -0
  546. tools/cloudforge/hybrid/workload_abstractor.py +92 -0
  547. tools/cloudforge/iac/__init__.py +2 -0
  548. tools/cloudforge/iac/drift_detector.py +154 -0
  549. tools/cloudforge/iac/module_library.py +265 -0
  550. tools/cloudforge/iac/opentofu_adapter.py +89 -0
  551. tools/cloudforge/iac/pulumi_renderer.py +292 -0
  552. tools/cloudforge/iac/state_backend.py +146 -0
  553. tools/cloudforge/iac/terraform_renderer.py +626 -0
  554. tools/cloudforge/landing_zone/__init__.py +2 -0
  555. tools/cloudforge/landing_zone/blueprint_loader.py +98 -0
  556. tools/cloudforge/landing_zone/blueprint_validator.py +113 -0
  557. tools/cloudforge/landing_zone/zone_provisioner.py +306 -0
  558. tools/cloudforge/landing_zone/zone_state.py +143 -0
  559. tools/cloudforge/mbse_thread/__init__.py +2 -0
  560. tools/cloudforge/mbse_thread/ato_thread_weaver.py +111 -0
  561. tools/cloudforge/mbse_thread/control_tracer.py +68 -0
  562. tools/cloudforge/mbse_thread/system_boundary.py +83 -0
  563. tools/cloudforge/metastore/__init__.py +2 -0
  564. tools/cloudforge/metastore/dependency_graph.py +202 -0
  565. tools/cloudforge/metastore/discovery.py +192 -0
  566. tools/cloudforge/metastore/registry.py +185 -0
  567. tools/cloudforge/metastore/rto_tracker.py +92 -0
  568. tools/cloudforge/metastore/runbook_linker.py +82 -0
  569. tools/cloudforge/migration/__init__.py +2 -0
  570. tools/cloudforge/migration/assessor.py +187 -0
  571. tools/cloudforge/migration/cutover_orchestrator.py +117 -0
  572. tools/cloudforge/migration/databridge_bridge.py +92 -0
  573. tools/cloudforge/migration/planner.py +98 -0
  574. tools/cloudforge/migration/risk_scorer.py +97 -0
  575. tools/cloudforge/migration/validation_runner.py +45 -0
  576. tools/cloudforge/migration/workload_inventory.py +107 -0
  577. tools/cloudforge/provider.py +319 -0
  578. tools/cloudforge/providers/__init__.py +2 -0
  579. tools/cloudforge/providers/aws_commercial.py +92 -0
  580. tools/cloudforge/providers/aws_govcloud.py +229 -0
  581. tools/cloudforge/providers/aws_secret.py +83 -0
  582. tools/cloudforge/providers/azure_commercial.py +80 -0
  583. tools/cloudforge/providers/azure_gov.py +91 -0
  584. tools/cloudforge/providers/azure_secret.py +71 -0
  585. tools/cloudforge/providers/gcp.py +102 -0
  586. tools/cloudforge/providers/oci.py +102 -0
  587. tools/cloudforge/registry.py +140 -0
  588. tools/cloudforge/runbooks/__init__.py +2 -0
  589. tools/cloudforge/runbooks/ai_generator.py +119 -0
  590. tools/cloudforge/runbooks/dag_validator.py +219 -0
  591. tools/cloudforge/runbooks/engine.py +470 -0
  592. tools/cloudforge/runbooks/models.py +99 -0
  593. tools/cloudforge/runbooks/snippet_library.py +158 -0
  594. tools/cloudforge/runbooks/template_loader.py +122 -0
  595. tools/cloudforge/runbooks/visualization.py +108 -0
  596. tools/cloudforge/siem/__init__.py +2 -0
  597. tools/cloudforge/siem/alert_rules.py +86 -0
  598. tools/cloudforge/siem/correlation_engine.py +61 -0
  599. tools/cloudforge/siem/log_aggregator.py +113 -0
  600. tools/cloudforge/siem/siem_dashboard_data.py +28 -0
  601. tools/cloudforge/supply_chain/__init__.py +2 -0
  602. tools/cloudforge/supply_chain/bridge.py +33 -0
  603. tools/cloudforge/supply_chain/iac_dependency_scanner.py +36 -0
  604. tools/cloudforge/supply_chain/provider_trust_scorer.py +54 -0
  605. tools/compat/__init__.py +21 -0
  606. tools/compat/cli_harmonizer.py +251 -0
  607. tools/compat/datetime_utils.py +18 -0
  608. tools/compat/db_utils.py +190 -0
  609. tools/compat/platform_utils.py +123 -0
  610. tools/compliance/__init__.py +1 -0
  611. tools/compliance/accountability_manager.py +391 -0
  612. tools/compliance/ai_accountability_audit.py +287 -0
  613. tools/compliance/ai_impact_assessor.py +267 -0
  614. tools/compliance/ai_incident_response.py +295 -0
  615. tools/compliance/ai_inventory_manager.py +233 -0
  616. tools/compliance/ai_reassessment_scheduler.py +250 -0
  617. tools/compliance/ai_transparency_audit.py +247 -0
  618. tools/compliance/atlas_assessor.py +276 -0
  619. tools/compliance/atlas_report_generator.py +1199 -0
  620. tools/compliance/base_assessor.py +591 -0
  621. tools/compliance/cato_live_engine.py +607 -0
  622. tools/compliance/cato_monitor.py +1371 -0
  623. tools/compliance/cato_scheduler.py +698 -0
  624. tools/compliance/cjis_assessor.py +76 -0
  625. tools/compliance/classification_manager.py +1340 -0
  626. tools/compliance/cmmc_assessor.py +1478 -0
  627. tools/compliance/cmmc_report_generator.py +1087 -0
  628. tools/compliance/compliance_detector.py +452 -0
  629. tools/compliance/compliance_exporter.py +418 -0
  630. tools/compliance/compliance_status.py +810 -0
  631. tools/compliance/control_mapper.py +488 -0
  632. tools/compliance/crosswalk_engine.py +1208 -0
  633. tools/compliance/cssp_assessor.py +1032 -0
  634. tools/compliance/cssp_evidence_collector.py +716 -0
  635. tools/compliance/cssp_report_generator.py +1103 -0
  636. tools/compliance/cui_marker.py +387 -0
  637. tools/compliance/diagram_validator.py +599 -0
  638. tools/compliance/emass/__init__.py +2 -0
  639. tools/compliance/emass/emass_client.py +822 -0
  640. tools/compliance/emass/emass_export.py +758 -0
  641. tools/compliance/emass/emass_sync.py +807 -0
  642. tools/compliance/eu_ai_act_classifier.py +193 -0
  643. tools/compliance/evidence_collector.py +459 -0
  644. tools/compliance/fairness_assessor.py +310 -0
  645. tools/compliance/fedramp_20x_ksi_emitter.py +692 -0
  646. tools/compliance/fedramp_assessor.py +1795 -0
  647. tools/compliance/fedramp_authorization_packager.py +137 -0
  648. tools/compliance/fedramp_ksi_generator.py +349 -0
  649. tools/compliance/fedramp_report_generator.py +1115 -0
  650. tools/compliance/fips199_categorizer.py +869 -0
  651. tools/compliance/fips200_validator.py +304 -0
  652. tools/compliance/firmware_sbom.py +646 -0
  653. tools/compliance/gao_ai_assessor.py +228 -0
  654. tools/compliance/gao_evidence_builder.py +302 -0
  655. tools/compliance/hipaa_assessor.py +78 -0
  656. tools/compliance/hitrust_assessor.py +49 -0
  657. tools/compliance/incident_response_plan.py +705 -0
  658. tools/compliance/inheritance_engine.py +693 -0
  659. tools/compliance/iso27001_assessor.py +92 -0
  660. tools/compliance/iso42001_assessor.py +114 -0
  661. tools/compliance/ivv_assessor.py +2314 -0
  662. tools/compliance/ivv_report_generator.py +1649 -0
  663. tools/compliance/model_card_generator.py +291 -0
  664. tools/compliance/mosa_assessor.py +117 -0
  665. tools/compliance/multi_regime_assessor.py +441 -0
  666. tools/compliance/narrative_generator.py +1012 -0
  667. tools/compliance/narrative_quality_gate.py +701 -0
  668. tools/compliance/narrative_workflow.py +814 -0
  669. tools/compliance/nist_800_207_assessor.py +191 -0
  670. tools/compliance/nist_ai_600_1_assessor.py +185 -0
  671. tools/compliance/nist_ai_rmf_assessor.py +110 -0
  672. tools/compliance/nist_lookup.py +244 -0
  673. tools/compliance/omb_m25_21_assessor.py +225 -0
  674. tools/compliance/omb_m26_04_assessor.py +185 -0
  675. tools/compliance/oscal_catalog_adapter.py +395 -0
  676. tools/compliance/oscal_generator.py +2157 -0
  677. tools/compliance/oscal_tools.py +1182 -0
  678. tools/compliance/oscal_validator.py +692 -0
  679. tools/compliance/owasp_agentic_assessor.py +227 -0
  680. tools/compliance/owasp_asi_assessor.py +197 -0
  681. tools/compliance/owasp_llm_assessor.py +245 -0
  682. tools/compliance/pci_dss_assessor.py +80 -0
  683. tools/compliance/pi_compliance_tracker.py +1447 -0
  684. tools/compliance/poam_generator.py +388 -0
  685. tools/compliance/resolve_marking.py +272 -0
  686. tools/compliance/sbd_assessor.py +2070 -0
  687. tools/compliance/sbd_report_generator.py +1223 -0
  688. tools/compliance/sbom_generator.py +993 -0
  689. tools/compliance/siem_config_generator.py +661 -0
  690. tools/compliance/slsa_attestation_generator.py +479 -0
  691. tools/compliance/soc2_assessor.py +77 -0
  692. tools/compliance/ssp_generator.py +556 -0
  693. tools/compliance/stig_checker.py +712 -0
  694. tools/compliance/swft_evidence_bundler.py +326 -0
  695. tools/compliance/system_card_generator.py +303 -0
  696. tools/compliance/template_exchange.py +513 -0
  697. tools/compliance/traceability_matrix.py +1268 -0
  698. tools/compliance/universal_classification_manager.py +1159 -0
  699. tools/compliance/xacta/__init__.py +2 -0
  700. tools/compliance/xacta/xacta_client.py +438 -0
  701. tools/compliance/xacta/xacta_export.py +546 -0
  702. tools/compliance/xacta/xacta_sync.py +322 -0
  703. tools/compliance/xai_assessor.py +231 -0
  704. tools/core/__init__.py +2 -0
  705. tools/core/circuit_breaker.py +353 -0
  706. tools/core/compliance_sidecar.py +344 -0
  707. tools/core/container.py +110 -0
  708. tools/core/errors.py +256 -0
  709. tools/core/feature_flags.py +311 -0
  710. tools/core/task_dlq.py +350 -0
  711. tools/dashboard/__init__.py +2 -0
  712. tools/dashboard/app.py +6288 -0
  713. tools/dashboard/templates/agent_evolution.html +287 -0
  714. tools/dashboard/templates/agents/list.html +71 -0
  715. tools/dashboard/templates/agents.html +132 -0
  716. tools/dashboard/templates/architecture.html +289 -0
  717. tools/dashboard/templates/ato_simulator.html +170 -0
  718. tools/dashboard/templates/audit_engine.html +844 -0
  719. tools/dashboard/templates/base.html +236 -0
  720. tools/dashboard/templates/cato_live.html +116 -0
  721. tools/dashboard/templates/cloudforge.html +195 -0
  722. tools/dashboard/templates/cloudforge_finops.html +111 -0
  723. tools/dashboard/templates/cloudforge_hybrid.html +122 -0
  724. tools/dashboard/templates/cloudforge_metastore.html +234 -0
  725. tools/dashboard/templates/cloudforge_migration.html +87 -0
  726. tools/dashboard/templates/cloudforge_runbooks.html +201 -0
  727. tools/dashboard/templates/cloudforge_siem.html +94 -0
  728. tools/dashboard/templates/compliance_accel.html +292 -0
  729. tools/dashboard/templates/crashes.html +122 -0
  730. tools/dashboard/templates/databridge.html +305 -0
  731. tools/dashboard/templates/databridge_analytics.html +195 -0
  732. tools/dashboard/templates/databridge_mapping.html +345 -0
  733. tools/dashboard/templates/databridge_messaging.html +321 -0
  734. tools/dashboard/templates/decisions.html +258 -0
  735. tools/dashboard/templates/devices.html +151 -0
  736. tools/dashboard/templates/devsecops_maturity.html +278 -0
  737. tools/dashboard/templates/edge_ai.html +128 -0
  738. tools/dashboard/templates/firmware.html +120 -0
  739. tools/dashboard/templates/firmware_sbom.html +193 -0
  740. tools/dashboard/templates/forge_hub.html +196 -0
  741. tools/dashboard/templates/forge_studio.html +379 -0
  742. tools/dashboard/templates/forge_studio_analytics.html +360 -0
  743. tools/dashboard/templates/forge_studio_builder.html +1637 -0
  744. tools/dashboard/templates/forge_studio_compliance.html +310 -0
  745. tools/dashboard/templates/forge_studio_deploy.html +573 -0
  746. tools/dashboard/templates/forge_studio_enterprise.html +888 -0
  747. tools/dashboard/templates/forge_studio_marketplace.html +502 -0
  748. tools/dashboard/templates/forge_studio_workflow.html +696 -0
  749. tools/dashboard/templates/golden_path.html +175 -0
  750. tools/dashboard/templates/govcon.html +280 -0
  751. tools/dashboard/templates/harness.html +148 -0
  752. tools/dashboard/templates/index.html +207 -0
  753. tools/dashboard/templates/intelligence.html +336 -0
  754. tools/dashboard/templates/knowledge/index.html +190 -0
  755. tools/dashboard/templates/knowledge_graph.html +739 -0
  756. tools/dashboard/templates/login.html +51 -0
  757. tools/dashboard/templates/marketplace.html +336 -0
  758. tools/dashboard/templates/marketplace_admin.html +247 -0
  759. tools/dashboard/templates/missions.html +403 -0
  760. tools/dashboard/templates/narratives.html +154 -0
  761. tools/dashboard/templates/pr_intelligence.html +151 -0
  762. tools/dashboard/templates/proposals/detail.html +300 -0
  763. tools/dashboard/templates/proposals/list.html +52 -0
  764. tools/dashboard/templates/proposals/sam_detail.html +132 -0
  765. tools/dashboard/templates/proposals/section_detail.html +375 -0
  766. tools/dashboard/templates/research.html +222 -0
  767. tools/dashboard/templates/resilience.html +300 -0
  768. tools/dashboard/templates/scorecard.html +162 -0
  769. tools/dashboard/templates/simulator.html +131 -0
  770. tools/dashboard/templates/template_exchange.html +147 -0
  771. tools/dashboard/templates/thread_heatmap.html +151 -0
  772. tools/dashboard/templates/threat_model.html +195 -0
  773. tools/dashboard/templates/vsm.html +141 -0
  774. tools/dashboard/templates/writeguard.html +277 -0
  775. tools/databridge/__init__.py +5 -0
  776. tools/databridge/agent/__init__.py +2 -0
  777. tools/databridge/agent/daemon.py +227 -0
  778. tools/databridge/agent/tunnel.py +101 -0
  779. tools/databridge/agent/ws_relay.py +91 -0
  780. tools/databridge/analytics.py +167 -0
  781. tools/databridge/arrow_pipeline.py +327 -0
  782. tools/databridge/connection_manager.py +424 -0
  783. tools/databridge/connector.py +331 -0
  784. tools/databridge/connectors/__init__.py +2 -0
  785. tools/databridge/connectors/argocd_connector.py +160 -0
  786. tools/databridge/connectors/avro_connector.py +203 -0
  787. tools/databridge/connectors/azure_blob.py +63 -0
  788. tools/databridge/connectors/cdc_connector.py +205 -0
  789. tools/databridge/connectors/csv_connector.py +172 -0
  790. tools/databridge/connectors/datadog_connector.py +153 -0
  791. tools/databridge/connectors/discord_messaging.py +215 -0
  792. tools/databridge/connectors/dynamics365.py +151 -0
  793. tools/databridge/connectors/elasticsearch_connector.py +145 -0
  794. tools/databridge/connectors/email_base.py +114 -0
  795. tools/databridge/connectors/excel_connector.py +175 -0
  796. tools/databridge/connectors/fsspec_base.py +300 -0
  797. tools/databridge/connectors/gcs.py +53 -0
  798. tools/databridge/connectors/github_connector.py +138 -0
  799. tools/databridge/connectors/gitlab_connector.py +132 -0
  800. tools/databridge/connectors/gmail_connector.py +182 -0
  801. tools/databridge/connectors/hdfs.py +57 -0
  802. tools/databridge/connectors/health_base.py +401 -0
  803. tools/databridge/connectors/hubspot.py +124 -0
  804. tools/databridge/connectors/imap_connector.py +171 -0
  805. tools/databridge/connectors/jenkins_connector.py +138 -0
  806. tools/databridge/connectors/jira_connector.py +86 -0
  807. tools/databridge/connectors/json_connector.py +184 -0
  808. tools/databridge/connectors/kafka_connector.py +246 -0
  809. tools/databridge/connectors/kinesis_connector.py +238 -0
  810. tools/databridge/connectors/local_fs.py +30 -0
  811. tools/databridge/connectors/matrix.py +197 -0
  812. tools/databridge/connectors/mattermost_messaging.py +184 -0
  813. tools/databridge/connectors/messaging_base.py +172 -0
  814. tools/databridge/connectors/mssql.py +63 -0
  815. tools/databridge/connectors/mysql.py +57 -0
  816. tools/databridge/connectors/netsuite.py +170 -0
  817. tools/databridge/connectors/o365_mail.py +196 -0
  818. tools/databridge/connectors/oracle.py +65 -0
  819. tools/databridge/connectors/pagerduty_connector.py +162 -0
  820. tools/databridge/connectors/parquet_connector.py +131 -0
  821. tools/databridge/connectors/postgresql.py +58 -0
  822. tools/databridge/connectors/s3.py +65 -0
  823. tools/databridge/connectors/saas_base.py +198 -0
  824. tools/databridge/connectors/salesforce.py +126 -0
  825. tools/databridge/connectors/sap.py +89 -0
  826. tools/databridge/connectors/servicenow.py +60 -0
  827. tools/databridge/connectors/signal_messaging.py +150 -0
  828. tools/databridge/connectors/slack_messaging.py +203 -0
  829. tools/databridge/connectors/smtp_connector.py +126 -0
  830. tools/databridge/connectors/soap_base.py +258 -0
  831. tools/databridge/connectors/splunk_connector.py +171 -0
  832. tools/databridge/connectors/sql_base.py +310 -0
  833. tools/databridge/connectors/sqlite_connector.py +76 -0
  834. tools/databridge/connectors/teams.py +148 -0
  835. tools/databridge/connectors/telegram.py +192 -0
  836. tools/databridge/connectors/whatsapp.py +137 -0
  837. tools/databridge/data_profiler.py +99 -0
  838. tools/databridge/forge/__init__.py +6 -0
  839. tools/databridge/forge/base_selector.py +150 -0
  840. tools/databridge/forge/code_generator.py +206 -0
  841. tools/databridge/forge/community_hub.py +539 -0
  842. tools/databridge/forge/forge_agent.py +306 -0
  843. tools/databridge/forge/import_handler.py +133 -0
  844. tools/databridge/forge/integration_tester.py +127 -0
  845. tools/databridge/forge/marketplace_publisher.py +164 -0
  846. tools/databridge/forge/promoter.py +159 -0
  847. tools/databridge/forge/sandbox_manager.py +257 -0
  848. tools/databridge/forge/spec_parser.py +358 -0
  849. tools/databridge/forge/static_validator.py +363 -0
  850. tools/databridge/forge/templates/__init__.py +591 -0
  851. tools/databridge/format_converter.py +188 -0
  852. tools/databridge/mapping_engine.py +348 -0
  853. tools/databridge/messaging/__init__.py +5 -0
  854. tools/databridge/messaging/agent_bridge.py +254 -0
  855. tools/databridge/messaging/message_envelope.py +111 -0
  856. tools/databridge/messaging/message_logger.py +204 -0
  857. tools/databridge/messaging/messaging_daemon.py +326 -0
  858. tools/databridge/messaging/oauth2_manager.py +411 -0
  859. tools/databridge/pii_detector.py +221 -0
  860. tools/databridge/registry.py +352 -0
  861. tools/databridge/relay_server.py +105 -0
  862. tools/databridge/scale/__init__.py +16 -0
  863. tools/databridge/scale/backpressure.py +134 -0
  864. tools/databridge/scale/chunked_pipeline.py +169 -0
  865. tools/databridge/scale/connection_pool.py +293 -0
  866. tools/databridge/scale/engine.py +492 -0
  867. tools/databridge/scale/worker_pool.py +140 -0
  868. tools/databridge/scale/write_batcher.py +250 -0
  869. tools/databridge/schema_engine.py +324 -0
  870. tools/databridge/stream_manager.py +225 -0
  871. tools/databridge/sync_engine.py +411 -0
  872. tools/databridge/transforms.py +302 -0
  873. tools/db/__init__.py +1 -0
  874. tools/db/backup.py +312 -0
  875. tools/db/backup_manager.py +832 -0
  876. tools/db/init_icdev_db.py +7753 -0
  877. tools/db/init_sparkpilot_db.py +431 -0
  878. tools/db/migrate.py +177 -0
  879. tools/db/migrate_innovation_audit.py +165 -0
  880. tools/db/migration_runner.py +548 -0
  881. tools/db/migrations/001_baseline/meta.json +9 -0
  882. tools/db/migrations/001_baseline/up.py +67 -0
  883. tools/db/migrations/002_memory_enhancements/down.sql +8 -0
  884. tools/db/migrations/002_memory_enhancements/meta.json +9 -0
  885. tools/db/migrations/002_memory_enhancements/up.py +119 -0
  886. tools/db/migrations/003_dev_profiles/meta.json +8 -0
  887. tools/db/migrations/003_dev_profiles/up.py +93 -0
  888. tools/db/migrations/004_innovation_engine/down.py +19 -0
  889. tools/db/migrations/004_innovation_engine/up.py +227 -0
  890. tools/db/migrations/005_phase_37_ai_security/down.py +19 -0
  891. tools/db/migrations/005_phase_37_ai_security/up.py +257 -0
  892. tools/db/migrations/006_phase_36_evolution/down.py +21 -0
  893. tools/db/migrations/006_phase_36_evolution/up.py +323 -0
  894. tools/db/migrations/007_phase_38_cloud/down.py +14 -0
  895. tools/db/migrations/007_phase_38_cloud/up.py +110 -0
  896. tools/db/migrations/008_phase36_37_integration/up.py +55 -0
  897. tools/db/migrations/__init__.py +2 -0
  898. tools/db/pg_migrate.py +642 -0
  899. tools/db/storage.py +1080 -0
  900. tools/decisions/__init__.py +2 -0
  901. tools/decisions/dmn_engine.py +695 -0
  902. tools/devsecops/__init__.py +2 -0
  903. tools/devsecops/attestation_manager.py +449 -0
  904. tools/devsecops/network_segmentation_generator.py +604 -0
  905. tools/devsecops/pdp_config_generator.py +1246 -0
  906. tools/devsecops/pipeline_security_generator.py +475 -0
  907. tools/devsecops/policy_generator.py +644 -0
  908. tools/devsecops/profile_manager.py +374 -0
  909. tools/devsecops/service_mesh_generator.py +1063 -0
  910. tools/devsecops/zta_maturity_scorer.py +355 -0
  911. tools/devsecops/zta_terraform_generator.py +1301 -0
  912. tools/edge_ai/__init__.py +2 -0
  913. tools/edge_ai/model_manager.py +200 -0
  914. tools/embedded/__init__.py +2 -0
  915. tools/embedded/cmake_generator.py +318 -0
  916. tools/embedded/crash_analyzer.py +191 -0
  917. tools/embedded/nl_to_firmware.py +277 -0
  918. tools/events/__init__.py +1 -0
  919. tools/events/event_bus.py +199 -0
  920. tools/finetune/pair_generator.py +832 -0
  921. tools/fleet/__init__.py +2 -0
  922. tools/fleet/device_registry.py +148 -0
  923. tools/fleet/ota_manager.py +153 -0
  924. tools/forge_studio/__init__.py +13 -0
  925. tools/forge_studio/analytics/__init__.py +0 -0
  926. tools/forge_studio/analytics/process_miner.py +383 -0
  927. tools/forge_studio/audit.py +183 -0
  928. tools/forge_studio/blueprint/__init__.py +2 -0
  929. tools/forge_studio/blueprint/build_tracker.py +317 -0
  930. tools/forge_studio/blueprint/export_engine.py +441 -0
  931. tools/forge_studio/blueprint/parent_client.py +335 -0
  932. tools/forge_studio/catalog/__init__.py +2 -0
  933. tools/forge_studio/catalog/component_registry.py +176 -0
  934. tools/forge_studio/catalog/schema_validator.py +193 -0
  935. tools/forge_studio/compliance/__init__.py +1 -0
  936. tools/forge_studio/compliance/compliance_wiring.py +554 -0
  937. tools/forge_studio/deploy/__init__.py +1 -0
  938. tools/forge_studio/deploy/airgap_packager.py +466 -0
  939. tools/forge_studio/deploy/deploy_engine.py +1792 -0
  940. tools/forge_studio/deploy/env_manager.py +431 -0
  941. tools/forge_studio/eject/__init__.py +2 -0
  942. tools/forge_studio/eject/docker_compose_generator.py +237 -0
  943. tools/forge_studio/eject/eject_engine.py +230 -0
  944. tools/forge_studio/eject/expo_scaffolder.py +303 -0
  945. tools/forge_studio/eject/nextjs_scaffolder.py +338 -0
  946. tools/forge_studio/enterprise/__init__.py +0 -0
  947. tools/forge_studio/enterprise/custom_frameworks.py +826 -0
  948. tools/forge_studio/enterprise/hardening_engine.py +1530 -0
  949. tools/forge_studio/enterprise/sso_manager.py +718 -0
  950. tools/forge_studio/enterprise/whitelabel_engine.py +887 -0
  951. tools/forge_studio/formula/__init__.py +0 -0
  952. tools/forge_studio/formula/expression_engine.py +562 -0
  953. tools/forge_studio/formula/formula_registry.py +265 -0
  954. tools/forge_studio/generator/__init__.py +2 -0
  955. tools/forge_studio/generator/app_generator.py +584 -0
  956. tools/forge_studio/generator/complexity_detector.py +368 -0
  957. tools/forge_studio/generator/prompt_templates.py +104 -0
  958. tools/forge_studio/generator/spec_builder.py +192 -0
  959. tools/forge_studio/intake_bridge.py +898 -0
  960. tools/forge_studio/marketplace/__init__.py +0 -0
  961. tools/forge_studio/marketplace/component_hub.py +428 -0
  962. tools/forge_studio/models.py +369 -0
  963. tools/forge_studio/renderer/__init__.py +2 -0
  964. tools/forge_studio/renderer/json_render_engine.py +623 -0
  965. tools/forge_studio/renderer/layout_engine.py +214 -0
  966. tools/forge_studio/renderer/rn_component_map.py +182 -0
  967. tools/forge_studio/supabase/__init__.py +2 -0
  968. tools/forge_studio/supabase/auth_generator.py +283 -0
  969. tools/forge_studio/supabase/migration_generator.py +93 -0
  970. tools/forge_studio/supabase/schema_generator.py +281 -0
  971. tools/forge_studio/tenant_manager.py +387 -0
  972. tools/forge_studio/workflow/__init__.py +2 -0
  973. tools/forge_studio/workflow/bpmn_adapter.py +489 -0
  974. tools/govcon/draft_orchestrator.py +1151 -0
  975. tools/govcon/engine_enrichment.py +373 -0
  976. tools/govcon/knowledge_base.py +487 -0
  977. tools/govcon/knowledge_ingestion.py +510 -0
  978. tools/govcon/sam_scanner.py +754 -0
  979. tools/harness/__init__.py +6 -0
  980. tools/harness/exit_criteria_evaluator.py +231 -0
  981. tools/harness/maturity_assessor.py +347 -0
  982. tools/harness/scaffold_harness.py +416 -0
  983. tools/harness/trace_analyzer.py +281 -0
  984. tools/infra/__init__.py +1 -0
  985. tools/infra/ansible_generator.py +867 -0
  986. tools/infra/dockerfile_generator.py +359 -0
  987. tools/infra/infra_status.py +384 -0
  988. tools/infra/ironbank_metadata_generator.py +403 -0
  989. tools/infra/k8s_generator.py +1000 -0
  990. tools/infra/pipeline_generator.py +830 -0
  991. tools/infra/rollback.py +389 -0
  992. tools/infra/terraform_generator.py +1140 -0
  993. tools/infra/terraform_generator_azure.py +1252 -0
  994. tools/infra/terraform_generator_gcp.py +951 -0
  995. tools/infra/terraform_generator_ibm.py +359 -0
  996. tools/infra/terraform_generator_oci.py +918 -0
  997. tools/infra/terraform_generator_onprem.py +318 -0
  998. tools/knowledge/__init__.py +1 -0
  999. tools/knowledge/knowledge_ingest.py +281 -0
  1000. tools/knowledge/pattern_detector.py +681 -0
  1001. tools/knowledge/recommendation_engine.py +449 -0
  1002. tools/knowledge/self_heal_analyzer.py +492 -0
  1003. tools/knowledge_graph/__init__.py +2 -0
  1004. tools/knowledge_graph/graph_rag.py +498 -0
  1005. tools/knowledge_graph/ingester.py +406 -0
  1006. tools/knowledge_graph/insight_generator.py +369 -0
  1007. tools/knowledge_graph/text_network.py +832 -0
  1008. tools/llm/__init__.py +72 -0
  1009. tools/llm/anthropic_provider.py +170 -0
  1010. tools/llm/azure_openai_provider.py +338 -0
  1011. tools/llm/bedrock_provider.py +315 -0
  1012. tools/llm/embedding_provider.py +438 -0
  1013. tools/llm/gemini_provider.py +381 -0
  1014. tools/llm/ibm_watsonx_provider.py +231 -0
  1015. tools/llm/oci_genai_provider.py +462 -0
  1016. tools/llm/ollama_provider.py +350 -0
  1017. tools/llm/openai_provider.py +225 -0
  1018. tools/llm/prompt_registry.py +447 -0
  1019. tools/llm/provider.py +355 -0
  1020. tools/llm/provider_sdk.py +175 -0
  1021. tools/llm/router.py +1124 -0
  1022. tools/llm/semantic_cache.py +394 -0
  1023. tools/llm/vertex_ai_provider.py +374 -0
  1024. tools/maintenance/__init__.py +2 -0
  1025. tools/maintenance/dependency_scanner.py +1016 -0
  1026. tools/maintenance/maintenance_auditor.py +804 -0
  1027. tools/maintenance/remediation_engine.py +957 -0
  1028. tools/maintenance/vulnerability_checker.py +978 -0
  1029. tools/manifest.md +1066 -0
  1030. tools/marketplace/asset_installer.py +639 -0
  1031. tools/marketplace/feedback_validator.py +359 -0
  1032. tools/marketplace/license_client.py +458 -0
  1033. tools/marketplace/module_crypto.py +544 -0
  1034. tools/marketplace/module_runtime.py +236 -0
  1035. tools/marketplace/token_store.py +264 -0
  1036. tools/mbse/__init__.py +3 -0
  1037. tools/mbse/des_assessor.py +1173 -0
  1038. tools/mbse/des_report_generator.py +787 -0
  1039. tools/mbse/diagram_extractor.py +792 -0
  1040. tools/mbse/digital_thread.py +1650 -0
  1041. tools/mbse/model_code_generator.py +1115 -0
  1042. tools/mbse/model_control_mapper.py +410 -0
  1043. tools/mbse/pi_model_tracker.py +1079 -0
  1044. tools/mbse/reqif_parser.py +1468 -0
  1045. tools/mbse/sync_engine.py +1789 -0
  1046. tools/mbse/thread_heatmap.py +445 -0
  1047. tools/mbse/xmi_parser.py +1558 -0
  1048. tools/mcp/builder_server.py +64 -0
  1049. tools/mcp/compliance_server.py +64 -0
  1050. tools/mcp/connector_forge_server.py +155 -0
  1051. tools/mcp/core_server.py +64 -0
  1052. tools/mcp/devsecops_server.py +11 -0
  1053. tools/mcp/devsecops_zta_server.py +64 -0
  1054. tools/mcp/knowledge_server.py +64 -0
  1055. tools/mcp/monitor_server.py +64 -0
  1056. tools/mcp/ops_server.py +300 -0
  1057. tools/mcp/requirements_analyst_server.py +64 -0
  1058. tools/mcp/requirements_server.py +11 -0
  1059. tools/mcp/security_server.py +64 -0
  1060. tools/mcp/simulation_server.py +64 -0
  1061. tools/mcp/supply_chain_server.py +64 -0
  1062. tools/mcp/tool_registry.py +299 -0
  1063. tools/memory/__init__.py +2 -0
  1064. tools/memory/auto_capture.py +346 -0
  1065. tools/memory/embed_memory.py +157 -0
  1066. tools/memory/history_compressor.py +334 -0
  1067. tools/memory/hybrid_search.py +235 -0
  1068. tools/memory/maintenance_cron.py +288 -0
  1069. tools/memory/memory_consolidation.py +439 -0
  1070. tools/memory/memory_db.py +132 -0
  1071. tools/memory/memory_read.py +101 -0
  1072. tools/memory/memory_write.py +221 -0
  1073. tools/memory/semantic_search.py +138 -0
  1074. tools/memory/time_decay.py +434 -0
  1075. tools/missions/__init__.py +2 -0
  1076. tools/missions/mission_engine.py +459 -0
  1077. tools/monitor/__init__.py +1 -0
  1078. tools/monitor/alert_correlator.py +486 -0
  1079. tools/monitor/auto_resolver.py +603 -0
  1080. tools/monitor/health_checker.py +507 -0
  1081. tools/monitor/heartbeat_daemon.py +779 -0
  1082. tools/monitor/log_analyzer.py +507 -0
  1083. tools/monitor/metric_collector.py +484 -0
  1084. tools/mosa/__init__.py +10 -0
  1085. tools/mosa/icd_generator.py +358 -0
  1086. tools/mosa/modular_design_analyzer.py +682 -0
  1087. tools/mosa/mosa_code_enforcer.py +348 -0
  1088. tools/mosa/tsp_generator.py +265 -0
  1089. tools/observability/__init__.py +100 -0
  1090. tools/observability/genai_attributes.py +88 -0
  1091. tools/observability/instrumentation.py +140 -0
  1092. tools/observability/mlflow_exporter.py +193 -0
  1093. tools/observability/otel_tracer.py +168 -0
  1094. tools/observability/provenance/__init__.py +3 -0
  1095. tools/observability/provenance/prov_recorder.py +322 -0
  1096. tools/observability/shap/__init__.py +3 -0
  1097. tools/observability/shap/agent_shap.py +274 -0
  1098. tools/observability/sqlite_tracer.py +360 -0
  1099. tools/observability/trace_context.py +205 -0
  1100. tools/observability/tracer.py +230 -0
  1101. tools/orchestration/__init__.py +1 -0
  1102. tools/orchestration/peer_channels.py +254 -0
  1103. tools/orchestration/saga_coordinator.py +390 -0
  1104. tools/project/__init__.py +1 -0
  1105. tools/project/manifest_loader.py +418 -0
  1106. tools/project/project_create.py +350 -0
  1107. tools/project/project_list.py +171 -0
  1108. tools/project/project_scaffold.py +1715 -0
  1109. tools/project/project_status.py +478 -0
  1110. tools/project/session_context_builder.py +752 -0
  1111. tools/project/validate_manifest.py +54 -0
  1112. tools/rag/corrective_rag.py +582 -0
  1113. tools/rag/source_registry.py +482 -0
  1114. tools/requirements/__init__.py +1 -0
  1115. tools/requirements/ai_governance_scorer.py +207 -0
  1116. tools/requirements/boundary_analyzer.py +1281 -0
  1117. tools/requirements/clarification_engine.py +605 -0
  1118. tools/requirements/complexity_scorer.py +369 -0
  1119. tools/requirements/consistency_analyzer.py +789 -0
  1120. tools/requirements/constitution_manager.py +592 -0
  1121. tools/requirements/decomposition_engine.py +764 -0
  1122. tools/requirements/document_extractor.py +1002 -0
  1123. tools/requirements/elicitation_techniques.py +508 -0
  1124. tools/requirements/gap_detector.py +260 -0
  1125. tools/requirements/intake_engine.py +2175 -0
  1126. tools/requirements/prd_generator.py +839 -0
  1127. tools/requirements/prd_validator.py +584 -0
  1128. tools/requirements/readiness_scorer.py +302 -0
  1129. tools/requirements/spec_organizer.py +1015 -0
  1130. tools/requirements/spec_quality_checker.py +1083 -0
  1131. tools/requirements/traceability_builder.py +566 -0
  1132. tools/research/__init__.py +3 -0
  1133. tools/research/academic_scanner.py +130 -0
  1134. tools/research/build_buy_analyzer.py +229 -0
  1135. tools/research/challenge_scorer.py +280 -0
  1136. tools/research/community_scanner.py +174 -0
  1137. tools/research/cross_engine_bridge.py +124 -0
  1138. tools/research/dossier_generator.py +305 -0
  1139. tools/research/landscape_scanner.py +315 -0
  1140. tools/research/regulatory_scanner.py +248 -0
  1141. tools/research/research_manager.py +469 -0
  1142. tools/research/source_scanner.py +150 -0
  1143. tools/research/vertical_loader.py +118 -0
  1144. tools/saas/__init__.py +0 -0
  1145. tools/saas/licensing/__init__.py +0 -0
  1146. tools/saas/licensing/license_validator.py +345 -0
  1147. tools/scaffold/__init__.py +2 -0
  1148. tools/scaffold/golden_path.py +504 -0
  1149. tools/security/__init__.py +1 -0
  1150. tools/security/agent_output_validator.py +330 -0
  1151. tools/security/agent_trust_scorer.py +652 -0
  1152. tools/security/ai_bom_generator.py +718 -0
  1153. tools/security/ai_telemetry_logger.py +469 -0
  1154. tools/security/atlas_red_team.py +541 -0
  1155. tools/security/code_pattern_scanner.py +382 -0
  1156. tools/security/confabulation_detector.py +265 -0
  1157. tools/security/container_scanner.py +489 -0
  1158. tools/security/dependency_auditor.py +942 -0
  1159. tools/security/endpoint_security_scanner.py +626 -0
  1160. tools/security/mcp_tool_authorizer.py +242 -0
  1161. tools/security/output_verifier.py +427 -0
  1162. tools/security/prompt_injection_detector.py +737 -0
  1163. tools/security/sast_runner.py +946 -0
  1164. tools/security/secret_detector.py +376 -0
  1165. tools/security/threat_modeler.py +678 -0
  1166. tools/security/tool_chain_validator.py +357 -0
  1167. tools/security/vuln_scanner.py +536 -0
  1168. tools/simulation/__init__.py +2 -0
  1169. tools/simulation/ato_simulator.py +517 -0
  1170. tools/simulation/coa_generator.py +1539 -0
  1171. tools/simulation/monte_carlo.py +745 -0
  1172. tools/simulation/scenario_manager.py +1060 -0
  1173. tools/simulation/simulation_engine.py +1091 -0
  1174. tools/simulator/__init__.py +2 -0
  1175. tools/simulator/sim_runner.py +272 -0
  1176. tools/supply_chain/__init__.py +2 -0
  1177. tools/supply_chain/cve_triager.py +690 -0
  1178. tools/supply_chain/dependency_graph.py +630 -0
  1179. tools/supply_chain/isa_manager.py +526 -0
  1180. tools/supply_chain/scrm_assessor.py +531 -0
  1181. tools/supply_chain/slsa_verifier.py +473 -0
  1182. tools/testing/__init__.py +2 -0
  1183. tools/testing/acceptance_validator.py +411 -0
  1184. tools/testing/api_surface_extractor.py +749 -0
  1185. tools/testing/claude_dir_validator.py +831 -0
  1186. tools/testing/data_types.py +199 -0
  1187. tools/testing/e2e_runner.py +715 -0
  1188. tools/testing/fuzz_cli.py +306 -0
  1189. tools/testing/health_check.py +483 -0
  1190. tools/testing/platform_check.py +143 -0
  1191. tools/testing/production_audit.py +1836 -0
  1192. tools/testing/production_remediate.py +803 -0
  1193. tools/testing/screenshot_validator.py +538 -0
  1194. tools/testing/smoke_test.py +283 -0
  1195. tools/testing/test_agent_models.py +117 -0
  1196. tools/testing/test_orchestrator.py +957 -0
  1197. tools/testing/utils.py +229 -0
  1198. tools/writeguard/__init__.py +1 -0
  1199. tools/writeguard/main.py +1 -0
  1200. tools/writing/__init__.py +7 -0
  1201. tools/writing/ai_content_detector.py +316 -0
  1202. tools/writing/analysis_engine.py +454 -0
  1203. tools/writing/batch_analyzer.py +276 -0
  1204. tools/writing/coherence_analyzer.py +221 -0
  1205. tools/writing/govcon_bridge.py +509 -0
  1206. tools/writing/grammar_checker.py +270 -0
  1207. tools/writing/plagiarism_detector.py +106 -0
  1208. tools/writing/readability_scorer.py +201 -0
  1209. tools/writing/rewriter.py +96 -0
  1210. tools/writing/signal_registrar.py +167 -0
  1211. tools/writing/snippet_manager.py +276 -0
  1212. tools/writing/style_enforcer.py +220 -0
  1213. tools/writing/style_guide_manager.py +438 -0
  1214. tools/writing/tone_profiler.py +168 -0
@@ -0,0 +1,1530 @@
1
+ # CUI // SP-CTI
2
+ """Hardening engine — IL4+ deployment hardening presets and FedRAMP package assembly
3
+ for Forge Studio apps.
4
+
5
+ Provides:
6
+ - Hardening presets (IL4, IL5, FedRAMP Moderate/High, DoD STIG) with per-control
7
+ Terraform HCL and Kubernetes manifest generation
8
+ - Multi-cloud support (AWS, Azure, GCP) with provider-specific security configs
9
+ - FedRAMP authorization package assembly (SSP, CIS, CMP, IRP, POA&M)
10
+ - All generation is deterministic — no LLM in deployment path
11
+
12
+ Architecture decisions:
13
+ - D-FS-P6-4: Hardening presets generate additional Terraform/K8s configs
14
+ - D-FS-P6-5: FedRAMP package is deterministic document assembly
15
+ - D-FS-DEPLOY-2: All IaC is deterministic template generation
16
+
17
+ CLI: python tools/forge_studio/enterprise/hardening_engine.py --apply --app-id "..." --preset il4_standard --provider aws --json
18
+ """
19
+ from __future__ import annotations
20
+
21
+ import json
22
+ import logging
23
+ import os
24
+ import uuid
25
+ from datetime import datetime, timezone
26
+ from typing import Any, Dict, List, Optional
27
+
28
+ from tools.forge_studio.audit import log_forge_event
29
+
30
+ logger = logging.getLogger("forge_studio.enterprise.hardening")
31
+
32
+ # ---------------------------------------------------------------------------
33
+ # Hardening presets
34
+ # ---------------------------------------------------------------------------
35
+
36
+ HARDENING_PRESETS: Dict[str, Dict[str, Any]] = {
37
+ "il4_standard": {
38
+ "name": "IL4 Standard",
39
+ "description": "DoD Impact Level 4 — CUI protection with encryption, logging, and access control",
40
+ "controls": [
41
+ "encryption_at_rest", "encryption_in_transit", "network_segmentation",
42
+ "logging_monitoring", "access_control", "container_hardening",
43
+ "secret_management", "backup_recovery",
44
+ ],
45
+ },
46
+ "il5_high": {
47
+ "name": "IL5 High",
48
+ "description": "DoD Impact Level 5 — higher-impact CUI with full hardening stack",
49
+ "controls": [
50
+ "encryption_at_rest", "encryption_in_transit", "network_segmentation",
51
+ "logging_monitoring", "access_control", "container_hardening",
52
+ "secret_management", "backup_recovery", "vulnerability_scanning",
53
+ "incident_response",
54
+ ],
55
+ },
56
+ "fedramp_moderate": {
57
+ "name": "FedRAMP Moderate",
58
+ "description": "FedRAMP Moderate baseline — 325 controls for cloud services authorization",
59
+ "controls": [
60
+ "encryption_at_rest", "encryption_in_transit", "network_segmentation",
61
+ "logging_monitoring", "access_control", "secret_management",
62
+ "backup_recovery", "vulnerability_scanning",
63
+ ],
64
+ },
65
+ "fedramp_high": {
66
+ "name": "FedRAMP High",
67
+ "description": "FedRAMP High baseline — 421 controls for high-impact cloud systems",
68
+ "controls": [
69
+ "encryption_at_rest", "encryption_in_transit", "network_segmentation",
70
+ "logging_monitoring", "access_control", "container_hardening",
71
+ "secret_management", "backup_recovery", "vulnerability_scanning",
72
+ "incident_response",
73
+ ],
74
+ },
75
+ "dod_stig": {
76
+ "name": "DoD STIG",
77
+ "description": "DoD Security Technical Implementation Guide — comprehensive hardening checklist",
78
+ "controls": [
79
+ "encryption_at_rest", "encryption_in_transit", "network_segmentation",
80
+ "logging_monitoring", "access_control", "container_hardening",
81
+ "secret_management", "backup_recovery", "vulnerability_scanning",
82
+ "incident_response",
83
+ ],
84
+ },
85
+ }
86
+
87
+ SUPPORTED_PROVIDERS = ["aws", "azure", "gcp"]
88
+
89
+ # ---------------------------------------------------------------------------
90
+ # DB schema
91
+ # ---------------------------------------------------------------------------
92
+
93
+ HARDENING_SCHEMA = """
94
+ CREATE TABLE IF NOT EXISTS forge_studio_hardening_configs (
95
+ id TEXT PRIMARY KEY,
96
+ app_id TEXT NOT NULL,
97
+ preset TEXT NOT NULL,
98
+ provider TEXT NOT NULL,
99
+ controls_applied_json TEXT,
100
+ terraform_additions_json TEXT,
101
+ k8s_additions_json TEXT,
102
+ status TEXT DEFAULT 'applied' CHECK(status IN ('applied','superseded','reverted')),
103
+ classification TEXT DEFAULT 'CUI // SP-CTI',
104
+ created_at TEXT NOT NULL
105
+ );
106
+ """
107
+
108
+
109
+ def ensure_hardening_tables():
110
+ """Create hardening tables if they don't exist."""
111
+ from tools.db.storage import get_connection
112
+
113
+ with get_connection() as conn:
114
+ for stmt in HARDENING_SCHEMA.split(";"):
115
+ s = stmt.strip()
116
+ if s and not s.startswith("--"):
117
+ conn.execute(s)
118
+
119
+ logger.info("Forge Studio hardening tables ensured")
120
+
121
+
122
+ # ---------------------------------------------------------------------------
123
+ # Preset listing
124
+ # ---------------------------------------------------------------------------
125
+
126
+ def get_hardening_presets() -> List[Dict[str, Any]]:
127
+ """List available hardening presets.
128
+
129
+ Returns:
130
+ List of preset dicts with id, name, description, controls.
131
+ """
132
+ return [
133
+ {"id": pid, "name": p["name"], "description": p["description"],
134
+ "controls": p["controls"], "controls_count": len(p["controls"])}
135
+ for pid, p in HARDENING_PRESETS.items()
136
+ ]
137
+
138
+
139
+ # ---------------------------------------------------------------------------
140
+ # Provider-specific Terraform generators
141
+ # ---------------------------------------------------------------------------
142
+
143
+ def _generate_aws_hardening(preset: str, app_name: str) -> Dict[str, str]:
144
+ """Generate AWS-specific hardening Terraform HCL.
145
+
146
+ Args:
147
+ preset: Preset ID from HARDENING_PRESETS.
148
+ app_name: Application name for resource naming.
149
+
150
+ Returns:
151
+ Dict of filename -> HCL content.
152
+ """
153
+ controls = HARDENING_PRESETS.get(preset, {}).get("controls", [])
154
+ safe_name = app_name.replace("-", "_").replace(" ", "_").lower()[:32]
155
+ files: Dict[str, str] = {}
156
+
157
+ if "encryption_at_rest" in controls:
158
+ files["hardening_kms.tf"] = f"""# CUI // SP-CTI — KMS encryption at rest
159
+ resource "aws_kms_key" "{safe_name}_key" {{
160
+ description = "Encryption key for {app_name}"
161
+ deletion_window_in_days = 30
162
+ enable_key_rotation = true
163
+
164
+ tags = {{
165
+ Application = "{app_name}"
166
+ Classification = "CUI // SP-CTI"
167
+ Preset = "{preset}"
168
+ }}
169
+ }}
170
+
171
+ resource "aws_kms_alias" "{safe_name}_alias" {{
172
+ name = "alias/{safe_name}-key"
173
+ target_key_id = aws_kms_key.{safe_name}_key.key_id
174
+ }}
175
+ """
176
+
177
+ if "encryption_in_transit" in controls:
178
+ files["hardening_tls.tf"] = f"""# CUI // SP-CTI — TLS 1.2+ enforcement and HSTS
179
+ resource "aws_lb_listener" "{safe_name}_https" {{
180
+ load_balancer_arn = aws_lb.{safe_name}.arn
181
+ port = 443
182
+ protocol = "HTTPS"
183
+ ssl_policy = "ELBSecurityPolicy-TLS13-1-2-2021-06"
184
+ certificate_arn = var.acm_certificate_arn
185
+
186
+ default_action {{
187
+ type = "forward"
188
+ target_group_arn = aws_lb_target_group.{safe_name}.arn
189
+ }}
190
+ }}
191
+
192
+ resource "aws_lb_listener" "{safe_name}_http_redirect" {{
193
+ load_balancer_arn = aws_lb.{safe_name}.arn
194
+ port = 80
195
+ protocol = "HTTP"
196
+
197
+ default_action {{
198
+ type = "redirect"
199
+ redirect {{
200
+ port = "443"
201
+ protocol = "HTTPS"
202
+ status_code = "HTTP_301"
203
+ }}
204
+ }}
205
+ }}
206
+ """
207
+
208
+ if "network_segmentation" in controls:
209
+ files["hardening_network.tf"] = f"""# CUI // SP-CTI — VPC segmentation, security groups, NACLs
210
+ resource "aws_security_group" "{safe_name}_app_sg" {{
211
+ name_prefix = "{safe_name}-app-"
212
+ vpc_id = var.vpc_id
213
+
214
+ ingress {{
215
+ from_port = 443
216
+ to_port = 443
217
+ protocol = "tcp"
218
+ security_groups = [aws_security_group.{safe_name}_alb_sg.id]
219
+ description = "HTTPS from ALB only"
220
+ }}
221
+
222
+ egress {{
223
+ from_port = 0
224
+ to_port = 0
225
+ protocol = "-1"
226
+ cidr_blocks = ["0.0.0.0/0"]
227
+ description = "Allow outbound"
228
+ }}
229
+
230
+ tags = {{
231
+ Application = "{app_name}"
232
+ Classification = "CUI // SP-CTI"
233
+ }}
234
+ }}
235
+
236
+ resource "aws_security_group" "{safe_name}_alb_sg" {{
237
+ name_prefix = "{safe_name}-alb-"
238
+ vpc_id = var.vpc_id
239
+
240
+ ingress {{
241
+ from_port = 443
242
+ to_port = 443
243
+ protocol = "tcp"
244
+ cidr_blocks = ["0.0.0.0/0"]
245
+ description = "HTTPS inbound"
246
+ }}
247
+
248
+ tags = {{
249
+ Application = "{app_name}"
250
+ Classification = "CUI // SP-CTI"
251
+ }}
252
+ }}
253
+
254
+ resource "aws_network_acl" "{safe_name}_nacl" {{
255
+ vpc_id = var.vpc_id
256
+ subnet_ids = var.private_subnet_ids
257
+
258
+ ingress {{
259
+ protocol = "tcp"
260
+ rule_no = 100
261
+ action = "allow"
262
+ cidr_block = var.vpc_cidr
263
+ from_port = 443
264
+ to_port = 443
265
+ }}
266
+
267
+ ingress {{
268
+ protocol = "tcp"
269
+ rule_no = 200
270
+ action = "allow"
271
+ cidr_block = var.vpc_cidr
272
+ from_port = 5432
273
+ to_port = 5432
274
+ }}
275
+
276
+ egress {{
277
+ protocol = "tcp"
278
+ rule_no = 100
279
+ action = "allow"
280
+ cidr_block = "0.0.0.0/0"
281
+ from_port = 443
282
+ to_port = 443
283
+ }}
284
+
285
+ tags = {{
286
+ Application = "{app_name}"
287
+ Classification = "CUI // SP-CTI"
288
+ }}
289
+ }}
290
+ """
291
+
292
+ if "logging_monitoring" in controls:
293
+ files["hardening_logging.tf"] = f"""# CUI // SP-CTI — CloudTrail, CloudWatch, audit log shipping
294
+ resource "aws_cloudtrail" "{safe_name}_trail" {{
295
+ name = "{safe_name}-trail"
296
+ s3_bucket_name = aws_s3_bucket.{safe_name}_audit.id
297
+ include_global_service_events = true
298
+ is_multi_region_trail = true
299
+ enable_log_file_validation = true
300
+ kms_key_id = aws_kms_key.{safe_name}_key.arn
301
+
302
+ tags = {{
303
+ Application = "{app_name}"
304
+ Classification = "CUI // SP-CTI"
305
+ }}
306
+ }}
307
+
308
+ resource "aws_s3_bucket" "{safe_name}_audit" {{
309
+ bucket_prefix = "{safe_name}-audit-"
310
+ force_destroy = false
311
+
312
+ tags = {{
313
+ Application = "{app_name}"
314
+ Classification = "CUI // SP-CTI"
315
+ }}
316
+ }}
317
+
318
+ resource "aws_s3_bucket_versioning" "{safe_name}_audit_versioning" {{
319
+ bucket = aws_s3_bucket.{safe_name}_audit.id
320
+ versioning_configuration {{
321
+ status = "Enabled"
322
+ }}
323
+ }}
324
+
325
+ resource "aws_s3_bucket_server_side_encryption_configuration" "{safe_name}_audit_enc" {{
326
+ bucket = aws_s3_bucket.{safe_name}_audit.id
327
+ rule {{
328
+ apply_server_side_encryption_by_default {{
329
+ sse_algorithm = "aws:kms"
330
+ kms_master_key_id = aws_kms_key.{safe_name}_key.arn
331
+ }}
332
+ }}
333
+ }}
334
+
335
+ resource "aws_cloudwatch_log_group" "{safe_name}_logs" {{
336
+ name = "/app/{safe_name}"
337
+ retention_in_days = 365
338
+ kms_key_id = aws_kms_key.{safe_name}_key.arn
339
+
340
+ tags = {{
341
+ Application = "{app_name}"
342
+ Classification = "CUI // SP-CTI"
343
+ }}
344
+ }}
345
+ """
346
+
347
+ if "access_control" in controls:
348
+ files["hardening_iam.tf"] = f"""# CUI // SP-CTI — IAM roles, least privilege, MFA enforcement
349
+ resource "aws_iam_role" "{safe_name}_task_role" {{
350
+ name_prefix = "{safe_name}-task-"
351
+
352
+ assume_role_policy = jsonencode({{
353
+ Version = "2012-10-17"
354
+ Statement = [{{
355
+ Action = "sts:AssumeRole"
356
+ Effect = "Allow"
357
+ Principal = {{
358
+ Service = "ecs-tasks.amazonaws.com"
359
+ }}
360
+ }}]
361
+ }})
362
+
363
+ tags = {{
364
+ Application = "{app_name}"
365
+ Classification = "CUI // SP-CTI"
366
+ }}
367
+ }}
368
+
369
+ resource "aws_iam_role_policy" "{safe_name}_task_policy" {{
370
+ name_prefix = "{safe_name}-task-"
371
+ role = aws_iam_role.{safe_name}_task_role.id
372
+
373
+ policy = jsonencode({{
374
+ Version = "2012-10-17"
375
+ Statement = [
376
+ {{
377
+ Effect = "Allow"
378
+ Action = [
379
+ "logs:CreateLogStream",
380
+ "logs:PutLogEvents"
381
+ ]
382
+ Resource = "${{aws_cloudwatch_log_group.{safe_name}_logs.arn}}:*"
383
+ }},
384
+ {{
385
+ Effect = "Allow"
386
+ Action = [
387
+ "kms:Decrypt",
388
+ "kms:GenerateDataKey"
389
+ ]
390
+ Resource = aws_kms_key.{safe_name}_key.arn
391
+ }},
392
+ {{
393
+ Effect = "Allow"
394
+ Action = [
395
+ "secretsmanager:GetSecretValue"
396
+ ]
397
+ Resource = "arn:aws:secretsmanager:*:*:secret:{safe_name}-*"
398
+ }}
399
+ ]
400
+ }})
401
+ }}
402
+ """
403
+
404
+ if "container_hardening" in controls:
405
+ files["hardening_container.tf"] = f"""# CUI // SP-CTI — Container hardening (ECS task definition)
406
+ # Note: Non-root, read-only rootfs, resource limits enforced at task level
407
+ # See also: k8s_hardening/ for Kubernetes PodSecurityPolicy
408
+
409
+ variable "{safe_name}_container_cpu" {{
410
+ description = "CPU units for container"
411
+ type = number
412
+ default = 512
413
+ }}
414
+
415
+ variable "{safe_name}_container_memory" {{
416
+ description = "Memory (MiB) for container"
417
+ type = number
418
+ default = 1024
419
+ }}
420
+ """
421
+
422
+ if "secret_management" in controls:
423
+ files["hardening_secrets.tf"] = f"""# CUI // SP-CTI — AWS Secrets Manager (no plaintext secrets)
424
+ resource "aws_secretsmanager_secret" "{safe_name}_db_creds" {{
425
+ name_prefix = "{safe_name}-db-"
426
+ kms_key_id = aws_kms_key.{safe_name}_key.arn
427
+
428
+ tags = {{
429
+ Application = "{app_name}"
430
+ Classification = "CUI // SP-CTI"
431
+ }}
432
+ }}
433
+
434
+ resource "aws_secretsmanager_secret" "{safe_name}_app_secrets" {{
435
+ name_prefix = "{safe_name}-app-"
436
+ kms_key_id = aws_kms_key.{safe_name}_key.arn
437
+
438
+ tags = {{
439
+ Application = "{app_name}"
440
+ Classification = "CUI // SP-CTI"
441
+ }}
442
+ }}
443
+ """
444
+
445
+ if "backup_recovery" in controls:
446
+ files["hardening_backup.tf"] = f"""# CUI // SP-CTI — RDS snapshots, S3 versioning, cross-region backup
447
+ resource "aws_db_instance" "{safe_name}_rds_backup_config" {{
448
+ # Applied as override to existing RDS instance
449
+ backup_retention_period = 35
450
+ backup_window = "03:00-04:00"
451
+ copy_tags_to_snapshot = true
452
+ deletion_protection = true
453
+ storage_encrypted = true
454
+ kms_key_id = aws_kms_key.{safe_name}_key.arn
455
+
456
+ tags = {{
457
+ Application = "{app_name}"
458
+ Classification = "CUI // SP-CTI"
459
+ }}
460
+
461
+ lifecycle {{
462
+ prevent_destroy = true
463
+ }}
464
+ }}
465
+
466
+ resource "aws_s3_bucket_versioning" "{safe_name}_data_versioning" {{
467
+ bucket = aws_s3_bucket.{safe_name}_data.id
468
+ versioning_configuration {{
469
+ status = "Enabled"
470
+ }}
471
+ }}
472
+ """
473
+
474
+ if "vulnerability_scanning" in controls:
475
+ files["hardening_scanning.tf"] = f"""# CUI // SP-CTI — ECR scan, SecurityHub, GuardDuty
476
+ resource "aws_ecr_repository" "{safe_name}_repo" {{
477
+ name = "{safe_name}"
478
+ image_tag_mutability = "IMMUTABLE"
479
+
480
+ image_scanning_configuration {{
481
+ scan_on_push = true
482
+ }}
483
+
484
+ encryption_configuration {{
485
+ encryption_type = "KMS"
486
+ kms_key = aws_kms_key.{safe_name}_key.arn
487
+ }}
488
+
489
+ tags = {{
490
+ Application = "{app_name}"
491
+ Classification = "CUI // SP-CTI"
492
+ }}
493
+ }}
494
+
495
+ resource "aws_securityhub_account" "{safe_name}_sechub" {{}}
496
+
497
+ resource "aws_guardduty_detector" "{safe_name}_guardduty" {{
498
+ enable = true
499
+
500
+ datasources {{
501
+ s3_logs {{
502
+ enable = true
503
+ }}
504
+ }}
505
+ }}
506
+ """
507
+
508
+ if "incident_response" in controls:
509
+ files["hardening_incident.tf"] = f"""# CUI // SP-CTI — SNS alerts, CloudWatch alarms, auto-scaling triggers
510
+ resource "aws_sns_topic" "{safe_name}_alerts" {{
511
+ name = "{safe_name}-security-alerts"
512
+ kms_master_key_id = aws_kms_key.{safe_name}_key.id
513
+
514
+ tags = {{
515
+ Application = "{app_name}"
516
+ Classification = "CUI // SP-CTI"
517
+ }}
518
+ }}
519
+
520
+ resource "aws_cloudwatch_metric_alarm" "{safe_name}_high_error_rate" {{
521
+ alarm_name = "{safe_name}-high-error-rate"
522
+ comparison_operator = "GreaterThanThreshold"
523
+ evaluation_periods = 2
524
+ metric_name = "5XXError"
525
+ namespace = "AWS/ApplicationELB"
526
+ period = 300
527
+ statistic = "Sum"
528
+ threshold = 10
529
+ alarm_description = "High 5XX error rate for {app_name}"
530
+ alarm_actions = [aws_sns_topic.{safe_name}_alerts.arn]
531
+
532
+ dimensions = {{
533
+ LoadBalancer = aws_lb.{safe_name}.arn_suffix
534
+ }}
535
+ }}
536
+
537
+ resource "aws_cloudwatch_metric_alarm" "{safe_name}_cpu_high" {{
538
+ alarm_name = "{safe_name}-cpu-high"
539
+ comparison_operator = "GreaterThanThreshold"
540
+ evaluation_periods = 3
541
+ metric_name = "CPUUtilization"
542
+ namespace = "AWS/ECS"
543
+ period = 300
544
+ statistic = "Average"
545
+ threshold = 80
546
+ alarm_description = "High CPU for {app_name}"
547
+ alarm_actions = [aws_sns_topic.{safe_name}_alerts.arn]
548
+ }}
549
+ """
550
+
551
+ return files
552
+
553
+
554
+ def _generate_azure_hardening(preset: str, app_name: str) -> Dict[str, str]:
555
+ """Generate Azure-specific hardening Terraform HCL.
556
+
557
+ Args:
558
+ preset: Preset ID from HARDENING_PRESETS.
559
+ app_name: Application name for resource naming.
560
+
561
+ Returns:
562
+ Dict of filename -> HCL content.
563
+ """
564
+ controls = HARDENING_PRESETS.get(preset, {}).get("controls", [])
565
+ safe_name = app_name.replace("-", "_").replace(" ", "_").lower()[:32]
566
+ files: Dict[str, str] = {}
567
+
568
+ if "encryption_at_rest" in controls:
569
+ files["hardening_keyvault.tf"] = f"""# CUI // SP-CTI — Azure Key Vault encryption at rest
570
+ resource "azurerm_key_vault" "{safe_name}_kv" {{
571
+ name = "{safe_name[:20]}kv"
572
+ location = var.location
573
+ resource_group_name = var.resource_group_name
574
+ tenant_id = var.tenant_id
575
+ sku_name = "premium"
576
+ purge_protection_enabled = true
577
+ soft_delete_retention_days = 90
578
+ enable_rbac_authorization = true
579
+
580
+ network_acls {{
581
+ default_action = "Deny"
582
+ bypass = "AzureServices"
583
+ }}
584
+
585
+ tags = {{
586
+ Application = "{app_name}"
587
+ Classification = "CUI // SP-CTI"
588
+ }}
589
+ }}
590
+ """
591
+
592
+ if "encryption_in_transit" in controls:
593
+ files["hardening_tls.tf"] = f"""# CUI // SP-CTI — TLS 1.2+ enforcement
594
+ resource "azurerm_application_gateway" "{safe_name}_appgw_ssl" {{
595
+ # SSL policy overlay for existing app gateway
596
+ ssl_policy {{
597
+ policy_type = "Custom"
598
+ min_protocol_version = "TLSv1_2"
599
+ cipher_suites = [
600
+ "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",
601
+ "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
602
+ ]
603
+ }}
604
+ }}
605
+ """
606
+
607
+ if "network_segmentation" in controls:
608
+ files["hardening_network.tf"] = f"""# CUI // SP-CTI — NSG rules, VNet segmentation
609
+ resource "azurerm_network_security_group" "{safe_name}_nsg" {{
610
+ name = "{safe_name}-nsg"
611
+ location = var.location
612
+ resource_group_name = var.resource_group_name
613
+
614
+ security_rule {{
615
+ name = "AllowHTTPS"
616
+ priority = 100
617
+ direction = "Inbound"
618
+ access = "Allow"
619
+ protocol = "Tcp"
620
+ source_port_range = "*"
621
+ destination_port_range = "443"
622
+ source_address_prefix = "*"
623
+ destination_address_prefix = "*"
624
+ }}
625
+
626
+ security_rule {{
627
+ name = "DenyAll"
628
+ priority = 4096
629
+ direction = "Inbound"
630
+ access = "Deny"
631
+ protocol = "*"
632
+ source_port_range = "*"
633
+ destination_port_range = "*"
634
+ source_address_prefix = "*"
635
+ destination_address_prefix = "*"
636
+ }}
637
+
638
+ tags = {{
639
+ Application = "{app_name}"
640
+ Classification = "CUI // SP-CTI"
641
+ }}
642
+ }}
643
+ """
644
+
645
+ if "logging_monitoring" in controls:
646
+ files["hardening_logging.tf"] = f"""# CUI // SP-CTI — Azure Monitor, Sentinel, diagnostic settings
647
+ resource "azurerm_log_analytics_workspace" "{safe_name}_logs" {{
648
+ name = "{safe_name}-logs"
649
+ location = var.location
650
+ resource_group_name = var.resource_group_name
651
+ sku = "PerGB2018"
652
+ retention_in_days = 365
653
+
654
+ tags = {{
655
+ Application = "{app_name}"
656
+ Classification = "CUI // SP-CTI"
657
+ }}
658
+ }}
659
+
660
+ resource "azurerm_sentinel_log_analytics_workspace_onboarding" "{safe_name}_sentinel" {{
661
+ workspace_id = azurerm_log_analytics_workspace.{safe_name}_logs.id
662
+ }}
663
+ """
664
+
665
+ if "access_control" in controls:
666
+ files["hardening_rbac.tf"] = f"""# CUI // SP-CTI — Azure RBAC, managed identity
667
+ resource "azurerm_user_assigned_identity" "{safe_name}_identity" {{
668
+ name = "{safe_name}-identity"
669
+ location = var.location
670
+ resource_group_name = var.resource_group_name
671
+
672
+ tags = {{
673
+ Application = "{app_name}"
674
+ Classification = "CUI // SP-CTI"
675
+ }}
676
+ }}
677
+ """
678
+
679
+ if "vulnerability_scanning" in controls:
680
+ files["hardening_defender.tf"] = f"""# CUI // SP-CTI — Microsoft Defender for Cloud
681
+ resource "azurerm_security_center_subscription_pricing" "{safe_name}_defender" {{
682
+ tier = "Standard"
683
+ resource_type = "ContainerRegistry"
684
+ }}
685
+ """
686
+
687
+ if "secret_management" in controls:
688
+ files["hardening_secrets.tf"] = f"""# CUI // SP-CTI — Azure Key Vault secrets references
689
+ resource "azurerm_key_vault_secret" "{safe_name}_db_url" {{
690
+ name = "{safe_name}-db-url"
691
+ value = "placeholder-rotate-after-deploy"
692
+ key_vault_id = azurerm_key_vault.{safe_name}_kv.id
693
+
694
+ tags = {{
695
+ Application = "{app_name}"
696
+ Classification = "CUI // SP-CTI"
697
+ }}
698
+ }}
699
+ """
700
+
701
+ if "incident_response" in controls:
702
+ files["hardening_alerts.tf"] = f"""# CUI // SP-CTI — Azure Monitor alerts
703
+ resource "azurerm_monitor_action_group" "{safe_name}_alerts" {{
704
+ name = "{safe_name}-security-alerts"
705
+ resource_group_name = var.resource_group_name
706
+ short_name = "{safe_name[:12]}"
707
+
708
+ tags = {{
709
+ Application = "{app_name}"
710
+ Classification = "CUI // SP-CTI"
711
+ }}
712
+ }}
713
+ """
714
+
715
+ return files
716
+
717
+
718
+ def _generate_gcp_hardening(preset: str, app_name: str) -> Dict[str, str]:
719
+ """Generate GCP-specific hardening Terraform HCL.
720
+
721
+ Args:
722
+ preset: Preset ID from HARDENING_PRESETS.
723
+ app_name: Application name for resource naming.
724
+
725
+ Returns:
726
+ Dict of filename -> HCL content.
727
+ """
728
+ controls = HARDENING_PRESETS.get(preset, {}).get("controls", [])
729
+ safe_name = app_name.replace("-", "_").replace(" ", "_").lower()[:32]
730
+ files: Dict[str, str] = {}
731
+
732
+ if "encryption_at_rest" in controls:
733
+ files["hardening_kms.tf"] = f"""# CUI // SP-CTI — GCP KMS encryption at rest
734
+ resource "google_kms_key_ring" "{safe_name}_ring" {{
735
+ name = "{safe_name}-ring"
736
+ location = var.region
737
+ }}
738
+
739
+ resource "google_kms_crypto_key" "{safe_name}_key" {{
740
+ name = "{safe_name}-key"
741
+ key_ring = google_kms_key_ring.{safe_name}_ring.id
742
+ rotation_period = "7776000s" # 90 days
743
+
744
+ labels = {{
745
+ application = "{safe_name}"
746
+ classification = "cui"
747
+ }}
748
+ }}
749
+ """
750
+
751
+ if "network_segmentation" in controls:
752
+ files["hardening_network.tf"] = f"""# CUI // SP-CTI — VPC Service Controls, firewall rules
753
+ resource "google_compute_firewall" "{safe_name}_allow_https" {{
754
+ name = "{safe_name}-allow-https"
755
+ network = var.vpc_network
756
+
757
+ allow {{
758
+ protocol = "tcp"
759
+ ports = ["443"]
760
+ }}
761
+
762
+ source_ranges = ["0.0.0.0/0"]
763
+ target_tags = ["{safe_name}"]
764
+ }}
765
+
766
+ resource "google_compute_firewall" "{safe_name}_deny_all" {{
767
+ name = "{safe_name}-deny-all"
768
+ network = var.vpc_network
769
+ priority = 65534
770
+
771
+ deny {{
772
+ protocol = "all"
773
+ }}
774
+
775
+ source_ranges = ["0.0.0.0/0"]
776
+ target_tags = ["{safe_name}"]
777
+ }}
778
+ """
779
+
780
+ if "logging_monitoring" in controls:
781
+ files["hardening_logging.tf"] = f"""# CUI // SP-CTI — Cloud Audit Logs, SCC
782
+ resource "google_project_iam_audit_config" "{safe_name}_audit" {{
783
+ project = var.project_id
784
+ service = "allServices"
785
+
786
+ audit_log_config {{
787
+ log_type = "ADMIN_READ"
788
+ }}
789
+ audit_log_config {{
790
+ log_type = "DATA_READ"
791
+ }}
792
+ audit_log_config {{
793
+ log_type = "DATA_WRITE"
794
+ }}
795
+ }}
796
+ """
797
+
798
+ if "vulnerability_scanning" in controls:
799
+ files["hardening_scc.tf"] = f"""# CUI // SP-CTI — Security Command Center
800
+ resource "google_scc_organization_custom_module" "{safe_name}_scc" {{
801
+ organization = var.org_id
802
+ display_name = "{app_name} Security Module"
803
+ enablement_state = "ENABLED"
804
+
805
+ custom_config {{
806
+ predicate {{
807
+ expression = "resource.type == \\"gce_instance\\""
808
+ }}
809
+ resource_selector {{
810
+ resource_types = ["compute.googleapis.com/Instance"]
811
+ }}
812
+ severity = "HIGH"
813
+ description = "Custom security module for {app_name}"
814
+ recommendation = "Review instance configuration"
815
+ }}
816
+ }}
817
+ """
818
+
819
+ if "secret_management" in controls:
820
+ files["hardening_secrets.tf"] = f"""# CUI // SP-CTI — GCP Secret Manager
821
+ resource "google_secret_manager_secret" "{safe_name}_db_creds" {{
822
+ secret_id = "{safe_name}-db-credentials"
823
+
824
+ replication {{
825
+ auto {{}}
826
+ }}
827
+
828
+ labels = {{
829
+ application = "{safe_name}"
830
+ classification = "cui"
831
+ }}
832
+ }}
833
+ """
834
+
835
+ if "incident_response" in controls:
836
+ files["hardening_alerts.tf"] = f"""# CUI // SP-CTI — GCP Monitoring alerts
837
+ resource "google_monitoring_notification_channel" "{safe_name}_alerts" {{
838
+ display_name = "{app_name} Security Alerts"
839
+ type = "email"
840
+
841
+ labels = {{
842
+ email_address = "security@example.com"
843
+ }}
844
+ }}
845
+
846
+ resource "google_monitoring_alert_policy" "{safe_name}_error_rate" {{
847
+ display_name = "{app_name} High Error Rate"
848
+ combiner = "OR"
849
+
850
+ conditions {{
851
+ display_name = "High 5xx error rate"
852
+ condition_threshold {{
853
+ filter = "resource.type = \\"cloud_run_revision\\" AND metric.type = \\"run.googleapis.com/request_count\\" AND metric.labels.response_code_class = \\"5xx\\""
854
+ duration = "300s"
855
+ comparison = "COMPARISON_GT"
856
+ threshold_value = 10
857
+ }}
858
+ }}
859
+
860
+ notification_channels = [google_monitoring_notification_channel.{safe_name}_alerts.name]
861
+ }}
862
+ """
863
+
864
+ return files
865
+
866
+
867
+ def _generate_k8s_hardening(preset: str, app_name: str) -> Dict[str, str]:
868
+ """Generate Kubernetes hardening manifests.
869
+
870
+ Includes: NetworkPolicy (default-deny), Pod security standards,
871
+ ResourceQuota, LimitRange, and ExternalSecret.
872
+
873
+ Args:
874
+ preset: Preset ID from HARDENING_PRESETS.
875
+ app_name: Application name for resource naming.
876
+
877
+ Returns:
878
+ Dict of filename -> YAML content.
879
+ """
880
+ controls = HARDENING_PRESETS.get(preset, {}).get("controls", [])
881
+ safe_name = app_name.replace("_", "-").replace(" ", "-").lower()[:50]
882
+ files: Dict[str, str] = {}
883
+
884
+ if "network_segmentation" in controls:
885
+ files["network-policy.yaml"] = f"""# CUI // SP-CTI — Default-deny NetworkPolicy
886
+ apiVersion: networking.k8s.io/v1
887
+ kind: NetworkPolicy
888
+ metadata:
889
+ name: {safe_name}-default-deny
890
+ labels:
891
+ app: {safe_name}
892
+ classification: cui-sp-cti
893
+ spec:
894
+ podSelector:
895
+ matchLabels:
896
+ app: {safe_name}
897
+ policyTypes:
898
+ - Ingress
899
+ - Egress
900
+ ingress:
901
+ - from:
902
+ - podSelector:
903
+ matchLabels:
904
+ app: {safe_name}
905
+ ports:
906
+ - protocol: TCP
907
+ port: 8080
908
+ egress:
909
+ - to:
910
+ - podSelector:
911
+ matchLabels:
912
+ app: {safe_name}-db
913
+ ports:
914
+ - protocol: TCP
915
+ port: 5432
916
+ - to: []
917
+ ports:
918
+ - protocol: TCP
919
+ port: 443
920
+ """
921
+
922
+ if "container_hardening" in controls:
923
+ files["pod-security.yaml"] = f"""# CUI // SP-CTI — Pod security standards (restricted)
924
+ apiVersion: v1
925
+ kind: Namespace
926
+ metadata:
927
+ name: {safe_name}
928
+ labels:
929
+ pod-security.kubernetes.io/enforce: restricted
930
+ pod-security.kubernetes.io/enforce-version: latest
931
+ pod-security.kubernetes.io/warn: restricted
932
+ pod-security.kubernetes.io/audit: restricted
933
+ classification: cui-sp-cti
934
+ ---
935
+ # SecurityContext template for deployments
936
+ # Apply to each container in the pod spec:
937
+ # securityContext:
938
+ # runAsNonRoot: true
939
+ # runAsUser: 1000
940
+ # readOnlyRootFilesystem: true
941
+ # allowPrivilegeEscalation: false
942
+ # capabilities:
943
+ # drop: ["ALL"]
944
+ # seccompProfile:
945
+ # type: RuntimeDefault
946
+ """
947
+
948
+ files["resource-quota.yaml"] = f"""# CUI // SP-CTI — ResourceQuota and LimitRange
949
+ apiVersion: v1
950
+ kind: ResourceQuota
951
+ metadata:
952
+ name: {safe_name}-quota
953
+ namespace: {safe_name}
954
+ labels:
955
+ classification: cui-sp-cti
956
+ spec:
957
+ hard:
958
+ requests.cpu: "4"
959
+ requests.memory: 8Gi
960
+ limits.cpu: "8"
961
+ limits.memory: 16Gi
962
+ pods: "20"
963
+ services: "10"
964
+ persistentvolumeclaims: "5"
965
+ ---
966
+ apiVersion: v1
967
+ kind: LimitRange
968
+ metadata:
969
+ name: {safe_name}-limits
970
+ namespace: {safe_name}
971
+ labels:
972
+ classification: cui-sp-cti
973
+ spec:
974
+ limits:
975
+ - default:
976
+ cpu: "500m"
977
+ memory: 512Mi
978
+ defaultRequest:
979
+ cpu: "100m"
980
+ memory: 128Mi
981
+ type: Container
982
+ """
983
+
984
+ if "secret_management" in controls:
985
+ files["external-secrets.yaml"] = f"""# CUI // SP-CTI — ExternalSecret for secrets manager integration
986
+ apiVersion: external-secrets.io/v1beta1
987
+ kind: SecretStore
988
+ metadata:
989
+ name: {safe_name}-secret-store
990
+ namespace: {safe_name}
991
+ labels:
992
+ classification: cui-sp-cti
993
+ spec:
994
+ provider:
995
+ aws:
996
+ service: SecretsManager
997
+ region: us-gov-west-1
998
+ auth:
999
+ jwt:
1000
+ serviceAccountRef:
1001
+ name: {safe_name}-sa
1002
+ ---
1003
+ apiVersion: external-secrets.io/v1beta1
1004
+ kind: ExternalSecret
1005
+ metadata:
1006
+ name: {safe_name}-db-creds
1007
+ namespace: {safe_name}
1008
+ labels:
1009
+ classification: cui-sp-cti
1010
+ spec:
1011
+ refreshInterval: 1h
1012
+ secretStoreRef:
1013
+ name: {safe_name}-secret-store
1014
+ kind: SecretStore
1015
+ target:
1016
+ name: {safe_name}-db-credentials
1017
+ data:
1018
+ - secretKey: DATABASE_URL
1019
+ remoteRef:
1020
+ key: {safe_name}-db-credentials
1021
+ property: url
1022
+ """
1023
+
1024
+ return files
1025
+
1026
+
1027
+ # ---------------------------------------------------------------------------
1028
+ # Apply hardening
1029
+ # ---------------------------------------------------------------------------
1030
+
1031
+ def apply_hardening(
1032
+ app_id: str,
1033
+ preset: str,
1034
+ provider: str,
1035
+ output_dir: str = "",
1036
+ project_id: str = "",
1037
+ ) -> Dict[str, Any]:
1038
+ """Apply a hardening preset to an app for a specific cloud provider.
1039
+
1040
+ Generates additional Terraform HCL and Kubernetes manifests based on the
1041
+ selected preset and provider. Optionally writes files to output_dir.
1042
+
1043
+ Args:
1044
+ app_id: Forge Studio app ID.
1045
+ preset: Preset ID (il4_standard, il5_high, fedramp_moderate, fedramp_high, dod_stig).
1046
+ provider: Cloud provider (aws, azure, gcp).
1047
+ output_dir: Directory to write generated files (optional).
1048
+ project_id: Project context for audit trail.
1049
+
1050
+ Returns:
1051
+ {status, config_id, controls_applied, terraform_files, k8s_files}
1052
+ """
1053
+ from tools.db.storage import get_connection
1054
+
1055
+ if preset not in HARDENING_PRESETS:
1056
+ return {"status": "error", "error": f"Unknown preset: {preset}. Valid: {list(HARDENING_PRESETS.keys())}"}
1057
+ if provider not in SUPPORTED_PROVIDERS:
1058
+ return {"status": "error", "error": f"Unknown provider: {provider}. Valid: {SUPPORTED_PROVIDERS}"}
1059
+
1060
+ # Look up app name
1061
+ app_name = app_id
1062
+ with get_connection() as conn:
1063
+ row = conn.execute(
1064
+ "SELECT name FROM forge_studio_apps WHERE id = ?", (app_id,),
1065
+ ).fetchone()
1066
+ if row:
1067
+ app_name = row[0]
1068
+
1069
+ # Generate provider-specific Terraform
1070
+ tf_generators = {
1071
+ "aws": _generate_aws_hardening,
1072
+ "azure": _generate_azure_hardening,
1073
+ "gcp": _generate_gcp_hardening,
1074
+ }
1075
+ terraform_files = tf_generators[provider](preset, app_name)
1076
+
1077
+ # Generate K8s manifests (provider-agnostic)
1078
+ k8s_files = _generate_k8s_hardening(preset, app_name)
1079
+
1080
+ controls = HARDENING_PRESETS[preset]["controls"]
1081
+
1082
+ # Store config
1083
+ config_id = f"harden-{uuid.uuid4().hex[:12]}"
1084
+ now = datetime.now(timezone.utc).isoformat()
1085
+
1086
+ with get_connection() as conn:
1087
+ # Mark any existing configs as superseded
1088
+ conn.execute(
1089
+ "UPDATE forge_studio_hardening_configs SET status = 'superseded' "
1090
+ "WHERE app_id = ? AND status = 'applied'",
1091
+ (app_id,),
1092
+ )
1093
+ conn.execute(
1094
+ "INSERT INTO forge_studio_hardening_configs "
1095
+ "(id, app_id, preset, provider, controls_applied_json, "
1096
+ "terraform_additions_json, k8s_additions_json, status, "
1097
+ "classification, created_at) "
1098
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
1099
+ (
1100
+ config_id, app_id, preset, provider,
1101
+ json.dumps(controls),
1102
+ json.dumps(terraform_files),
1103
+ json.dumps(k8s_files),
1104
+ "applied",
1105
+ "CUI // SP-CTI",
1106
+ now,
1107
+ ),
1108
+ )
1109
+
1110
+ # Write files if output_dir specified
1111
+ files_written = []
1112
+ if output_dir:
1113
+ tf_dir = os.path.join(output_dir, "terraform", "hardening")
1114
+ k8s_dir = os.path.join(output_dir, "k8s", "hardening")
1115
+ os.makedirs(tf_dir, exist_ok=True)
1116
+ os.makedirs(k8s_dir, exist_ok=True)
1117
+
1118
+ for fname, content in terraform_files.items():
1119
+ fpath = os.path.join(tf_dir, fname)
1120
+ with open(fpath, "w", encoding="utf-8") as f:
1121
+ f.write(content)
1122
+ files_written.append(fpath)
1123
+
1124
+ for fname, content in k8s_files.items():
1125
+ fpath = os.path.join(k8s_dir, fname)
1126
+ with open(fpath, "w", encoding="utf-8") as f:
1127
+ f.write(content)
1128
+ files_written.append(fpath)
1129
+
1130
+ log_forge_event("forge_studio_hardening_applied", {
1131
+ "config_id": config_id,
1132
+ "app_id": app_id,
1133
+ "preset": preset,
1134
+ "provider": provider,
1135
+ "controls_count": len(controls),
1136
+ "terraform_file_count": len(terraform_files),
1137
+ "k8s_file_count": len(k8s_files),
1138
+ }, project_id=project_id)
1139
+
1140
+ logger.info("Applied hardening %s (preset=%s, provider=%s) to app %s",
1141
+ config_id, preset, provider, app_id)
1142
+
1143
+ return {
1144
+ "status": "success",
1145
+ "config_id": config_id,
1146
+ "preset": preset,
1147
+ "provider": provider,
1148
+ "controls_applied": controls,
1149
+ "terraform_files": list(terraform_files.keys()),
1150
+ "k8s_files": list(k8s_files.keys()),
1151
+ "files_written": files_written,
1152
+ }
1153
+
1154
+
1155
+ # ---------------------------------------------------------------------------
1156
+ # FedRAMP package assembly
1157
+ # ---------------------------------------------------------------------------
1158
+
1159
+ def generate_fedramp_package(
1160
+ app_id: str,
1161
+ baseline: str = "moderate",
1162
+ project_id: str = "",
1163
+ ) -> Dict[str, Any]:
1164
+ """Assemble a FedRAMP authorization package for an app.
1165
+
1166
+ Generates deterministic documents (no LLM):
1167
+ 1. System Security Plan (SSP) summary
1168
+ 2. Control Implementation Summary (CIS)
1169
+ 3. Continuous Monitoring Plan (CMP)
1170
+ 4. Incident Response Plan (IRP)
1171
+ 5. POA&M summary
1172
+
1173
+ Args:
1174
+ app_id: Forge Studio app ID.
1175
+ baseline: FedRAMP baseline (moderate or high).
1176
+ project_id: Project context for audit trail.
1177
+
1178
+ Returns:
1179
+ {status, package_id, documents: [{name, content, format}]}
1180
+ """
1181
+ from tools.db.storage import get_connection
1182
+
1183
+ if baseline not in ("moderate", "high"):
1184
+ return {"status": "error", "error": f"Unknown baseline: {baseline}. Valid: moderate, high"}
1185
+
1186
+ # Look up app details
1187
+ app_name = app_id
1188
+ app_desc = ""
1189
+ with get_connection() as conn:
1190
+ row = conn.execute(
1191
+ "SELECT name, description FROM forge_studio_apps WHERE id = ?", (app_id,),
1192
+ ).fetchone()
1193
+ if row:
1194
+ app_name = row[0] or app_id
1195
+ app_desc = row[1] or ""
1196
+
1197
+ now = datetime.now(timezone.utc).isoformat()
1198
+ now_date = now[:10]
1199
+ package_id = f"fedramp-{uuid.uuid4().hex[:12]}"
1200
+ baseline_upper = baseline.upper()
1201
+ controls_count = 325 if baseline == "moderate" else 421
1202
+
1203
+ documents = []
1204
+
1205
+ # 1. System Security Plan summary
1206
+ ssp_content = f"""# System Security Plan (SSP) — {app_name}
1207
+ # Classification: CUI // SP-CTI
1208
+ # FedRAMP Baseline: {baseline_upper}
1209
+ # Generated: {now_date}
1210
+
1211
+ ## 1. System Identification
1212
+ - **System Name:** {app_name}
1213
+ - **Description:** {app_desc or 'Forge Studio generated application'}
1214
+ - **FedRAMP Baseline:** {baseline_upper}
1215
+ - **Impact Level:** {'Moderate' if baseline == 'moderate' else 'High'}
1216
+ - **Package ID:** {package_id}
1217
+
1218
+ ## 2. System Boundary
1219
+ - **Deployment Model:** Cloud (IaaS/PaaS)
1220
+ - **Data Classification:** CUI // SP-CTI
1221
+ - **Authorization Boundary:** Application tier, database tier, load balancer, object storage
1222
+ - **Interconnections:** Cloud provider APIs, external identity provider (SAML/OIDC)
1223
+
1224
+ ## 3. Security Controls
1225
+ - **Baseline Controls:** {controls_count}
1226
+ - **Control Families:** AC, AU, AT, CM, CP, IA, IR, MA, MP, PE, PL, PM, PS, RA, SA, SC, SI, SR
1227
+ - **Inherited Controls:** Cloud provider infrastructure controls (FedRAMP authorized CSP)
1228
+ - **Hybrid Controls:** Application-level implementation with CSP infrastructure support
1229
+ - **Application-Specific:** Access control, audit logging, encryption, input validation
1230
+
1231
+ ## 4. Data Flow
1232
+ 1. User -> HTTPS (TLS 1.2+) -> Load Balancer -> Application Container
1233
+ 2. Application Container -> Encrypted Connection -> Database (encrypted at rest)
1234
+ 3. Application Container -> HTTPS -> Object Storage (encrypted, versioned)
1235
+ 4. All actions -> Append-only Audit Trail -> Log Aggregation (365-day retention)
1236
+
1237
+ ## 5. Authorization Status
1238
+ - **Status:** In Progress
1239
+ - **Target Authorization Date:** TBD
1240
+ - **Continuous Monitoring:** Automated evidence collection, monthly vulnerability scans
1241
+ """
1242
+ documents.append({"name": "SSP_Summary.md", "content": ssp_content, "format": "markdown"})
1243
+
1244
+ # 2. Control Implementation Summary
1245
+ cis_content = f"""# Control Implementation Summary — {app_name}
1246
+ # Classification: CUI // SP-CTI
1247
+ # FedRAMP Baseline: {baseline_upper}
1248
+ # Generated: {now_date}
1249
+
1250
+ ## Control Implementation Status
1251
+
1252
+ | Family | Description | Total | Implemented | Inherited | Planned |
1253
+ |--------|------------|-------|-------------|-----------|---------|
1254
+ | AC | Access Control | {'47' if baseline == 'high' else '32'} | Auto-generated | CSP | — |
1255
+ | AU | Audit and Accountability | {'16' if baseline == 'high' else '12'} | Auto-generated | CSP | — |
1256
+ | AT | Awareness and Training | 5 | Organizational | — | — |
1257
+ | CM | Configuration Management | {'14' if baseline == 'high' else '11'} | Auto-generated | CSP | — |
1258
+ | CP | Contingency Planning | {'13' if baseline == 'high' else '10'} | Partial | CSP | Org |
1259
+ | IA | Identification and Authentication | {'13' if baseline == 'high' else '11'} | Auto-generated | CSP | — |
1260
+ | IR | Incident Response | {'10' if baseline == 'high' else '8'} | Template | — | Org |
1261
+ | SC | System and Communications Protection | {'44' if baseline == 'high' else '27'} | Auto-generated | CSP | — |
1262
+ | SI | System and Information Integrity | {'17' if baseline == 'high' else '13'} | Auto-generated | CSP | — |
1263
+
1264
+ ## Implementation Methods
1265
+ - **Auto-generated:** Controls implemented by Forge Studio hardening engine (IaC, K8s manifests)
1266
+ - **Inherited:** Controls satisfied by FedRAMP-authorized Cloud Service Provider
1267
+ - **Organizational:** Controls requiring organizational policy and procedures
1268
+ - **Template:** Controls with generated templates requiring organizational customization
1269
+ """
1270
+ documents.append({"name": "Control_Implementation_Summary.md", "content": cis_content, "format": "markdown"})
1271
+
1272
+ # 3. Continuous Monitoring Plan
1273
+ cmp_content = f"""# Continuous Monitoring Plan — {app_name}
1274
+ # Classification: CUI // SP-CTI
1275
+ # FedRAMP Baseline: {baseline_upper}
1276
+ # Generated: {now_date}
1277
+
1278
+ ## 1. Monitoring Strategy
1279
+
1280
+ ### Evidence Freshness Thresholds
1281
+ | Evidence Type | Current (Green) | Stale (Yellow) | Expired (Red) |
1282
+ |--------------|----------------|----------------|----------------|
1283
+ | Vulnerability Scans | <= 30 days | <= 90 days | > 90 days |
1284
+ | Configuration Audits | <= 30 days | <= 90 days | > 90 days |
1285
+ | Access Reviews | <= 30 days | <= 90 days | > 90 days |
1286
+ | Penetration Tests | <= 365 days | <= 450 days | > 450 days |
1287
+ | Incident Response Tests | <= 365 days | <= 450 days | > 450 days |
1288
+
1289
+ ### Automated Scanning Schedule
1290
+ | Scan Type | Frequency | Tool | Gate Behavior |
1291
+ |-----------|-----------|------|---------------|
1292
+ | Vulnerability scan | Weekly | Trivy + ECR | Block on Critical/High |
1293
+ | Dependency audit | Daily | pip-audit, npm audit | Block on Critical |
1294
+ | Secret detection | Per commit | secret_detector.py | Block on any finding |
1295
+ | SAST | Per commit | Bandit, ruff | Block on High severity |
1296
+ | Container scan | Per build | ECR, Trivy | Block on Critical |
1297
+ | Compliance check | Daily | cato_live_engine.py | Alert on drift |
1298
+
1299
+ ## 2. Reporting
1300
+ - **Monthly:** Vulnerability summary, POA&M updates, control assessment delta
1301
+ - **Quarterly:** Full control reassessment, risk posture report
1302
+ - **Annual:** Comprehensive security assessment, penetration test
1303
+ - **Ad-hoc:** Significant change trigger, incident trigger
1304
+
1305
+ ## 3. Deviation Handling
1306
+ 1. Finding detected -> Auto-create POA&M entry
1307
+ 2. Severity classification -> SLA assignment (Critical: 72h, High: 30d, Moderate: 90d, Low: 180d)
1308
+ 3. Remediation tracking -> Evidence collection -> Closure verification
1309
+ """
1310
+ documents.append({"name": "Continuous_Monitoring_Plan.md", "content": cmp_content, "format": "markdown"})
1311
+
1312
+ # 4. Incident Response Plan
1313
+ irp_content = f"""# Incident Response Plan — {app_name}
1314
+ # Classification: CUI // SP-CTI
1315
+ # FedRAMP Baseline: {baseline_upper}
1316
+ # Generated: {now_date}
1317
+
1318
+ ## 1. Incident Categories
1319
+
1320
+ | Category | Severity | Response SLA | Notification |
1321
+ |----------|----------|-------------|--------------|
1322
+ | Data breach (CUI) | Critical | 1 hour | FedRAMP PMO, US-CERT within 1h |
1323
+ | Unauthorized access | High | 4 hours | Security team, management |
1324
+ | Malware/ransomware | High | 4 hours | Security team, CSP |
1325
+ | Service disruption | Medium | 8 hours | Operations team |
1326
+ | Policy violation | Low | 24 hours | Security team |
1327
+
1328
+ ## 2. Response Phases
1329
+
1330
+ ### Phase 1: Detection & Analysis
1331
+ - Automated alerting via CloudWatch/Sentinel alarms
1332
+ - SNS notification to on-call security personnel
1333
+ - Initial triage and severity classification
1334
+ - Evidence preservation (audit logs, snapshots)
1335
+
1336
+ ### Phase 2: Containment
1337
+ - Network isolation (security group modification)
1338
+ - Credential rotation (Secrets Manager)
1339
+ - Service quarantine (container stop, DNS redirect)
1340
+ - Communication to stakeholders
1341
+
1342
+ ### Phase 3: Eradication & Recovery
1343
+ - Root cause identification
1344
+ - Vulnerability remediation
1345
+ - System restoration from verified backups
1346
+ - Verification testing
1347
+
1348
+ ### Phase 4: Post-Incident
1349
+ - Lessons learned documentation
1350
+ - POA&M updates
1351
+ - Control enhancement recommendations
1352
+ - FedRAMP notification (if applicable)
1353
+
1354
+ ## 3. Contact Information
1355
+ | Role | Responsibility | Contact |
1356
+ |------|---------------|---------|
1357
+ | Incident Commander | Overall response coordination | [TBD] |
1358
+ | Security Analyst | Technical investigation | [TBD] |
1359
+ | System Administrator | System remediation | [TBD] |
1360
+ | Communications Lead | Stakeholder notification | [TBD] |
1361
+ | FedRAMP Liaison | Regulatory notification | [TBD] |
1362
+ """
1363
+ documents.append({"name": "Incident_Response_Plan.md", "content": irp_content, "format": "markdown"})
1364
+
1365
+ # 5. POA&M summary
1366
+ poam_content = f"""# Plan of Action and Milestones (POA&M) — {app_name}
1367
+ # Classification: CUI // SP-CTI
1368
+ # FedRAMP Baseline: {baseline_upper}
1369
+ # Generated: {now_date}
1370
+
1371
+ ## Summary
1372
+ - **System:** {app_name}
1373
+ - **Baseline:** FedRAMP {baseline_upper}
1374
+ - **Assessment Date:** {now_date}
1375
+ - **Open Items:** To be populated after initial assessment
1376
+
1377
+ ## POA&M Template
1378
+
1379
+ | ID | Weakness | Control | Severity | Status | Scheduled Completion | Milestone |
1380
+ |----|----------|---------|----------|--------|---------------------|-----------|
1381
+ | POAM-001 | [Finding description] | [Control ID] | [Cat I/II/III] | Open | [Date] | [Description] |
1382
+
1383
+ ## Remediation SLAs
1384
+ | Severity | FedRAMP SLA | Internal SLA |
1385
+ |----------|-------------|-------------|
1386
+ | Critical (Cat I) | 30 days | 72 hours |
1387
+ | High (Cat II) | 90 days | 30 days |
1388
+ | Moderate (Cat III) | 180 days | 90 days |
1389
+ | Low | 365 days | 180 days |
1390
+
1391
+ ## Notes
1392
+ - POA&M entries are auto-generated from vulnerability scans and compliance assessments
1393
+ - All entries tracked in append-only audit trail (NIST AU compliance)
1394
+ - Overdue items trigger automated alerts and management escalation
1395
+ """
1396
+ documents.append({"name": "POAM_Summary.md", "content": poam_content, "format": "markdown"})
1397
+
1398
+ log_forge_event("forge_studio_fedramp_package_generated", {
1399
+ "package_id": package_id,
1400
+ "app_id": app_id,
1401
+ "baseline": baseline,
1402
+ "document_count": len(documents),
1403
+ "documents": [d["name"] for d in documents],
1404
+ }, project_id=project_id)
1405
+
1406
+ logger.info("Generated FedRAMP package for app %s (%d documents)", app_id, len(documents))
1407
+
1408
+ return {
1409
+ "status": "success",
1410
+ "package_id": package_id,
1411
+ "app_id": app_id,
1412
+ "baseline": baseline,
1413
+ "documents": documents,
1414
+ }
1415
+
1416
+
1417
+ # ---------------------------------------------------------------------------
1418
+ # Status query
1419
+ # ---------------------------------------------------------------------------
1420
+
1421
+ def get_hardening_status(app_id: str) -> Dict[str, Any]:
1422
+ """Get the latest hardening config and FedRAMP package status for an app.
1423
+
1424
+ Args:
1425
+ app_id: Forge Studio app ID.
1426
+
1427
+ Returns:
1428
+ {app_id, hardening: {...} or None, has_fedramp_package: bool}
1429
+ """
1430
+ from tools.db.storage import get_connection
1431
+
1432
+ with get_connection() as conn:
1433
+ row = conn.execute(
1434
+ "SELECT id, preset, provider, controls_applied_json, status, created_at "
1435
+ "FROM forge_studio_hardening_configs "
1436
+ "WHERE app_id = ? AND status = 'applied' "
1437
+ "ORDER BY created_at DESC LIMIT 1",
1438
+ (app_id,),
1439
+ ).fetchone()
1440
+
1441
+ hardening = None
1442
+ if row:
1443
+ hardening = {
1444
+ "id": row[0],
1445
+ "preset": row[1],
1446
+ "provider": row[2],
1447
+ "controls_applied": json.loads(row[3]) if row[3] else [],
1448
+ "status": row[4],
1449
+ "created_at": row[5],
1450
+ }
1451
+
1452
+ # Check for FedRAMP package in audit trail
1453
+ has_fedramp = False
1454
+ with get_connection() as conn:
1455
+ pkg_row = conn.execute(
1456
+ "SELECT COUNT(*) FROM audit_trail "
1457
+ "WHERE event_type = 'forge_studio_fedramp_package_generated' "
1458
+ "AND details LIKE ?",
1459
+ (f'%"app_id": "{app_id}"%',),
1460
+ ).fetchone()
1461
+ if pkg_row and pkg_row[0] > 0:
1462
+ has_fedramp = True
1463
+
1464
+ return {
1465
+ "app_id": app_id,
1466
+ "hardening": hardening,
1467
+ "has_fedramp_package": has_fedramp,
1468
+ }
1469
+
1470
+
1471
+ # ---------------------------------------------------------------------------
1472
+ # CLI
1473
+ # ---------------------------------------------------------------------------
1474
+
1475
+ def main():
1476
+ import argparse
1477
+ import sys
1478
+
1479
+ parser = argparse.ArgumentParser(description="Forge Studio Hardening Engine")
1480
+ parser.add_argument("--presets", action="store_true", help="List available hardening presets")
1481
+ parser.add_argument("--apply", action="store_true", help="Apply a hardening preset")
1482
+ parser.add_argument("--fedramp", action="store_true", help="Generate FedRAMP package")
1483
+ parser.add_argument("--status", action="store_true", help="Get hardening status for an app")
1484
+ parser.add_argument("--app-id", type=str, default="", help="Forge Studio app ID")
1485
+ parser.add_argument("--preset", type=str, default="il4_standard", help="Hardening preset")
1486
+ parser.add_argument("--provider", type=str, default="aws", help="Cloud provider (aws, azure, gcp)")
1487
+ parser.add_argument("--baseline", type=str, default="moderate", help="FedRAMP baseline (moderate, high)")
1488
+ parser.add_argument("--output-dir", type=str, default="", help="Output directory for generated files")
1489
+ parser.add_argument("--project-id", type=str, default="", help="Project ID for audit")
1490
+ parser.add_argument("--json", action="store_true", help="JSON output")
1491
+ args = parser.parse_args()
1492
+
1493
+ ensure_hardening_tables()
1494
+
1495
+ if args.presets:
1496
+ result = get_hardening_presets()
1497
+ elif args.apply:
1498
+ if not args.app_id:
1499
+ print(json.dumps({"status": "error", "error": "--app-id required"}))
1500
+ sys.exit(1)
1501
+ result = apply_hardening(
1502
+ app_id=args.app_id,
1503
+ preset=args.preset,
1504
+ provider=args.provider,
1505
+ output_dir=args.output_dir,
1506
+ project_id=args.project_id,
1507
+ )
1508
+ elif args.fedramp:
1509
+ if not args.app_id:
1510
+ print(json.dumps({"status": "error", "error": "--app-id required"}))
1511
+ sys.exit(1)
1512
+ result = generate_fedramp_package(
1513
+ app_id=args.app_id,
1514
+ baseline=args.baseline,
1515
+ project_id=args.project_id,
1516
+ )
1517
+ elif args.status:
1518
+ if not args.app_id:
1519
+ print(json.dumps({"status": "error", "error": "--app-id required"}))
1520
+ sys.exit(1)
1521
+ result = get_hardening_status(args.app_id)
1522
+ else:
1523
+ parser.print_help()
1524
+ sys.exit(0)
1525
+
1526
+ print(json.dumps(result, indent=2, default=str))
1527
+
1528
+
1529
+ if __name__ == "__main__":
1530
+ main()