icdev 1.0.0__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 (1105) hide show
  1. icdev/__init__.py +18 -0
  2. icdev/_paths.py +85 -0
  3. icdev/_version.py +3 -0
  4. icdev/data/__init__.py +1 -0
  5. icdev/data/args/__init__.py +1 -0
  6. icdev/data/args/agent_authority.yaml +61 -0
  7. icdev/data/args/agent_config.yaml +355 -0
  8. icdev/data/args/agentic_fitness.yaml +31 -0
  9. icdev/data/args/ai_governance_config.yaml +137 -0
  10. icdev/data/args/atlas_critique_config.yaml +66 -0
  11. icdev/data/args/bedrock_models.yaml +63 -0
  12. icdev/data/args/cicd_config.yaml +82 -0
  13. icdev/data/args/classification_config.yaml +232 -0
  14. icdev/data/args/cli_config.yaml +154 -0
  15. icdev/data/args/cloud_config.yaml +63 -0
  16. icdev/data/args/code_pattern_config.yaml +151 -0
  17. icdev/data/args/code_quality_config.yaml +47 -0
  18. icdev/data/args/companion_registry.yaml +202 -0
  19. icdev/data/args/context_config.yaml +82 -0
  20. icdev/data/args/csp_monitor_config.yaml +268 -0
  21. icdev/data/args/cui_markings.yaml +35 -0
  22. icdev/data/args/db_config.yaml +40 -0
  23. icdev/data/args/deployment_profiles.yaml +248 -0
  24. icdev/data/args/dev_profile_config.yaml +144 -0
  25. icdev/data/args/devsecops_config.yaml +286 -0
  26. icdev/data/args/endpoint_security_config.yaml +137 -0
  27. icdev/data/args/extension_config.yaml +79 -0
  28. icdev/data/args/file_access_tiers.yaml +88 -0
  29. icdev/data/args/framework_registry.yaml +415 -0
  30. icdev/data/args/innovation_config.yaml +431 -0
  31. icdev/data/args/installation_manifest.yaml +1087 -0
  32. icdev/data/args/llm_config.yaml +495 -0
  33. icdev/data/args/maintenance_config.yaml +55 -0
  34. icdev/data/args/memory_config.yaml +83 -0
  35. icdev/data/args/monitoring_config.yaml +127 -0
  36. icdev/data/args/mosa_config.yaml +190 -0
  37. icdev/data/args/nlq_config.yaml +35 -0
  38. icdev/data/args/observability_config.yaml +39 -0
  39. icdev/data/args/observability_tracing_config.yaml +170 -0
  40. icdev/data/args/oscal_tools_config.yaml +43 -0
  41. icdev/data/args/owasp_agentic_config.yaml +171 -0
  42. icdev/data/args/phase_registry.yaml +618 -0
  43. icdev/data/args/project_defaults.yaml +235 -0
  44. icdev/data/args/prompt_chains.yaml +163 -0
  45. icdev/data/args/resilience_config.yaml +50 -0
  46. icdev/data/args/ricoas_config.yaml +191 -0
  47. icdev/data/args/role_personas.yaml +362 -0
  48. icdev/data/args/scaling_config.yaml +176 -0
  49. icdev/data/args/security_gates.yaml +685 -0
  50. icdev/data/args/skill_injection_config.yaml +322 -0
  51. icdev/data/args/spec_config.yaml +53 -0
  52. icdev/data/args/supply_chain_config.yaml +76 -0
  53. icdev/data/args/translation_config.yaml +228 -0
  54. icdev/data/args/workflow_templates/ato_acceleration.yaml +54 -0
  55. icdev/data/args/workflow_templates/build_deploy.yaml +63 -0
  56. icdev/data/args/workflow_templates/full_compliance.yaml +43 -0
  57. icdev/data/args/workflow_templates/security_hardening.yaml +55 -0
  58. icdev/data/args/worktree_config.yaml +34 -0
  59. icdev/data/args/zta_config.yaml +247 -0
  60. icdev/data/context/__init__.py +1 -0
  61. icdev/data/context/agent/__init__.py +1 -0
  62. icdev/data/context/agent/response_schemas/__init__.py +1 -0
  63. icdev/data/context/agent/response_schemas/debate_position.json +46 -0
  64. icdev/data/context/agent/response_schemas/fitness_scorecard.json +74 -0
  65. icdev/data/context/agent/response_schemas/review_decision.json +39 -0
  66. icdev/data/context/agent/response_schemas/task_decomposition.json +82 -0
  67. icdev/data/context/agent/response_schemas/veto_decision.json +40 -0
  68. icdev/data/context/agentic/__init__.py +1 -0
  69. icdev/data/context/agentic/architecture_patterns.md +269 -0
  70. icdev/data/context/agentic/capability_registry.yaml +202 -0
  71. icdev/data/context/agentic/csp_mcp_registry.yaml +280 -0
  72. icdev/data/context/agentic/fitness_rubric.md +56 -0
  73. icdev/data/context/agentic/governance_baseline.md +205 -0
  74. icdev/data/context/ci/__init__.py +1 -0
  75. icdev/data/context/ci/worktree_templates.json +44 -0
  76. icdev/data/context/cloud/__init__.py +1 -0
  77. icdev/data/context/cloud/csp_service_registry.json +739 -0
  78. icdev/data/context/compliance/__init__.py +1 -0
  79. icdev/data/context/compliance/atlas_mitigations.json +293 -0
  80. icdev/data/context/compliance/atlas_techniques.json +833 -0
  81. icdev/data/context/compliance/cisa_sbd_requirements.json +432 -0
  82. icdev/data/context/compliance/cjis_security_policy.json +522 -0
  83. icdev/data/context/compliance/cmmc_practices.json +2494 -0
  84. icdev/data/context/compliance/cmmc_report_template.md +142 -0
  85. icdev/data/context/compliance/cnssi_1253_overlay.json +109 -0
  86. icdev/data/context/compliance/control_crosswalk.json +1914 -0
  87. icdev/data/context/compliance/control_families/__init__.py +1 -0
  88. icdev/data/context/compliance/csp_certifications.json +251 -0
  89. icdev/data/context/compliance/cssp_report_template.md +193 -0
  90. icdev/data/context/compliance/cui_templates/__init__.py +1 -0
  91. icdev/data/context/compliance/cui_templates/banner_block.txt +4 -0
  92. icdev/data/context/compliance/cui_templates/code_header.txt +8 -0
  93. icdev/data/context/compliance/cui_templates/document_template.md +35 -0
  94. icdev/data/context/compliance/data_type_framework_map.json +321 -0
  95. icdev/data/context/compliance/data_type_registry.json +147 -0
  96. icdev/data/context/compliance/dod_cssp_8530.json +463 -0
  97. icdev/data/context/compliance/eu_ai_act_annex_iii.json +108 -0
  98. icdev/data/context/compliance/export_templates/__init__.py +1 -0
  99. icdev/data/context/compliance/export_templates/emass_controls.csv.j2 +4 -0
  100. icdev/data/context/compliance/export_templates/evidence_package.md.j2 +39 -0
  101. icdev/data/context/compliance/export_templates/executive_summary.md.j2 +55 -0
  102. icdev/data/context/compliance/export_templates/poam_tracking.csv.j2 +4 -0
  103. icdev/data/context/compliance/fedramp_20x_ksi_schemas.json +133 -0
  104. icdev/data/context/compliance/fedramp_high_baseline.json +4370 -0
  105. icdev/data/context/compliance/fedramp_moderate_baseline.json +2183 -0
  106. icdev/data/context/compliance/fedramp_report_template.md +181 -0
  107. icdev/data/context/compliance/fips_200_areas.json +362 -0
  108. icdev/data/context/compliance/gao_ai_accountability.json +262 -0
  109. icdev/data/context/compliance/hipaa_security_rule.json +720 -0
  110. icdev/data/context/compliance/hitrust_csf_v11.json +930 -0
  111. icdev/data/context/compliance/impact_level_profiles.json +251 -0
  112. icdev/data/context/compliance/incident_response_template.md +1110 -0
  113. icdev/data/context/compliance/iso27001_2022_controls.json +750 -0
  114. icdev/data/context/compliance/iso27001_nist_bridge.json +382 -0
  115. icdev/data/context/compliance/iso42001_controls.json +254 -0
  116. icdev/data/context/compliance/ivv_checklist_template.md +80 -0
  117. icdev/data/context/compliance/ivv_report_template.md +116 -0
  118. icdev/data/context/compliance/ivv_requirements.json +372 -0
  119. icdev/data/context/compliance/mosa_crosswalk.json +327 -0
  120. icdev/data/context/compliance/mosa_framework.json +250 -0
  121. icdev/data/context/compliance/narrative_templates/AC.md.j2 +101 -0
  122. icdev/data/context/compliance/narrative_templates/AU.md.j2 +106 -0
  123. icdev/data/context/compliance/narrative_templates/IA.md.j2 +104 -0
  124. icdev/data/context/compliance/narrative_templates/SC.md.j2 +102 -0
  125. icdev/data/context/compliance/narrative_templates/SI.md.j2 +111 -0
  126. icdev/data/context/compliance/narrative_templates/__init__.py +1 -0
  127. icdev/data/context/compliance/narrative_templates/default.md.j2 +50 -0
  128. icdev/data/context/compliance/narrative_templates/executive_summary.j2 +27 -0
  129. icdev/data/context/compliance/narrative_templates/poam_milestone.j2 +19 -0
  130. icdev/data/context/compliance/narrative_templates/ssp_section.j2 +11 -0
  131. icdev/data/context/compliance/nist_800_171_controls.json +1552 -0
  132. icdev/data/context/compliance/nist_800_207_crosswalk.json +399 -0
  133. icdev/data/context/compliance/nist_800_207_zta.json +258 -0
  134. icdev/data/context/compliance/nist_800_53.json +324 -0
  135. icdev/data/context/compliance/nist_ai_600_1_genai.json +326 -0
  136. icdev/data/context/compliance/nist_ai_rmf.json +206 -0
  137. icdev/data/context/compliance/nist_sp_800_60_types.json +1667 -0
  138. icdev/data/context/compliance/omb_m25_21_high_impact_ai.json +248 -0
  139. icdev/data/context/compliance/omb_m26_04_unbiased_ai.json +262 -0
  140. icdev/data/context/compliance/owasp_agentic_asi.json +133 -0
  141. icdev/data/context/compliance/owasp_agentic_threats.json +285 -0
  142. icdev/data/context/compliance/owasp_llm_top10.json +274 -0
  143. icdev/data/context/compliance/pci_dss_v4.json +510 -0
  144. icdev/data/context/compliance/poam_template.md +117 -0
  145. icdev/data/context/compliance/safeai_controls.json +512 -0
  146. icdev/data/context/compliance/sbd_report_template.md +77 -0
  147. icdev/data/context/compliance/siem_config_templates/__init__.py +1 -0
  148. icdev/data/context/compliance/siem_config_templates/filebeat.yml +213 -0
  149. icdev/data/context/compliance/siem_config_templates/log_sources.json +208 -0
  150. icdev/data/context/compliance/soc2_trust_criteria.json +661 -0
  151. icdev/data/context/compliance/ssp_template.md +432 -0
  152. icdev/data/context/compliance/stig_templates/__init__.py +1 -0
  153. icdev/data/context/compliance/stig_templates/webapp_stig.json +139 -0
  154. icdev/data/context/compliance/xai_requirements.json +108 -0
  155. icdev/data/context/dashboard/__init__.py +1 -0
  156. icdev/data/context/dashboard/nlq_examples.json +50 -0
  157. icdev/data/context/dashboard/schema_descriptions.json +23 -0
  158. icdev/data/context/integration/__init__.py +1 -0
  159. icdev/data/context/integration/approval_workflows.json +32 -0
  160. icdev/data/context/integration/gitlab_field_mappings.json +33 -0
  161. icdev/data/context/integration/jira_field_mappings.json +32 -0
  162. icdev/data/context/integration/reqif_export_schema.json +23 -0
  163. icdev/data/context/integration/servicenow_field_mappings.json +22 -0
  164. icdev/data/context/languages/__init__.py +1 -0
  165. icdev/data/context/languages/framework_patterns.json +205 -0
  166. icdev/data/context/languages/language_registry.json +279 -0
  167. icdev/data/context/llm/__init__.py +1 -0
  168. icdev/data/context/llm/example_provider.py +86 -0
  169. icdev/data/context/mbse/__init__.py +1 -0
  170. icdev/data/context/mbse/des_report_template.md +162 -0
  171. icdev/data/context/mbse/des_requirements.json +411 -0
  172. icdev/data/context/mbse/digital_thread_patterns.json +403 -0
  173. icdev/data/context/mbse/reqif_schema.json +280 -0
  174. icdev/data/context/mbse/sysml_element_types.json +432 -0
  175. icdev/data/context/modernization/__init__.py +1 -0
  176. icdev/data/context/modernization/db_type_mappings.json +148 -0
  177. icdev/data/context/modernization/decomposition_patterns.json +284 -0
  178. icdev/data/context/modernization/framework_migration_patterns.json +359 -0
  179. icdev/data/context/modernization/migration_report_template.md +168 -0
  180. icdev/data/context/modernization/seven_rs_catalog.json +369 -0
  181. icdev/data/context/modernization/version_upgrade_rules.json +279 -0
  182. icdev/data/context/oscal/NIST_SP-800-53_rev5_catalog.json +254987 -0
  183. icdev/data/context/oscal/README.md +43 -0
  184. icdev/data/context/patterns/__init__.py +1 -0
  185. icdev/data/context/profiles/__init__.py +1 -0
  186. icdev/data/context/profiles/dod_baseline_v1.yaml +145 -0
  187. icdev/data/context/profiles/fedramp_baseline_v1.yaml +143 -0
  188. icdev/data/context/profiles/financial_baseline_v1.yaml +142 -0
  189. icdev/data/context/profiles/healthcare_baseline_v1.yaml +135 -0
  190. icdev/data/context/profiles/law_enforcement_v1.yaml +129 -0
  191. icdev/data/context/profiles/startup_v1.yaml +134 -0
  192. icdev/data/context/requirements/__init__.py +1 -0
  193. icdev/data/context/requirements/ambiguity_patterns.json +97 -0
  194. icdev/data/context/requirements/boundary_impact_rules.json +123 -0
  195. icdev/data/context/requirements/default_constitutions.json +67 -0
  196. icdev/data/context/requirements/document_extraction_rules.json +58 -0
  197. icdev/data/context/requirements/gap_patterns.json +108 -0
  198. icdev/data/context/requirements/readiness_rubric.json +78 -0
  199. icdev/data/context/requirements/red_alternative_patterns.json +210 -0
  200. icdev/data/context/requirements/safe_templates.json +72 -0
  201. icdev/data/context/requirements/spec_quality_checklist.json +122 -0
  202. icdev/data/context/simulation/__init__.py +1 -0
  203. icdev/data/context/simulation/architecture_patterns.json +36 -0
  204. icdev/data/context/simulation/coa_templates.json +38 -0
  205. icdev/data/context/simulation/cost_models.json +23 -0
  206. icdev/data/context/simulation/risk_categories.json +46 -0
  207. icdev/data/context/supply_chain/__init__.py +1 -0
  208. icdev/data/context/supply_chain/isa_templates.json +129 -0
  209. icdev/data/context/supply_chain/nist_800_161_controls.json +247 -0
  210. icdev/data/context/supply_chain/scrm_risk_matrix.json +147 -0
  211. icdev/data/context/templates/__init__.py +1 -0
  212. icdev/data/context/templates/ansible/__init__.py +1 -0
  213. icdev/data/context/templates/ansible/playbooks/__init__.py +1 -0
  214. icdev/data/context/templates/ansible/roles/__init__.py +1 -0
  215. icdev/data/context/templates/gitlab_ci/__init__.py +1 -0
  216. icdev/data/context/templates/grafana/__init__.py +1 -0
  217. icdev/data/context/templates/kubernetes/__init__.py +1 -0
  218. icdev/data/context/templates/project/__init__.py +1 -0
  219. icdev/data/context/templates/project/api/__init__.py +1 -0
  220. icdev/data/context/templates/project/cli/__init__.py +1 -0
  221. icdev/data/context/templates/project/data_pipeline/__init__.py +1 -0
  222. icdev/data/context/templates/project/iac/__init__.py +1 -0
  223. icdev/data/context/templates/project/javascript_frontend/__init__.py +1 -0
  224. icdev/data/context/templates/project/javascript_frontend/src/__init__.py +1 -0
  225. icdev/data/context/templates/project/javascript_frontend/tests/__init__.py +1 -0
  226. icdev/data/context/templates/project/microservice/__init__.py +1 -0
  227. icdev/data/context/templates/project/python_backend/__init__.py +1 -0
  228. icdev/data/context/templates/project/python_backend/src/__init__.py +1 -0
  229. icdev/data/context/templates/project/python_backend/tests/__init__.py +1 -0
  230. icdev/data/context/templates/project/python_backend/tests/features/__init__.py +1 -0
  231. icdev/data/context/templates/project/python_backend/tests/steps/__init__.py +1 -0
  232. icdev/data/context/templates/terraform/__init__.py +1 -0
  233. icdev/data/context/templates/terraform/govcloud_base/__init__.py +1 -0
  234. icdev/data/context/templates/terraform/modules/__init__.py +1 -0
  235. icdev/data/context/tone/__init__.py +1 -0
  236. icdev/data/context/translation/dependency_mappings.json +186 -0
  237. icdev/data/context/translation/type_mappings.json +149 -0
  238. icdev/data/docs/README.md +187 -0
  239. icdev/data/docs/__init__.py +1 -0
  240. icdev/data/docs/admin/gateway-guide.md +338 -0
  241. icdev/data/docs/admin/marketplace-guide.md +396 -0
  242. icdev/data/docs/admin/monitoring-guide.md +509 -0
  243. icdev/data/docs/architecture/compliance-framework.md +764 -0
  244. icdev/data/docs/architecture/database-schema.md +689 -0
  245. icdev/data/docs/architecture/gotcha-framework.md +518 -0
  246. icdev/data/docs/architecture/multi-agent-system.md +603 -0
  247. icdev/data/docs/dx/README.md +106 -0
  248. icdev/data/docs/dx/__init__.py +1 -0
  249. icdev/data/docs/dx/ci-cd-integration.md +378 -0
  250. icdev/data/docs/dx/claude-code-guide.md +213 -0
  251. icdev/data/docs/dx/companion-guide.md +232 -0
  252. icdev/data/docs/dx/dev-profiles.md +309 -0
  253. icdev/data/docs/dx/icdev-yaml-spec.md +219 -0
  254. icdev/data/docs/dx/integration-tiers.md +279 -0
  255. icdev/data/docs/dx/llm-routing-guide.md +456 -0
  256. icdev/data/docs/dx/quickstart.md +192 -0
  257. icdev/data/docs/dx/sdk-reference.md +356 -0
  258. icdev/data/docs/dx/unified-mcp-setup.md +525 -0
  259. icdev/data/docs/features/__init__.py +1 -0
  260. icdev/data/docs/features/phase-01-gotcha-framework.md +249 -0
  261. icdev/data/docs/features/phase-02-atlas-build-workflow.md +223 -0
  262. icdev/data/docs/features/phase-03-tdd-bdd-testing.md +261 -0
  263. icdev/data/docs/features/phase-04-nist-compliance.md +255 -0
  264. icdev/data/docs/features/phase-05-security-scanning.md +229 -0
  265. icdev/data/docs/features/phase-06-infrastructure-deployment.md +288 -0
  266. icdev/data/docs/features/phase-07-code-review-gates.md +276 -0
  267. icdev/data/docs/features/phase-08-self-healing.md +223 -0
  268. icdev/data/docs/features/phase-09-monitoring-observability.md +230 -0
  269. icdev/data/docs/features/phase-10-dashboard-web-ui.md +218 -0
  270. icdev/data/docs/features/phase-11-multi-agent-architecture.md +272 -0
  271. icdev/data/docs/features/phase-12-integration-testing.md +228 -0
  272. icdev/data/docs/features/phase-13-cicd-integration.md +257 -0
  273. icdev/data/docs/features/phase-14-secure-by-design-ivv.md +240 -0
  274. icdev/data/docs/features/phase-15-maintenance-audit.md +192 -0
  275. icdev/data/docs/features/phase-16-ato-acceleration.md +228 -0
  276. icdev/data/docs/features/phase-17-multi-framework-compliance.md +223 -0
  277. icdev/data/docs/features/phase-18-mbse-integration.md +242 -0
  278. icdev/data/docs/features/phase-19-agentic-generation.md +202 -0
  279. icdev/data/docs/features/phase-20-fips-security-categorization.md +198 -0
  280. icdev/data/docs/features/phase-21-saas-multi-tenancy.md +273 -0
  281. icdev/data/docs/features/phase-22-federated-gotcha-marketplace.md +242 -0
  282. icdev/data/docs/features/phase-23-universal-compliance-platform.md +238 -0
  283. icdev/data/docs/features/phase-24-devsecops-pipeline-security.md +198 -0
  284. icdev/data/docs/features/phase-25-zero-trust-architecture.md +220 -0
  285. icdev/data/docs/features/phase-26-dod-mosa.md +205 -0
  286. icdev/data/docs/features/phase-27-cli-capabilities.md +222 -0
  287. icdev/data/docs/features/phase-28-remote-command-gateway.md +235 -0
  288. icdev/data/docs/features/phase-29-proactive-monitoring.md +212 -0
  289. icdev/data/docs/features/phase-30-dashboard-auth.md +215 -0
  290. icdev/data/docs/features/phase-31-dashboard-ux-low-impact.md +188 -0
  291. icdev/data/docs/features/phase-32-dashboard-ux-medium-impact.md +223 -0
  292. icdev/data/docs/features/phase-33-modular-installation.md +218 -0
  293. icdev/data/docs/features/phase-34-dev-profiles.md +239 -0
  294. icdev/data/docs/features/phase-35-innovation-engine.md +257 -0
  295. icdev/data/docs/features/phase-36-evolutionary-intelligence.md +351 -0
  296. icdev/data/docs/features/phase-37-mitre-atlas-integration.md +485 -0
  297. icdev/data/docs/features/phase-38-cloud-agnostic-architecture.md +1033 -0
  298. icdev/data/docs/features/phase-39-observability-operations.md +178 -0
  299. icdev/data/docs/features/phase-40-nlq-compliance-queries.md +176 -0
  300. icdev/data/docs/features/phase-41-parallel-cicd.md +169 -0
  301. icdev/data/docs/features/phase-42-framework-planning.md +177 -0
  302. icdev/data/docs/features/phase-43-cross-language-translation.md +225 -0
  303. icdev/data/docs/features/phase-44-innovation-adaptation.md +227 -0
  304. icdev/data/docs/features/phase-45-owasp-agentic-security.md +239 -0
  305. icdev/data/docs/features/phase-46-observability-traceability-xai.md +240 -0
  306. icdev/data/docs/features/phase-47-unified-mcp-gateway.md +257 -0
  307. icdev/data/docs/features/phase-48-ai-transparency.md +203 -0
  308. icdev/data/docs/features/phase-49-ai-accountability.md +243 -0
  309. icdev/data/docs/features/phase-50-ai-governance-intake-chat.md +195 -0
  310. icdev/data/docs/features/phase-51-unified-chat-dashboard.md +240 -0
  311. icdev/data/docs/features/phase-52-code-intelligence.md +244 -0
  312. icdev/data/docs/features/phase-53-fedramp-20x-owasp-asi.md +359 -0
  313. icdev/data/docs/features/phase-54-slsa-swft-orchestration.md +379 -0
  314. icdev/data/docs/features/phase-55-a2a-v03-mcp-oauth.md +322 -0
  315. icdev/data/docs/features/phase-56-evidence-lineage.md +352 -0
  316. icdev/data/docs/features/phase-57-eu-ai-act-iron-bank.md +319 -0
  317. icdev/data/docs/features/phase-58-creative-engine.md +370 -0
  318. icdev/data/docs/features/phase-59-govcon-intelligence.md +535 -0
  319. icdev/data/docs/features/phase-60-cpmp.md +528 -0
  320. icdev/data/docs/features/phase-61-orchestration-improvements.md +534 -0
  321. icdev/data/docs/operations/dashboard-guide.md +354 -0
  322. icdev/data/docs/operations/deployment-guide.md +556 -0
  323. icdev/data/docs/operations/saas-admin-guide.md +439 -0
  324. icdev/data/docs/operations/security-operations-guide.md +733 -0
  325. icdev/data/docs/runbooks/backup-restore.md +412 -0
  326. icdev/data/docs/runbooks/troubleshooting.md +499 -0
  327. icdev/data/features/__init__.py +1 -0
  328. icdev/data/features/cicd_integration.feature +41 -0
  329. icdev/data/features/compliance_gates.feature +46 -0
  330. icdev/data/features/dashboard.feature +72 -0
  331. icdev/data/features/environment.py +25 -0
  332. icdev/data/features/project_management.feature +32 -0
  333. icdev/data/features/requirements_intake.feature +42 -0
  334. icdev/data/features/saas_platform.feature +53 -0
  335. icdev/data/features/security_scanning.feature +36 -0
  336. icdev/data/features/steps/__init__.py +1 -0
  337. icdev/data/features/steps/cicd_steps.py +465 -0
  338. icdev/data/features/steps/compliance_steps.py +308 -0
  339. icdev/data/features/steps/dashboard_steps.py +88 -0
  340. icdev/data/features/steps/project_steps.py +126 -0
  341. icdev/data/features/steps/requirements_intake_steps.py +689 -0
  342. icdev/data/features/steps/saas_platform_steps.py +572 -0
  343. icdev/data/features/steps/security_steps.py +236 -0
  344. icdev/data/features/steps/testing_steps.py +226 -0
  345. icdev/data/features/testing_pipeline.feature +42 -0
  346. icdev/data/goals/__init__.py +1 -0
  347. icdev/data/goals/agent_management.md +144 -0
  348. icdev/data/goals/agentic_generation.md +345 -0
  349. icdev/data/goals/agentic_threat_model.md +309 -0
  350. icdev/data/goals/ai_accountability.md +90 -0
  351. icdev/data/goals/ai_governance_intake.md +132 -0
  352. icdev/data/goals/ai_transparency.md +76 -0
  353. icdev/data/goals/atlas_integration.md +405 -0
  354. icdev/data/goals/ato_acceleration.md +139 -0
  355. icdev/data/goals/boundary_supply_chain.md +206 -0
  356. icdev/data/goals/build_app.md +544 -0
  357. icdev/data/goals/cicd_integration.md +86 -0
  358. icdev/data/goals/claude_dir_maintenance.md +77 -0
  359. icdev/data/goals/cli_capabilities.md +340 -0
  360. icdev/data/goals/cloud_agnostic.md +312 -0
  361. icdev/data/goals/code_intelligence.md +197 -0
  362. icdev/data/goals/code_review.md +94 -0
  363. icdev/data/goals/compliance_workflow.md +858 -0
  364. icdev/data/goals/continuous_harmonization.md +140 -0
  365. icdev/data/goals/cross_language_translation.md +171 -0
  366. icdev/data/goals/dashboard.md +142 -0
  367. icdev/data/goals/deploy_workflow.md +390 -0
  368. icdev/data/goals/devsecops_workflow.md +408 -0
  369. icdev/data/goals/evolutionary_intelligence.md +305 -0
  370. icdev/data/goals/external_integration.md +113 -0
  371. icdev/data/goals/framework_planning.md +63 -0
  372. icdev/data/goals/init_project.md +235 -0
  373. icdev/data/goals/innovation_engine.md +199 -0
  374. icdev/data/goals/integration_testing.md +189 -0
  375. icdev/data/goals/maintenance_audit.md +196 -0
  376. icdev/data/goals/manifest.md +56 -0
  377. icdev/data/goals/mbse_integration.md +504 -0
  378. icdev/data/goals/modernization_workflow.md +618 -0
  379. icdev/data/goals/monitoring.md +126 -0
  380. icdev/data/goals/mosa_workflow.md +463 -0
  381. icdev/data/goals/multi_agent_orchestration.md +68 -0
  382. icdev/data/goals/nlq_compliance.md +63 -0
  383. icdev/data/goals/observability.md +64 -0
  384. icdev/data/goals/observability_traceability_xai.md +154 -0
  385. icdev/data/goals/owasp_agentic_security.md +395 -0
  386. icdev/data/goals/parallel_cicd.md +61 -0
  387. icdev/data/goals/requirements_intake.md +213 -0
  388. icdev/data/goals/sbd_ivv_workflow.md +195 -0
  389. icdev/data/goals/security_categorization.md +133 -0
  390. icdev/data/goals/security_scan.md +381 -0
  391. icdev/data/goals/self_healing.md +120 -0
  392. icdev/data/goals/simulation_engine.md +111 -0
  393. icdev/data/goals/tdd_workflow.md +403 -0
  394. icdev/data/goals/zero_trust_architecture.md +403 -0
  395. icdev/data/hardprompts/__init__.py +1 -0
  396. icdev/data/hardprompts/agent/__init__.py +1 -0
  397. icdev/data/hardprompts/agent/agentic_architect.md +100 -0
  398. icdev/data/hardprompts/agent/debate_prompt.md +32 -0
  399. icdev/data/hardprompts/agent/fitness_evaluation.md +48 -0
  400. icdev/data/hardprompts/agent/governance_review.md +214 -0
  401. icdev/data/hardprompts/agent/reviewer_prompt.md +34 -0
  402. icdev/data/hardprompts/agent/skill_design.md +172 -0
  403. icdev/data/hardprompts/agent/task_decomposition.md +275 -0
  404. icdev/data/hardprompts/agent/veto_check_prompt.md +33 -0
  405. icdev/data/hardprompts/architect/__init__.py +1 -0
  406. icdev/data/hardprompts/architect/api_design.md +283 -0
  407. icdev/data/hardprompts/architect/data_model.md +277 -0
  408. icdev/data/hardprompts/architect/system_design.md +180 -0
  409. icdev/data/hardprompts/builder/__init__.py +1 -0
  410. icdev/data/hardprompts/builder/code_generation.md +59 -0
  411. icdev/data/hardprompts/builder/refactor.md +58 -0
  412. icdev/data/hardprompts/builder/scaffold_project.md +69 -0
  413. icdev/data/hardprompts/builder/test_generation.md +87 -0
  414. icdev/data/hardprompts/ci/__init__.py +1 -0
  415. icdev/data/hardprompts/ci/worktree_setup.md +35 -0
  416. icdev/data/hardprompts/compliance/__init__.py +1 -0
  417. icdev/data/hardprompts/compliance/cmmc_assessment.md +63 -0
  418. icdev/data/hardprompts/compliance/cssp_assessment.md +75 -0
  419. icdev/data/hardprompts/compliance/cui_marking.md +86 -0
  420. icdev/data/hardprompts/compliance/fedramp_assessment.md +55 -0
  421. icdev/data/hardprompts/compliance/ivv_assessment.md +96 -0
  422. icdev/data/hardprompts/compliance/poam_generation.md +57 -0
  423. icdev/data/hardprompts/compliance/sbd_assessment.md +101 -0
  424. icdev/data/hardprompts/compliance/security_categorization.md +74 -0
  425. icdev/data/hardprompts/compliance/ssp_generation.md +56 -0
  426. icdev/data/hardprompts/compliance/stig_evaluation.md +63 -0
  427. icdev/data/hardprompts/dashboard/__init__.py +1 -0
  428. icdev/data/hardprompts/dashboard/nlq_system_prompt.md +26 -0
  429. icdev/data/hardprompts/infra/__init__.py +1 -0
  430. icdev/data/hardprompts/infra/k8s_manifests.md +118 -0
  431. icdev/data/hardprompts/infra/pipeline_generation.md +160 -0
  432. icdev/data/hardprompts/infra/terraform_generation.md +92 -0
  433. icdev/data/hardprompts/integration/__init__.py +1 -0
  434. icdev/data/hardprompts/integration/approval_review.md +17 -0
  435. icdev/data/hardprompts/integration/jira_mapping.md +25 -0
  436. icdev/data/hardprompts/integration/servicenow_mapping.md +14 -0
  437. icdev/data/hardprompts/knowledge/__init__.py +1 -0
  438. icdev/data/hardprompts/knowledge/pattern_detection.md +73 -0
  439. icdev/data/hardprompts/knowledge/recommendation_engine.md +90 -0
  440. icdev/data/hardprompts/knowledge/root_cause_analysis.md +91 -0
  441. icdev/data/hardprompts/maintenance/__init__.py +1 -0
  442. icdev/data/hardprompts/maintenance/maintenance_assessment.md +82 -0
  443. icdev/data/hardprompts/mbse/__init__.py +1 -0
  444. icdev/data/hardprompts/mbse/digital_thread.md +67 -0
  445. icdev/data/hardprompts/mbse/model_import.md +62 -0
  446. icdev/data/hardprompts/mbse/model_to_code.md +65 -0
  447. icdev/data/hardprompts/modernization/__init__.py +1 -0
  448. icdev/data/hardprompts/modernization/legacy_analysis.md +93 -0
  449. icdev/data/hardprompts/modernization/migration_planning.md +150 -0
  450. icdev/data/hardprompts/modernization/seven_r_assessment.md +107 -0
  451. icdev/data/hardprompts/requirements/__init__.py +1 -0
  452. icdev/data/hardprompts/requirements/bdd_generation.md +35 -0
  453. icdev/data/hardprompts/requirements/clarification_prioritization.md +29 -0
  454. icdev/data/hardprompts/requirements/decomposition.md +60 -0
  455. icdev/data/hardprompts/requirements/document_extraction.md +45 -0
  456. icdev/data/hardprompts/requirements/gap_detection.md +70 -0
  457. icdev/data/hardprompts/requirements/intake_conversation.md +101 -0
  458. icdev/data/hardprompts/requirements/readiness_assessment.md +39 -0
  459. icdev/data/hardprompts/requirements/spec_quality.md +33 -0
  460. icdev/data/hardprompts/requirements/traceability_analysis.md +23 -0
  461. icdev/data/hardprompts/security/__init__.py +1 -0
  462. icdev/data/hardprompts/security/endpoint_security.md +78 -0
  463. icdev/data/hardprompts/security/threat_model.md +70 -0
  464. icdev/data/hardprompts/security/vulnerability_assessment.md +81 -0
  465. icdev/data/hardprompts/simulation/__init__.py +1 -0
  466. icdev/data/hardprompts/simulation/architecture_impact.md +27 -0
  467. icdev/data/hardprompts/simulation/coa_alternative.md +27 -0
  468. icdev/data/hardprompts/simulation/coa_generation.md +25 -0
  469. icdev/data/hardprompts/simulation/compliance_impact.md +28 -0
  470. icdev/data/hardprompts/simulation/cost_estimation.md +33 -0
  471. icdev/data/hardprompts/simulation/risk_assessment.md +28 -0
  472. icdev/data/hardprompts/translation/code_translation.md +68 -0
  473. icdev/data/hardprompts/translation/dependency_suggestion.md +44 -0
  474. icdev/data/hardprompts/translation/test_translation.md +64 -0
  475. icdev/data/hardprompts/translation/translation_repair.md +59 -0
  476. icdev/py.typed +0 -0
  477. icdev/tools/__init__.py +1 -0
  478. icdev/tools/_gen_formatter.py +12 -0
  479. icdev/tools/a2a/__init__.py +1 -0
  480. icdev/tools/a2a/agent_cards/architect.json +43 -0
  481. icdev/tools/a2a/agent_cards/builder.json +50 -0
  482. icdev/tools/a2a/agent_cards/compliance.json +57 -0
  483. icdev/tools/a2a/agent_cards/devsecops.json +71 -0
  484. icdev/tools/a2a/agent_cards/infra.json +57 -0
  485. icdev/tools/a2a/agent_cards/integration.json +57 -0
  486. icdev/tools/a2a/agent_cards/knowledge.json +43 -0
  487. icdev/tools/a2a/agent_cards/mbse.json +57 -0
  488. icdev/tools/a2a/agent_cards/modernization.json +50 -0
  489. icdev/tools/a2a/agent_cards/monitor.json +43 -0
  490. icdev/tools/a2a/agent_cards/orchestrator.json +36 -0
  491. icdev/tools/a2a/agent_cards/requirements_analyst.json +64 -0
  492. icdev/tools/a2a/agent_cards/security.json +50 -0
  493. icdev/tools/a2a/agent_cards/simulation.json +57 -0
  494. icdev/tools/a2a/agent_cards/supply_chain.json +50 -0
  495. icdev/tools/a2a/agent_client.py +349 -0
  496. icdev/tools/a2a/agent_registry.py +412 -0
  497. icdev/tools/a2a/agent_server.py +579 -0
  498. icdev/tools/a2a/task.py +200 -0
  499. icdev/tools/agent/__init__.py +2 -0
  500. icdev/tools/agent/a2a_agent_card_generator.py +285 -0
  501. icdev/tools/agent/a2a_discovery_server.py +250 -0
  502. icdev/tools/agent/agent_executor.py +529 -0
  503. icdev/tools/agent/agent_memory.py +557 -0
  504. icdev/tools/agent/agent_models.py +51 -0
  505. icdev/tools/agent/atlas_critique.py +908 -0
  506. icdev/tools/agent/authority.py +443 -0
  507. icdev/tools/agent/bedrock_client.py +1075 -0
  508. icdev/tools/agent/collaboration.py +871 -0
  509. icdev/tools/agent/dispatcher_mode.py +665 -0
  510. icdev/tools/agent/mailbox.py +575 -0
  511. icdev/tools/agent/prompt_chain_executor.py +1064 -0
  512. icdev/tools/agent/session_purpose.py +350 -0
  513. icdev/tools/agent/skill_router.py +638 -0
  514. icdev/tools/agent/skill_selector.py +486 -0
  515. icdev/tools/agent/team_orchestrator.py +1108 -0
  516. icdev/tools/agent/token_tracker.py +290 -0
  517. icdev/tools/analysis/__init__.py +1 -0
  518. icdev/tools/analysis/code_analyzer.py +780 -0
  519. icdev/tools/analysis/runtime_feedback.py +389 -0
  520. icdev/tools/audit/__init__.py +1 -0
  521. icdev/tools/audit/audit_logger.py +196 -0
  522. icdev/tools/audit/audit_query.py +157 -0
  523. icdev/tools/audit/decision_recorder.py +72 -0
  524. icdev/tools/builder/__init__.py +1 -0
  525. icdev/tools/builder/agentic_fitness.py +534 -0
  526. icdev/tools/builder/agentic_test_templates/test_a2a_callback.py +117 -0
  527. icdev/tools/builder/agentic_test_templates/test_a2a_lifecycle.feature +52 -0
  528. icdev/tools/builder/agentic_test_templates/test_agent_card.feature +37 -0
  529. icdev/tools/builder/agentic_test_templates/test_agent_health.py +128 -0
  530. icdev/tools/builder/agentic_test_templates/test_memory_system.feature +50 -0
  531. icdev/tools/builder/agentic_test_templates/test_skill_execution.feature +40 -0
  532. icdev/tools/builder/app_blueprint.py +1583 -0
  533. icdev/tools/builder/child_app_generator.py +2852 -0
  534. icdev/tools/builder/claude_md_generator.py +1734 -0
  535. icdev/tools/builder/code_generator.py +3703 -0
  536. icdev/tools/builder/db_init_generator.py +1709 -0
  537. icdev/tools/builder/dev_profile_manager.py +954 -0
  538. icdev/tools/builder/formatter.py +768 -0
  539. icdev/tools/builder/goal_adapter.py +592 -0
  540. icdev/tools/builder/gotcha_validator.py +812 -0
  541. icdev/tools/builder/language_support.py +441 -0
  542. icdev/tools/builder/linter.py +976 -0
  543. icdev/tools/builder/profile_detector.py +657 -0
  544. icdev/tools/builder/profile_md_generator.py +723 -0
  545. icdev/tools/builder/scaffolder.py +1590 -0
  546. icdev/tools/builder/scaffolder_extended.py +1771 -0
  547. icdev/tools/builder/test_writer.py +950 -0
  548. icdev/tools/ci/__init__.py +2 -0
  549. icdev/tools/ci/connectors/__init__.py +2 -0
  550. icdev/tools/ci/connectors/base_connector.py +80 -0
  551. icdev/tools/ci/connectors/connector_registry.py +188 -0
  552. icdev/tools/ci/connectors/mattermost_connector.py +159 -0
  553. icdev/tools/ci/connectors/slack_connector.py +197 -0
  554. icdev/tools/ci/core/__init__.py +2 -0
  555. icdev/tools/ci/core/air_gap_detector.py +115 -0
  556. icdev/tools/ci/core/comment_handler.py +192 -0
  557. icdev/tools/ci/core/conversation_manager.py +479 -0
  558. icdev/tools/ci/core/event_envelope.py +500 -0
  559. icdev/tools/ci/core/event_router.py +443 -0
  560. icdev/tools/ci/core/failure_parser.py +397 -0
  561. icdev/tools/ci/core/recovery_engine.py +527 -0
  562. icdev/tools/ci/modules/__init__.py +2 -0
  563. icdev/tools/ci/modules/agent.py +271 -0
  564. icdev/tools/ci/modules/git_ops.py +175 -0
  565. icdev/tools/ci/modules/state.py +117 -0
  566. icdev/tools/ci/modules/vcs.py +303 -0
  567. icdev/tools/ci/modules/workflow_ops.py +295 -0
  568. icdev/tools/ci/modules/worktree.py +340 -0
  569. icdev/tools/ci/pipeline_config_generator.py +558 -0
  570. icdev/tools/ci/triggers/__init__.py +2 -0
  571. icdev/tools/ci/triggers/gitlab_task_monitor.py +330 -0
  572. icdev/tools/ci/triggers/poll_trigger.py +237 -0
  573. icdev/tools/ci/triggers/webhook_server.py +356 -0
  574. icdev/tools/ci/workflows/__init__.py +2 -0
  575. icdev/tools/ci/workflows/icdev_build.py +140 -0
  576. icdev/tools/ci/workflows/icdev_comply.py +284 -0
  577. icdev/tools/ci/workflows/icdev_document.py +152 -0
  578. icdev/tools/ci/workflows/icdev_e2e.py +188 -0
  579. icdev/tools/ci/workflows/icdev_patch.py +186 -0
  580. icdev/tools/ci/workflows/icdev_plan.py +202 -0
  581. icdev/tools/ci/workflows/icdev_plan_build.py +41 -0
  582. icdev/tools/ci/workflows/icdev_plan_build_test.py +46 -0
  583. icdev/tools/ci/workflows/icdev_plan_build_test_review.py +47 -0
  584. icdev/tools/ci/workflows/icdev_review.py +126 -0
  585. icdev/tools/ci/workflows/icdev_sdlc.py +261 -0
  586. icdev/tools/ci/workflows/icdev_test.py +240 -0
  587. icdev/tools/cli/__init__.py +1 -0
  588. icdev/tools/cli/output_formatter.py +756 -0
  589. icdev/tools/cli_formatter.py +42 -0
  590. icdev/tools/cloud/__init__.py +11 -0
  591. icdev/tools/cloud/cloud_mode_manager.py +364 -0
  592. icdev/tools/cloud/csp_changelog.py +383 -0
  593. icdev/tools/cloud/csp_health_checker.py +268 -0
  594. icdev/tools/cloud/csp_monitor.py +951 -0
  595. icdev/tools/cloud/iam_provider.py +593 -0
  596. icdev/tools/cloud/kms_provider.py +346 -0
  597. icdev/tools/cloud/monitoring_provider.py +628 -0
  598. icdev/tools/cloud/provider_factory.py +376 -0
  599. icdev/tools/cloud/region_validator.py +345 -0
  600. icdev/tools/cloud/registry_provider.py +563 -0
  601. icdev/tools/cloud/secrets_provider.py +486 -0
  602. icdev/tools/cloud/storage_provider.py +446 -0
  603. icdev/tools/compat/__init__.py +21 -0
  604. icdev/tools/compat/cli_harmonizer.py +251 -0
  605. icdev/tools/compat/datetime_utils.py +18 -0
  606. icdev/tools/compat/db_utils.py +160 -0
  607. icdev/tools/compat/platform_utils.py +123 -0
  608. icdev/tools/compliance/__init__.py +1 -0
  609. icdev/tools/compliance/accountability_manager.py +397 -0
  610. icdev/tools/compliance/ai_accountability_audit.py +294 -0
  611. icdev/tools/compliance/ai_impact_assessor.py +273 -0
  612. icdev/tools/compliance/ai_incident_response.py +301 -0
  613. icdev/tools/compliance/ai_inventory_manager.py +239 -0
  614. icdev/tools/compliance/ai_reassessment_scheduler.py +256 -0
  615. icdev/tools/compliance/ai_transparency_audit.py +248 -0
  616. icdev/tools/compliance/atlas_assessor.py +278 -0
  617. icdev/tools/compliance/atlas_report_generator.py +1211 -0
  618. icdev/tools/compliance/base_assessor.py +597 -0
  619. icdev/tools/compliance/cato_monitor.py +1385 -0
  620. icdev/tools/compliance/cato_scheduler.py +699 -0
  621. icdev/tools/compliance/cjis_assessor.py +76 -0
  622. icdev/tools/compliance/classification_manager.py +1353 -0
  623. icdev/tools/compliance/cmmc_assessor.py +1491 -0
  624. icdev/tools/compliance/cmmc_report_generator.py +1100 -0
  625. icdev/tools/compliance/compliance_detector.py +463 -0
  626. icdev/tools/compliance/compliance_exporter.py +427 -0
  627. icdev/tools/compliance/compliance_status.py +825 -0
  628. icdev/tools/compliance/control_mapper.py +505 -0
  629. icdev/tools/compliance/crosswalk_engine.py +1203 -0
  630. icdev/tools/compliance/cssp_assessor.py +1045 -0
  631. icdev/tools/compliance/cssp_evidence_collector.py +729 -0
  632. icdev/tools/compliance/cssp_report_generator.py +1116 -0
  633. icdev/tools/compliance/cui_marker.py +388 -0
  634. icdev/tools/compliance/diagram_validator.py +600 -0
  635. icdev/tools/compliance/emass/__init__.py +2 -0
  636. icdev/tools/compliance/emass/emass_client.py +840 -0
  637. icdev/tools/compliance/emass/emass_export.py +777 -0
  638. icdev/tools/compliance/emass/emass_sync.py +826 -0
  639. icdev/tools/compliance/eu_ai_act_classifier.py +194 -0
  640. icdev/tools/compliance/evidence_collector.py +468 -0
  641. icdev/tools/compliance/fairness_assessor.py +316 -0
  642. icdev/tools/compliance/fedramp_assessor.py +1808 -0
  643. icdev/tools/compliance/fedramp_authorization_packager.py +137 -0
  644. icdev/tools/compliance/fedramp_ksi_generator.py +355 -0
  645. icdev/tools/compliance/fedramp_report_generator.py +1128 -0
  646. icdev/tools/compliance/fips199_categorizer.py +881 -0
  647. icdev/tools/compliance/fips200_validator.py +315 -0
  648. icdev/tools/compliance/gao_ai_assessor.py +231 -0
  649. icdev/tools/compliance/gao_evidence_builder.py +308 -0
  650. icdev/tools/compliance/hipaa_assessor.py +78 -0
  651. icdev/tools/compliance/hitrust_assessor.py +49 -0
  652. icdev/tools/compliance/incident_response_plan.py +718 -0
  653. icdev/tools/compliance/iso27001_assessor.py +92 -0
  654. icdev/tools/compliance/iso42001_assessor.py +114 -0
  655. icdev/tools/compliance/ivv_assessor.py +2327 -0
  656. icdev/tools/compliance/ivv_report_generator.py +1662 -0
  657. icdev/tools/compliance/model_card_generator.py +297 -0
  658. icdev/tools/compliance/mosa_assessor.py +117 -0
  659. icdev/tools/compliance/multi_regime_assessor.py +451 -0
  660. icdev/tools/compliance/narrative_generator.py +1013 -0
  661. icdev/tools/compliance/nist_800_207_assessor.py +191 -0
  662. icdev/tools/compliance/nist_ai_600_1_assessor.py +188 -0
  663. icdev/tools/compliance/nist_ai_rmf_assessor.py +110 -0
  664. icdev/tools/compliance/nist_lookup.py +245 -0
  665. icdev/tools/compliance/omb_m25_21_assessor.py +228 -0
  666. icdev/tools/compliance/omb_m26_04_assessor.py +188 -0
  667. icdev/tools/compliance/oscal_catalog_adapter.py +395 -0
  668. icdev/tools/compliance/oscal_generator.py +2170 -0
  669. icdev/tools/compliance/oscal_tools.py +1182 -0
  670. icdev/tools/compliance/owasp_agentic_assessor.py +226 -0
  671. icdev/tools/compliance/owasp_asi_assessor.py +200 -0
  672. icdev/tools/compliance/owasp_llm_assessor.py +244 -0
  673. icdev/tools/compliance/pci_dss_assessor.py +80 -0
  674. icdev/tools/compliance/pi_compliance_tracker.py +1461 -0
  675. icdev/tools/compliance/poam_generator.py +405 -0
  676. icdev/tools/compliance/resolve_marking.py +283 -0
  677. icdev/tools/compliance/sbd_assessor.py +2068 -0
  678. icdev/tools/compliance/sbd_report_generator.py +1236 -0
  679. icdev/tools/compliance/sbom_generator.py +1008 -0
  680. icdev/tools/compliance/siem_config_generator.py +674 -0
  681. icdev/tools/compliance/slsa_attestation_generator.py +490 -0
  682. icdev/tools/compliance/soc2_assessor.py +77 -0
  683. icdev/tools/compliance/ssp_generator.py +573 -0
  684. icdev/tools/compliance/stig_checker.py +727 -0
  685. icdev/tools/compliance/swft_evidence_bundler.py +337 -0
  686. icdev/tools/compliance/system_card_generator.py +309 -0
  687. icdev/tools/compliance/traceability_matrix.py +1281 -0
  688. icdev/tools/compliance/universal_classification_manager.py +1172 -0
  689. icdev/tools/compliance/xacta/__init__.py +2 -0
  690. icdev/tools/compliance/xacta/xacta_client.py +449 -0
  691. icdev/tools/compliance/xacta/xacta_export.py +557 -0
  692. icdev/tools/compliance/xacta/xacta_sync.py +333 -0
  693. icdev/tools/compliance/xai_assessor.py +231 -0
  694. icdev/tools/dashboard/__init__.py +1 -0
  695. icdev/tools/dashboard/api/__init__.py +1 -0
  696. icdev/tools/dashboard/api/_pipeline_state.py +17 -0
  697. icdev/tools/dashboard/api/activity.py +206 -0
  698. icdev/tools/dashboard/api/admin.py +176 -0
  699. icdev/tools/dashboard/api/agents.py +53 -0
  700. icdev/tools/dashboard/api/ai_accountability.py +163 -0
  701. icdev/tools/dashboard/api/ai_transparency.py +198 -0
  702. icdev/tools/dashboard/api/audit.py +58 -0
  703. icdev/tools/dashboard/api/batch.py +666 -0
  704. icdev/tools/dashboard/api/chat.py +241 -0
  705. icdev/tools/dashboard/api/cicd.py +219 -0
  706. icdev/tools/dashboard/api/code_quality.py +223 -0
  707. icdev/tools/dashboard/api/compliance.py +171 -0
  708. icdev/tools/dashboard/api/cpmp.py +915 -0
  709. icdev/tools/dashboard/api/diagrams.py +65 -0
  710. icdev/tools/dashboard/api/events.py +250 -0
  711. icdev/tools/dashboard/api/evidence.py +99 -0
  712. icdev/tools/dashboard/api/fedramp_20x.py +77 -0
  713. icdev/tools/dashboard/api/govcon.py +1095 -0
  714. icdev/tools/dashboard/api/intake.py +1171 -0
  715. icdev/tools/dashboard/api/lineage.py +163 -0
  716. icdev/tools/dashboard/api/metrics.py +155 -0
  717. icdev/tools/dashboard/api/nlq.py +72 -0
  718. icdev/tools/dashboard/api/orchestration.py +472 -0
  719. icdev/tools/dashboard/api/oscal.py +183 -0
  720. icdev/tools/dashboard/api/prod_audit.py +183 -0
  721. icdev/tools/dashboard/api/projects.py +191 -0
  722. icdev/tools/dashboard/api/proposals.py +1084 -0
  723. icdev/tools/dashboard/api/traces.py +363 -0
  724. icdev/tools/dashboard/api/usage.py +234 -0
  725. icdev/tools/dashboard/app.py +1986 -0
  726. icdev/tools/dashboard/auth.py +500 -0
  727. icdev/tools/dashboard/byok.py +245 -0
  728. icdev/tools/dashboard/chat_manager.py +675 -0
  729. icdev/tools/dashboard/config.py +116 -0
  730. icdev/tools/dashboard/diagram_definitions.py +642 -0
  731. icdev/tools/dashboard/nlq_processor.py +323 -0
  732. icdev/tools/dashboard/phase_loader.py +136 -0
  733. icdev/tools/dashboard/sse_manager.py +89 -0
  734. icdev/tools/dashboard/state_tracker.py +267 -0
  735. icdev/tools/dashboard/static/css/style.css +706 -0
  736. icdev/tools/dashboard/static/css/ux.css +2047 -0
  737. icdev/tools/dashboard/static/js/activity.js +322 -0
  738. icdev/tools/dashboard/static/js/api.js +161 -0
  739. icdev/tools/dashboard/static/js/batch.js +814 -0
  740. icdev/tools/dashboard/static/js/charts.js +618 -0
  741. icdev/tools/dashboard/static/js/chat.js +1514 -0
  742. icdev/tools/dashboard/static/js/kanban.js +113 -0
  743. icdev/tools/dashboard/static/js/live.js +569 -0
  744. icdev/tools/dashboard/static/js/mermaid-icdev.js +332 -0
  745. icdev/tools/dashboard/static/js/proposals.js +588 -0
  746. icdev/tools/dashboard/static/js/shortcuts.js +544 -0
  747. icdev/tools/dashboard/static/js/tables.js +652 -0
  748. icdev/tools/dashboard/static/js/tour.js +524 -0
  749. icdev/tools/dashboard/static/js/ux.js +942 -0
  750. icdev/tools/dashboard/templates/404.html +10 -0
  751. icdev/tools/dashboard/templates/activity.html +80 -0
  752. icdev/tools/dashboard/templates/admin/users.html +144 -0
  753. icdev/tools/dashboard/templates/ai_accountability.html +235 -0
  754. icdev/tools/dashboard/templates/ai_transparency.html +263 -0
  755. icdev/tools/dashboard/templates/base.html +104 -0
  756. icdev/tools/dashboard/templates/batch.html +23 -0
  757. icdev/tools/dashboard/templates/chat.html +332 -0
  758. icdev/tools/dashboard/templates/children.html +149 -0
  759. icdev/tools/dashboard/templates/cicd.html +253 -0
  760. icdev/tools/dashboard/templates/code_quality.html +214 -0
  761. icdev/tools/dashboard/templates/cpmp/cor_detail.html +220 -0
  762. icdev/tools/dashboard/templates/cpmp/cor_portal.html +91 -0
  763. icdev/tools/dashboard/templates/cpmp/deliverable_detail.html +197 -0
  764. icdev/tools/dashboard/templates/cpmp/detail.html +578 -0
  765. icdev/tools/dashboard/templates/cpmp/portfolio.html +202 -0
  766. icdev/tools/dashboard/templates/dev_profiles.html +304 -0
  767. icdev/tools/dashboard/templates/diagrams.html +224 -0
  768. icdev/tools/dashboard/templates/events/timeline.html +232 -0
  769. icdev/tools/dashboard/templates/evidence.html +134 -0
  770. icdev/tools/dashboard/templates/fedramp_20x.html +207 -0
  771. icdev/tools/dashboard/templates/gateway.html +244 -0
  772. icdev/tools/dashboard/templates/govcon/capabilities.html +135 -0
  773. icdev/tools/dashboard/templates/govcon/pipeline.html +214 -0
  774. icdev/tools/dashboard/templates/govcon/requirements.html +120 -0
  775. icdev/tools/dashboard/templates/index.html +254 -0
  776. icdev/tools/dashboard/templates/lineage.html +141 -0
  777. icdev/tools/dashboard/templates/login.html +51 -0
  778. icdev/tools/dashboard/templates/monitoring/overview.html +193 -0
  779. icdev/tools/dashboard/templates/orchestration/dashboard.html +545 -0
  780. icdev/tools/dashboard/templates/oscal.html +263 -0
  781. icdev/tools/dashboard/templates/phases.html +150 -0
  782. icdev/tools/dashboard/templates/prod_audit.html +280 -0
  783. icdev/tools/dashboard/templates/profile.html +183 -0
  784. icdev/tools/dashboard/templates/projects/detail.html +583 -0
  785. icdev/tools/dashboard/templates/projects/list.html +47 -0
  786. icdev/tools/dashboard/templates/proposals/detail.html +1253 -0
  787. icdev/tools/dashboard/templates/proposals/list.html +179 -0
  788. icdev/tools/dashboard/templates/proposals/section_detail.html +193 -0
  789. icdev/tools/dashboard/templates/provenance.html +181 -0
  790. icdev/tools/dashboard/templates/query/nlq.html +234 -0
  791. icdev/tools/dashboard/templates/quick_paths.html +69 -0
  792. icdev/tools/dashboard/templates/traces.html +155 -0
  793. icdev/tools/dashboard/templates/translation_detail.html +199 -0
  794. icdev/tools/dashboard/templates/translations.html +162 -0
  795. icdev/tools/dashboard/templates/usage.html +225 -0
  796. icdev/tools/dashboard/templates/wizard.html +539 -0
  797. icdev/tools/dashboard/templates/xai.html +208 -0
  798. icdev/tools/dashboard/ux_helpers.py +962 -0
  799. icdev/tools/dashboard/websocket.py +81 -0
  800. icdev/tools/db/__init__.py +1 -0
  801. icdev/tools/db/backup.py +312 -0
  802. icdev/tools/db/backup_manager.py +832 -0
  803. icdev/tools/db/init_icdev_db.py +5900 -0
  804. icdev/tools/db/migrate.py +178 -0
  805. icdev/tools/db/migration_runner.py +549 -0
  806. icdev/tools/db/migrations/001_baseline/meta.json +9 -0
  807. icdev/tools/db/migrations/001_baseline/up.py +68 -0
  808. icdev/tools/db/migrations/002_memory_enhancements/down.sql +8 -0
  809. icdev/tools/db/migrations/002_memory_enhancements/meta.json +9 -0
  810. icdev/tools/db/migrations/002_memory_enhancements/up.py +118 -0
  811. icdev/tools/db/migrations/003_dev_profiles/meta.json +8 -0
  812. icdev/tools/db/migrations/003_dev_profiles/up.py +93 -0
  813. icdev/tools/db/migrations/004_innovation_engine/down.py +19 -0
  814. icdev/tools/db/migrations/004_innovation_engine/up.py +227 -0
  815. icdev/tools/db/migrations/005_phase_37_ai_security/down.py +19 -0
  816. icdev/tools/db/migrations/005_phase_37_ai_security/up.py +258 -0
  817. icdev/tools/db/migrations/006_phase_36_evolution/down.py +21 -0
  818. icdev/tools/db/migrations/006_phase_36_evolution/up.py +323 -0
  819. icdev/tools/db/migrations/007_phase_38_cloud/down.py +14 -0
  820. icdev/tools/db/migrations/007_phase_38_cloud/up.py +110 -0
  821. icdev/tools/db/migrations/008_phase36_37_integration/up.py +55 -0
  822. icdev/tools/db/migrations/__init__.py +2 -0
  823. icdev/tools/devsecops/__init__.py +2 -0
  824. icdev/tools/devsecops/attestation_manager.py +458 -0
  825. icdev/tools/devsecops/network_segmentation_generator.py +614 -0
  826. icdev/tools/devsecops/pdp_config_generator.py +1256 -0
  827. icdev/tools/devsecops/pipeline_security_generator.py +484 -0
  828. icdev/tools/devsecops/policy_generator.py +653 -0
  829. icdev/tools/devsecops/profile_manager.py +388 -0
  830. icdev/tools/devsecops/service_mesh_generator.py +1073 -0
  831. icdev/tools/devsecops/zta_maturity_scorer.py +368 -0
  832. icdev/tools/devsecops/zta_terraform_generator.py +1303 -0
  833. icdev/tools/dx/__init__.py +3 -0
  834. icdev/tools/dx/companion.py +266 -0
  835. icdev/tools/dx/instruction_generator.py +753 -0
  836. icdev/tools/dx/mcp_config_generator.py +282 -0
  837. icdev/tools/dx/skill_translator.py +425 -0
  838. icdev/tools/dx/tool_detector.py +144 -0
  839. icdev/tools/extensions/__init__.py +21 -0
  840. icdev/tools/extensions/builtins/010_ai_governance_chat.py +277 -0
  841. icdev/tools/extensions/builtins/__init__.py +2 -0
  842. icdev/tools/extensions/extension_manager.py +455 -0
  843. icdev/tools/infra/__init__.py +1 -0
  844. icdev/tools/infra/ansible_generator.py +869 -0
  845. icdev/tools/infra/dockerfile_generator.py +361 -0
  846. icdev/tools/infra/infra_status.py +393 -0
  847. icdev/tools/infra/ironbank_metadata_generator.py +411 -0
  848. icdev/tools/infra/k8s_generator.py +1002 -0
  849. icdev/tools/infra/pipeline_generator.py +832 -0
  850. icdev/tools/infra/rollback.py +400 -0
  851. icdev/tools/infra/terraform_generator.py +1142 -0
  852. icdev/tools/infra/terraform_generator_azure.py +1254 -0
  853. icdev/tools/infra/terraform_generator_gcp.py +953 -0
  854. icdev/tools/infra/terraform_generator_ibm.py +360 -0
  855. icdev/tools/infra/terraform_generator_oci.py +919 -0
  856. icdev/tools/infra/terraform_generator_onprem.py +319 -0
  857. icdev/tools/innovation/__init__.py +8 -0
  858. icdev/tools/innovation/competitive_intel.py +492 -0
  859. icdev/tools/innovation/innovation_manager.py +681 -0
  860. icdev/tools/innovation/introspective_analyzer.py +774 -0
  861. icdev/tools/innovation/register_external_patterns.py +440 -0
  862. icdev/tools/innovation/signal_ranker.py +1038 -0
  863. icdev/tools/innovation/solution_generator.py +697 -0
  864. icdev/tools/innovation/standards_monitor.py +466 -0
  865. icdev/tools/innovation/trend_detector.py +1046 -0
  866. icdev/tools/innovation/triage_engine.py +1149 -0
  867. icdev/tools/innovation/web_scanner.py +894 -0
  868. icdev/tools/installer/__init__.py +1 -0
  869. icdev/tools/installer/compliance_configurator.py +637 -0
  870. icdev/tools/installer/installer.py +1711 -0
  871. icdev/tools/installer/module_registry.py +805 -0
  872. icdev/tools/installer/platform_setup.py +961 -0
  873. icdev/tools/integration/__init__.py +2 -0
  874. icdev/tools/integration/approval_manager.py +561 -0
  875. icdev/tools/integration/doors_exporter.py +627 -0
  876. icdev/tools/integration/gitlab_connector.py +784 -0
  877. icdev/tools/integration/jira_connector.py +774 -0
  878. icdev/tools/integration/servicenow_connector.py +693 -0
  879. icdev/tools/knowledge/__init__.py +1 -0
  880. icdev/tools/knowledge/knowledge_ingest.py +293 -0
  881. icdev/tools/knowledge/pattern_detector.py +693 -0
  882. icdev/tools/knowledge/recommendation_engine.py +461 -0
  883. icdev/tools/knowledge/self_heal_analyzer.py +504 -0
  884. icdev/tools/llm/__init__.py +72 -0
  885. icdev/tools/llm/anthropic_provider.py +170 -0
  886. icdev/tools/llm/azure_openai_provider.py +338 -0
  887. icdev/tools/llm/bedrock_provider.py +315 -0
  888. icdev/tools/llm/embedding_provider.py +438 -0
  889. icdev/tools/llm/gemini_provider.py +381 -0
  890. icdev/tools/llm/ibm_watsonx_provider.py +232 -0
  891. icdev/tools/llm/oci_genai_provider.py +462 -0
  892. icdev/tools/llm/ollama_provider.py +340 -0
  893. icdev/tools/llm/openai_provider.py +225 -0
  894. icdev/tools/llm/provider.py +355 -0
  895. icdev/tools/llm/provider_sdk.py +175 -0
  896. icdev/tools/llm/router.py +780 -0
  897. icdev/tools/llm/vertex_ai_provider.py +374 -0
  898. icdev/tools/maintenance/__init__.py +2 -0
  899. icdev/tools/maintenance/dependency_scanner.py +1030 -0
  900. icdev/tools/maintenance/maintenance_auditor.py +815 -0
  901. icdev/tools/maintenance/remediation_engine.py +966 -0
  902. icdev/tools/maintenance/vulnerability_checker.py +987 -0
  903. icdev/tools/mbse/__init__.py +3 -0
  904. icdev/tools/mbse/des_assessor.py +1186 -0
  905. icdev/tools/mbse/des_report_generator.py +800 -0
  906. icdev/tools/mbse/diagram_extractor.py +811 -0
  907. icdev/tools/mbse/digital_thread.py +1665 -0
  908. icdev/tools/mbse/model_code_generator.py +1122 -0
  909. icdev/tools/mbse/model_control_mapper.py +420 -0
  910. icdev/tools/mbse/pi_model_tracker.py +1093 -0
  911. icdev/tools/mbse/reqif_parser.py +1483 -0
  912. icdev/tools/mbse/sync_engine.py +1805 -0
  913. icdev/tools/mbse/xmi_parser.py +1573 -0
  914. icdev/tools/mcp/__init__.py +1 -0
  915. icdev/tools/mcp/base_server.py +535 -0
  916. icdev/tools/mcp/builder_server.py +725 -0
  917. icdev/tools/mcp/compliance_server.py +1407 -0
  918. icdev/tools/mcp/context_indexer.py +199 -0
  919. icdev/tools/mcp/context_server.py +305 -0
  920. icdev/tools/mcp/core_server.py +679 -0
  921. icdev/tools/mcp/devsecops_server.py +432 -0
  922. icdev/tools/mcp/gap_handlers.py +1079 -0
  923. icdev/tools/mcp/gateway_server.py +339 -0
  924. icdev/tools/mcp/generate_registry.py +623 -0
  925. icdev/tools/mcp/infra_server.py +264 -0
  926. icdev/tools/mcp/innovation_server.py +316 -0
  927. icdev/tools/mcp/integration_server.py +527 -0
  928. icdev/tools/mcp/knowledge_server.py +429 -0
  929. icdev/tools/mcp/maintenance_server.py +248 -0
  930. icdev/tools/mcp/marketplace_server.py +499 -0
  931. icdev/tools/mcp/mbse_server.py +398 -0
  932. icdev/tools/mcp/modernization_server.py +496 -0
  933. icdev/tools/mcp/observability_server.py +354 -0
  934. icdev/tools/mcp/requirements_server.py +415 -0
  935. icdev/tools/mcp/simulation_server.py +468 -0
  936. icdev/tools/mcp/standalone/__init__.py +2 -0
  937. icdev/tools/mcp/standalone/builder.py +59 -0
  938. icdev/tools/mcp/standalone/compliance.py +59 -0
  939. icdev/tools/mcp/standalone/core.py +59 -0
  940. icdev/tools/mcp/standalone/knowledge.py +59 -0
  941. icdev/tools/mcp/standalone/maintenance.py +59 -0
  942. icdev/tools/mcp/supply_chain_server.py +476 -0
  943. icdev/tools/mcp/tool_registry.py +2008 -0
  944. icdev/tools/mcp/unified_server.py +158 -0
  945. icdev/tools/memory/__init__.py +2 -0
  946. icdev/tools/memory/auto_capture.py +347 -0
  947. icdev/tools/memory/embed_memory.py +158 -0
  948. icdev/tools/memory/history_compressor.py +334 -0
  949. icdev/tools/memory/hybrid_search.py +236 -0
  950. icdev/tools/memory/maintenance_cron.py +289 -0
  951. icdev/tools/memory/memory_consolidation.py +444 -0
  952. icdev/tools/memory/memory_db.py +133 -0
  953. icdev/tools/memory/memory_read.py +102 -0
  954. icdev/tools/memory/memory_write.py +222 -0
  955. icdev/tools/memory/semantic_search.py +139 -0
  956. icdev/tools/memory/time_decay.py +435 -0
  957. icdev/tools/modernization/__init__.py +3 -0
  958. icdev/tools/modernization/architecture_extractor.py +734 -0
  959. icdev/tools/modernization/compliance_bridge.py +1499 -0
  960. icdev/tools/modernization/db_migration_planner.py +1385 -0
  961. icdev/tools/modernization/doc_generator.py +1428 -0
  962. icdev/tools/modernization/framework_migrator.py +1525 -0
  963. icdev/tools/modernization/legacy_analyzer.py +1948 -0
  964. icdev/tools/modernization/migration_code_generator.py +1639 -0
  965. icdev/tools/modernization/migration_report_generator.py +1653 -0
  966. icdev/tools/modernization/migration_tracker.py +1726 -0
  967. icdev/tools/modernization/monolith_decomposer.py +1508 -0
  968. icdev/tools/modernization/seven_r_assessor.py +1658 -0
  969. icdev/tools/modernization/strangler_fig_manager.py +1705 -0
  970. icdev/tools/modernization/ui_analyzer.py +771 -0
  971. icdev/tools/modernization/version_migrator.py +1392 -0
  972. icdev/tools/monitor/__init__.py +1 -0
  973. icdev/tools/monitor/alert_correlator.py +495 -0
  974. icdev/tools/monitor/auto_resolver.py +612 -0
  975. icdev/tools/monitor/health_checker.py +509 -0
  976. icdev/tools/monitor/heartbeat_daemon.py +792 -0
  977. icdev/tools/monitor/log_analyzer.py +516 -0
  978. icdev/tools/monitor/metric_collector.py +496 -0
  979. icdev/tools/mosa/__init__.py +10 -0
  980. icdev/tools/mosa/icd_generator.py +370 -0
  981. icdev/tools/mosa/modular_design_analyzer.py +683 -0
  982. icdev/tools/mosa/mosa_code_enforcer.py +349 -0
  983. icdev/tools/mosa/tsp_generator.py +265 -0
  984. icdev/tools/observability/__init__.py +100 -0
  985. icdev/tools/observability/genai_attributes.py +88 -0
  986. icdev/tools/observability/instrumentation.py +140 -0
  987. icdev/tools/observability/mlflow_exporter.py +194 -0
  988. icdev/tools/observability/otel_tracer.py +168 -0
  989. icdev/tools/observability/provenance/__init__.py +3 -0
  990. icdev/tools/observability/provenance/prov_recorder.py +324 -0
  991. icdev/tools/observability/shap/__init__.py +3 -0
  992. icdev/tools/observability/shap/agent_shap.py +275 -0
  993. icdev/tools/observability/sqlite_tracer.py +361 -0
  994. icdev/tools/observability/trace_context.py +205 -0
  995. icdev/tools/observability/tracer.py +230 -0
  996. icdev/tools/orchestration/__init__.py +2 -0
  997. icdev/tools/orchestration/workflow_composer.py +361 -0
  998. icdev/tools/project/__init__.py +1 -0
  999. icdev/tools/project/manifest_loader.py +418 -0
  1000. icdev/tools/project/project_create.py +350 -0
  1001. icdev/tools/project/project_list.py +174 -0
  1002. icdev/tools/project/project_scaffold.py +1715 -0
  1003. icdev/tools/project/project_status.py +479 -0
  1004. icdev/tools/project/session_context_builder.py +757 -0
  1005. icdev/tools/project/validate_manifest.py +55 -0
  1006. icdev/tools/registry/__init__.py +10 -0
  1007. icdev/tools/registry/absorption_engine.py +832 -0
  1008. icdev/tools/registry/capability_evaluator.py +668 -0
  1009. icdev/tools/registry/child_registry.py +617 -0
  1010. icdev/tools/registry/cross_pollinator.py +1065 -0
  1011. icdev/tools/registry/genome_manager.py +671 -0
  1012. icdev/tools/registry/learning_collector.py +912 -0
  1013. icdev/tools/registry/propagation_manager.py +942 -0
  1014. icdev/tools/registry/staging_manager.py +742 -0
  1015. icdev/tools/registry/telemetry_collector.py +423 -0
  1016. icdev/tools/requirements/__init__.py +1 -0
  1017. icdev/tools/requirements/ai_governance_scorer.py +208 -0
  1018. icdev/tools/requirements/boundary_analyzer.py +1293 -0
  1019. icdev/tools/requirements/clarification_engine.py +618 -0
  1020. icdev/tools/requirements/complexity_scorer.py +387 -0
  1021. icdev/tools/requirements/consistency_analyzer.py +803 -0
  1022. icdev/tools/requirements/constitution_manager.py +605 -0
  1023. icdev/tools/requirements/decomposition_engine.py +778 -0
  1024. icdev/tools/requirements/document_extractor.py +1016 -0
  1025. icdev/tools/requirements/elicitation_techniques.py +519 -0
  1026. icdev/tools/requirements/gap_detector.py +271 -0
  1027. icdev/tools/requirements/intake_engine.py +2188 -0
  1028. icdev/tools/requirements/prd_generator.py +847 -0
  1029. icdev/tools/requirements/prd_validator.py +595 -0
  1030. icdev/tools/requirements/readiness_scorer.py +313 -0
  1031. icdev/tools/requirements/spec_organizer.py +1029 -0
  1032. icdev/tools/requirements/spec_quality_checker.py +1097 -0
  1033. icdev/tools/requirements/traceability_builder.py +579 -0
  1034. icdev/tools/resilience/__init__.py +34 -0
  1035. icdev/tools/resilience/circuit_breaker.py +340 -0
  1036. icdev/tools/resilience/correlation.py +150 -0
  1037. icdev/tools/resilience/errors.py +81 -0
  1038. icdev/tools/resilience/retry.py +95 -0
  1039. icdev/tools/schemas/__init__.py +27 -0
  1040. icdev/tools/schemas/chat.py +61 -0
  1041. icdev/tools/schemas/compliance.py +56 -0
  1042. icdev/tools/schemas/core.py +85 -0
  1043. icdev/tools/schemas/innovation.py +37 -0
  1044. icdev/tools/schemas/validation.py +109 -0
  1045. icdev/tools/sdk/__init__.py +3 -0
  1046. icdev/tools/sdk/icdev_client.py +218 -0
  1047. icdev/tools/security/__init__.py +1 -0
  1048. icdev/tools/security/agent_output_validator.py +330 -0
  1049. icdev/tools/security/agent_trust_scorer.py +466 -0
  1050. icdev/tools/security/ai_bom_generator.py +725 -0
  1051. icdev/tools/security/ai_telemetry_logger.py +469 -0
  1052. icdev/tools/security/atlas_red_team.py +543 -0
  1053. icdev/tools/security/code_pattern_scanner.py +378 -0
  1054. icdev/tools/security/confabulation_detector.py +271 -0
  1055. icdev/tools/security/container_scanner.py +491 -0
  1056. icdev/tools/security/dependency_auditor.py +944 -0
  1057. icdev/tools/security/endpoint_security_scanner.py +579 -0
  1058. icdev/tools/security/mcp_tool_authorizer.py +243 -0
  1059. icdev/tools/security/prompt_injection_detector.py +737 -0
  1060. icdev/tools/security/sast_runner.py +948 -0
  1061. icdev/tools/security/secret_detector.py +378 -0
  1062. icdev/tools/security/tool_chain_validator.py +357 -0
  1063. icdev/tools/security/vuln_scanner.py +539 -0
  1064. icdev/tools/simulation/__init__.py +2 -0
  1065. icdev/tools/simulation/coa_generator.py +1552 -0
  1066. icdev/tools/simulation/monte_carlo.py +758 -0
  1067. icdev/tools/simulation/scenario_manager.py +1073 -0
  1068. icdev/tools/simulation/simulation_engine.py +1104 -0
  1069. icdev/tools/supply_chain/__init__.py +2 -0
  1070. icdev/tools/supply_chain/cve_triager.py +705 -0
  1071. icdev/tools/supply_chain/dependency_graph.py +645 -0
  1072. icdev/tools/supply_chain/isa_manager.py +540 -0
  1073. icdev/tools/supply_chain/scrm_assessor.py +546 -0
  1074. icdev/tools/testing/__init__.py +2 -0
  1075. icdev/tools/testing/acceptance_validator.py +411 -0
  1076. icdev/tools/testing/claude_dir_validator.py +831 -0
  1077. icdev/tools/testing/data_types.py +199 -0
  1078. icdev/tools/testing/e2e_runner.py +715 -0
  1079. icdev/tools/testing/fuzz_cli.py +306 -0
  1080. icdev/tools/testing/health_check.py +483 -0
  1081. icdev/tools/testing/platform_check.py +143 -0
  1082. icdev/tools/testing/production_audit.py +1862 -0
  1083. icdev/tools/testing/production_remediate.py +804 -0
  1084. icdev/tools/testing/screenshot_validator.py +539 -0
  1085. icdev/tools/testing/smoke_test.py +283 -0
  1086. icdev/tools/testing/test_agent_models.py +117 -0
  1087. icdev/tools/testing/test_orchestrator.py +957 -0
  1088. icdev/tools/testing/utils.py +229 -0
  1089. icdev/tools/translation/__init__.py +17 -0
  1090. icdev/tools/translation/code_translator.py +550 -0
  1091. icdev/tools/translation/dependency_mapper.py +277 -0
  1092. icdev/tools/translation/feature_map.py +395 -0
  1093. icdev/tools/translation/project_assembler.py +439 -0
  1094. icdev/tools/translation/source_extractor.py +609 -0
  1095. icdev/tools/translation/test_translator.py +333 -0
  1096. icdev/tools/translation/translation_manager.py +582 -0
  1097. icdev/tools/translation/translation_validator.py +662 -0
  1098. icdev/tools/translation/type_checker.py +371 -0
  1099. icdev-1.0.0.dist-info/METADATA +868 -0
  1100. icdev-1.0.0.dist-info/RECORD +1105 -0
  1101. icdev-1.0.0.dist-info/WHEEL +5 -0
  1102. icdev-1.0.0.dist-info/entry_points.txt +9 -0
  1103. icdev-1.0.0.dist-info/licenses/LICENSE +254 -0
  1104. icdev-1.0.0.dist-info/licenses/NOTICE +268 -0
  1105. icdev-1.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1065 @@
