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,1734 @@
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
+ """Dynamic CLAUDE.md Generator - creates adaptive documentation for child apps.
8
+
9
+ Architecture Decision D26: Jinja2 templates produce CLAUDE.md that documents
10
+ only present capabilities. Never references tools, agents, or features not
11
+ included in the child app.
12
+
13
+ Consumes a blueprint JSON (output of tools/builder/app_blueprint.py) and
14
+ renders a project-specific CLAUDE.md file. When Jinja2 is available the full
15
+ template engine is used; otherwise a deterministic string-based fallback
16
+ produces equivalent output.
17
+
18
+ Usage:
19
+ # Render to stdout
20
+ python tools/builder/claude_md_generator.py --blueprint /path/to/blueprint.json
21
+
22
+ # Render to file
23
+ python tools/builder/claude_md_generator.py --blueprint /path/to/blueprint.json \
24
+ --output /path/to/child-app/CLAUDE.md
25
+
26
+ # JSON envelope (metadata + content)
27
+ python tools/builder/claude_md_generator.py --blueprint /path/to/blueprint.json --json
28
+
29
+ Classification: CUI // SP-CTI
30
+ """
31
+
32
+ import argparse
33
+ import hashlib
34
+ import json
35
+ import logging
36
+ import sys
37
+ from datetime import datetime, timezone
38
+ from pathlib import Path
39
+ from typing import Any, Dict, List
40
+ from icdev._paths import get_project_root
41
+
42
+ # ---------------------------------------------------------------------------
43
+ # Configuration
44
+ # ---------------------------------------------------------------------------
45
+
46
+ BASE_DIR = get_project_root()
47
+ logger = logging.getLogger("icdev.claude_md_generator")
48
+
49
+ try:
50
+ from jinja2 import Environment, BaseLoader
51
+ _HAS_JINJA2 = True
52
+ except ImportError:
53
+ _HAS_JINJA2 = False
54
+ Environment = None # type: ignore[assignment,misc]
55
+
56
+ try:
57
+ from icdev.tools.audit.audit_logger import log_event as audit_log_event
58
+ except ImportError:
59
+ def audit_log_event(**kwargs): # type: ignore[misc]
60
+ logger.debug("audit_logger unavailable -- skipping audit event")
61
+
62
+
63
+ # ===========================================================================
64
+ # JINJA2 TEMPLATE
65
+ # ===========================================================================
66
+ # The template is stored as a Python string constant so the tool remains a
67
+ # single self-contained file with zero filesystem dependencies beyond the
68
+ # blueprint JSON.
69
+ #
70
+ # Template variables come directly from the blueprint dict produced by
71
+ # tools/builder/app_blueprint.py. All sections are conditionally rendered
72
+ # so the output never references capabilities, agents, or tools that are
73
+ # absent from the child app.
74
+ # ===========================================================================
75
+
76
+ CLAUDE_MD_TEMPLATE = r"""# CLAUDE.md
77
+
78
+ This file provides guidance to Claude Code (claude.ai/code) when working with {{ app_name }}.
79
+ {% if demo_mode %}
80
+
81
+ > **DEMONSTRATION ONLY** — This application is a demo. It uses PUBLIC classification
82
+ > and must NOT be used for operational, classified, or sensitive data. All CUI/SECRET
83
+ > banners and compliance artifacts are simulated for demonstration purposes.
84
+ {% endif %}
85
+
86
+ ---
87
+
88
+ ## Quick Reference
89
+
90
+ ### Commands
91
+ ```bash
92
+ # Memory system
93
+ python tools/memory/memory_read.py --format markdown # Load all memory
94
+ python tools/memory/memory_write.py --content "text" --type event # Write to daily log + DB
95
+ python tools/memory/memory_write.py --content "text" --type fact --importance 7 # Store a fact
96
+ python tools/memory/memory_write.py --update-memory --content "text" --section user_preferences # Update MEMORY.md
97
+ python tools/memory/memory_db.py --action search --query "keyword" # Keyword search
98
+ python tools/memory/semantic_search.py --query "concept" # Semantic search (requires OpenAI key)
99
+ python tools/memory/hybrid_search.py --query "query" # Best: combined keyword + semantic
100
+ python tools/memory/embed_memory.py --all # Generate embeddings for all entries
101
+ ```
102
+ {% if capabilities.get("testing", False) %}
103
+
104
+ ### Testing Commands
105
+ ```bash
106
+ python tools/testing/health_check.py # Full system health check
107
+ python tools/testing/health_check.py --json # JSON output
108
+ python tools/testing/test_orchestrator.py --project-dir /path/to/project
109
+ python tools/testing/e2e_runner.py --discover # List available E2E test specs
110
+ python tools/testing/e2e_runner.py --run-all # Execute all E2E tests
111
+ ```
112
+ {% endif %}
113
+ {% if capabilities.get("compliance", False) %}
114
+
115
+ ### Compliance Commands
116
+ ```bash
117
+ python tools/compliance/ssp_generator.py --project-id "{{ app_name }}"
118
+ python tools/compliance/poam_generator.py --project-id "{{ app_name }}"
119
+ python tools/compliance/stig_checker.py --project-id "{{ app_name }}"
120
+ python tools/compliance/sbom_generator.py --project-dir "/path/to/project"
121
+ python tools/compliance/cui_marker.py --file "/path/to/file" --marking "{{ classification }} // SP-CTI"
122
+ python tools/compliance/nist_lookup.py --control "AC-2"
123
+ python tools/compliance/control_mapper.py --activity "code.commit" --project-id "{{ app_name }}"
124
+ python tools/compliance/crosswalk_engine.py --control AC-2
125
+ python tools/compliance/crosswalk_engine.py --project-id "{{ app_name }}" --coverage
126
+ python tools/compliance/fedramp_assessor.py --project-id "{{ app_name }}" --baseline moderate
127
+ python tools/compliance/cmmc_assessor.py --project-id "{{ app_name }}" --level 2
128
+ python tools/compliance/oscal_generator.py --project-id "{{ app_name }}" --artifact ssp
129
+ python tools/compliance/classification_manager.py --impact-level {{ impact_level }}
130
+ ```
131
+ {% endif %}
132
+ {% if capabilities.get("security", False) %}
133
+
134
+ ### Security Commands
135
+ ```bash
136
+ python tools/security/sast_runner.py --project-dir "/path"
137
+ python tools/security/dependency_auditor.py --project-dir "/path"
138
+ python tools/security/secret_detector.py --project-dir "/path"
139
+ python tools/security/container_scanner.py --image "{{ app_name }}:latest"
140
+ ```
141
+ {% endif %}
142
+ {% if capabilities.get("ai_security", False) %}
143
+
144
+ ### AI Security Commands
145
+ ```bash
146
+ python tools/security/prompt_injection_detector.py --text "input" --json
147
+ python tools/security/prompt_injection_detector.py --project-dir /path --gate --json
148
+ python tools/security/ai_telemetry_logger.py --summary --json
149
+ python tools/security/ai_telemetry_logger.py --anomalies --window-hours 24 --json
150
+ python tools/security/ai_bom_generator.py --project-id "{{ app_name }}" --project-dir . --json
151
+ python tools/compliance/atlas_assessor.py --project-id "{{ app_name }}" --json
152
+ python tools/compliance/owasp_llm_assessor.py --project-id "{{ app_name }}" --json
153
+ python tools/compliance/owasp_agentic_assessor.py --project-id "{{ app_name }}" --json
154
+ python tools/security/agent_trust_scorer.py --all --json
155
+ ```
156
+ {% endif %}
157
+ {% if capabilities.get("ricoas", False) %}
158
+
159
+ ### Requirements Intake (RICOAS) Commands
160
+ ```bash
161
+ python tools/requirements/intake_engine.py --project-id "{{ app_name }}" --customer-name "Name" --customer-org "Org" --impact-level {{ impact_level }} --json
162
+ python tools/requirements/gap_detector.py --session-id "<id>" --check-security --check-compliance --json
163
+ python tools/requirements/readiness_scorer.py --session-id "<id>" --json
164
+ python tools/requirements/decomposition_engine.py --session-id "<id>" --level story --generate-bdd --json
165
+ python tools/requirements/boundary_analyzer.py --project-id "{{ app_name }}" --list-assessments --json
166
+ python tools/supply_chain/dependency_graph.py --project-id "{{ app_name }}" --build-graph --json
167
+ python tools/supply_chain/scrm_assessor.py --project-id "{{ app_name }}" --aggregate --json
168
+ python tools/supply_chain/cve_triager.py --project-id "{{ app_name }}" --sla-check --json
169
+ python tools/simulation/simulation_engine.py --project-id "{{ app_name }}" --create-scenario --scenario-name "Scenario" --scenario-type what_if --json
170
+ python tools/simulation/monte_carlo.py --scenario-id "<id>" --dimension schedule --iterations 10000 --json
171
+ python tools/simulation/coa_generator.py --session-id "<id>" --generate-3-coas --simulate --json
172
+ ```
173
+ {% endif %}
174
+ {% if capabilities.get("devsecops_zta", False) %}
175
+
176
+ ### DevSecOps & ZTA Commands
177
+ ```bash
178
+ python tools/devsecops/profile_manager.py --project-id "{{ app_name }}" --assess --json
179
+ python tools/devsecops/pipeline_security_generator.py --project-id "{{ app_name }}" --json
180
+ python tools/devsecops/policy_generator.py --project-id "{{ app_name }}" --engine kyverno --json
181
+ python tools/devsecops/zta_maturity_scorer.py --project-id "{{ app_name }}" --all --json
182
+ python tools/compliance/nist_800_207_assessor.py --project-id "{{ app_name }}" --json
183
+ python tools/devsecops/service_mesh_generator.py --project-id "{{ app_name }}" --mesh istio --json
184
+ ```
185
+ {% endif %}
186
+ {% if capabilities.get("observability", False) %}
187
+
188
+ ### Observability & XAI Commands
189
+ ```bash
190
+ python tools/observability/shap/agent_shap.py --project-id "{{ app_name }}" --last-n 10 --json
191
+ python tools/observability/provenance/prov_query.py --entity-id "<id>" --direction backward --json
192
+ python tools/observability/provenance/prov_export.py --project-id "{{ app_name }}" --json
193
+ python tools/compliance/xai_assessor.py --project-id "{{ app_name }}" --json
194
+ ```
195
+ {% endif %}
196
+ {% if capabilities.get("code_intelligence", False) %}
197
+
198
+ ### Code Intelligence Commands
199
+ ```bash
200
+ python tools/analysis/code_analyzer.py --project-dir tools/ --json
201
+ python tools/analysis/code_analyzer.py --project-dir tools/ --store --json
202
+ python tools/analysis/code_analyzer.py --project-dir tools/ --trend --json
203
+ python tools/analysis/runtime_feedback.py --health --function analyze_code --json
204
+ ```
205
+ {% endif %}
206
+ {% if capabilities.get("mbse", False) %}
207
+
208
+ ### MBSE Commands
209
+ ```bash
210
+ python tools/mbse/xmi_parser.py --project-id "{{ app_name }}" --file /path/model.xmi --json
211
+ python tools/mbse/reqif_parser.py --project-id "{{ app_name }}" --file /path/reqs.reqif --json
212
+ python tools/mbse/digital_thread.py --project-id "{{ app_name }}" auto-link --json
213
+ python tools/mbse/digital_thread.py --project-id "{{ app_name }}" coverage --json
214
+ python tools/mbse/model_code_generator.py --project-id "{{ app_name }}" --language python --output ./src
215
+ python tools/mbse/sync_engine.py --project-id "{{ app_name }}" detect-drift --json
216
+ python tools/mbse/des_assessor.py --project-id "{{ app_name }}" --project-dir /path --json
217
+ ```
218
+ {% endif %}
219
+ {% if capabilities.get("infra", False) %}
220
+
221
+ ### Infrastructure Commands
222
+ ```bash
223
+ python tools/infra/terraform_generator.py --project-id "{{ app_name }}"
224
+ python tools/infra/ansible_generator.py --project-id "{{ app_name }}"
225
+ python tools/infra/k8s_generator.py --project-id "{{ app_name }}"
226
+ python tools/infra/pipeline_generator.py --project-id "{{ app_name }}"
227
+ python tools/infra/rollback.py --deployment-id "deploy-123"
228
+ ```
229
+ {% endif %}
230
+ {% if capabilities.get("cicd", False) %}
231
+
232
+ ### CI/CD Commands
233
+ ```bash
234
+ python tools/ci/triggers/webhook_server.py # Start webhook server
235
+ python tools/ci/triggers/poll_trigger.py # Start issue polling
236
+ python tools/ci/workflows/icdev_sdlc.py 123 # Run full SDLC pipeline
237
+ ```
238
+ {% endif %}
239
+ {% if capabilities.get("dashboard", False) %}
240
+
241
+ ### Dashboard
242
+ ```bash
243
+ python tools/dashboard/app.py # Start web dashboard on port 5000
244
+ ```
245
+ {% endif %}
246
+
247
+ {% if app_description %}
248
+ ---
249
+
250
+ ## {{ app_name }} — Overview
251
+
252
+ {{ app_description }}
253
+ {% endif %}
254
+
255
+ ---
256
+
257
+ ## Architecture: GOTCHA Framework
258
+
259
+ This is a 6-layer agentic system. The AI (you) is the orchestration layer -- you read goals, call tools, apply args, reference context, and use hard prompts. You never execute work directly; you delegate to deterministic Python scripts.
260
+
261
+ **Why:** LLMs are probabilistic. Business logic must be deterministic. 90% accuracy/step = ~59% over 5 steps. Separation of concerns fixes this.
262
+
263
+ ### The 6 Layers
264
+
265
+ | Layer | Directory | Role |
266
+ |-------|-----------|------|
267
+ | **Goals** | `goals/` | Process definitions -- what to achieve, which tools to use, expected outputs, edge cases |
268
+ | **Orchestration** | *(you)* | Read goal -> decide tool order -> apply args -> reference context -> handle errors |
269
+ | **Tools** | `tools/` | Python scripts, one job each. Deterministic. Don't think, just execute. |
270
+ | **Args** | `args/` | YAML/JSON behavior settings (themes, modes, schedules). Change behavior without editing goals/tools |
271
+ | **Context** | `context/` | Static reference material (tone rules, writing samples, ICP descriptions, case studies) |
272
+ | **Hard Prompts** | `hardprompts/` | Reusable LLM instruction templates (outline->post, rewrite-in-voice, summarize) |
273
+
274
+ ### Key Files
275
+
276
+ - `goals/manifest.md` -- Index of all goal workflows. Check before starting any task.
277
+ - `tools/manifest.md` -- Master list of all tools. Check before writing a new script.
278
+ - `memory/MEMORY.md` -- Curated long-term facts/preferences, read at session start.
279
+ - `memory/logs/YYYY-MM-DD.md` -- Daily session logs.
280
+ - `.env` -- API keys and environment variables.
281
+ - `.tmp/` -- Disposable scratch work. Never store important data here.
282
+
283
+ ### Memory System Architecture
284
+
285
+ Dual storage: markdown files (human-readable) + SQLite databases (searchable).
286
+
287
+ **Databases:**
288
+ - `data/memory.db` -- `memory_entries` (with embeddings), `daily_logs`, `memory_access_log`
289
+ - `data/activity.db` -- `tasks` table for tracking
290
+
291
+ **Memory types:** fact, preference, event, insight, task, relationship
292
+
293
+ **Search ranking:** Hybrid search uses 0.7 * BM25 (keyword) + 0.3 * semantic (vector). Configurable via `--bm25-weight` and `--semantic-weight` flags.
294
+
295
+ **Embeddings:** OpenAI text-embedding-3-small (1536 dims), stored as BLOBs in SQLite.
296
+
297
+ ---
298
+
299
+ ## How to Operate
300
+
301
+ 1. **Check goals first** -- Read `goals/manifest.md` before starting a task. If a goal exists, follow it.
302
+ 2. **Check tools first** -- Read `tools/manifest.md` before writing new code. If you create a new tool, add it to the manifest.
303
+ 3. **When tools fail** -- Read the error, fix the tool, update the goal with what you learned (rate limits, batching, timing).
304
+ 4. **Goals are living docs** -- Update when better approaches emerge. Never modify/create goals without explicit permission.
305
+ 5. **When stuck** -- Explain what is missing and what you need. Do not guess or invent capabilities.
306
+
307
+ ### Session Start Protocol
308
+
309
+ 1. Read `memory/MEMORY.md` for long-term context
310
+ 2. Read today's daily log (`memory/logs/YYYY-MM-DD.md`)
311
+ 3. Read yesterday's log for continuity
312
+ 4. Or run: `python tools/memory/memory_read.py --format markdown`
313
+
314
+ ---
315
+
316
+ ## {{ app_name }} System
317
+ {% if classification %}
318
+
319
+ ### Classification
320
+
321
+ **Impact Level:** {{ impact_level }}
322
+ **Classification:** {{ classification }}{% if classification == "CUI" %} // SP-CTI{% endif %}
323
+
324
+ All generated artifacts MUST include classification markings appropriate to impact level.
325
+ {% endif %}
326
+
327
+ ### Multi-Agent Architecture ({{ agents | length }} Agents)
328
+
329
+ | Tier | Agent | Port | Role |
330
+ |------|-------|------|------|
331
+ {% for agent in agents %}| {{ agent.tier }} | {{ agent.name | capitalize }} | {{ agent.port }} | {{ agent.role }} |
332
+ {% endfor %}
333
+
334
+ Agents communicate via **A2A protocol** (JSON-RPC 2.0 over mutual TLS within K8s). Each publishes an Agent Card at `/.well-known/agent.json`.
335
+ {% if mcp_servers %}
336
+
337
+ ### MCP Servers ({{ mcp_servers | length }} stdio servers for Claude Code)
338
+
339
+ | Server | Tools |
340
+ |--------|-------|
341
+ {% for server in mcp_servers %}| {{ server.name }} | {{ server.tools }} |
342
+ {% endfor %}{% endif %}
343
+ {% if capabilities.get("compliance", False) %}
344
+
345
+ ### Compliance Frameworks Supported
346
+
347
+ | Framework | Description |
348
+ |-----------|-------------|
349
+ | NIST 800-53 Rev 5 | Federal information systems baseline |
350
+ | FedRAMP Moderate/High | Cloud services authorization |
351
+ | NIST 800-171 | CUI protection requirements |
352
+ | CMMC Level 2/3 | Cybersecurity maturity certification |
353
+ | DoD CSSP (DI 8530.01) | Cybersecurity service provider |
354
+ | CISA Secure by Design | Secure development principles |
355
+ | IEEE 1012 IV&V | Independent verification and validation |
356
+ | DoDI 5000.87 DES | Digital engineering strategy |
357
+
358
+ **Control Crosswalk:** Implementing one NIST 800-53 control auto-populates FedRAMP, CMMC, and 800-171 status via the crosswalk engine.
359
+ {% endif %}
360
+ {% if capabilities.get("mbse", False) %}
361
+
362
+ ### MBSE Integration
363
+
364
+ Model-Based Systems Engineering: SysML XMI import, DOORS NG ReqIF import, digital thread traceability, model-to-code generation, drift detection, and DES compliance assessment.
365
+
366
+ - Import models: `xmi_parser.py`, `reqif_parser.py`
367
+ - Digital thread: `digital_thread.py` (auto-link, coverage, report)
368
+ - Code generation: `model_code_generator.py`
369
+ - Drift detection: `sync_engine.py`
370
+ - DES compliance: `des_assessor.py`, `des_report_generator.py`
371
+ {% endif %}
372
+ {% if capabilities.get("ricoas", False) %}
373
+
374
+ ### RICOAS — Requirements Intake, COA & Approval System
375
+
376
+ AI-driven conversational requirements intake with gap detection, SAFe decomposition, boundary impact assessment, supply chain intelligence, and Digital Program Twin simulation.
377
+
378
+ - Requirements intake: `intake_engine.py` (5-stage pipeline)
379
+ - Gap detection: `gap_detector.py`, `readiness_scorer.py` (7-dimension scoring)
380
+ - Decomposition: `decomposition_engine.py` (SAFe hierarchy with BDD)
381
+ - Boundary analysis: `boundary_analyzer.py` (4-tier ATO impact: GREEN/YELLOW/ORANGE/RED)
382
+ - Supply chain: `dependency_graph.py`, `scrm_assessor.py`, `cve_triager.py`
383
+ - Simulation: `simulation_engine.py`, `monte_carlo.py`, `coa_generator.py`
384
+ {% endif %}
385
+ {% if capabilities.get("devsecops_zta", False) %}
386
+
387
+ ### DevSecOps & Zero Trust Architecture
388
+
389
+ DevSecOps pipeline security with policy-as-code (Kyverno/OPA), service mesh generation, and NIST SP 800-207 Zero Trust maturity scoring across 7 pillars.
390
+
391
+ - Profile management: `profile_manager.py` (5 maturity levels)
392
+ - Pipeline security: `pipeline_security_generator.py`
393
+ - Policy-as-code: `policy_generator.py` (Kyverno/OPA)
394
+ - ZTA maturity: `zta_maturity_scorer.py` (7-pillar DoD ZTA Strategy)
395
+ - NIST 800-207: `nist_800_207_assessor.py`
396
+ - Service mesh: `service_mesh_generator.py` (Istio/Linkerd)
397
+ {% endif %}
398
+ {% if capabilities.get("ai_security", False) %}
399
+
400
+ ### AI Security
401
+
402
+ MITRE ATLAS threat defense, OWASP LLM Top 10, prompt injection detection, AI telemetry with privacy-preserving hashing, and agentic security (behavioral drift, tool chain validation, trust scoring).
403
+
404
+ - Prompt injection: `prompt_injection_detector.py` (5 detection categories)
405
+ - AI telemetry: `ai_telemetry_logger.py` (SHA-256 hashed prompts/responses)
406
+ - ATLAS: `atlas_assessor.py`, `atlas_red_team.py`
407
+ - OWASP: `owasp_llm_assessor.py`, `owasp_agentic_assessor.py`
408
+ - Trust scoring: `agent_trust_scorer.py`, `tool_chain_validator.py`
409
+ {% endif %}
410
+ {% if capabilities.get("observability", False) %}
411
+
412
+ ### Observability & Explainable AI
413
+
414
+ Distributed tracing (OTel+SQLite), W3C PROV provenance, AgentSHAP tool attribution, and XAI compliance assessment.
415
+
416
+ - Tracing: Dual-mode tracer (OTel production, SQLite air-gapped)
417
+ - Provenance: `prov_query.py`, `prov_export.py` (W3C PROV-AGENT)
418
+ - Attribution: `agent_shap.py` (Monte Carlo Shapley values)
419
+ - XAI assessment: `xai_assessor.py` (10 compliance checks)
420
+ {% endif %}
421
+ {% if capabilities.get("code_intelligence", False) %}
422
+
423
+ ### Code Intelligence
424
+
425
+ AST-based code quality metrics, smell detection, deterministic maintainability scoring, and runtime feedback from test results.
426
+
427
+ - Code analyzer: `code_analyzer.py` (cyclomatic/cognitive complexity, nesting, params)
428
+ - Smell detection: 5 smell types (long function, deep nesting, high complexity, too many params, god class)
429
+ - Runtime feedback: `runtime_feedback.py` (test-to-source mapping)
430
+ {% endif %}
431
+
432
+ ### ATLAS Workflow
433
+
434
+ Build process follows the ATLAS methodology:
435
+ {% if atlas_config.get("model_phase", False) %}
436
+ 1. **Model** -- Import/validate SysML and DOORS models (M-ATLAS pre-phase)
437
+ {% endif %}
438
+ {% for phase in atlas_phases %}{{ loop.index }}. **{{ phase | capitalize }}** -- {{ atlas_phase_descriptions.get(phase, phase) }}
439
+ {% endfor %}
440
+ {% if capabilities.get("testing", False) %}
441
+
442
+ ### Testing Framework
443
+
444
+ **Testing Architecture (7-step pipeline):**
445
+ 1. **py_compile** -- Python syntax validation
446
+ 2. **Ruff** -- Ultra-fast Python linter
447
+ 3. **pytest** (tests/) -- Unit/integration tests with coverage
448
+ 4. **behave/Gherkin** (features/) -- BDD scenario tests
449
+ 5. **Bandit** -- SAST security scan
450
+ 6. **Playwright MCP** (.claude/commands/e2e/*.md) -- Browser automation E2E tests
451
+ 7. **Security + Compliance gates** -- CUI markings, STIG, secret detection
452
+ {% endif %}
453
+
454
+ ### Database
455
+
456
+ | Database | Purpose |
457
+ |----------|---------|
458
+ | `data/{{ db_name }}` | Main operational DB: projects, agents, audit trail{% if capabilities.get("compliance", False) %}, compliance{% endif %}{% if capabilities.get("mbse", False) %}, MBSE{% endif %}{% if capabilities.get("ricoas", False) %}, RICOAS{% endif %}{% if capabilities.get("ai_security", False) %}, AI security{% endif %}{% if capabilities.get("ai_governance", False) %}, AI governance{% endif %}{% if capabilities.get("observability", False) %}, observability{% endif %}{% if capabilities.get("devsecops_zta", False) %}, DevSecOps/ZTA{% endif %}{% if capabilities.get("code_intelligence", False) %}, code intelligence{% endif %} |
459
+ | `data/memory.db` | Memory system: entries, daily logs, access log |
460
+ | `data/activity.db` | Task tracking |
461
+
462
+ **Audit trail is append-only/immutable** -- no UPDATE/DELETE operations. Satisfies NIST 800-53 AU controls.
463
+ {% if goals_list %}
464
+
465
+ ---
466
+
467
+ ## Existing Goals
468
+
469
+ | Goal | File | Purpose |
470
+ |------|------|---------|
471
+ {% for goal in goals_list %}| {{ goal.name }} | `goals/{{ goal.file }}` | {{ goal.purpose }} |
472
+ {% endfor %}{% endif %}
473
+
474
+ ---
475
+
476
+ ## Guardrails
477
+
478
+ - Always check `tools/manifest.md` before writing a new script
479
+ - Verify tool output format before chaining into another tool
480
+ - Do not assume APIs support batch operations -- check first
481
+ - When a workflow fails mid-execution, preserve intermediate outputs before retrying
482
+ - Read the full goal before starting a task -- do not skim
483
+ - Audit trail is append-only -- NEVER add UPDATE/DELETE operations to audit tables
484
+ - Never store secrets in code or config -- use secrets manager or K8s secrets
485
+ - All containers must run as non-root with read-only root filesystem
486
+ {% if capabilities.get("compliance", False) %}- All generated artifacts MUST include classification markings appropriate to impact level
487
+ - SBOM must be regenerated on every build
488
+ - When implementing a NIST 800-53 control, always call crosswalk engine to auto-populate FedRAMP/CMMC/800-171 status
489
+ {% endif %}{% if capabilities.get("security", False) %}- Security gates block on: CAT1 STIG findings, critical/high vulnerabilities, failed tests, missing markings
490
+ {% endif %}{% if capabilities.get("ai_security", False) %}- AI Security gates block on: prompt injection defense inactive, AI telemetry disabled, AI BOM missing, ATLAS coverage < 80%
491
+ {% endif %}{% if capabilities.get("devsecops_zta", False) %}- ZTA gates block on: maturity < Advanced for IL4+, mTLS not enforced with service mesh, no default-deny NetworkPolicy
492
+ {% endif %}{% if capabilities.get("ricoas", False) %}- RICOAS gates block on: readiness score < 0.7, unresolved critical gaps, RED requirements without alternative COAs
493
+ {% endif %}{% if capabilities.get("observability", False) %}- Observability gates block on: tracing not active, provenance graph empty, XAI assessment not completed
494
+ {% endif %}{% if capabilities.get("code_intelligence", False) %}- Code Quality gates block on: average cyclomatic complexity > 25
495
+ {% endif %}- **This application CANNOT generate child applications** -- it is a generated child app of ICDEV. The agentic fitness assessor, app blueprint engine, and child app generator are intentionally excluded.
496
+ {% if parent_callback.get("enabled", False) %}
497
+
498
+ ### A2A Parent Callback
499
+
500
+ When this application needs capabilities not included locally, it calls back to parent ICDEV:
501
+ - **Callback URL:** {{ parent_callback.url }}
502
+ - **Auth method:** {{ parent_callback.auth }}
503
+ - **Excluded capabilities:** app generation, modernization
504
+ {% endif %}
505
+ {% if cloud_provider.get("mcp_servers") %}
506
+
507
+ ### Cloud Service Provider Integration
508
+
509
+ **Target:** {{ cloud_provider.provider | upper }} ({{ cloud_provider.region }})
510
+ {% if cloud_provider.get("govcloud", False) %}**Partition:** GovCloud
511
+ {% endif %}
512
+ **MCP Servers:**
513
+ {% for server in cloud_provider.mcp_servers %}- {{ server }}
514
+ {% endfor %}{% endif %}
515
+ {% if key_decisions %}
516
+
517
+ ---
518
+
519
+ ## Key Architecture Decisions
520
+
521
+ {% for decision in key_decisions %}- **{{ decision.id }}:** {{ decision.text }}
522
+ {% endfor %}{% endif %}
523
+
524
+ ---
525
+
526
+ ## Continuous Improvement
527
+
528
+ Every failure strengthens the system: identify what broke -> fix the tool -> test it -> update the goal -> next run succeeds automatically.
529
+
530
+ Be direct. Be reliable. Get it done.
531
+ """
532
+
533
+
534
+ # ===========================================================================
535
+ # ATLAS phase descriptions -- used by both Jinja2 and fallback renderers
536
+ # ===========================================================================
537
+
538
+ ATLAS_PHASE_DESCRIPTIONS: Dict[str, str] = {
539
+ "architect": "System design, component decomposition, interface contracts",
540
+ "trace": "Requirements traceability matrix, compliance mapping",
541
+ "link": "Wire components together, dependency injection, A2A registration",
542
+ "assemble": "Build, test (TDD RED->GREEN->REFACTOR), integrate",
543
+ "stress_test": "Load testing, security scanning, compliance gate checks",
544
+ }
545
+
546
+
547
+ # ===========================================================================
548
+ # GOAL METADATA -- purpose descriptions keyed by goal file stem
549
+ # ===========================================================================
550
+
551
+ GOAL_METADATA: Dict[str, Dict[str, str]] = {
552
+ "build_app": {
553
+ "name": "ATLAS Workflow",
554
+ "purpose": "5-step build: Architect -> Trace -> Link -> Assemble -> Stress-test",
555
+ },
556
+ "tdd_workflow": {
557
+ "name": "TDD Workflow",
558
+ "purpose": "RED->GREEN->REFACTOR cycle with Cucumber/Gherkin",
559
+ },
560
+ "compliance_workflow": {
561
+ "name": "Compliance Workflow",
562
+ "purpose": "Generate SSP, POAM, STIG, SBOM, CUI markings",
563
+ },
564
+ "security_scan": {
565
+ "name": "Security Scan",
566
+ "purpose": "SAST, dependency audit, secret detection, container scan",
567
+ },
568
+ "deploy_workflow": {
569
+ "name": "Deploy Workflow",
570
+ "purpose": "IaC generation, pipeline, staging, production deploy",
571
+ },
572
+ "monitoring": {
573
+ "name": "Monitoring",
574
+ "purpose": "Log analysis, metrics, alerts, health checks",
575
+ },
576
+ "self_healing": {
577
+ "name": "Self-Healing",
578
+ "purpose": "Pattern detection, root cause analysis, auto-remediation",
579
+ },
580
+ "agent_management": {
581
+ "name": "Agent Management",
582
+ "purpose": "A2A agent lifecycle, registration, health",
583
+ },
584
+ "integration_testing": {
585
+ "name": "Integration Testing",
586
+ "purpose": "Multi-layer testing: unit, BDD, E2E (Playwright), gates",
587
+ },
588
+ "cicd_integration": {
589
+ "name": "CI/CD Integration",
590
+ "purpose": "GitHub + GitLab dual-platform webhooks, polling, workflow automation",
591
+ },
592
+ "dashboard": {
593
+ "name": "Dashboard",
594
+ "purpose": "Web UI for project status, compliance, security",
595
+ },
596
+ "mbse_integration": {
597
+ "name": "MBSE Integration",
598
+ "purpose": "SysML, DOORS NG, digital thread, model-code sync, DES compliance",
599
+ },
600
+ "sbd_ivv_workflow": {
601
+ "name": "SbD & IV&V Workflow",
602
+ "purpose": "Secure by Design assessment + IV&V certification",
603
+ },
604
+ "maintenance_audit": {
605
+ "name": "Maintenance Audit",
606
+ "purpose": "Dependency scanning, vulnerability checking, SLA enforcement",
607
+ },
608
+ "ato_acceleration": {
609
+ "name": "ATO Acceleration",
610
+ "purpose": "Multi-framework ATO: FedRAMP + CMMC + OSCAL + eMASS + cATO",
611
+ },
612
+ # D-CHILD-1: Enterprise-grade goal metadata
613
+ "requirements_intake": {
614
+ "name": "Requirements Intake (RICOAS)",
615
+ "purpose": "AI-driven conversational intake, gap detection, SAFe decomposition",
616
+ },
617
+ "boundary_supply_chain": {
618
+ "name": "Boundary & Supply Chain",
619
+ "purpose": "ATO boundary impact, supply chain dependency graph, CVE triage",
620
+ },
621
+ "simulation_engine": {
622
+ "name": "Digital Program Twin Simulation",
623
+ "purpose": "6-dimension what-if simulation, Monte Carlo, COA generation",
624
+ },
625
+ "devsecops_workflow": {
626
+ "name": "DevSecOps Workflow",
627
+ "purpose": "DevSecOps profile, pipeline security, policy-as-code",
628
+ },
629
+ "zero_trust_architecture": {
630
+ "name": "Zero Trust Architecture",
631
+ "purpose": "ZTA 7-pillar maturity, NIST 800-207, service mesh",
632
+ },
633
+ "mosa_workflow": {
634
+ "name": "MOSA Workflow",
635
+ "purpose": "DoD MOSA modularity analysis, ICD/TSP generation",
636
+ },
637
+ "observability_traceability_xai": {
638
+ "name": "Observability & XAI",
639
+ "purpose": "Distributed tracing, provenance, AgentSHAP, XAI assessment",
640
+ },
641
+ "ai_transparency": {
642
+ "name": "AI Transparency",
643
+ "purpose": "Model/system cards, AI inventory, fairness, confabulation detection",
644
+ },
645
+ "ai_accountability": {
646
+ "name": "AI Accountability",
647
+ "purpose": "Oversight plans, CAIO, appeals, incident response, ethics reviews",
648
+ },
649
+ "owasp_agentic_security": {
650
+ "name": "OWASP Agentic Security",
651
+ "purpose": "Behavioral drift, tool chain validation, trust scoring, RBAC",
652
+ },
653
+ "code_intelligence": {
654
+ "name": "Code Intelligence",
655
+ "purpose": "AST metrics, smell detection, maintainability scoring",
656
+ },
657
+ }
658
+
659
+
660
+ # ===========================================================================
661
+ # HELPER FUNCTIONS
662
+ # ===========================================================================
663
+
664
+ def _compute_content_hash(content: str) -> str:
665
+ """Compute SHA-256 hash of the generated CLAUDE.md content.
666
+
667
+ Args:
668
+ content: Rendered CLAUDE.md string.
669
+
670
+ Returns:
671
+ Hex-encoded SHA-256 hash.
672
+ """
673
+ return hashlib.sha256(content.encode("utf-8")).hexdigest()
674
+
675
+
676
+ def _load_blueprint(path: str) -> Dict[str, Any]:
677
+ """Load a blueprint JSON file.
678
+
679
+ Args:
680
+ path: Filesystem path to the blueprint JSON.
681
+
682
+ Returns:
683
+ Parsed blueprint dict.
684
+
685
+ Raises:
686
+ FileNotFoundError: If the file does not exist.
687
+ json.JSONDecodeError: If the file is not valid JSON.
688
+ ValueError: If the file does not contain a JSON object.
689
+ """
690
+ blueprint_path = Path(path)
691
+ if not blueprint_path.exists():
692
+ raise FileNotFoundError(f"Blueprint not found: {path}")
693
+
694
+ with open(blueprint_path, encoding="utf-8") as f:
695
+ data = json.load(f)
696
+
697
+ if not isinstance(data, dict):
698
+ raise ValueError(
699
+ f"Blueprint must be a JSON object, got {type(data).__name__}"
700
+ )
701
+
702
+ # Validate minimal required fields
703
+ required = ("app_name", "capabilities", "agents")
704
+ missing = [k for k in required if k not in data]
705
+ if missing:
706
+ raise ValueError(
707
+ f"Blueprint missing required fields: {', '.join(missing)}"
708
+ )
709
+
710
+ return data
711
+
712
+
713
+ def _derive_agent_tier(agent: Dict[str, Any]) -> str:
714
+ """Derive the tier label for an agent based on its name.
715
+
716
+ Core agents (orchestrator, architect, builder, knowledge, monitor) are
717
+ labeled by their functional tier. Domain agents get 'Domain'.
718
+ Support agents get 'Support'.
719
+
720
+ Args:
721
+ agent: Agent spec dict from the blueprint.
722
+
723
+ Returns:
724
+ Tier label string.
725
+ """
726
+ name = agent.get("name", "").lower()
727
+ core_map = {
728
+ "orchestrator": "Core",
729
+ "architect": "Core",
730
+ }
731
+ domain_map = {
732
+ "builder": "Domain",
733
+ "compliance": "Domain",
734
+ "security": "Domain",
735
+ "infrastructure": "Domain",
736
+ "mbse": "Domain",
737
+ }
738
+ support_map = {
739
+ "knowledge": "Support",
740
+ "monitor": "Support",
741
+ }
742
+ if name in core_map:
743
+ return core_map[name]
744
+ if name in domain_map:
745
+ return domain_map[name]
746
+ if name in support_map:
747
+ return support_map[name]
748
+ # Default heuristic: core flag from blueprint
749
+ if agent.get("core", False):
750
+ return "Core"
751
+ return "Domain"
752
+
753
+
754
+ def _build_template_context(blueprint: Dict[str, Any]) -> Dict[str, Any]:
755
+ """Transform a raw blueprint dict into the template rendering context.
756
+
757
+ Enriches the blueprint data with derived values needed by the Jinja2
758
+ template (agent tiers, goal metadata, ATLAS phase descriptions, etc.).
759
+
760
+ Args:
761
+ blueprint: Raw blueprint dict from app_blueprint.py.
762
+
763
+ Returns:
764
+ Template context dict ready for Jinja2 or fallback rendering.
765
+ """
766
+ app_name = blueprint.get("app_name", "child-app")
767
+ capabilities = blueprint.get("capabilities", {})
768
+ classification = blueprint.get("classification", "CUI")
769
+ impact_level = blueprint.get("impact_level", "IL4")
770
+ agents_raw = blueprint.get("agents", [])
771
+ atlas_config = blueprint.get("atlas_config", {})
772
+ parent_callback = blueprint.get("parent_callback", {})
773
+ cloud_provider = blueprint.get("cloud_provider", {})
774
+ goals_config = blueprint.get("goals_config", [])
775
+ db_config = blueprint.get("db_config", {})
776
+
777
+ # Enrich agents with tier labels
778
+ agents = []
779
+ for agent in agents_raw:
780
+ enriched = dict(agent)
781
+ enriched["tier"] = _derive_agent_tier(agent)
782
+ agents.append(enriched)
783
+
784
+ # Build MCP server list from agent roster
785
+ mcp_servers = _derive_mcp_servers(agents, capabilities)
786
+
787
+ # Determine ATLAS phases (exclude fitness assessment)
788
+ atlas_phases = atlas_config.get("phases", [
789
+ "architect", "trace", "link", "assemble", "stress_test",
790
+ ])
791
+ # Ensure fitness is never present
792
+ atlas_phases = [p for p in atlas_phases if p != "fitness"]
793
+
794
+ # Build goals list with metadata
795
+ goals_list = []
796
+ for goal_stem in goals_config:
797
+ meta = GOAL_METADATA.get(goal_stem, {})
798
+ goals_list.append({
799
+ "name": meta.get("name", goal_stem.replace("_", " ").title()),
800
+ "file": f"{goal_stem}.md",
801
+ "purpose": meta.get("purpose", goal_stem.replace("_", " ")),
802
+ })
803
+
804
+ # Key architecture decisions for the child app
805
+ key_decisions = _build_key_decisions(blueprint)
806
+
807
+ # Database name
808
+ db_name = db_config.get("name", f"{app_name}.db")
809
+
810
+ # Extract app description from scorecard spec or blueprint fields
811
+ scorecard = blueprint.get("fitness_scorecard", {})
812
+ app_description = (
813
+ blueprint.get("description", "")
814
+ or blueprint.get("purpose", "")
815
+ or scorecard.get("spec", "")
816
+ )
817
+
818
+ # Extract LLM config hints
819
+ llm_config = blueprint.get("llm_config", {})
820
+
821
+ # Demo mode flag
822
+ demo_mode = blueprint.get("demo_mode", False)
823
+
824
+ return {
825
+ "app_name": app_name,
826
+ "capabilities": capabilities,
827
+ "classification": classification,
828
+ "impact_level": impact_level,
829
+ "agents": agents,
830
+ "mcp_servers": mcp_servers,
831
+ "atlas_config": atlas_config,
832
+ "atlas_phases": atlas_phases,
833
+ "atlas_phase_descriptions": ATLAS_PHASE_DESCRIPTIONS,
834
+ "parent_callback": parent_callback,
835
+ "cloud_provider": cloud_provider,
836
+ "goals_list": goals_list,
837
+ "goals_config": goals_config,
838
+ "db_config": db_config,
839
+ "db_name": db_name,
840
+ "key_decisions": key_decisions,
841
+ "app_description": app_description,
842
+ "llm_config": llm_config,
843
+ "demo_mode": demo_mode,
844
+ }
845
+
846
+
847
+ def _derive_mcp_servers(
848
+ agents: List[Dict[str, Any]],
849
+ capabilities: Dict[str, bool],
850
+ ) -> List[Dict[str, str]]:
851
+ """Derive the MCP server documentation table from agents and capabilities.
852
+
853
+ Each agent that has an associated MCP server gets an entry. The tool
854
+ list is a representative subset -- not exhaustive.
855
+
856
+ Args:
857
+ agents: Enriched agent list with tier labels.
858
+ capabilities: Capability map from the blueprint.
859
+
860
+ Returns:
861
+ List of dicts with 'name' and 'tools' keys for the MCP table.
862
+ """
863
+ agent_mcp_map: Dict[str, Dict[str, str]] = {
864
+ "orchestrator": {
865
+ "name": "core",
866
+ "tools": "project_create, project_list, project_status, task_dispatch, agent_status",
867
+ },
868
+ "builder": {
869
+ "name": "builder",
870
+ "tools": "scaffold, generate_code, write_tests, run_tests, lint, format",
871
+ },
872
+ "compliance": {
873
+ "name": "compliance",
874
+ "tools": "ssp_generate, poam_generate, stig_check, sbom_generate, cui_mark, control_map, nist_lookup",
875
+ },
876
+ "security": {
877
+ "name": "security",
878
+ "tools": "sast_scan, dep_audit, secret_detect, container_scan",
879
+ },
880
+ "knowledge": {
881
+ "name": "knowledge",
882
+ "tools": "search_knowledge, add_pattern, get_recommendations, self_heal",
883
+ },
884
+ "monitor": {
885
+ "name": "monitor",
886
+ "tools": "log_analyze, health_check, metrics_query, alert_manage",
887
+ },
888
+ "architect": {
889
+ "name": "architect",
890
+ "tools": "design_system, decompose, interface_contract",
891
+ },
892
+ }
893
+
894
+ # Only include capability-specific MCP servers when enabled
895
+ if capabilities.get("mbse", False):
896
+ agent_mcp_map["mbse"] = {
897
+ "name": "mbse",
898
+ "tools": "import_xmi, import_reqif, trace_forward, trace_backward, detect_drift, sync_model",
899
+ }
900
+ # D-CHILD-1: Enterprise capability MCP servers
901
+ if capabilities.get("ricoas", False):
902
+ agent_mcp_map["requirements_analyst"] = {
903
+ "name": "requirements",
904
+ "tools": "create_intake_session, process_intake_turn, detect_gaps, score_readiness, decompose_requirements",
905
+ }
906
+ agent_mcp_map["supply_chain"] = {
907
+ "name": "supply-chain",
908
+ "tools": "add_vendor, build_dependency_graph, assess_scrm, triage_cve, manage_isa",
909
+ }
910
+ agent_mcp_map["simulation"] = {
911
+ "name": "simulation",
912
+ "tools": "create_scenario, run_simulation, run_monte_carlo, generate_coas, compare_coas",
913
+ }
914
+ if capabilities.get("devsecops_zta", False):
915
+ agent_mcp_map["devsecops_zta"] = {
916
+ "name": "devsecops",
917
+ "tools": "devsecops_profile_create, zta_maturity_score, pipeline_security_generate, policy_generate, service_mesh_generate",
918
+ }
919
+
920
+ servers: List[Dict[str, str]] = []
921
+ agent_names = {a.get("name", "").lower() for a in agents}
922
+ for agent_name in sorted(agent_names):
923
+ mapping = agent_mcp_map.get(agent_name)
924
+ if mapping:
925
+ servers.append(mapping)
926
+
927
+ return servers
928
+
929
+
930
+ def _build_key_decisions(blueprint: Dict[str, Any]) -> List[Dict[str, str]]:
931
+ """Build the key architecture decisions section for the child app.
932
+
933
+ Decisions are filtered based on which capabilities are enabled. Child
934
+ apps never include decisions about fitness assessment, modernization,
935
+ or grandchild generation.
936
+
937
+ Args:
938
+ blueprint: Blueprint dict.
939
+
940
+ Returns:
941
+ List of dicts with 'id' and 'text' keys.
942
+ """
943
+ capabilities = blueprint.get("capabilities", {})
944
+ decisions: List[Dict[str, str]] = []
945
+
946
+ # Always-included decisions
947
+ decisions.append({
948
+ "id": "D1",
949
+ "text": "SQLite for internal operational data (zero-config portability)",
950
+ })
951
+ decisions.append({
952
+ "id": "D2",
953
+ "text": "Stdio for MCP (Claude Code); HTTPS+mTLS for A2A (K8s inter-agent)",
954
+ })
955
+ decisions.append({
956
+ "id": "D5",
957
+ "text": "CUI markings applied at generation time (inline, not post-processing)",
958
+ })
959
+ decisions.append({
960
+ "id": "D6",
961
+ "text": "Audit trail is append-only/immutable (no UPDATE/DELETE -- NIST AU compliance)",
962
+ })
963
+
964
+ if capabilities.get("dashboard", False):
965
+ decisions.append({
966
+ "id": "D3",
967
+ "text": "Flask over FastAPI (simpler, fewer deps, auditable SSR, smaller STIG surface)",
968
+ })
969
+
970
+ if capabilities.get("knowledge", False):
971
+ decisions.append({
972
+ "id": "D4",
973
+ "text": "Statistical methods for pattern detection; Bedrock LLM for root cause analysis",
974
+ })
975
+
976
+ if capabilities.get("mbse", False):
977
+ decisions.append({
978
+ "id": "D7",
979
+ "text": "Python stdlib xml.etree.ElementTree for XMI/ReqIF parsing (zero deps, air-gap safe)",
980
+ })
981
+ decisions.append({
982
+ "id": "D8",
983
+ "text": "Normalized DB tables for model elements (enables SQL joins across digital thread)",
984
+ })
985
+ decisions.append({
986
+ "id": "D9",
987
+ "text": "M-ATLAS adds Model pre-phase to ATLAS (backward compatible -- skips if no model)",
988
+ })
989
+ decisions.append({
990
+ "id": "D12",
991
+ "text": "N:M digital thread links (one block -> many code modules; one control -> many requirements)",
992
+ })
993
+
994
+ # D-CHILD-1: Enterprise capability decisions
995
+ if capabilities.get("ricoas", False):
996
+ decisions.append({
997
+ "id": "D21",
998
+ "text": "Readiness scoring uses deterministic weighted average (reproducible, not probabilistic)",
999
+ })
1000
+ decisions.append({
1001
+ "id": "D22",
1002
+ "text": "Monte Carlo uses Python stdlib random (zero deps, air-gap safe)",
1003
+ })
1004
+ decisions.append({
1005
+ "id": "D27",
1006
+ "text": "Supply chain graph stored as SQL adjacency list (no graph DB needed)",
1007
+ })
1008
+
1009
+ if capabilities.get("devsecops_zta", False):
1010
+ decisions.append({
1011
+ "id": "D117",
1012
+ "text": "DevSecOps/ZTA Agent with hard veto on pipeline_configuration and zero_trust_policy",
1013
+ })
1014
+ decisions.append({
1015
+ "id": "D120",
1016
+ "text": "ZTA maturity model uses DoD 7-pillar scoring (Traditional -> Advanced -> Optimal)",
1017
+ })
1018
+
1019
+ if capabilities.get("ai_security", False):
1020
+ decisions.append({
1021
+ "id": "D215",
1022
+ "text": "Prompt injection detector uses 5 detection categories",
1023
+ })
1024
+ decisions.append({
1025
+ "id": "D216",
1026
+ "text": "AI telemetry hashes prompts/responses with SHA-256 (privacy-preserving audit)",
1027
+ })
1028
+
1029
+ if capabilities.get("observability", False):
1030
+ decisions.append({
1031
+ "id": "D280",
1032
+ "text": "Pluggable Tracer ABC: OTelTracer (production), SQLiteTracer (air-gapped), NullTracer (fallback)",
1033
+ })
1034
+ decisions.append({
1035
+ "id": "D287",
1036
+ "text": "PROV-AGENT provenance in 3 append-only SQLite tables (W3C PROV standard)",
1037
+ })
1038
+
1039
+ if capabilities.get("code_intelligence", False):
1040
+ decisions.append({
1041
+ "id": "D331",
1042
+ "text": "Code quality metrics are read-only, advisory-only -- never modifies source files",
1043
+ })
1044
+
1045
+ # Grandchild prevention is always documented
1046
+ decisions.append({
1047
+ "id": "D52",
1048
+ "text": "This is a generated child app -- grandchild app generation is disabled by design",
1049
+ })
1050
+
1051
+ return decisions
1052
+
1053
+
1054
+ # ===========================================================================
1055
+ # JINJA2 RENDERER
1056
+ # ===========================================================================
1057
+
1058
+ def _generate_with_jinja2(blueprint: Dict[str, Any]) -> str:
1059
+ """Render CLAUDE.md using the Jinja2 template engine.
1060
+
1061
+ Args:
1062
+ blueprint: Blueprint dict from app_blueprint.py.
1063
+
1064
+ Returns:
1065
+ Rendered CLAUDE.md content string.
1066
+
1067
+ Raises:
1068
+ RuntimeError: If Jinja2 is not available (caller should use fallback).
1069
+ """
1070
+ if not _HAS_JINJA2:
1071
+ raise RuntimeError("Jinja2 is not installed")
1072
+
1073
+ context = _build_template_context(blueprint)
1074
+
1075
+ env = Environment( # nosec B701 — generates Markdown, not HTML
1076
+ loader=BaseLoader(),
1077
+ keep_trailing_newline=True,
1078
+ trim_blocks=True,
1079
+ lstrip_blocks=True,
1080
+ )
1081
+ template = env.from_string(CLAUDE_MD_TEMPLATE)
1082
+ rendered = template.render(**context)
1083
+
1084
+ # Clean up excessive blank lines (more than 2 consecutive)
1085
+ lines = rendered.split("\n")
1086
+ cleaned: List[str] = []
1087
+ blank_count = 0
1088
+ for line in lines:
1089
+ if line.strip() == "":
1090
+ blank_count += 1
1091
+ if blank_count <= 2:
1092
+ cleaned.append(line)
1093
+ else:
1094
+ blank_count = 0
1095
+ cleaned.append(line)
1096
+
1097
+ return "\n".join(cleaned)
1098
+
1099
+
1100
+ # ===========================================================================
1101
+ # FALLBACK RENDERER (no Jinja2)
1102
+ # ===========================================================================
1103
+
1104
+ def _generate_fallback(blueprint: Dict[str, Any]) -> str:
1105
+ """Render CLAUDE.md using basic string operations when Jinja2 is absent.
1106
+
1107
+ Produces equivalent output to the Jinja2 renderer but uses simple
1108
+ conditionals and string formatting instead of a template engine.
1109
+
1110
+ Args:
1111
+ blueprint: Blueprint dict from app_blueprint.py.
1112
+
1113
+ Returns:
1114
+ Rendered CLAUDE.md content string.
1115
+ """
1116
+ ctx = _build_template_context(blueprint)
1117
+ sections: List[str] = []
1118
+
1119
+ # -- Header --
1120
+ sections.append("# CLAUDE.md\n")
1121
+ sections.append(
1122
+ f"This file provides guidance to Claude Code (claude.ai/code) "
1123
+ f"when working with {ctx['app_name']}.\n"
1124
+ )
1125
+
1126
+ if ctx.get("demo_mode"):
1127
+ sections.append(
1128
+ "> **DEMONSTRATION ONLY** — This application is a demo. "
1129
+ "It uses PUBLIC classification\n"
1130
+ "> and must NOT be used for operational, classified, or sensitive data. "
1131
+ "All CUI/SECRET\n"
1132
+ "> banners and compliance artifacts are simulated for demonstration purposes.\n"
1133
+ )
1134
+
1135
+ sections.append("---\n")
1136
+
1137
+ # -- Quick Reference --
1138
+ sections.append("## Quick Reference\n")
1139
+ sections.append(_build_commands_section(ctx))
1140
+
1141
+ # -- App Description (from blueprint spec) --
1142
+ if ctx.get("app_description"):
1143
+ sections.append("---\n")
1144
+ sections.append(f"## {ctx['app_name']} — Overview\n")
1145
+ sections.append(f"{ctx['app_description']}\n")
1146
+
1147
+ # -- GOTCHA Framework --
1148
+ sections.append("---\n")
1149
+ sections.append(_build_gotcha_section())
1150
+
1151
+ # -- How to Operate --
1152
+ sections.append("---\n")
1153
+ sections.append(_build_operate_section())
1154
+
1155
+ # -- App System --
1156
+ sections.append("---\n")
1157
+ sections.append(_build_system_section(ctx))
1158
+
1159
+ # -- Goals --
1160
+ if ctx["goals_list"]:
1161
+ sections.append("---\n")
1162
+ sections.append(_build_goals_section(ctx))
1163
+
1164
+ # -- Guardrails --
1165
+ sections.append("---\n")
1166
+ sections.append(_build_guardrails_section(ctx))
1167
+
1168
+ # -- Key Decisions --
1169
+ if ctx["key_decisions"]:
1170
+ sections.append("---\n")
1171
+ sections.append(_build_decisions_section(ctx))
1172
+
1173
+ # -- Continuous Improvement --
1174
+ sections.append("---\n")
1175
+ sections.append("## Continuous Improvement\n")
1176
+ sections.append(
1177
+ "Every failure strengthens the system: identify what broke -> "
1178
+ "fix the tool -> test it -> update the goal -> next run succeeds "
1179
+ "automatically.\n"
1180
+ )
1181
+ sections.append("Be direct. Be reliable. Get it done.\n")
1182
+
1183
+ content = "\n".join(sections)
1184
+ # Normalize excessive blank lines
1185
+ while "\n\n\n\n" in content:
1186
+ content = content.replace("\n\n\n\n", "\n\n\n")
1187
+ return content
1188
+
1189
+
1190
+ def _build_commands_section(ctx: Dict[str, Any]) -> str:
1191
+ """Build the commands section for fallback rendering."""
1192
+ parts: List[str] = []
1193
+
1194
+ # Memory commands -- always present
1195
+ parts.append("### Commands\n")
1196
+ parts.append("```bash")
1197
+ parts.append("# Memory system")
1198
+ parts.append('python tools/memory/memory_read.py --format markdown # Load all memory')
1199
+ parts.append('python tools/memory/memory_write.py --content "text" --type event # Write to daily log + DB')
1200
+ parts.append('python tools/memory/memory_write.py --content "text" --type fact --importance 7 # Store a fact')
1201
+ parts.append('python tools/memory/memory_write.py --update-memory --content "text" --section user_preferences # Update MEMORY.md')
1202
+ parts.append('python tools/memory/memory_db.py --action search --query "keyword" # Keyword search')
1203
+ parts.append('python tools/memory/semantic_search.py --query "concept" # Semantic search (requires OpenAI key)')
1204
+ parts.append('python tools/memory/hybrid_search.py --query "query" # Best: combined keyword + semantic')
1205
+ parts.append('python tools/memory/embed_memory.py --all # Generate embeddings for all entries')
1206
+ parts.append("```\n")
1207
+
1208
+ caps = ctx["capabilities"]
1209
+ app = ctx["app_name"]
1210
+ classification = ctx["classification"]
1211
+ impact_level = ctx["impact_level"]
1212
+
1213
+ if caps.get("testing", False):
1214
+ parts.append("### Testing Commands\n")
1215
+ parts.append("```bash")
1216
+ parts.append("python tools/testing/health_check.py # Full system health check")
1217
+ parts.append("python tools/testing/health_check.py --json # JSON output")
1218
+ parts.append("python tools/testing/test_orchestrator.py --project-dir /path/to/project")
1219
+ parts.append("python tools/testing/e2e_runner.py --discover # List available E2E test specs")
1220
+ parts.append("python tools/testing/e2e_runner.py --run-all # Execute all E2E tests")
1221
+ parts.append("```\n")
1222
+
1223
+ if caps.get("compliance", False):
1224
+ parts.append("### Compliance Commands\n")
1225
+ parts.append("```bash")
1226
+ parts.append(f'python tools/compliance/ssp_generator.py --project-id "{app}"')
1227
+ parts.append(f'python tools/compliance/poam_generator.py --project-id "{app}"')
1228
+ parts.append(f'python tools/compliance/stig_checker.py --project-id "{app}"')
1229
+ parts.append('python tools/compliance/sbom_generator.py --project-dir "/path/to/project"')
1230
+ parts.append(f'python tools/compliance/cui_marker.py --file "/path/to/file" --marking "{classification} // SP-CTI"')
1231
+ parts.append('python tools/compliance/nist_lookup.py --control "AC-2"')
1232
+ parts.append(f'python tools/compliance/control_mapper.py --activity "code.commit" --project-id "{app}"')
1233
+ parts.append("python tools/compliance/crosswalk_engine.py --control AC-2")
1234
+ parts.append(f'python tools/compliance/crosswalk_engine.py --project-id "{app}" --coverage')
1235
+ parts.append(f'python tools/compliance/fedramp_assessor.py --project-id "{app}" --baseline moderate')
1236
+ parts.append(f'python tools/compliance/cmmc_assessor.py --project-id "{app}" --level 2')
1237
+ parts.append(f'python tools/compliance/oscal_generator.py --project-id "{app}" --artifact ssp')
1238
+ parts.append(f"python tools/compliance/classification_manager.py --impact-level {impact_level}")
1239
+ parts.append("```\n")
1240
+
1241
+ if caps.get("security", False):
1242
+ parts.append("### Security Commands\n")
1243
+ parts.append("```bash")
1244
+ parts.append('python tools/security/sast_runner.py --project-dir "/path"')
1245
+ parts.append('python tools/security/dependency_auditor.py --project-dir "/path"')
1246
+ parts.append('python tools/security/secret_detector.py --project-dir "/path"')
1247
+ parts.append(f'python tools/security/container_scanner.py --image "{app}:latest"')
1248
+ parts.append("```\n")
1249
+
1250
+ if caps.get("mbse", False):
1251
+ parts.append("### MBSE Commands\n")
1252
+ parts.append("```bash")
1253
+ parts.append(f'python tools/mbse/xmi_parser.py --project-id "{app}" --file /path/model.xmi --json')
1254
+ parts.append(f'python tools/mbse/reqif_parser.py --project-id "{app}" --file /path/reqs.reqif --json')
1255
+ parts.append(f'python tools/mbse/digital_thread.py --project-id "{app}" auto-link --json')
1256
+ parts.append(f'python tools/mbse/digital_thread.py --project-id "{app}" coverage --json')
1257
+ parts.append(f'python tools/mbse/model_code_generator.py --project-id "{app}" --language python --output ./src')
1258
+ parts.append(f'python tools/mbse/sync_engine.py --project-id "{app}" detect-drift --json')
1259
+ parts.append(f'python tools/mbse/des_assessor.py --project-id "{app}" --project-dir /path --json')
1260
+ parts.append("```\n")
1261
+
1262
+ if caps.get("infra", False):
1263
+ parts.append("### Infrastructure Commands\n")
1264
+ parts.append("```bash")
1265
+ parts.append(f'python tools/infra/terraform_generator.py --project-id "{app}"')
1266
+ parts.append(f'python tools/infra/ansible_generator.py --project-id "{app}"')
1267
+ parts.append(f'python tools/infra/k8s_generator.py --project-id "{app}"')
1268
+ parts.append(f'python tools/infra/pipeline_generator.py --project-id "{app}"')
1269
+ parts.append('python tools/infra/rollback.py --deployment-id "deploy-123"')
1270
+ parts.append("```\n")
1271
+
1272
+ if caps.get("cicd", False):
1273
+ parts.append("### CI/CD Commands\n")
1274
+ parts.append("```bash")
1275
+ parts.append("python tools/ci/triggers/webhook_server.py # Start webhook server")
1276
+ parts.append("python tools/ci/triggers/poll_trigger.py # Start issue polling")
1277
+ parts.append("python tools/ci/workflows/icdev_sdlc.py 123 # Run full SDLC pipeline")
1278
+ parts.append("```\n")
1279
+
1280
+ if caps.get("dashboard", False):
1281
+ parts.append("### Dashboard\n")
1282
+ parts.append("```bash")
1283
+ parts.append("python tools/dashboard/app.py # Start web dashboard on port 5000")
1284
+ parts.append("```\n")
1285
+
1286
+ return "\n".join(parts)
1287
+
1288
+
1289
+ def _build_gotcha_section() -> str:
1290
+ """Build the GOTCHA framework section for fallback rendering."""
1291
+ return """## Architecture: GOTCHA Framework
1292
+
1293
+ This is a 6-layer agentic system. The AI (you) is the orchestration layer -- you read goals, call tools, apply args, reference context, and use hard prompts. You never execute work directly; you delegate to deterministic Python scripts.
1294
+
1295
+ **Why:** LLMs are probabilistic. Business logic must be deterministic. 90% accuracy/step = ~59% over 5 steps. Separation of concerns fixes this.
1296
+
1297
+ ### The 6 Layers
1298
+
1299
+ | Layer | Directory | Role |
1300
+ |-------|-----------|------|
1301
+ | **Goals** | `goals/` | Process definitions -- what to achieve, which tools to use, expected outputs, edge cases |
1302
+ | **Orchestration** | *(you)* | Read goal -> decide tool order -> apply args -> reference context -> handle errors |
1303
+ | **Tools** | `tools/` | Python scripts, one job each. Deterministic. Don't think, just execute. |
1304
+ | **Args** | `args/` | YAML/JSON behavior settings (themes, modes, schedules). Change behavior without editing goals/tools |
1305
+ | **Context** | `context/` | Static reference material (tone rules, writing samples, ICP descriptions, case studies) |
1306
+ | **Hard Prompts** | `hardprompts/` | Reusable LLM instruction templates (outline->post, rewrite-in-voice, summarize) |
1307
+
1308
+ ### Key Files
1309
+
1310
+ - `goals/manifest.md` -- Index of all goal workflows. Check before starting any task.
1311
+ - `tools/manifest.md` -- Master list of all tools. Check before writing a new script.
1312
+ - `memory/MEMORY.md` -- Curated long-term facts/preferences, read at session start.
1313
+ - `memory/logs/YYYY-MM-DD.md` -- Daily session logs.
1314
+ - `.env` -- API keys and environment variables.
1315
+ - `.tmp/` -- Disposable scratch work. Never store important data here.
1316
+
1317
+ ### Memory System Architecture
1318
+
1319
+ Dual storage: markdown files (human-readable) + SQLite databases (searchable).
1320
+
1321
+ **Databases:**
1322
+ - `data/memory.db` -- `memory_entries` (with embeddings), `daily_logs`, `memory_access_log`
1323
+ - `data/activity.db` -- `tasks` table for tracking
1324
+
1325
+ **Memory types:** fact, preference, event, insight, task, relationship
1326
+
1327
+ **Search ranking:** Hybrid search uses 0.7 * BM25 (keyword) + 0.3 * semantic (vector). Configurable via `--bm25-weight` and `--semantic-weight` flags.
1328
+
1329
+ **Embeddings:** OpenAI text-embedding-3-small (1536 dims), stored as BLOBs in SQLite.
1330
+ """
1331
+
1332
+
1333
+ def _build_operate_section() -> str:
1334
+ """Build the How to Operate section for fallback rendering."""
1335
+ return """## How to Operate
1336
+
1337
+ 1. **Check goals first** -- Read `goals/manifest.md` before starting a task. If a goal exists, follow it.
1338
+ 2. **Check tools first** -- Read `tools/manifest.md` before writing new code. If you create a new tool, add it to the manifest.
1339
+ 3. **When tools fail** -- Read the error, fix the tool, update the goal with what you learned (rate limits, batching, timing).
1340
+ 4. **Goals are living docs** -- Update when better approaches emerge. Never modify/create goals without explicit permission.
1341
+ 5. **When stuck** -- Explain what is missing and what you need. Do not guess or invent capabilities.
1342
+
1343
+ ### Session Start Protocol
1344
+
1345
+ 1. Read `memory/MEMORY.md` for long-term context
1346
+ 2. Read today's daily log (`memory/logs/YYYY-MM-DD.md`)
1347
+ 3. Read yesterday's log for continuity
1348
+ 4. Or run: `python tools/memory/memory_read.py --format markdown`
1349
+ """
1350
+
1351
+
1352
+ def _build_system_section(ctx: Dict[str, Any]) -> str:
1353
+ """Build the app system section for fallback rendering."""
1354
+ parts: List[str] = []
1355
+ app_name = ctx["app_name"]
1356
+ caps = ctx["capabilities"]
1357
+
1358
+ parts.append(f"## {app_name} System\n")
1359
+
1360
+ # Classification
1361
+ classification = ctx["classification"]
1362
+ impact_level = ctx["impact_level"]
1363
+ if classification:
1364
+ parts.append("### Classification\n")
1365
+ marking = f"{classification} // SP-CTI" if classification == "CUI" else classification
1366
+ parts.append(f"**Impact Level:** {impact_level}")
1367
+ parts.append(f"**Classification:** {marking}\n")
1368
+ parts.append("All generated artifacts MUST include classification markings appropriate to impact level.\n")
1369
+
1370
+ # Agent table
1371
+ agents = ctx["agents"]
1372
+ parts.append(f"### Multi-Agent Architecture ({len(agents)} Agents)\n")
1373
+ parts.append(_build_agent_table(agents))
1374
+ parts.append("")
1375
+ parts.append("Agents communicate via **A2A protocol** (JSON-RPC 2.0 over mutual TLS within K8s). Each publishes an Agent Card at `/.well-known/agent.json`.\n")
1376
+
1377
+ # MCP servers
1378
+ mcp_servers = ctx["mcp_servers"]
1379
+ if mcp_servers:
1380
+ parts.append(f"### MCP Servers ({len(mcp_servers)} stdio servers for Claude Code)\n")
1381
+ parts.append("| Server | Tools |")
1382
+ parts.append("|--------|-------|")
1383
+ for server in mcp_servers:
1384
+ parts.append(f"| {server['name']} | {server['tools']} |")
1385
+ parts.append("")
1386
+
1387
+ # Compliance frameworks
1388
+ if caps.get("compliance", False):
1389
+ parts.append("### Compliance Frameworks Supported\n")
1390
+ parts.append("| Framework | Description |")
1391
+ parts.append("|-----------|-------------|")
1392
+ parts.append("| NIST 800-53 Rev 5 | Federal information systems baseline |")
1393
+ parts.append("| FedRAMP Moderate/High | Cloud services authorization |")
1394
+ parts.append("| NIST 800-171 | CUI protection requirements |")
1395
+ parts.append("| CMMC Level 2/3 | Cybersecurity maturity certification |")
1396
+ parts.append("| DoD CSSP (DI 8530.01) | Cybersecurity service provider |")
1397
+ parts.append("| CISA Secure by Design | Secure development principles |")
1398
+ parts.append("| IEEE 1012 IV&V | Independent verification and validation |")
1399
+ parts.append("| DoDI 5000.87 DES | Digital engineering strategy |")
1400
+ parts.append("")
1401
+ parts.append("**Control Crosswalk:** Implementing one NIST 800-53 control auto-populates FedRAMP, CMMC, and 800-171 status via the crosswalk engine.\n")
1402
+
1403
+ # MBSE
1404
+ if caps.get("mbse", False):
1405
+ parts.append("### MBSE Integration\n")
1406
+ parts.append(
1407
+ "Model-Based Systems Engineering: SysML XMI import, DOORS NG ReqIF import, "
1408
+ "digital thread traceability, model-to-code generation, drift detection, "
1409
+ "and DES compliance assessment.\n"
1410
+ )
1411
+ parts.append("- Import models: `xmi_parser.py`, `reqif_parser.py`")
1412
+ parts.append("- Digital thread: `digital_thread.py` (auto-link, coverage, report)")
1413
+ parts.append("- Code generation: `model_code_generator.py`")
1414
+ parts.append("- Drift detection: `sync_engine.py`")
1415
+ parts.append("- DES compliance: `des_assessor.py`, `des_report_generator.py`\n")
1416
+
1417
+ # ATLAS workflow
1418
+ atlas_phases = ctx["atlas_phases"]
1419
+ parts.append("### ATLAS Workflow\n")
1420
+ parts.append("Build process follows the ATLAS methodology:\n")
1421
+ idx = 1
1422
+ if ctx["atlas_config"].get("model_phase", False):
1423
+ parts.append(f"{idx}. **Model** -- Import/validate SysML and DOORS models (M-ATLAS pre-phase)")
1424
+ idx += 1
1425
+ for phase in atlas_phases:
1426
+ desc = ATLAS_PHASE_DESCRIPTIONS.get(phase, phase)
1427
+ parts.append(f"{idx}. **{phase.capitalize()}** -- {desc}")
1428
+ idx += 1
1429
+ parts.append("")
1430
+
1431
+ # Testing
1432
+ if caps.get("testing", False):
1433
+ parts.append("### Testing Framework\n")
1434
+ parts.append("**Testing Architecture (7-step pipeline):**")
1435
+ parts.append("1. **py_compile** -- Python syntax validation")
1436
+ parts.append("2. **Ruff** -- Ultra-fast Python linter")
1437
+ parts.append("3. **pytest** (tests/) -- Unit/integration tests with coverage")
1438
+ parts.append("4. **behave/Gherkin** (features/) -- BDD scenario tests")
1439
+ parts.append("5. **Bandit** -- SAST security scan")
1440
+ parts.append("6. **Playwright MCP** (.claude/commands/e2e/*.md) -- Browser automation E2E tests")
1441
+ parts.append("7. **Security + Compliance gates** -- CUI markings, STIG, secret detection\n")
1442
+
1443
+ # Database
1444
+ db_name = ctx["db_name"]
1445
+ parts.append("### Database\n")
1446
+ parts.append("| Database | Purpose |")
1447
+ parts.append("|----------|---------|")
1448
+ purpose_parts = ["projects, agents, audit trail"]
1449
+ if caps.get("compliance", False):
1450
+ purpose_parts.append("compliance")
1451
+ if caps.get("mbse", False):
1452
+ purpose_parts.append("MBSE")
1453
+ if caps.get("ricoas", False):
1454
+ purpose_parts.append("RICOAS")
1455
+ if caps.get("ai_security", False):
1456
+ purpose_parts.append("AI security")
1457
+ if caps.get("ai_governance", False):
1458
+ purpose_parts.append("AI governance")
1459
+ if caps.get("observability", False):
1460
+ purpose_parts.append("observability")
1461
+ if caps.get("devsecops_zta", False):
1462
+ purpose_parts.append("DevSecOps/ZTA")
1463
+ if caps.get("code_intelligence", False):
1464
+ purpose_parts.append("code intelligence")
1465
+ parts.append(f"| `data/{db_name}` | Main operational DB: {', '.join(purpose_parts)} |")
1466
+ parts.append("| `data/memory.db` | Memory system: entries, daily logs, access log |")
1467
+ parts.append("| `data/activity.db` | Task tracking |")
1468
+ parts.append("")
1469
+ parts.append("**Audit trail is append-only/immutable** -- no UPDATE/DELETE operations. Satisfies NIST 800-53 AU controls.\n")
1470
+
1471
+ return "\n".join(parts)
1472
+
1473
+
1474
+ def _build_agent_table(agents: List[Dict[str, Any]]) -> str:
1475
+ """Build a markdown table of agents.
1476
+
1477
+ Args:
1478
+ agents: Enriched agent list with tier labels.
1479
+
1480
+ Returns:
1481
+ Markdown table string.
1482
+ """
1483
+ lines = [
1484
+ "| Tier | Agent | Port | Role |",
1485
+ "|------|-------|------|------|",
1486
+ ]
1487
+ for agent in agents:
1488
+ name = agent.get("name", "unknown").capitalize()
1489
+ tier = agent.get("tier", "Domain")
1490
+ port = agent.get("port", "N/A")
1491
+ role = agent.get("role", "")
1492
+ lines.append(f"| {tier} | {name} | {port} | {role} |")
1493
+ return "\n".join(lines)
1494
+
1495
+
1496
+ def _build_goals_section(ctx: Dict[str, Any]) -> str:
1497
+ """Build the goals section for fallback rendering."""
1498
+ parts: List[str] = []
1499
+ parts.append("## Existing Goals\n")
1500
+ parts.append("| Goal | File | Purpose |")
1501
+ parts.append("|------|------|---------|")
1502
+ for goal in ctx["goals_list"]:
1503
+ parts.append(f"| {goal['name']} | `goals/{goal['file']}` | {goal['purpose']} |")
1504
+ parts.append("")
1505
+ return "\n".join(parts)
1506
+
1507
+
1508
+ def _build_guardrails_section(ctx: Dict[str, Any]) -> str:
1509
+ """Build the guardrails section for fallback rendering."""
1510
+ caps = ctx["capabilities"]
1511
+ parts: List[str] = []
1512
+ parts.append("## Guardrails\n")
1513
+ parts.append("- Always check `tools/manifest.md` before writing a new script")
1514
+ parts.append("- Verify tool output format before chaining into another tool")
1515
+ parts.append("- Do not assume APIs support batch operations -- check first")
1516
+ parts.append("- When a workflow fails mid-execution, preserve intermediate outputs before retrying")
1517
+ parts.append("- Read the full goal before starting a task -- do not skim")
1518
+ parts.append("- Audit trail is append-only -- NEVER add UPDATE/DELETE operations to audit tables")
1519
+ parts.append("- Never store secrets in code or config -- use secrets manager or K8s secrets")
1520
+ parts.append("- All containers must run as non-root with read-only root filesystem")
1521
+
1522
+ if caps.get("compliance", False):
1523
+ parts.append("- All generated artifacts MUST include classification markings appropriate to impact level")
1524
+ parts.append("- SBOM must be regenerated on every build")
1525
+ parts.append("- When implementing a NIST 800-53 control, always call crosswalk engine to auto-populate FedRAMP/CMMC/800-171 status")
1526
+
1527
+ if caps.get("security", False):
1528
+ parts.append("- Security gates block on: CAT1 STIG findings, critical/high vulnerabilities, failed tests, missing markings")
1529
+ if caps.get("ai_security", False):
1530
+ parts.append("- AI Security gates block on: prompt injection defense inactive, AI telemetry disabled, AI BOM missing, ATLAS coverage < 80%")
1531
+ if caps.get("devsecops_zta", False):
1532
+ parts.append("- ZTA gates block on: maturity < Advanced for IL4+, mTLS not enforced with service mesh, no default-deny NetworkPolicy")
1533
+ if caps.get("ricoas", False):
1534
+ parts.append("- RICOAS gates block on: readiness score < 0.7, unresolved critical gaps, RED requirements without alternative COAs")
1535
+ if caps.get("observability", False):
1536
+ parts.append("- Observability gates block on: tracing not active, provenance graph empty, XAI assessment not completed")
1537
+ if caps.get("code_intelligence", False):
1538
+ parts.append("- Code Quality gates block on: average cyclomatic complexity > 25")
1539
+
1540
+ parts.append(
1541
+ "- **This application CANNOT generate child applications** -- it is a generated "
1542
+ "child app of ICDEV. The agentic fitness assessor, app blueprint engine, and "
1543
+ "child app generator are intentionally excluded."
1544
+ )
1545
+
1546
+ # Parent callback
1547
+ parent = ctx["parent_callback"]
1548
+ if parent.get("enabled", False):
1549
+ parts.append("")
1550
+ parts.append("### A2A Parent Callback\n")
1551
+ parts.append("When this application needs capabilities not included locally, it calls back to parent ICDEV:")
1552
+ parts.append(f"- **Callback URL:** {parent.get('url', 'N/A')}")
1553
+ parts.append(f"- **Auth method:** {parent.get('auth', 'N/A')}")
1554
+ parts.append("- **Excluded capabilities:** app generation, modernization")
1555
+
1556
+ # Cloud provider
1557
+ cloud = ctx["cloud_provider"]
1558
+ if cloud.get("mcp_servers"):
1559
+ parts.append("")
1560
+ parts.append("### Cloud Service Provider Integration\n")
1561
+ provider = cloud.get("provider", "aws").upper()
1562
+ region = cloud.get("region", "N/A")
1563
+ parts.append(f"**Target:** {provider} ({region})")
1564
+ if cloud.get("govcloud", False):
1565
+ parts.append("**Partition:** GovCloud")
1566
+ parts.append("\n**MCP Servers:**")
1567
+ for server in cloud["mcp_servers"]:
1568
+ parts.append(f"- {server}")
1569
+
1570
+ parts.append("")
1571
+ return "\n".join(parts)
1572
+
1573
+
1574
+ def _build_decisions_section(ctx: Dict[str, Any]) -> str:
1575
+ """Build the key architecture decisions section for fallback rendering."""
1576
+ parts: List[str] = []
1577
+ parts.append("## Key Architecture Decisions\n")
1578
+ for decision in ctx["key_decisions"]:
1579
+ parts.append(f"- **{decision['id']}:** {decision['text']}")
1580
+ parts.append("")
1581
+ return "\n".join(parts)
1582
+
1583
+
1584
+ # ===========================================================================
1585
+ # PUBLIC API
1586
+ # ===========================================================================
1587
+
1588
+ def generate_claude_md(blueprint: Dict[str, Any]) -> str:
1589
+ """Generate CLAUDE.md content from a blueprint.
1590
+
1591
+ Uses Jinja2 if available, falls back to simple string formatting.
1592
+ Both renderers produce functionally equivalent output.
1593
+
1594
+ Args:
1595
+ blueprint: Blueprint dict from app_blueprint.py.
1596
+
1597
+ Returns:
1598
+ Rendered CLAUDE.md content string.
1599
+ """
1600
+ if _HAS_JINJA2:
1601
+ logger.info("Rendering CLAUDE.md with Jinja2 template engine")
1602
+ return _generate_with_jinja2(blueprint)
1603
+ else:
1604
+ logger.info("Jinja2 not available -- using fallback string renderer")
1605
+ return _generate_fallback(blueprint)
1606
+
1607
+
1608
+ # ===========================================================================
1609
+ # CLI ENTRY POINT
1610
+ # ===========================================================================
1611
+
1612
+ def main():
1613
+ """CLI entry point for the CLAUDE.md generator."""
1614
+ logging.basicConfig(
1615
+ level=logging.INFO,
1616
+ format="%(asctime)s [%(name)s] %(levelname)s: %(message)s",
1617
+ )
1618
+
1619
+ parser = argparse.ArgumentParser(
1620
+ description=(
1621
+ "Dynamic CLAUDE.md Generator -- creates adaptive documentation "
1622
+ "for child apps from a deployment blueprint."
1623
+ ),
1624
+ )
1625
+ parser.add_argument(
1626
+ "--blueprint",
1627
+ required=True,
1628
+ help="Path to blueprint JSON file (output of app_blueprint.py)",
1629
+ )
1630
+ parser.add_argument(
1631
+ "--output",
1632
+ default=None,
1633
+ help="Write CLAUDE.md to this file path (default: stdout)",
1634
+ )
1635
+ parser.add_argument(
1636
+ "--json",
1637
+ action="store_true",
1638
+ dest="json_output",
1639
+ help="Wrap output in JSON envelope with metadata",
1640
+ )
1641
+ parser.add_argument(
1642
+ "--verbose", "-v",
1643
+ action="store_true",
1644
+ help="Enable debug logging",
1645
+ )
1646
+
1647
+ args = parser.parse_args()
1648
+
1649
+ if args.verbose:
1650
+ logging.getLogger().setLevel(logging.DEBUG)
1651
+
1652
+ # Load blueprint
1653
+ try:
1654
+ blueprint = _load_blueprint(args.blueprint)
1655
+ except (FileNotFoundError, json.JSONDecodeError, ValueError) as e:
1656
+ logger.error("Failed to load blueprint: %s", e)
1657
+ sys.exit(1)
1658
+
1659
+ # Generate content
1660
+ try:
1661
+ content = generate_claude_md(blueprint)
1662
+ except Exception as e:
1663
+ logger.error("Failed to generate CLAUDE.md: %s", e)
1664
+ sys.exit(1)
1665
+
1666
+ content_hash = _compute_content_hash(content)
1667
+ line_count = content.count("\n") + 1
1668
+ renderer = "jinja2" if _HAS_JINJA2 else "fallback"
1669
+
1670
+ logger.info(
1671
+ "Generated CLAUDE.md: %d lines, hash=%s, renderer=%s",
1672
+ line_count,
1673
+ content_hash[:16] + "...",
1674
+ renderer,
1675
+ )
1676
+
1677
+ # Audit trail
1678
+ try:
1679
+ audit_log_event(
1680
+ event_type="claude_md.generated",
1681
+ actor="builder/claude_md_generator",
1682
+ action=f"Generated CLAUDE.md for '{blueprint.get('app_name', 'unknown')}'",
1683
+ project_id=blueprint.get("blueprint_id", ""),
1684
+ details=json.dumps({
1685
+ "app_name": blueprint.get("app_name"),
1686
+ "blueprint_id": blueprint.get("blueprint_id"),
1687
+ "blueprint_hash": blueprint.get("blueprint_hash", "")[:32],
1688
+ "content_hash": content_hash[:32],
1689
+ "line_count": line_count,
1690
+ "renderer": renderer,
1691
+ "capabilities_enabled": sum(
1692
+ 1 for v in blueprint.get("capabilities", {}).values() if v
1693
+ ),
1694
+ "agent_count": len(blueprint.get("agents", [])),
1695
+ }),
1696
+ )
1697
+ except Exception as e:
1698
+ logger.debug("Audit log failed: %s", e)
1699
+
1700
+ # Output
1701
+ if args.json_output:
1702
+ envelope = {
1703
+ "status": "success",
1704
+ "generator": "icdev/claude_md_generator",
1705
+ "blueprint_id": blueprint.get("blueprint_id", ""),
1706
+ "app_name": blueprint.get("app_name", ""),
1707
+ "renderer": renderer,
1708
+ "content_hash": content_hash,
1709
+ "line_count": line_count,
1710
+ "generated_at": datetime.now(tz=timezone.utc).isoformat(),
1711
+ "content": content,
1712
+ }
1713
+ output_json = json.dumps(envelope, indent=2, ensure_ascii=False)
1714
+
1715
+ if args.output:
1716
+ output_path = Path(args.output)
1717
+ output_path.parent.mkdir(parents=True, exist_ok=True)
1718
+ output_path.write_text(output_json, encoding="utf-8")
1719
+ logger.info("JSON envelope written to %s", args.output)
1720
+ else:
1721
+ print(output_json)
1722
+
1723
+ else:
1724
+ if args.output:
1725
+ output_path = Path(args.output)
1726
+ output_path.parent.mkdir(parents=True, exist_ok=True)
1727
+ output_path.write_text(content, encoding="utf-8")
1728
+ logger.info("CLAUDE.md written to %s", args.output)
1729
+ else:
1730
+ print(content)
1731
+
1732
+
1733
+ if __name__ == "__main__":
1734
+ main()