1
+ #!/usr/bin/env python3
2
+ # CUI // SP-CTI
3
+ # Controlled by: Department of Defense
4
+ # CUI Category: CTI
5
+ # Distribution: D
6
+ # POC: ICDEV System Administrator
7
+ """Cross-Pollinator -- brokers capability sharing between child applications.
8
+
9
+ Capabilities proven in one child can be proposed for adoption by siblings.
10
+ All cross-pollination requires human-in-the-loop approval (REQ-36-040).
11
+
12
+ ADR D6: All proposals, approvals, and executions are append-only audit entries.
13
+ ADR D212: Cross-pollinated capabilities must also pass the 72-hour stability
14
+ window before the target child considers them stable.
15
+ ADR D213: Cross-pollination draws from the same child_learned_behaviors data
16
+ as the absorption engine but targets sibling children instead of the
17
+ parent genome.
18
+
19
+ Pipeline:
20
+ 1. find_candidates() -- discover shareable capabilities
21
+ 2. propose_pollination() -- create a HITL proposal
22
+ 3. approve_pollination() -- HITL approves the proposal
23
+ 4. execute_pollination() -- add capability to target children
24
+ 5. get_proposals() -- query proposal status
25
+
26
+ Usage:
27
+ python tools/registry/cross_pollinator.py --find-candidates --json
28
+ python tools/registry/cross_pollinator.py --find-candidates \
29
+ --source-child-id "child-abc123" --json
30
+
31
+ python tools/registry/cross_pollinator.py --propose \
32
+ --source-child-id "child-abc123" \
33
+ --capability-name "stig_cache_optimization" \
34
+ --target-child-ids "child-def456,child-ghi789" \
35
+ --proposed-by "architect@mil" --json
36
+
37
+ python tools/registry/cross_pollinator.py --approve \
38
+ --proposal-id "xp-abc12345" --approver "isso@mil" --json
39
+
40
+ python tools/registry/cross_pollinator.py --execute \
41
+ --proposal-id "xp-abc12345" --json
42
+
43
+ python tools/registry/cross_pollinator.py --list-proposals --json
44
+ python tools/registry/cross_pollinator.py --list-proposals --status proposed --json
45
+ """
46
+
47
+ import argparse
48
+ import hashlib
49
+ import json
50
+ import os
51
+ import sqlite3
52
+ import sys
53
+ import uuid
54
+ from datetime import datetime, timezone
55
+ from pathlib import Path
56
+ from typing import Optional
57
+ from icdev._paths import get_project_root
58
+
59
+ # =========================================================================
60
+ # PATH SETUP
61
+ # =========================================================================
62
+ BASE_DIR = get_project_root()
63
+ if str(BASE_DIR) not in sys.path:
64
+ sys.path.insert(0, str(BASE_DIR))
65
+
66
+ DB_PATH = Path(os.environ.get("ICDEV_DB_PATH", str(BASE_DIR / "data" / "icdev.db")))
67
+
68
+ # =========================================================================
69
+ # GRACEFUL IMPORTS
70
+ # =========================================================================
71
+ try:
72
+ from icdev.tools.audit.audit_logger import log_event as audit_log_event
73
+ _HAS_AUDIT = True
74
+ except ImportError:
75
+ _HAS_AUDIT = False
76
+
77
+ def audit_log_event(**kwargs):
78
+ return -1
79
+
80
+ try:
81
+ from icdev.tools.registry.child_registry import ChildRegistry
82
+ _HAS_REGISTRY = True
83
+ except ImportError:
84
+ _HAS_REGISTRY = False
85
+
86
+ try:
87
+ from icdev.tools.security.prompt_injection_detector import PromptInjectionDetector
88
+ _pid = PromptInjectionDetector()
89
+ except Exception:
90
+ _pid = None
91
+
92
+
93
+ # =========================================================================
94
+ # CONSTANTS
95
+ # =========================================================================
96
+ CROSS_POLLINATION_PROPOSALS_DDL = """
97
+ CREATE TABLE IF NOT EXISTS cross_pollination_proposals (
98
+ id TEXT PRIMARY KEY,
99
+ source_child_id TEXT NOT NULL,
100
+ capability_name TEXT NOT NULL,
101
+ target_child_ids TEXT NOT NULL,
102
+ proposed_by TEXT NOT NULL DEFAULT 'system',
103
+ approver TEXT,
104
+ status TEXT NOT NULL DEFAULT 'proposed'
105
+ CHECK(status IN ('proposed', 'approved', 'rejected',
106
+ 'executing', 'completed', 'failed',
107
+ 'cancelled')),
108
+ compatibility_scores_json TEXT DEFAULT '{}',
109
+ rationale TEXT,
110
+ rejection_reason TEXT,
111
+ proposed_at TEXT NOT NULL,
112
+ approved_at TEXT,
113
+ executed_at TEXT,
114
+ classification TEXT DEFAULT 'CUI'
115
+ );
116
+
117
+ CREATE INDEX IF NOT EXISTS idx_xpoll_source
118
+ ON cross_pollination_proposals(source_child_id);
119
+ CREATE INDEX IF NOT EXISTS idx_xpoll_status
120
+ ON cross_pollination_proposals(status);
121
+ CREATE INDEX IF NOT EXISTS idx_xpoll_proposed_at
122
+ ON cross_pollination_proposals(proposed_at);
123
+ """
124
+
125
+ VALID_PROPOSAL_STATUSES = (
126
+ "proposed", "approved", "rejected",
127
+ "executing", "completed", "failed", "cancelled",
128
+ )
129
+
130
+
131
+ # =========================================================================
132
+ # HELPERS
133
+ # =========================================================================
134
+ def _now():
135
+ """ISO-8601 UTC timestamp."""
136
+ return datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
137
+
138
+
139
+ def _generate_id(prefix="xp"):
140
+ """Generate a unique ID with prefix."""
141
+ return f"{prefix}-{uuid.uuid4().hex[:8]}"
142
+
143
+
144
+ def _audit(event_type, action, details=None):
145
+ """Write audit trail entry (append-only, D6)."""
146
+ if _HAS_AUDIT:
147
+ try:
148
+ audit_log_event(
149
+ event_type=event_type,
150
+ actor="cross-pollinator",
151
+ action=action,
152
+ details=json.dumps(details) if details else None,
153
+ project_id="icdev-genome",
154
+ )
155
+ except Exception:
156
+ pass
157
+
158
+
159
+ # =========================================================================
160
+ # CROSS POLLINATOR
161
+ # =========================================================================
162
+ class CrossPollinator:
163
+ """Brokers capability sharing between child applications.
164
+
165
+ Capabilities proven in one child can be proposed for adoption by sibling
166
+ children. All cross-pollination requires human-in-the-loop (HITL) approval
167
+ per REQ-36-040.
168
+
169
+ The cross-pollination pipeline:
170
+ 1. find_candidates() -- discover shareable capabilities
171
+ 2. propose_pollination() -- create a proposal (status='proposed')
172
+ 3. approve_pollination() -- HITL approval (status='approved')
173
+ 4. execute_pollination() -- propagate to targets (status='completed')
174
+ 5. get_proposals() -- query proposals by status
175
+ """
176
+
177
+ def __init__(self, db_path=None):
178
+ """Initialize CrossPollinator.
179
+
180
+ Args:
181
+ db_path: Path to SQLite database. Defaults to data/icdev.db.
182
+ """
183
+ self.db_path = Path(db_path) if db_path else DB_PATH
184
+ self._ensure_tables()
185
+
186
+ def _get_conn(self):
187
+ """Get a database connection with row factory."""
188
+ conn = sqlite3.connect(str(self.db_path))
189
+ conn.row_factory = sqlite3.Row
190
+ conn.execute("PRAGMA journal_mode=WAL")
191
+ conn.execute("PRAGMA foreign_keys=ON")
192
+ return conn
193
+
194
+ def _ensure_tables(self):
195
+ """Ensure required tables exist."""
196
+ ddl = CROSS_POLLINATION_PROPOSALS_DDL + """
197
+ CREATE TABLE IF NOT EXISTS child_learned_behaviors (
198
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
199
+ child_id TEXT NOT NULL,
200
+ behavior_type TEXT NOT NULL
201
+ CHECK(behavior_type IN ('optimization', 'error_recovery',
202
+ 'compliance_shortcut', 'performance_tuning',
203
+ 'security_pattern', 'workflow_improvement',
204
+ 'configuration', 'other')),
205
+ description TEXT NOT NULL,
206
+ evidence_json TEXT DEFAULT '{}',
207
+ confidence REAL DEFAULT 0.0 CHECK(confidence >= 0.0 AND confidence <= 1.0),
208
+ evaluated INTEGER DEFAULT 0,
209
+ absorbed INTEGER DEFAULT 0,
210
+ discovered_at TEXT DEFAULT (datetime('now')),
211
+ evaluated_at TEXT,
212
+ absorbed_at TEXT,
213
+ classification TEXT DEFAULT 'CUI'
214
+ );
215
+
216
+ CREATE TABLE IF NOT EXISTS child_app_registry (
217
+ id TEXT PRIMARY KEY,
218
+ parent_project_id TEXT,
219
+ child_name TEXT,
220
+ child_type TEXT DEFAULT 'microservice',
221
+ project_path TEXT,
222
+ target_cloud TEXT DEFAULT 'aws',
223
+ compliance_required INTEGER DEFAULT 1,
224
+ blueprint_json TEXT DEFAULT '{}',
225
+ status TEXT DEFAULT 'registered',
226
+ created_at TEXT DEFAULT (datetime('now')),
227
+ updated_at TEXT DEFAULT (datetime('now'))
228
+ );
229
+
230
+ CREATE TABLE IF NOT EXISTS child_capabilities (
231
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
232
+ child_id TEXT NOT NULL,
233
+ capability_name TEXT NOT NULL,
234
+ version TEXT DEFAULT '1.0.0',
235
+ status TEXT DEFAULT 'active',
236
+ source TEXT DEFAULT 'parent',
237
+ learned_at TEXT DEFAULT (datetime('now')),
238
+ metadata TEXT DEFAULT '{}',
239
+ created_at TEXT DEFAULT (datetime('now')),
240
+ updated_at TEXT DEFAULT (datetime('now')),
241
+ UNIQUE(child_id, capability_name)
242
+ );
243
+
244
+ CREATE TABLE IF NOT EXISTS propagation_log (
245
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
246
+ capability_name TEXT NOT NULL,
247
+ genome_version TEXT NOT NULL,
248
+ source_type TEXT NOT NULL,
249
+ source_child_id TEXT,
250
+ target_child_id TEXT NOT NULL,
251
+ propagation_status TEXT DEFAULT 'pending',
252
+ evaluation_id INTEGER,
253
+ staging_env_id TEXT,
254
+ error_details TEXT,
255
+ initiated_by TEXT DEFAULT 'evolution-engine',
256
+ initiated_at TEXT DEFAULT (datetime('now')),
257
+ completed_at TEXT,
258
+ classification TEXT DEFAULT 'CUI'
259
+ );
260
+ """
261
+ try:
262
+ conn = self._get_conn()
263
+ conn.executescript(ddl)
264
+ conn.commit()
265
+ conn.close()
266
+ except Exception as e:
267
+ print(f"Warning: Table creation failed: {e}", file=sys.stderr)
268
+
269
+ def _log_audit_event(self, conn, child_id, event_type, details):
270
+ """Log an audit event for injection detection (append-only, D6)."""
271
+ _audit(
272
+ f"cross_pollination.{event_type}",
273
+ f"Child {child_id}: {details}",
274
+ {"child_id": child_id, "event_type": event_type, "details": details},
275
+ )
276
+
277
+ def find_candidates(self, source_child_id: str = None) -> list:
278
+ """Find capabilities from children that could benefit siblings.
279
+
280
+ Scans child_learned_behaviors for evaluated behaviors with high
281
+ confidence, then identifies sibling children that do not already
282
+ have those capabilities.
283
+
284
+ Args:
285
+ source_child_id: Optional filter to only consider capabilities
286
+ from a specific child. If None, considers all children.
287
+
288
+ Returns:
289
+ List of candidate dicts, each containing:
290
+ source_child (str): Child ID that discovered the capability
291
+ capability (dict): Behavior details
292
+ candidate_targets (list): Sibling child IDs that could benefit
293
+ compatibility_score (float): Estimated compatibility (0.0-1.0)
294
+ """
295
+ conn = self._get_conn()
296
+ try:
297
+ # Find evaluated behaviors with reasonable confidence
298
+ query = """
299
+ SELECT id, child_id, behavior_type, description,
300
+ evidence_json, confidence, absorbed
301
+ FROM child_learned_behaviors
302
+ WHERE evaluated = 1
303
+ AND confidence >= 0.5
304
+ """
305
+ params = []
306
+
307
+ if source_child_id:
308
+ query += " AND child_id = ?"
309
+ params.append(source_child_id)
310
+
311
+ query += " ORDER BY confidence DESC"
312
+
313
+ behaviors = conn.execute(query, params).fetchall()
314
+
315
+ if not behaviors:
316
+ return []
317
+
318
+ # Get all active children
319
+ children = conn.execute(
320
+ """SELECT id, child_name, child_type, compliance_required
321
+ FROM child_app_registry
322
+ WHERE status = 'active'"""
323
+ ).fetchall()
324
+
325
+ child_map = {row["id"]: dict(row) for row in children}
326
+
327
+ # For each behavior, find sibling targets that don't have it
328
+ candidates = []
329
+ for beh in behaviors:
330
+ beh_dict = dict(beh)
331
+ source_cid = beh_dict["child_id"]
332
+
333
+ # Parse evidence
334
+ try:
335
+ evidence = json.loads(beh_dict.get("evidence_json", "{}"))
336
+ except (json.JSONDecodeError, TypeError):
337
+ evidence = {}
338
+
339
+ # Phase 37 integration: scan evidence for injection
340
+ if _pid is not None and evidence:
341
+ evidence_text = json.dumps(evidence) if isinstance(evidence, dict) else str(evidence)
342
+ scan_result = _pid.scan_text(evidence_text, source="cross_pollination_candidate")
343
+ if scan_result.get("detected") and scan_result.get("confidence", 0) >= 0.7:
344
+ # Skip this candidate -- injection detected
345
+ self._log_audit_event(
346
+ conn, beh_dict.get("child_id", "unknown"),
347
+ "cross_pollination_rejected",
348
+ f"Injection in evidence (confidence={scan_result['confidence']:.2f})"
349
+ )
350
+ continue
351
+
352
+ # Find siblings without this capability
353
+ existing_caps = conn.execute(
354
+ """SELECT DISTINCT child_id
355
+ FROM child_capabilities
356
+ WHERE capability_name = ?
357
+ AND status = 'active'""",
358
+ (beh_dict["description"][:200],),
359
+ ).fetchall()
360
+
361
+ children_with_cap = {row["child_id"] for row in existing_caps}
362
+ children_with_cap.add(source_cid) # Source already has it
363
+
364
+ target_ids = []
365
+ for cid in child_map:
366
+ if cid not in children_with_cap:
367
+ target_ids.append(cid)
368
+
369
+ if not target_ids:
370
+ continue
371
+
372
+ # Compute compatibility score
373
+ compatibility = self._compute_compatibility(
374
+ beh_dict, child_map, target_ids
375
+ )
376
+
377
+ candidates.append({
378
+ "source_child": source_cid,
379
+ "behavior_id": beh_dict["id"],
380
+ "capability": {
381
+ "behavior_type": beh_dict["behavior_type"],
382
+ "description": beh_dict["description"],
383
+ "confidence": beh_dict["confidence"],
384
+ "absorbed": bool(beh_dict.get("absorbed", 0)),
385
+ },
386
+ "candidate_targets": target_ids,
387
+ "target_count": len(target_ids),
388
+ "compatibility_score": compatibility,
389
+ })
390
+
391
+ # Sort by compatibility score descending
392
+ candidates.sort(key=lambda c: c["compatibility_score"], reverse=True)
393
+
394
+ return candidates
395
+
396
+ finally:
397
+ conn.close()
398
+
399
+ def _compute_compatibility(
400
+ self, behavior: dict, child_map: dict, target_ids: list
401
+ ) -> float:
402
+ """Compute compatibility score for cross-pollination.
403
+
404
+ Considers behavior confidence, number of potential targets, and
405
+ whether targets share compliance requirements with the source.
406
+
407
+ Args:
408
+ behavior: Behavior record dict.
409
+ child_map: Dict of child_id -> child record.
410
+ target_ids: List of target child IDs.
411
+
412
+ Returns:
413
+ Compatibility score between 0.0 and 1.0.
414
+ """
415
+ confidence = behavior.get("confidence", 0.5)
416
+ source_cid = behavior.get("child_id", "")
417
+ source_child = child_map.get(source_cid, {})
418
+ source_compliance = source_child.get("compliance_required", 1)
419
+ source_type = source_child.get("child_type", "")
420
+
421
+ # Base score from confidence
422
+ score = confidence * 0.50
423
+
424
+ # Target coverage: more targets = more universal
425
+ total_children = len(child_map)
426
+ if total_children > 0:
427
+ coverage = len(target_ids) / total_children
428
+ score += coverage * 0.20
429
+
430
+ # Compliance compatibility: if source requires compliance and targets
431
+ # also require it, the behavior is more likely compatible
432
+ compatible_count = 0
433
+ for tid in target_ids:
434
+ target = child_map.get(tid, {})
435
+ if target.get("compliance_required", 1) == source_compliance:
436
+ compatible_count += 1
437
+ if target.get("child_type", "") == source_type:
438
+ compatible_count += 1
439
+
440
+ if target_ids:
441
+ compat_ratio = compatible_count / (len(target_ids) * 2)
442
+ score += compat_ratio * 0.20
443
+
444
+ # Behavior type bonus: security and compliance behaviors are more universally useful
445
+ btype = behavior.get("behavior_type", "other")
446
+ universal_types = ("security_pattern", "compliance_shortcut", "error_recovery")
447
+ if btype in universal_types:
448
+ score += 0.10
449
+
450
+ return round(min(score, 1.0), 4)
451
+
452
+ def propose_pollination(
453
+ self,
454
+ source_child_id: str,
455
+ capability_name: str,
456
+ target_child_ids: list,
457
+ proposed_by: str = "system",
458
+ rationale: str = None,
459
+ ) -> Optional[dict]:
460
+ """Create a cross-pollination proposal.
461
+
462
+ Records the proposal in cross_pollination_proposals and propagation_log
463
+ with status='proposed'. Requires HITL approval before execution.
464
+
465
+ Args:
466
+ source_child_id: Child ID that discovered the capability.
467
+ capability_name: Name/description of the capability to share.
468
+ target_child_ids: List of sibling child IDs to receive the capability.
469
+ proposed_by: Identity of the person/system creating the proposal.
470
+ rationale: Optional human-readable rationale for the proposal.
471
+
472
+ Returns:
473
+ Dict with proposal details, or None on failure.
474
+ """
475
+ if not target_child_ids:
476
+ return {"error": "No target children specified"}
477
+
478
+ proposal_id = _generate_id("xp")
479
+ now = _now()
480
+
481
+ conn = self._get_conn()
482
+ try:
483
+ # Compute compatibility scores for each target
484
+ compatibility_scores = {}
485
+ for tid in target_child_ids:
486
+ # Simple compatibility check: verify target exists
487
+ target = conn.execute(
488
+ "SELECT id, child_name FROM child_app_registry WHERE id = ?",
489
+ (tid,),
490
+ ).fetchone()
491
+ if target:
492
+ compatibility_scores[tid] = {
493
+ "child_name": target["child_name"],
494
+ "status": "pending_approval",
495
+ }
496
+ else:
497
+ compatibility_scores[tid] = {
498
+ "child_name": "unknown",
499
+ "status": "target_not_found",
500
+ }
501
+
502
+ # Insert proposal (append-only)
503
+ conn.execute(
504
+ """INSERT INTO cross_pollination_proposals
505
+ (id, source_child_id, capability_name, target_child_ids,
506
+ proposed_by, status, compatibility_scores_json,
507
+ rationale, proposed_at, classification)
508
+ VALUES (?, ?, ?, ?, ?, 'proposed', ?, ?, ?, 'CUI')""",
509
+ (
510
+ proposal_id,
511
+ source_child_id,
512
+ capability_name,
513
+ json.dumps(target_child_ids),
514
+ proposed_by,
515
+ json.dumps(compatibility_scores),
516
+ rationale,
517
+ now,
518
+ ),
519
+ )
520
+
521
+ # Record in propagation_log for each target (append-only, D6)
522
+ for tid in target_child_ids:
523
+ conn.execute(
524
+ """INSERT INTO propagation_log
525
+ (capability_name, genome_version, source_type,
526
+ source_child_id, target_child_id,
527
+ propagation_status, initiated_by,
528
+ initiated_at, classification)
529
+ VALUES (?, 'cross_pollination', 'child_learned', ?, ?,
530
+ 'pending', ?, ?, 'CUI')""",
531
+ (
532
+ capability_name,
533
+ source_child_id,
534
+ tid,
535
+ proposed_by,
536
+ now,
537
+ ),
538
+ )
539
+
540
+ conn.commit()
541
+
542
+ result = {
543
+ "proposal_id": proposal_id,
544
+ "source_child_id": source_child_id,
545
+ "capability_name": capability_name,
546
+ "target_child_ids": target_child_ids,
547
+ "target_count": len(target_child_ids),
548
+ "proposed_by": proposed_by,
549
+ "status": "proposed",
550
+ "rationale": rationale,
551
+ "proposed_at": now,
552
+ }
553
+
554
+ _audit(
555
+ "cross_pollination.proposed",
556
+ f"Cross-pollination proposed: '{capability_name}' from "
557
+ f"{source_child_id} to {len(target_child_ids)} targets",
558
+ result,
559
+ )
560
+
561
+ return result
562
+
563
+ except Exception as e:
564
+ return {"error": str(e)}
565
+ finally:
566
+ conn.close()
567
+
568
+ def approve_pollination(self, proposal_id: str, approver: str) -> bool:
569
+ """Approve a cross-pollination proposal (HITL gate, REQ-36-040).
570
+
571
+ Only proposals in 'proposed' status can be approved.
572
+
573
+ Args:
574
+ proposal_id: Proposal ID to approve.
575
+ approver: Identity of the human approver.
576
+
577
+ Returns:
578
+ True if approval succeeded, False otherwise.
579
+ """
580
+ now = _now()
581
+ conn = self._get_conn()
582
+ try:
583
+ # Verify proposal exists and is in 'proposed' status
584
+ row = conn.execute(
585
+ "SELECT * FROM cross_pollination_proposals WHERE id = ?",
586
+ (proposal_id,),
587
+ ).fetchone()
588
+
589
+ if not row:
590
+ print(
591
+ f"Warning: Proposal {proposal_id} not found",
592
+ file=sys.stderr,
593
+ )
594
+ return False
595
+
596
+ proposal = dict(row)
597
+ if proposal["status"] != "proposed":
598
+ print(
599
+ f"Warning: Proposal {proposal_id} is in status "
600
+ f"'{proposal['status']}', cannot approve",
601
+ file=sys.stderr,
602
+ )
603
+ return False
604
+
605
+ # Update status to approved
606
+ conn.execute(
607
+ """UPDATE cross_pollination_proposals
608
+ SET status = 'approved', approver = ?, approved_at = ?
609
+ WHERE id = ?""",
610
+ (approver, now, proposal_id),
611
+ )
612
+ conn.commit()
613
+
614
+ _audit(
615
+ "cross_pollination.approved",
616
+ f"Cross-pollination {proposal_id} approved by {approver}",
617
+ {
618
+ "proposal_id": proposal_id,
619
+ "approver": approver,
620
+ "capability_name": proposal.get("capability_name", ""),
621
+ "approved_at": now,
622
+ },
623
+ )
624
+
625
+ return True
626
+
627
+ except Exception as e:
628
+ print(f"Warning: Approval failed: {e}", file=sys.stderr)
629
+ return False
630
+ finally:
631
+ conn.close()
632
+
633
+ def execute_pollination(self, proposal_id: str) -> dict:
634
+ """Execute an approved cross-pollination proposal.
635
+
636
+ Adds the capability to each target child via child_capabilities table
637
+ (or ChildRegistry if available). The proposal must be in 'approved'
638
+ status.
639
+
640
+ Args:
641
+ proposal_id: Proposal ID to execute.
642
+
643
+ Returns:
644
+ Dict with execution results per target child.
645
+ """
646
+ conn = self._get_conn()
647
+ try:
648
+ # Fetch proposal
649
+ row = conn.execute(
650
+ "SELECT * FROM cross_pollination_proposals WHERE id = ?",
651
+ (proposal_id,),
652
+ ).fetchone()
653
+
654
+ if not row:
655
+ return {"error": f"Proposal {proposal_id} not found"}
656
+
657
+ proposal = dict(row)
658
+
659
+ if proposal["status"] != "approved":
660
+ return {
661
+ "error": (
662
+ f"Proposal {proposal_id} is in status "
663
+ f"'{proposal['status']}'. Must be 'approved' to execute."
664
+ ),
665
+ }
666
+
667
+ # Update status to executing
668
+ conn.execute(
669
+ """UPDATE cross_pollination_proposals
670
+ SET status = 'executing'
671
+ WHERE id = ?""",
672
+ (proposal_id,),
673
+ )
674
+ conn.commit()
675
+
676
+ # Parse target children
677
+ try:
678
+ target_ids = json.loads(proposal.get("target_child_ids", "[]"))
679
+ except (json.JSONDecodeError, TypeError):
680
+ target_ids = []
681
+
682
+ capability_name = proposal.get("capability_name", "")
683
+ source_child_id = proposal.get("source_child_id", "")
684
+ now = _now()
685
+
686
+ # Execute propagation to each target
687
+ results_per_target = {}
688
+ all_success = True
689
+
690
+ for tid in target_ids:
691
+ try:
692
+ if _HAS_REGISTRY:
693
+ # Use ChildRegistry to add capability
694
+ registry = ChildRegistry(db_path=self.db_path)
695
+ registry.add_capability(
696
+ child_id=tid,
697
+ capability_name=capability_name,
698
+ version="1.0.0",
699
+ source="learned",
700
+ metadata={
701
+ "source_child": source_child_id,
702
+ "proposal_id": proposal_id,
703
+ "pollinated_at": now,
704
+ },
705
+ )
706
+ else:
707
+ # Fallback: insert directly into child_capabilities
708
+ conn.execute(
709
+ """INSERT OR REPLACE INTO child_capabilities
710
+ (child_id, capability_name, version, status,
711
+ source, learned_at, metadata, updated_at)
712
+ VALUES (?, ?, '1.0.0', 'active', 'learned',
713
+ ?, ?, ?)""",
714
+ (
715
+ tid,
716
+ capability_name,
717
+ now,
718
+ json.dumps({
719
+ "source_child": source_child_id,
720
+ "proposal_id": proposal_id,
721
+ "pollinated_at": now,
722
+ }),
723
+ now,
724
+ ),
725
+ )
726
+
727
+ # Update propagation_log for this target
728
+ conn.execute(
729
+ """UPDATE propagation_log
730
+ SET propagation_status = 'success', completed_at = ?
731
+ WHERE capability_name = ?
732
+ AND source_child_id = ?
733
+ AND target_child_id = ?
734
+ AND propagation_status = 'pending'""",
735
+ (now, capability_name, source_child_id, tid),
736
+ )
737
+
738
+ results_per_target[tid] = {"status": "success"}
739
+
740
+ except Exception as e:
741
+ results_per_target[tid] = {
742
+ "status": "failed",
743
+ "error": str(e),
744
+ }
745
+ all_success = False
746
+
747
+ # Update propagation_log for failure
748
+ conn.execute(
749
+ """UPDATE propagation_log
750
+ SET propagation_status = 'failed',
751
+ error_details = ?,
752
+ completed_at = ?
753
+ WHERE capability_name = ?
754
+ AND source_child_id = ?
755
+ AND target_child_id = ?
756
+ AND propagation_status = 'pending'""",
757
+ (str(e), now, capability_name, source_child_id, tid),
758
+ )
759
+
760
+ # Update proposal status
761
+ final_status = "completed" if all_success else "failed"
762
+ conn.execute(
763
+ """UPDATE cross_pollination_proposals
764
+ SET status = ?, executed_at = ?
765
+ WHERE id = ?""",
766
+ (final_status, now, proposal_id),
767
+ )
768
+ conn.commit()
769
+
770
+ result = {
771
+ "proposal_id": proposal_id,
772
+ "capability_name": capability_name,
773
+ "source_child_id": source_child_id,
774
+ "status": final_status,
775
+ "results": results_per_target,
776
+ "targets_succeeded": sum(
777
+ 1 for r in results_per_target.values()
778
+ if r["status"] == "success"
779
+ ),
780
+ "targets_failed": sum(
781
+ 1 for r in results_per_target.values()
782
+ if r["status"] == "failed"
783
+ ),
784
+ "executed_at": now,
785
+ }
786
+
787
+ _audit(
788
+ "cross_pollination.executed",
789
+ f"Cross-pollination {proposal_id} {final_status}: "
790
+ f"{result['targets_succeeded']}/{len(target_ids)} targets succeeded",
791
+ result,
792
+ )
793
+
794
+ return result
795
+
796
+ except Exception as e:
797
+ return {"error": str(e)}
798
+ finally:
799
+ conn.close()
800
+
801
+ def get_proposals(self, status: str = None) -> list:
802
+ """List cross-pollination proposals, optionally filtered by status.
803
+
804
+ Args:
805
+ status: Optional status filter. Must be one of VALID_PROPOSAL_STATUSES.
806
+
807
+ Returns:
808
+ List of proposal dicts ordered by proposed_at descending.
809
+ """
810
+ conn = self._get_conn()
811
+ try:
812
+ query = """
813
+ SELECT id, source_child_id, capability_name, target_child_ids,
814
+ proposed_by, approver, status, rationale,
815
+ rejection_reason, proposed_at, approved_at, executed_at
816
+ FROM cross_pollination_proposals
817
+ """
818
+ params = []
819
+
820
+ if status:
821
+ if status not in VALID_PROPOSAL_STATUSES:
822
+ return [{"error": f"Invalid status '{status}'. Must be one of: "
823
+ f"{', '.join(VALID_PROPOSAL_STATUSES)}"}]
824
+ query += " WHERE status = ?"
825
+ params.append(status)
826
+
827
+ query += " ORDER BY proposed_at DESC"
828
+
829
+ rows = conn.execute(query, params).fetchall()
830
+
831
+ results = []
832
+ for row in rows:
833
+ record = dict(row)
834
+ # Parse target_child_ids from JSON
835
+ try:
836
+ record["target_child_ids"] = json.loads(
837
+ record.get("target_child_ids", "[]")
838
+ )
839
+ except (json.JSONDecodeError, TypeError):
840
+ record["target_child_ids"] = []
841
+ record["target_count"] = len(record["target_child_ids"])
842
+ results.append(record)
843
+
844
+ return results
845
+
846
+ finally:
847
+ conn.close()
848
+
849
+
850
+ # =========================================================================
851
+ # CLI
852
+ # =========================================================================
853
+ def main():
854
+ parser = argparse.ArgumentParser(
855
+ description=(
856
+ "ICDEV Cross-Pollinator -- broker capability sharing "
857
+ "between child applications (REQ-36-040, HITL required)"
858
+ )
859
+ )
860
+ parser.add_argument("--json", action="store_true", help="JSON output")
861
+ parser.add_argument(
862
+ "--db-path", type=Path, default=None, help="Database path override"
863
+ )
864
+
865
+ group = parser.add_mutually_exclusive_group(required=True)
866
+ group.add_argument(
867
+ "--find-candidates", action="store_true",
868
+ help="Find capabilities suitable for cross-pollination",
869
+ )
870
+ group.add_argument(
871
+ "--propose", action="store_true",
872
+ help="Create a cross-pollination proposal",
873
+ )
874
+ group.add_argument(
875
+ "--approve", action="store_true",
876
+ help="Approve a cross-pollination proposal (HITL)",
877
+ )
878
+ group.add_argument(
879
+ "--execute", action="store_true",
880
+ help="Execute an approved cross-pollination",
881
+ )
882
+ group.add_argument(
883
+ "--list-proposals", action="store_true",
884
+ help="List cross-pollination proposals",
885
+ )
886
+
887
+ # Candidate search args
888
+ parser.add_argument(
889
+ "--source-child-id",
890
+ help="Source child ID (for --find-candidates, --propose)",
891
+ )
892
+
893
+ # Proposal creation args
894
+ parser.add_argument("--capability-name", help="Capability name (for --propose)")
895
+ parser.add_argument(
896
+ "--target-child-ids",
897
+ help="Comma-separated target child IDs (for --propose)",
898
+ )
899
+ parser.add_argument(
900
+ "--proposed-by", default="system",
901
+ help="Proposer identity (for --propose)",
902
+ )
903
+ parser.add_argument("--rationale", help="Proposal rationale (for --propose)")
904
+
905
+ # Approval/execution args
906
+ parser.add_argument("--proposal-id", help="Proposal ID (for --approve, --execute)")
907
+ parser.add_argument("--approver", help="Approver identity (for --approve)")
908
+
909
+ # Filter args
910
+ parser.add_argument(
911
+ "--status",
912
+ choices=VALID_PROPOSAL_STATUSES,
913
+ help="Filter proposals by status (for --list-proposals)",
914
+ )
915
+
916
+ args = parser.parse_args()
917
+
918
+ try:
919
+ pollinator = CrossPollinator(db_path=args.db_path)
920
+
921
+ if args.find_candidates:
922
+ result = pollinator.find_candidates(
923
+ source_child_id=args.source_child_id
924
+ )
925
+
926
+ elif args.propose:
927
+ if not args.source_child_id:
928
+ parser.error("--propose requires --source-child-id")
929
+ if not args.capability_name:
930
+ parser.error("--propose requires --capability-name")
931
+ if not args.target_child_ids:
932
+ parser.error("--propose requires --target-child-ids")
933
+
934
+ target_ids = [
935
+ tid.strip()
936
+ for tid in args.target_child_ids.split(",")
937
+ if tid.strip()
938
+ ]
939
+
940
+ result = pollinator.propose_pollination(
941
+ source_child_id=args.source_child_id,
942
+ capability_name=args.capability_name,
943
+ target_child_ids=target_ids,
944
+ proposed_by=args.proposed_by,
945
+ rationale=args.rationale,
946
+ )
947
+
948
+ elif args.approve:
949
+ if not args.proposal_id:
950
+ parser.error("--approve requires --proposal-id")
951
+ if not args.approver:
952
+ parser.error("--approve requires --approver")
953
+
954
+ success = pollinator.approve_pollination(
955
+ proposal_id=args.proposal_id,
956
+ approver=args.approver,
957
+ )
958
+ result = {
959
+ "proposal_id": args.proposal_id,
960
+ "approved": success,
961
+ "approver": args.approver,
962
+ "approved_at": _now() if success else None,
963
+ }
964
+
965
+ elif args.execute:
966
+ if not args.proposal_id:
967
+ parser.error("--execute requires --proposal-id")
968
+ result = pollinator.execute_pollination(
969
+ proposal_id=args.proposal_id
970
+ )
971
+
972
+ elif args.list_proposals:
973
+ result = pollinator.get_proposals(status=args.status)
974
+
975
+ else:
976
+ result = {"error": "No action specified"}
977
+
978
+ if args.json:
979
+ print(json.dumps(result, indent=2, default=str))
980
+ else:
981
+ # Human-readable output
982
+ if args.find_candidates and isinstance(result, list):
983
+ print("Cross-Pollination Candidates")
984
+ print("=" * 80)
985
+ if not result:
986
+ print(" No candidates found")
987
+ for cand in result:
988
+ cap = cand.get("capability", {})
989
+ print(
990
+ f" Source: {cand.get('source_child', '?'):16s} "
991
+ f"Type: {cap.get('behavior_type', '?'):20s} "
992
+ f"Conf: {cap.get('confidence', 0):.2f} "
993
+ f"Targets: {cand.get('target_count', 0)} "
994
+ f"Compat: {cand.get('compatibility_score', 0):.4f}"
995
+ )
996
+ desc = cap.get("description", "")[:60]
997
+ if desc:
998
+ print(f" {desc}")
999
+
1000
+ elif args.propose and isinstance(result, dict):
1001
+ if "error" in result:
1002
+ print(f"ERROR: {result['error']}", file=sys.stderr)
1003
+ else:
1004
+ print(f"Proposal Created: {result.get('proposal_id')}")
1005
+ print(f" Capability: {result.get('capability_name')}")
1006
+ print(f" Source: {result.get('source_child_id')}")
1007
+ print(f" Targets: {result.get('target_count', 0)}")
1008
+ print(f" Status: {result.get('status')}")
1009
+ print(f" Proposed By: {result.get('proposed_by')}")
1010
+ print(" NOTE: Requires HITL approval before execution")
1011
+
1012
+ elif args.approve and isinstance(result, dict):
1013
+ ok = result.get("approved", False)
1014
+ print(f"Approval: {'APPROVED' if ok else 'FAILED'}")
1015
+ print(f" Proposal: {result.get('proposal_id')}")
1016
+ print(f" Approver: {result.get('approver')}")
1017
+
1018
+ elif args.execute and isinstance(result, dict):
1019
+ if "error" in result:
1020
+ print(f"ERROR: {result['error']}", file=sys.stderr)
1021
+ else:
1022
+ status = result.get("status", "unknown")
1023
+ print(f"Execution: {status.upper()}")
1024
+ print(f" Proposal: {result.get('proposal_id')}")
1025
+ print(f" Capability: {result.get('capability_name')}")
1026
+ print(
1027
+ f" Succeeded: {result.get('targets_succeeded', 0)}"
1028
+ f"/{result.get('targets_succeeded', 0) + result.get('targets_failed', 0)}"
1029
+ )
1030
+ results = result.get("results", {})
1031
+ for tid, tres in results.items():
1032
+ status_str = tres.get("status", "unknown")
1033
+ err = tres.get("error", "")
1034
+ print(f" {tid}: {status_str}" + (f" ({err})" if err else ""))
1035
+
1036
+ elif args.list_proposals and isinstance(result, list):
1037
+ print("Cross-Pollination Proposals")
1038
+ print("=" * 90)
1039
+ if not result:
1040
+ print(" No proposals found")
1041
+ for prop in result:
1042
+ print(
1043
+ f" {prop.get('id', '?'):16s} "
1044
+ f"{prop.get('status', '?'):12s} "
1045
+ f"cap={prop.get('capability_name', '?')[:25]:25s} "
1046
+ f"targets={prop.get('target_count', 0)} "
1047
+ f"by={prop.get('proposed_by', '?')}"
1048
+ )
1049
+ if prop.get("approver"):
1050
+ print(f" Approved by: {prop['approver']}")
1051
+
1052
+ else:
1053
+ print(json.dumps(result, indent=2, default=str))
1054
+
1055
+ except Exception as e:
1056
+ error = {"error": str(e)}
1057
+ if args.json:
1058
+ print(json.dumps(error, indent=2))
1059
+ else:
1060
+ print(f"ERROR: {e}", file=sys.stderr)
1061
+ sys.exit(1)
1062
+
1063
+
1064
+ if __name__ == "__main__":
1065
+ main()