icdev 0.0.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1214) hide show
  1. args/agent_config.yaml +113 -0
  2. args/audit_regimes/cisa_sbd.json +381 -0
  3. args/audit_regimes/cmmc_l2.json +906 -0
  4. args/audit_regimes/dod_cssp.json +393 -0
  5. args/audit_regimes/dodi_5000_87.json +297 -0
  6. args/audit_regimes/fedramp_moderate.json +650 -0
  7. args/audit_regimes/ieee_1012.json +373 -0
  8. args/audit_regimes/nist_800_171.json +624 -0
  9. args/audit_regimes/nist_800_53.json +907 -0
  10. args/cloudforge_blueprints/aws_commercial.yaml +29 -0
  11. args/cloudforge_blueprints/aws_govcloud_il4.yaml +34 -0
  12. args/cloudforge_blueprints/aws_govcloud_il5.yaml +38 -0
  13. args/cloudforge_blueprints/azure_commercial.yaml +28 -0
  14. args/cloudforge_blueprints/azure_gov_il4.yaml +32 -0
  15. args/cloudforge_blueprints/azure_gov_il5.yaml +36 -0
  16. args/cloudforge_blueprints/gcp_commercial.yaml +28 -0
  17. args/cloudforge_blueprints/oci_commercial.yaml +28 -0
  18. args/cloudforge_config.yaml +231 -0
  19. args/cloudforge_runbook_templates/backup_verify.yaml +98 -0
  20. args/cloudforge_runbook_templates/dr_failover.yaml +107 -0
  21. args/cloudforge_runbook_templates/health_check.yaml +97 -0
  22. args/cloudforge_runbook_templates/incident_response.yaml +101 -0
  23. args/cloudforge_runbook_templates/migration_cutover.yaml +105 -0
  24. args/cloudforge_runbook_templates/patch_rollout.yaml +92 -0
  25. args/cloudforge_runbook_templates/zone_provision.yaml +93 -0
  26. args/code_pattern_config.yaml +151 -0
  27. args/code_quality_config.yaml +47 -0
  28. args/compliance_config.yaml +17 -0
  29. args/control_inheritance.yaml +177 -0
  30. args/csp_mcp_config.yaml +41 -0
  31. args/cui_markings.yaml +35 -0
  32. args/databridge_config.yaml +232 -0
  33. args/db_config.yaml +116 -0
  34. args/decision_tables/agent_trust_decision.yaml +143 -0
  35. args/decision_tables/ato_boundary_impact.yaml +132 -0
  36. args/decision_tables/deployment_approval.yaml +152 -0
  37. args/degradation_matrix.yaml +163 -0
  38. args/devsecops_config.yaml +286 -0
  39. args/endpoint_security_config.yaml +207 -0
  40. args/exit_criteria.yaml +102 -0
  41. args/feature_flags.yaml +235 -0
  42. args/file_access_tiers.yaml +88 -0
  43. args/forge_studio/blueprint_config.yaml +27 -0
  44. args/forge_studio/component_catalog.json +411 -0
  45. args/forge_studio/workflow_templates.yaml +103 -0
  46. args/govcon_config.yaml +41 -0
  47. args/harness_config.yaml +67 -0
  48. args/innovation_config.yaml +321 -0
  49. args/knowledge_graph_config.yaml +113 -0
  50. args/llm_config.yaml +222 -0
  51. args/marketplace_config.yaml +260 -0
  52. args/monitoring_config.yaml +127 -0
  53. args/mosa_config.yaml +190 -0
  54. args/observability_tracing_config.yaml +170 -0
  55. args/owasp_agentic_config.yaml +171 -0
  56. args/pipeline_gates.yaml +197 -0
  57. args/project_defaults.yaml +235 -0
  58. args/prompt_chains.yaml +163 -0
  59. args/rag_config.yaml +167 -0
  60. args/research_config.yaml +89 -0
  61. args/resilience_config.yaml +197 -0
  62. args/ricoas_config.yaml +191 -0
  63. args/security_gates.yaml +763 -0
  64. args/storage_config.yaml +63 -0
  65. args/writeguard_config.yaml +131 -0
  66. args/zta_config.yaml +247 -0
  67. context/__init__.py +6 -0
  68. context/agent/__init__.py +6 -0
  69. context/agent/response_schemas/__init__.py +6 -0
  70. context/agent/response_schemas/debate_position.json +46 -0
  71. context/agent/response_schemas/fitness_scorecard.json +74 -0
  72. context/agent/response_schemas/review_decision.json +39 -0
  73. context/agent/response_schemas/task_decomposition.json +82 -0
  74. context/agent/response_schemas/veto_decision.json +40 -0
  75. context/agentic/__init__.py +6 -0
  76. context/agentic/architecture_patterns.md +269 -0
  77. context/agentic/capability_registry.yaml +223 -0
  78. context/agentic/csp_integration.md +30 -0
  79. context/agentic/csp_mcp_registry.yaml +280 -0
  80. context/agentic/fitness_rubric.md +56 -0
  81. context/agentic/governance_baseline.md +205 -0
  82. context/ci/__init__.py +6 -0
  83. context/ci/worktree_templates.json +44 -0
  84. context/cloud/__init__.py +6 -0
  85. context/cloud/csp_service_registry.json +739 -0
  86. context/compliance/__init__.py +6 -0
  87. context/compliance/ai_rmf_crosswalk.yaml +226 -0
  88. context/compliance/atlas_mitigations.json +293 -0
  89. context/compliance/atlas_techniques.json +833 -0
  90. context/compliance/cisa_sbd_requirements.json +477 -0
  91. context/compliance/cjis_security_policy.json +522 -0
  92. context/compliance/cmmc_practices.json +2494 -0
  93. context/compliance/cmmc_report_template.md +142 -0
  94. context/compliance/cnssi_1253_overlay.json +109 -0
  95. context/compliance/control_crosswalk.json +1914 -0
  96. context/compliance/control_families/__init__.py +6 -0
  97. context/compliance/csp_certifications.json +251 -0
  98. context/compliance/cssp_report_template.md +193 -0
  99. context/compliance/cui_templates/__init__.py +6 -0
  100. context/compliance/cui_templates/banner_block.txt +4 -0
  101. context/compliance/cui_templates/code_header.txt +8 -0
  102. context/compliance/cui_templates/document_template.md +35 -0
  103. context/compliance/data_type_framework_map.json +321 -0
  104. context/compliance/data_type_registry.json +147 -0
  105. context/compliance/dod_cssp_8530.json +463 -0
  106. context/compliance/eu_ai_act_annex_iii.json +108 -0
  107. context/compliance/export_templates/__init__.py +6 -0
  108. context/compliance/export_templates/emass_controls.csv.j2 +4 -0
  109. context/compliance/export_templates/evidence_package.md.j2 +39 -0
  110. context/compliance/export_templates/executive_summary.md.j2 +55 -0
  111. context/compliance/export_templates/poam_tracking.csv.j2 +4 -0
  112. context/compliance/fedramp_20x_ksi_schemas.json +133 -0
  113. context/compliance/fedramp_high_baseline.json +4370 -0
  114. context/compliance/fedramp_moderate_baseline.json +2183 -0
  115. context/compliance/fedramp_report_template.md +181 -0
  116. context/compliance/fips_200_areas.json +362 -0
  117. context/compliance/gao_ai_accountability.json +262 -0
  118. context/compliance/hipaa_security_rule.json +720 -0
  119. context/compliance/hitrust_csf_v11.json +930 -0
  120. context/compliance/impact_level_profiles.json +251 -0
  121. context/compliance/incident_response_template.md +1110 -0
  122. context/compliance/iso27001_2022_controls.json +750 -0
  123. context/compliance/iso27001_nist_bridge.json +382 -0
  124. context/compliance/iso42001_controls.json +254 -0
  125. context/compliance/ivv_checklist_template.md +80 -0
  126. context/compliance/ivv_report_template.md +116 -0
  127. context/compliance/ivv_requirements.json +372 -0
  128. context/compliance/mosa_crosswalk.json +327 -0
  129. context/compliance/mosa_framework.json +250 -0
  130. context/compliance/narrative_templates/AC.md.j2 +101 -0
  131. context/compliance/narrative_templates/AU.md.j2 +106 -0
  132. context/compliance/narrative_templates/IA.md.j2 +104 -0
  133. context/compliance/narrative_templates/SC.md.j2 +102 -0
  134. context/compliance/narrative_templates/SI.md.j2 +111 -0
  135. context/compliance/narrative_templates/__init__.py +6 -0
  136. context/compliance/narrative_templates/default.md.j2 +50 -0
  137. context/compliance/narrative_templates/executive_summary.j2 +27 -0
  138. context/compliance/narrative_templates/poam_milestone.j2 +19 -0
  139. context/compliance/narrative_templates/ssp_section.j2 +11 -0
  140. context/compliance/nist_800_171_controls.json +1552 -0
  141. context/compliance/nist_800_207_crosswalk.json +399 -0
  142. context/compliance/nist_800_207_zta.json +258 -0
  143. context/compliance/nist_800_53.json +324 -0
  144. context/compliance/nist_ai_600_1_genai.json +326 -0
  145. context/compliance/nist_ai_rmf.json +206 -0
  146. context/compliance/nist_sp_800_60_types.json +1667 -0
  147. context/compliance/omb_m25_21_high_impact_ai.json +248 -0
  148. context/compliance/omb_m26_04_unbiased_ai.json +262 -0
  149. context/compliance/owasp_agentic_asi.json +133 -0
  150. context/compliance/owasp_agentic_threats.json +285 -0
  151. context/compliance/owasp_llm_top10.json +274 -0
  152. context/compliance/pci_dss_v4.json +510 -0
  153. context/compliance/poam_template.md +117 -0
  154. context/compliance/safeai_controls.json +512 -0
  155. context/compliance/sbd_report_template.md +77 -0
  156. context/compliance/siem_config_templates/__init__.py +6 -0
  157. context/compliance/siem_config_templates/filebeat.yml +213 -0
  158. context/compliance/siem_config_templates/log_sources.json +208 -0
  159. context/compliance/soc2_trust_criteria.json +661 -0
  160. context/compliance/ssp_template.md +432 -0
  161. context/compliance/stig_templates/__init__.py +6 -0
  162. context/compliance/stig_templates/webapp_stig.json +139 -0
  163. context/compliance/xai_requirements.json +108 -0
  164. context/dashboard/__init__.py +6 -0
  165. context/dashboard/nlq_examples.json +50 -0
  166. context/dashboard/schema_descriptions.json +23 -0
  167. context/icdev_methodology.md +100 -0
  168. context/integration/__init__.py +6 -0
  169. context/integration/approval_workflows.json +32 -0
  170. context/integration/gitlab_field_mappings.json +33 -0
  171. context/integration/jira_field_mappings.json +32 -0
  172. context/integration/reqif_export_schema.json +23 -0
  173. context/integration/servicenow_field_mappings.json +22 -0
  174. context/languages/__init__.py +6 -0
  175. context/languages/framework_patterns.json +205 -0
  176. context/languages/language_registry.json +279 -0
  177. context/llm/__init__.py +6 -0
  178. context/llm/example_provider.py +89 -0
  179. context/marketplace/assets/writeguard-core.yaml +100 -0
  180. context/marketplace/assets/writeguard-govcon.yaml +45 -0
  181. context/marketplace/assets/writeguard-style-guides.yaml +44 -0
  182. context/mbse/__init__.py +6 -0
  183. context/mbse/des_report_template.md +162 -0
  184. context/mbse/des_requirements.json +411 -0
  185. context/mbse/digital_thread_patterns.json +403 -0
  186. context/mbse/reqif_schema.json +280 -0
  187. context/mbse/sysml_element_types.json +432 -0
  188. context/oscal/NIST_SP-800-53_rev5_catalog.json +254987 -0
  189. context/oscal/README.md +43 -0
  190. context/patterns/__init__.py +6 -0
  191. context/profiles/__init__.py +6 -0
  192. context/profiles/dod_baseline_v1.yaml +145 -0
  193. context/profiles/fedramp_baseline_v1.yaml +143 -0
  194. context/profiles/financial_baseline_v1.yaml +142 -0
  195. context/profiles/healthcare_baseline_v1.yaml +135 -0
  196. context/profiles/law_enforcement_v1.yaml +129 -0
  197. context/profiles/startup_v1.yaml +134 -0
  198. context/rag/source_mappings.json +42 -0
  199. context/requirements/__init__.py +6 -0
  200. context/requirements/ambiguity_patterns.json +97 -0
  201. context/requirements/boundary_impact_rules.json +123 -0
  202. context/requirements/default_constitutions.json +67 -0
  203. context/requirements/document_extraction_rules.json +58 -0
  204. context/requirements/gap_patterns.json +108 -0
  205. context/requirements/readiness_rubric.json +78 -0
  206. context/requirements/red_alternative_patterns.json +210 -0
  207. context/requirements/safe_templates.json +72 -0
  208. context/requirements/spec_quality_checklist.json +122 -0
  209. context/research/regulatory_registry.json +114 -0
  210. context/research/verticals/cybersecurity.json +127 -0
  211. context/research/verticals/defense.json +104 -0
  212. context/research/verticals/fintech.json +125 -0
  213. context/research/verticals/healthcare.json +118 -0
  214. context/research/verticals/logistics.json +117 -0
  215. context/research/verticals/trading.json +145 -0
  216. context/simulation/__init__.py +6 -0
  217. context/simulation/architecture_patterns.json +36 -0
  218. context/simulation/coa_templates.json +38 -0
  219. context/simulation/cost_models.json +23 -0
  220. context/simulation/risk_categories.json +46 -0
  221. context/supply_chain/__init__.py +6 -0
  222. context/supply_chain/isa_templates.json +129 -0
  223. context/supply_chain/nist_800_161_controls.json +247 -0
  224. context/supply_chain/scrm_risk_matrix.json +147 -0
  225. context/templates/__init__.py +6 -0
  226. context/templates/ansible/__init__.py +6 -0
  227. context/templates/ansible/playbooks/__init__.py +6 -0
  228. context/templates/ansible/roles/__init__.py +6 -0
  229. context/templates/gitlab_ci/__init__.py +6 -0
  230. context/templates/grafana/__init__.py +6 -0
  231. context/templates/kubernetes/__init__.py +6 -0
  232. context/templates/project/__init__.py +6 -0
  233. context/templates/project/api/__init__.py +6 -0
  234. context/templates/project/cli/__init__.py +6 -0
  235. context/templates/project/data_pipeline/__init__.py +6 -0
  236. context/templates/project/iac/__init__.py +6 -0
  237. context/templates/project/javascript_frontend/__init__.py +6 -0
  238. context/templates/project/javascript_frontend/src/__init__.py +6 -0
  239. context/templates/project/javascript_frontend/tests/__init__.py +6 -0
  240. context/templates/project/microservice/__init__.py +6 -0
  241. context/templates/project/python_backend/__init__.py +6 -0
  242. context/templates/project/python_backend/src/__init__.py +6 -0
  243. context/templates/project/python_backend/tests/__init__.py +6 -0
  244. context/templates/project/python_backend/tests/features/__init__.py +6 -0
  245. context/templates/project/python_backend/tests/steps/__init__.py +6 -0
  246. context/templates/terraform/__init__.py +6 -0
  247. context/templates/terraform/govcloud_base/__init__.py +6 -0
  248. context/templates/terraform/modules/__init__.py +6 -0
  249. context/tone/__init__.py +6 -0
  250. context/writing/grammar_rules/common_errors.json +306 -0
  251. context/writing/grammar_rules/govcon_vocabulary.json +113 -0
  252. context/writing/style_guides/academic.yaml +43 -0
  253. context/writing/style_guides/business.yaml +42 -0
  254. context/writing/style_guides/government.yaml +59 -0
  255. context/writing/style_guides/proposal.yaml +58 -0
  256. context/writing/style_guides/technical.yaml +43 -0
  257. docs/adr/README.md +66 -0
  258. docs/adr/connector-forge-decisions.md +318 -0
  259. docs/adr/core-decisions.md +289 -0
  260. docs/adr/db-decisions.md +94 -0
  261. docs/adr/harness-decisions.md +122 -0
  262. docs/adr/innovation-decisions.md +262 -0
  263. docs/adr/marketplace-decisions.md +109 -0
  264. docs/adr/sbd-decisions.md +109 -0
  265. docs/adr/scale-engine-decisions.md +108 -0
  266. docs/adr/writeguard-decisions.md +136 -0
  267. docs/architecture/bounded-contexts.md +1032 -0
  268. docs/features/phase-65-writeguard.md +139 -0
  269. docs/features/phase-66-marketplace-commerce.md +79 -0
  270. docs/features/phase-67-knowledge-ingestion-rag-autodraft.md +97 -0
  271. docs/features/phase-68-enhanced-autodraft-pipeline.md +109 -0
  272. docs/features/phase-69-proposalai-marketplace-module.md +131 -0
  273. docs/features/phase-70-databridge.md +214 -0
  274. docs/features/phase-71-databridge-messaging.md +102 -0
  275. docs/implementation-plan-architecture-evolution.md +614 -0
  276. docs/marketplace/CONTRIBUTING.md +124 -0
  277. docs/marketplace/module_manifest_schema.yaml +83 -0
  278. docs/research/ai-architecture-patterns-2024-2026.md +1236 -0
  279. docs/research/app-builder-platform-analysis.md +582 -0
  280. docs/research/architecture-patterns-c4-ddd-agentic.md +871 -0
  281. docs/research/flowable-boat-competitive-analysis.md +426 -0
  282. docs/research/modern-dev-practices-2024-2026.md +1615 -0
  283. docs/research/secure-by-design-cloudyrion-adaptation.md +270 -0
  284. goals/agent_management.md +144 -0
  285. goals/ai_accountability.md +90 -0
  286. goals/ai_narratives.md +79 -0
  287. goals/ai_transparency.md +76 -0
  288. goals/ato_simulator.md +78 -0
  289. goals/audit_engine.md +177 -0
  290. goals/bite_sized_plans.md +225 -0
  291. goals/boundary_supply_chain.md +206 -0
  292. goals/brainstorming_gate.md +186 -0
  293. goals/build_app.md +604 -0
  294. goals/cato_live_evidence.md +77 -0
  295. goals/cloudforge.md +106 -0
  296. goals/code_intelligence.md +197 -0
  297. goals/compliance_workflow.md +858 -0
  298. goals/connector_forge.md +133 -0
  299. goals/databridge.md +128 -0
  300. goals/deploy_workflow.md +390 -0
  301. goals/developer_scorecard.md +78 -0
  302. goals/devsecops_workflow.md +408 -0
  303. goals/firmware_sbom.md +79 -0
  304. goals/forge_hub.md +78 -0
  305. goals/golden_path.md +77 -0
  306. goals/harness_engineering.md +91 -0
  307. goals/integration_testing.md +189 -0
  308. goals/knowledge_graph.md +128 -0
  309. goals/maintenance_audit.md +196 -0
  310. goals/manifest.md +50 -0
  311. goals/monitoring.md +126 -0
  312. goals/mosa_workflow.md +463 -0
  313. goals/multi_agent_orchestration.md +68 -0
  314. goals/observability_traceability_xai.md +154 -0
  315. goals/owasp_agentic_security.md +395 -0
  316. goals/pr_intelligence.md +78 -0
  317. goals/requirements_intake.md +213 -0
  318. goals/secure_by_design.md +135 -0
  319. goals/security_scan.md +381 -0
  320. goals/self_healing.md +120 -0
  321. goals/simulation_engine.md +111 -0
  322. goals/subagent_review.md +205 -0
  323. goals/systematic_debugging.md +257 -0
  324. goals/tdd_workflow.md +403 -0
  325. goals/template_exchange.md +77 -0
  326. goals/thread_heatmap.md +77 -0
  327. goals/threat_modeler.md +77 -0
  328. goals/verification_iron_law.md +192 -0
  329. goals/vsm_dashboard.md +76 -0
  330. goals/writeguard.md +89 -0
  331. goals/zero_trust_architecture.md +403 -0
  332. hardprompts/__init__.py +6 -0
  333. hardprompts/agent/__init__.py +6 -0
  334. hardprompts/agent/agentic_architect.md +100 -0
  335. hardprompts/agent/debate_prompt.md +32 -0
  336. hardprompts/agent/fitness_evaluation.md +48 -0
  337. hardprompts/agent/governance_review.md +214 -0
  338. hardprompts/agent/reviewer_prompt.md +34 -0
  339. hardprompts/agent/skill_design.md +172 -0
  340. hardprompts/agent/task_decomposition.md +275 -0
  341. hardprompts/agent/veto_check_prompt.md +33 -0
  342. hardprompts/architect/__init__.py +6 -0
  343. hardprompts/architect/api_design.md +283 -0
  344. hardprompts/architect/data_model.md +277 -0
  345. hardprompts/architect/system_design.md +180 -0
  346. hardprompts/builder/__init__.py +6 -0
  347. hardprompts/builder/code_generation.md +59 -0
  348. hardprompts/builder/refactor.md +58 -0
  349. hardprompts/builder/scaffold_project.md +69 -0
  350. hardprompts/builder/test_generation.md +87 -0
  351. hardprompts/ci/__init__.py +6 -0
  352. hardprompts/ci/worktree_setup.md +35 -0
  353. hardprompts/compliance/__init__.py +6 -0
  354. hardprompts/compliance/cmmc_assessment.md +63 -0
  355. hardprompts/compliance/cssp_assessment.md +75 -0
  356. hardprompts/compliance/cui_marking.md +86 -0
  357. hardprompts/compliance/fedramp_assessment.md +55 -0
  358. hardprompts/compliance/ivv_assessment.md +96 -0
  359. hardprompts/compliance/poam_generation.md +57 -0
  360. hardprompts/compliance/sbd_assessment.md +101 -0
  361. hardprompts/compliance/security_categorization.md +74 -0
  362. hardprompts/compliance/ssp_generation.md +56 -0
  363. hardprompts/compliance/stig_evaluation.md +63 -0
  364. hardprompts/dashboard/__init__.py +6 -0
  365. hardprompts/dashboard/nlq_system_prompt.md +26 -0
  366. hardprompts/infra/__init__.py +6 -0
  367. hardprompts/infra/k8s_manifests.md +118 -0
  368. hardprompts/infra/pipeline_generation.md +160 -0
  369. hardprompts/infra/terraform_generation.md +92 -0
  370. hardprompts/integration/__init__.py +6 -0
  371. hardprompts/integration/approval_review.md +17 -0
  372. hardprompts/integration/jira_mapping.md +25 -0
  373. hardprompts/integration/servicenow_mapping.md +14 -0
  374. hardprompts/knowledge/__init__.py +6 -0
  375. hardprompts/knowledge/pattern_detection.md +73 -0
  376. hardprompts/knowledge/recommendation_engine.md +90 -0
  377. hardprompts/knowledge/root_cause_analysis.md +91 -0
  378. hardprompts/maintenance/__init__.py +6 -0
  379. hardprompts/maintenance/maintenance_assessment.md +82 -0
  380. hardprompts/mbse/__init__.py +6 -0
  381. hardprompts/mbse/digital_thread.md +67 -0
  382. hardprompts/mbse/model_import.md +62 -0
  383. hardprompts/mbse/model_to_code.md +65 -0
  384. hardprompts/modernization/__init__.py +6 -0
  385. hardprompts/modernization/legacy_analysis.md +93 -0
  386. hardprompts/modernization/migration_planning.md +150 -0
  387. hardprompts/modernization/seven_r_assessment.md +107 -0
  388. hardprompts/proposal_draft.md +53 -0
  389. hardprompts/rag_citation.md +12 -0
  390. hardprompts/rag_rerank.md +31 -0
  391. hardprompts/requirements/__init__.py +6 -0
  392. hardprompts/requirements/bdd_generation.md +35 -0
  393. hardprompts/requirements/clarification_prioritization.md +29 -0
  394. hardprompts/requirements/decomposition.md +60 -0
  395. hardprompts/requirements/document_extraction.md +45 -0
  396. hardprompts/requirements/gap_detection.md +70 -0
  397. hardprompts/requirements/intake_conversation.md +101 -0
  398. hardprompts/requirements/readiness_assessment.md +39 -0
  399. hardprompts/requirements/spec_quality.md +33 -0
  400. hardprompts/requirements/traceability_analysis.md +23 -0
  401. hardprompts/security/__init__.py +6 -0
  402. hardprompts/security/endpoint_security.md +78 -0
  403. hardprompts/security/threat_model.md +70 -0
  404. hardprompts/security/vulnerability_assessment.md +81 -0
  405. hardprompts/simulation/__init__.py +6 -0
  406. hardprompts/simulation/architecture_impact.md +27 -0
  407. hardprompts/simulation/coa_alternative.md +27 -0
  408. hardprompts/simulation/coa_generation.md +25 -0
  409. hardprompts/simulation/compliance_impact.md +28 -0
  410. hardprompts/simulation/cost_estimation.md +33 -0
  411. hardprompts/simulation/risk_assessment.md +28 -0
  412. hardprompts/translation/code_translation.md +68 -0
  413. hardprompts/translation/dependency_suggestion.md +44 -0
  414. hardprompts/translation/test_translation.md +64 -0
  415. hardprompts/translation/translation_repair.md +59 -0
  416. icdev-0.0.3.dist-info/METADATA +909 -0
  417. icdev-0.0.3.dist-info/RECORD +1214 -0
  418. icdev-0.0.3.dist-info/WHEEL +5 -0
  419. icdev-0.0.3.dist-info/entry_points.txt +9 -0
  420. icdev-0.0.3.dist-info/licenses/LICENSE +201 -0
  421. icdev-0.0.3.dist-info/licenses/NOTICE +11 -0
  422. icdev-0.0.3.dist-info/top_level.txt +7 -0
  423. memory/MEMORY.md +52 -0
  424. memory/logs/2026-02-14.md +17 -0
  425. memory/logs/2026-03-03.md +2 -0
  426. memory/logs/__init__.py +1 -0
  427. tools/a2a/icdev_callback_client.py +210 -0
  428. tools/agent/cards/architect_card.json +29 -0
  429. tools/agent/cards/builder_card.json +34 -0
  430. tools/agent/cards/compliance_card.json +29 -0
  431. tools/agent/cards/connector_forge_card.json +49 -0
  432. tools/agent/cards/devsecops_zta_card.json +24 -0
  433. tools/agent/cards/knowledge_card.json +29 -0
  434. tools/agent/cards/monitor_card.json +29 -0
  435. tools/agent/cards/orchestrator_card.json +29 -0
  436. tools/agent/cards/requirements_analyst_card.json +24 -0
  437. tools/agent/cards/security_card.json +29 -0
  438. tools/agent/cards/simulation_card.json +24 -0
  439. tools/agent/cards/supply_chain_card.json +24 -0
  440. tools/analysis/__init__.py +1 -0
  441. tools/analysis/code_analyzer.py +770 -0
  442. tools/analysis/runtime_feedback.py +379 -0
  443. tools/analytics/__init__.py +2 -0
  444. tools/analytics/scorecard.py +538 -0
  445. tools/analytics/vsm_engine.py +612 -0
  446. tools/architecture/__init__.py +2 -0
  447. tools/architecture/adr_extractor.py +393 -0
  448. tools/audit/__init__.py +1 -0
  449. tools/audit/audit_logger.py +199 -0
  450. tools/audit/audit_query.py +153 -0
  451. tools/audit/decision_recorder.py +73 -0
  452. tools/audit_engine/__init__.py +12 -0
  453. tools/audit_engine/ai_advisor.py +906 -0
  454. tools/audit_engine/cli.py +286 -0
  455. tools/audit_engine/comparator.py +305 -0
  456. tools/audit_engine/eject_scaffolder.py +399 -0
  457. tools/audit_engine/engine.py +614 -0
  458. tools/audit_engine/git_fetcher.py +341 -0
  459. tools/audit_engine/regime_loader.py +200 -0
  460. tools/audit_engine/regime_updater.py +325 -0
  461. tools/audit_engine/report_card.py +289 -0
  462. tools/audit_engine/scanner.py +684 -0
  463. tools/audit_engine/self_heal.py +1042 -0
  464. tools/ci/__init__.py +2 -0
  465. tools/ci/connectors/__init__.py +2 -0
  466. tools/ci/connectors/base_connector.py +80 -0
  467. tools/ci/connectors/connector_registry.py +188 -0
  468. tools/ci/connectors/mattermost_connector.py +159 -0
  469. tools/ci/connectors/slack_connector.py +197 -0
  470. tools/ci/core/__init__.py +2 -0
  471. tools/ci/core/air_gap_detector.py +115 -0
  472. tools/ci/core/comment_handler.py +192 -0
  473. tools/ci/core/conversation_manager.py +480 -0
  474. tools/ci/core/event_envelope.py +500 -0
  475. tools/ci/core/event_router.py +444 -0
  476. tools/ci/core/failure_parser.py +397 -0
  477. tools/ci/core/recovery_engine.py +527 -0
  478. tools/ci/gate_enforcer.py +361 -0
  479. tools/ci/modules/__init__.py +2 -0
  480. tools/ci/modules/agent.py +271 -0
  481. tools/ci/modules/git_ops.py +175 -0
  482. tools/ci/modules/state.py +117 -0
  483. tools/ci/modules/vcs.py +303 -0
  484. tools/ci/modules/workflow_ops.py +295 -0
  485. tools/ci/modules/worktree.py +337 -0
  486. tools/ci/pipeline_config_generator.py +558 -0
  487. tools/ci/pr_intelligence.py +485 -0
  488. tools/ci/triggers/__init__.py +2 -0
  489. tools/ci/triggers/gitlab_task_monitor.py +327 -0
  490. tools/ci/triggers/poll_trigger.py +237 -0
  491. tools/ci/triggers/webhook_server.py +356 -0
  492. tools/ci/workflows/__init__.py +2 -0
  493. tools/ci/workflows/icdev_build.py +140 -0
  494. tools/ci/workflows/icdev_comply.py +284 -0
  495. tools/ci/workflows/icdev_document.py +152 -0
  496. tools/ci/workflows/icdev_e2e.py +188 -0
  497. tools/ci/workflows/icdev_patch.py +186 -0
  498. tools/ci/workflows/icdev_plan.py +202 -0
  499. tools/ci/workflows/icdev_plan_build.py +41 -0
  500. tools/ci/workflows/icdev_plan_build_test.py +46 -0
  501. tools/ci/workflows/icdev_plan_build_test_review.py +47 -0
  502. tools/ci/workflows/icdev_review.py +126 -0
  503. tools/ci/workflows/icdev_sdlc.py +261 -0
  504. tools/ci/workflows/icdev_test.py +240 -0
  505. tools/cli/__init__.py +1 -0
  506. tools/cli/output_formatter.py +756 -0
  507. tools/cloudforge/__init__.py +12 -0
  508. tools/cloudforge/airgap/__init__.py +2 -0
  509. tools/cloudforge/airgap/il_classifier.py +70 -0
  510. tools/cloudforge/airgap/offline_validator.py +42 -0
  511. tools/cloudforge/airgap/shift_emulator.py +155 -0
  512. tools/cloudforge/airgap/sneakernet.py +91 -0
  513. tools/cloudforge/cd_hub/__init__.py +2 -0
  514. tools/cloudforge/cd_hub/canary_deployer.py +88 -0
  515. tools/cloudforge/cd_hub/gitops_renderer.py +123 -0
  516. tools/cloudforge/cd_hub/hub_controller.py +143 -0
  517. tools/cloudforge/cd_hub/pipeline_bridge.py +30 -0
  518. tools/cloudforge/cd_hub/rollback_engine.py +29 -0
  519. tools/cloudforge/cd_hub/spoke_agent.py +51 -0
  520. tools/cloudforge/compliance/__init__.py +2 -0
  521. tools/cloudforge/compliance/ato_accelerator.py +272 -0
  522. tools/cloudforge/compliance/control_inheritor.py +127 -0
  523. tools/cloudforge/compliance/evidence_generator.py +129 -0
  524. tools/cloudforge/compliance/poam_bridge.py +41 -0
  525. tools/cloudforge/compliance/ssp_bridge.py +52 -0
  526. tools/cloudforge/compliance/stig_bridge.py +41 -0
  527. tools/cloudforge/container_forge/__init__.py +2 -0
  528. tools/cloudforge/container_forge/bigbang_renderer.py +85 -0
  529. tools/cloudforge/container_forge/hardener.py +169 -0
  530. tools/cloudforge/container_forge/image_scanner_bridge.py +33 -0
  531. tools/cloudforge/container_forge/runtime_policy.py +87 -0
  532. tools/cloudforge/container_forge/sbom_bridge.py +42 -0
  533. tools/cloudforge/finops/__init__.py +2 -0
  534. tools/cloudforge/finops/anomaly_detector.py +78 -0
  535. tools/cloudforge/finops/budget_tracker.py +96 -0
  536. tools/cloudforge/finops/chargeback.py +69 -0
  537. tools/cloudforge/finops/cost_collector.py +141 -0
  538. tools/cloudforge/finops/optimizer.py +55 -0
  539. tools/cloudforge/hybrid/__init__.py +2 -0
  540. tools/cloudforge/hybrid/connection_manager.py +141 -0
  541. tools/cloudforge/hybrid/dns_federator.py +56 -0
  542. tools/cloudforge/hybrid/health_monitor.py +108 -0
  543. tools/cloudforge/hybrid/identity_federator.py +53 -0
  544. tools/cloudforge/hybrid/network_bridge.py +68 -0
  545. tools/cloudforge/hybrid/topology_manager.py +147 -0
  546. tools/cloudforge/hybrid/workload_abstractor.py +92 -0
  547. tools/cloudforge/iac/__init__.py +2 -0
  548. tools/cloudforge/iac/drift_detector.py +154 -0
  549. tools/cloudforge/iac/module_library.py +265 -0
  550. tools/cloudforge/iac/opentofu_adapter.py +89 -0
  551. tools/cloudforge/iac/pulumi_renderer.py +292 -0
  552. tools/cloudforge/iac/state_backend.py +146 -0
  553. tools/cloudforge/iac/terraform_renderer.py +626 -0
  554. tools/cloudforge/landing_zone/__init__.py +2 -0
  555. tools/cloudforge/landing_zone/blueprint_loader.py +98 -0
  556. tools/cloudforge/landing_zone/blueprint_validator.py +113 -0
  557. tools/cloudforge/landing_zone/zone_provisioner.py +306 -0
  558. tools/cloudforge/landing_zone/zone_state.py +143 -0
  559. tools/cloudforge/mbse_thread/__init__.py +2 -0
  560. tools/cloudforge/mbse_thread/ato_thread_weaver.py +111 -0
  561. tools/cloudforge/mbse_thread/control_tracer.py +68 -0
  562. tools/cloudforge/mbse_thread/system_boundary.py +83 -0
  563. tools/cloudforge/metastore/__init__.py +2 -0
  564. tools/cloudforge/metastore/dependency_graph.py +202 -0
  565. tools/cloudforge/metastore/discovery.py +192 -0
  566. tools/cloudforge/metastore/registry.py +185 -0
  567. tools/cloudforge/metastore/rto_tracker.py +92 -0
  568. tools/cloudforge/metastore/runbook_linker.py +82 -0
  569. tools/cloudforge/migration/__init__.py +2 -0
  570. tools/cloudforge/migration/assessor.py +187 -0
  571. tools/cloudforge/migration/cutover_orchestrator.py +117 -0
  572. tools/cloudforge/migration/databridge_bridge.py +92 -0
  573. tools/cloudforge/migration/planner.py +98 -0
  574. tools/cloudforge/migration/risk_scorer.py +97 -0
  575. tools/cloudforge/migration/validation_runner.py +45 -0
  576. tools/cloudforge/migration/workload_inventory.py +107 -0
  577. tools/cloudforge/provider.py +319 -0
  578. tools/cloudforge/providers/__init__.py +2 -0
  579. tools/cloudforge/providers/aws_commercial.py +92 -0
  580. tools/cloudforge/providers/aws_govcloud.py +229 -0
  581. tools/cloudforge/providers/aws_secret.py +83 -0
  582. tools/cloudforge/providers/azure_commercial.py +80 -0
  583. tools/cloudforge/providers/azure_gov.py +91 -0
  584. tools/cloudforge/providers/azure_secret.py +71 -0
  585. tools/cloudforge/providers/gcp.py +102 -0
  586. tools/cloudforge/providers/oci.py +102 -0
  587. tools/cloudforge/registry.py +140 -0
  588. tools/cloudforge/runbooks/__init__.py +2 -0
  589. tools/cloudforge/runbooks/ai_generator.py +119 -0
  590. tools/cloudforge/runbooks/dag_validator.py +219 -0
  591. tools/cloudforge/runbooks/engine.py +470 -0
  592. tools/cloudforge/runbooks/models.py +99 -0
  593. tools/cloudforge/runbooks/snippet_library.py +158 -0
  594. tools/cloudforge/runbooks/template_loader.py +122 -0
  595. tools/cloudforge/runbooks/visualization.py +108 -0
  596. tools/cloudforge/siem/__init__.py +2 -0
  597. tools/cloudforge/siem/alert_rules.py +86 -0
  598. tools/cloudforge/siem/correlation_engine.py +61 -0
  599. tools/cloudforge/siem/log_aggregator.py +113 -0
  600. tools/cloudforge/siem/siem_dashboard_data.py +28 -0
  601. tools/cloudforge/supply_chain/__init__.py +2 -0
  602. tools/cloudforge/supply_chain/bridge.py +33 -0
  603. tools/cloudforge/supply_chain/iac_dependency_scanner.py +36 -0
  604. tools/cloudforge/supply_chain/provider_trust_scorer.py +54 -0
  605. tools/compat/__init__.py +21 -0
  606. tools/compat/cli_harmonizer.py +251 -0
  607. tools/compat/datetime_utils.py +18 -0
  608. tools/compat/db_utils.py +190 -0
  609. tools/compat/platform_utils.py +123 -0
  610. tools/compliance/__init__.py +1 -0
  611. tools/compliance/accountability_manager.py +391 -0
  612. tools/compliance/ai_accountability_audit.py +287 -0
  613. tools/compliance/ai_impact_assessor.py +267 -0
  614. tools/compliance/ai_incident_response.py +295 -0
  615. tools/compliance/ai_inventory_manager.py +233 -0
  616. tools/compliance/ai_reassessment_scheduler.py +250 -0
  617. tools/compliance/ai_transparency_audit.py +247 -0
  618. tools/compliance/atlas_assessor.py +276 -0
  619. tools/compliance/atlas_report_generator.py +1199 -0
  620. tools/compliance/base_assessor.py +591 -0
  621. tools/compliance/cato_live_engine.py +607 -0
  622. tools/compliance/cato_monitor.py +1371 -0
  623. tools/compliance/cato_scheduler.py +698 -0
  624. tools/compliance/cjis_assessor.py +76 -0
  625. tools/compliance/classification_manager.py +1340 -0
  626. tools/compliance/cmmc_assessor.py +1478 -0
  627. tools/compliance/cmmc_report_generator.py +1087 -0
  628. tools/compliance/compliance_detector.py +452 -0
  629. tools/compliance/compliance_exporter.py +418 -0
  630. tools/compliance/compliance_status.py +810 -0
  631. tools/compliance/control_mapper.py +488 -0
  632. tools/compliance/crosswalk_engine.py +1208 -0
  633. tools/compliance/cssp_assessor.py +1032 -0
  634. tools/compliance/cssp_evidence_collector.py +716 -0
  635. tools/compliance/cssp_report_generator.py +1103 -0
  636. tools/compliance/cui_marker.py +387 -0
  637. tools/compliance/diagram_validator.py +599 -0
  638. tools/compliance/emass/__init__.py +2 -0
  639. tools/compliance/emass/emass_client.py +822 -0
  640. tools/compliance/emass/emass_export.py +758 -0
  641. tools/compliance/emass/emass_sync.py +807 -0
  642. tools/compliance/eu_ai_act_classifier.py +193 -0
  643. tools/compliance/evidence_collector.py +459 -0
  644. tools/compliance/fairness_assessor.py +310 -0
  645. tools/compliance/fedramp_20x_ksi_emitter.py +692 -0
  646. tools/compliance/fedramp_assessor.py +1795 -0
  647. tools/compliance/fedramp_authorization_packager.py +137 -0
  648. tools/compliance/fedramp_ksi_generator.py +349 -0
  649. tools/compliance/fedramp_report_generator.py +1115 -0
  650. tools/compliance/fips199_categorizer.py +869 -0
  651. tools/compliance/fips200_validator.py +304 -0
  652. tools/compliance/firmware_sbom.py +646 -0
  653. tools/compliance/gao_ai_assessor.py +228 -0
  654. tools/compliance/gao_evidence_builder.py +302 -0
  655. tools/compliance/hipaa_assessor.py +78 -0
  656. tools/compliance/hitrust_assessor.py +49 -0
  657. tools/compliance/incident_response_plan.py +705 -0
  658. tools/compliance/inheritance_engine.py +693 -0
  659. tools/compliance/iso27001_assessor.py +92 -0
  660. tools/compliance/iso42001_assessor.py +114 -0
  661. tools/compliance/ivv_assessor.py +2314 -0
  662. tools/compliance/ivv_report_generator.py +1649 -0
  663. tools/compliance/model_card_generator.py +291 -0
  664. tools/compliance/mosa_assessor.py +117 -0
  665. tools/compliance/multi_regime_assessor.py +441 -0
  666. tools/compliance/narrative_generator.py +1012 -0
  667. tools/compliance/narrative_quality_gate.py +701 -0
  668. tools/compliance/narrative_workflow.py +814 -0
  669. tools/compliance/nist_800_207_assessor.py +191 -0
  670. tools/compliance/nist_ai_600_1_assessor.py +185 -0
  671. tools/compliance/nist_ai_rmf_assessor.py +110 -0
  672. tools/compliance/nist_lookup.py +244 -0
  673. tools/compliance/omb_m25_21_assessor.py +225 -0
  674. tools/compliance/omb_m26_04_assessor.py +185 -0
  675. tools/compliance/oscal_catalog_adapter.py +395 -0
  676. tools/compliance/oscal_generator.py +2157 -0
  677. tools/compliance/oscal_tools.py +1182 -0
  678. tools/compliance/oscal_validator.py +692 -0
  679. tools/compliance/owasp_agentic_assessor.py +227 -0
  680. tools/compliance/owasp_asi_assessor.py +197 -0
  681. tools/compliance/owasp_llm_assessor.py +245 -0
  682. tools/compliance/pci_dss_assessor.py +80 -0
  683. tools/compliance/pi_compliance_tracker.py +1447 -0
  684. tools/compliance/poam_generator.py +388 -0
  685. tools/compliance/resolve_marking.py +272 -0
  686. tools/compliance/sbd_assessor.py +2070 -0
  687. tools/compliance/sbd_report_generator.py +1223 -0
  688. tools/compliance/sbom_generator.py +993 -0
  689. tools/compliance/siem_config_generator.py +661 -0
  690. tools/compliance/slsa_attestation_generator.py +479 -0
  691. tools/compliance/soc2_assessor.py +77 -0
  692. tools/compliance/ssp_generator.py +556 -0
  693. tools/compliance/stig_checker.py +712 -0
  694. tools/compliance/swft_evidence_bundler.py +326 -0
  695. tools/compliance/system_card_generator.py +303 -0
  696. tools/compliance/template_exchange.py +513 -0
  697. tools/compliance/traceability_matrix.py +1268 -0
  698. tools/compliance/universal_classification_manager.py +1159 -0
  699. tools/compliance/xacta/__init__.py +2 -0
  700. tools/compliance/xacta/xacta_client.py +438 -0
  701. tools/compliance/xacta/xacta_export.py +546 -0
  702. tools/compliance/xacta/xacta_sync.py +322 -0
  703. tools/compliance/xai_assessor.py +231 -0
  704. tools/core/__init__.py +2 -0
  705. tools/core/circuit_breaker.py +353 -0
  706. tools/core/compliance_sidecar.py +344 -0
  707. tools/core/container.py +110 -0
  708. tools/core/errors.py +256 -0
  709. tools/core/feature_flags.py +311 -0
  710. tools/core/task_dlq.py +350 -0
  711. tools/dashboard/__init__.py +2 -0
  712. tools/dashboard/app.py +6288 -0
  713. tools/dashboard/templates/agent_evolution.html +287 -0
  714. tools/dashboard/templates/agents/list.html +71 -0
  715. tools/dashboard/templates/agents.html +132 -0
  716. tools/dashboard/templates/architecture.html +289 -0
  717. tools/dashboard/templates/ato_simulator.html +170 -0
  718. tools/dashboard/templates/audit_engine.html +844 -0
  719. tools/dashboard/templates/base.html +236 -0
  720. tools/dashboard/templates/cato_live.html +116 -0
  721. tools/dashboard/templates/cloudforge.html +195 -0
  722. tools/dashboard/templates/cloudforge_finops.html +111 -0
  723. tools/dashboard/templates/cloudforge_hybrid.html +122 -0
  724. tools/dashboard/templates/cloudforge_metastore.html +234 -0
  725. tools/dashboard/templates/cloudforge_migration.html +87 -0
  726. tools/dashboard/templates/cloudforge_runbooks.html +201 -0
  727. tools/dashboard/templates/cloudforge_siem.html +94 -0
  728. tools/dashboard/templates/compliance_accel.html +292 -0
  729. tools/dashboard/templates/crashes.html +122 -0
  730. tools/dashboard/templates/databridge.html +305 -0
  731. tools/dashboard/templates/databridge_analytics.html +195 -0
  732. tools/dashboard/templates/databridge_mapping.html +345 -0
  733. tools/dashboard/templates/databridge_messaging.html +321 -0
  734. tools/dashboard/templates/decisions.html +258 -0
  735. tools/dashboard/templates/devices.html +151 -0
  736. tools/dashboard/templates/devsecops_maturity.html +278 -0
  737. tools/dashboard/templates/edge_ai.html +128 -0
  738. tools/dashboard/templates/firmware.html +120 -0
  739. tools/dashboard/templates/firmware_sbom.html +193 -0
  740. tools/dashboard/templates/forge_hub.html +196 -0
  741. tools/dashboard/templates/forge_studio.html +379 -0
  742. tools/dashboard/templates/forge_studio_analytics.html +360 -0
  743. tools/dashboard/templates/forge_studio_builder.html +1637 -0
  744. tools/dashboard/templates/forge_studio_compliance.html +310 -0
  745. tools/dashboard/templates/forge_studio_deploy.html +573 -0
  746. tools/dashboard/templates/forge_studio_enterprise.html +888 -0
  747. tools/dashboard/templates/forge_studio_marketplace.html +502 -0
  748. tools/dashboard/templates/forge_studio_workflow.html +696 -0
  749. tools/dashboard/templates/golden_path.html +175 -0
  750. tools/dashboard/templates/govcon.html +280 -0
  751. tools/dashboard/templates/harness.html +148 -0
  752. tools/dashboard/templates/index.html +207 -0
  753. tools/dashboard/templates/intelligence.html +336 -0
  754. tools/dashboard/templates/knowledge/index.html +190 -0
  755. tools/dashboard/templates/knowledge_graph.html +739 -0
  756. tools/dashboard/templates/login.html +51 -0
  757. tools/dashboard/templates/marketplace.html +336 -0
  758. tools/dashboard/templates/marketplace_admin.html +247 -0
  759. tools/dashboard/templates/missions.html +403 -0
  760. tools/dashboard/templates/narratives.html +154 -0
  761. tools/dashboard/templates/pr_intelligence.html +151 -0
  762. tools/dashboard/templates/proposals/detail.html +300 -0
  763. tools/dashboard/templates/proposals/list.html +52 -0
  764. tools/dashboard/templates/proposals/sam_detail.html +132 -0
  765. tools/dashboard/templates/proposals/section_detail.html +375 -0
  766. tools/dashboard/templates/research.html +222 -0
  767. tools/dashboard/templates/resilience.html +300 -0
  768. tools/dashboard/templates/scorecard.html +162 -0
  769. tools/dashboard/templates/simulator.html +131 -0
  770. tools/dashboard/templates/template_exchange.html +147 -0
  771. tools/dashboard/templates/thread_heatmap.html +151 -0
  772. tools/dashboard/templates/threat_model.html +195 -0
  773. tools/dashboard/templates/vsm.html +141 -0
  774. tools/dashboard/templates/writeguard.html +277 -0
  775. tools/databridge/__init__.py +5 -0
  776. tools/databridge/agent/__init__.py +2 -0
  777. tools/databridge/agent/daemon.py +227 -0
  778. tools/databridge/agent/tunnel.py +101 -0
  779. tools/databridge/agent/ws_relay.py +91 -0
  780. tools/databridge/analytics.py +167 -0
  781. tools/databridge/arrow_pipeline.py +327 -0
  782. tools/databridge/connection_manager.py +424 -0
  783. tools/databridge/connector.py +331 -0
  784. tools/databridge/connectors/__init__.py +2 -0
  785. tools/databridge/connectors/argocd_connector.py +160 -0
  786. tools/databridge/connectors/avro_connector.py +203 -0
  787. tools/databridge/connectors/azure_blob.py +63 -0
  788. tools/databridge/connectors/cdc_connector.py +205 -0
  789. tools/databridge/connectors/csv_connector.py +172 -0
  790. tools/databridge/connectors/datadog_connector.py +153 -0
  791. tools/databridge/connectors/discord_messaging.py +215 -0
  792. tools/databridge/connectors/dynamics365.py +151 -0
  793. tools/databridge/connectors/elasticsearch_connector.py +145 -0
  794. tools/databridge/connectors/email_base.py +114 -0
  795. tools/databridge/connectors/excel_connector.py +175 -0
  796. tools/databridge/connectors/fsspec_base.py +300 -0
  797. tools/databridge/connectors/gcs.py +53 -0
  798. tools/databridge/connectors/github_connector.py +138 -0
  799. tools/databridge/connectors/gitlab_connector.py +132 -0
  800. tools/databridge/connectors/gmail_connector.py +182 -0
  801. tools/databridge/connectors/hdfs.py +57 -0
  802. tools/databridge/connectors/health_base.py +401 -0
  803. tools/databridge/connectors/hubspot.py +124 -0
  804. tools/databridge/connectors/imap_connector.py +171 -0
  805. tools/databridge/connectors/jenkins_connector.py +138 -0
  806. tools/databridge/connectors/jira_connector.py +86 -0
  807. tools/databridge/connectors/json_connector.py +184 -0
  808. tools/databridge/connectors/kafka_connector.py +246 -0
  809. tools/databridge/connectors/kinesis_connector.py +238 -0
  810. tools/databridge/connectors/local_fs.py +30 -0
  811. tools/databridge/connectors/matrix.py +197 -0
  812. tools/databridge/connectors/mattermost_messaging.py +184 -0
  813. tools/databridge/connectors/messaging_base.py +172 -0
  814. tools/databridge/connectors/mssql.py +63 -0
  815. tools/databridge/connectors/mysql.py +57 -0
  816. tools/databridge/connectors/netsuite.py +170 -0
  817. tools/databridge/connectors/o365_mail.py +196 -0
  818. tools/databridge/connectors/oracle.py +65 -0
  819. tools/databridge/connectors/pagerduty_connector.py +162 -0
  820. tools/databridge/connectors/parquet_connector.py +131 -0
  821. tools/databridge/connectors/postgresql.py +58 -0
  822. tools/databridge/connectors/s3.py +65 -0
  823. tools/databridge/connectors/saas_base.py +198 -0
  824. tools/databridge/connectors/salesforce.py +126 -0
  825. tools/databridge/connectors/sap.py +89 -0
  826. tools/databridge/connectors/servicenow.py +60 -0
  827. tools/databridge/connectors/signal_messaging.py +150 -0
  828. tools/databridge/connectors/slack_messaging.py +203 -0
  829. tools/databridge/connectors/smtp_connector.py +126 -0
  830. tools/databridge/connectors/soap_base.py +258 -0
  831. tools/databridge/connectors/splunk_connector.py +171 -0
  832. tools/databridge/connectors/sql_base.py +310 -0
  833. tools/databridge/connectors/sqlite_connector.py +76 -0
  834. tools/databridge/connectors/teams.py +148 -0
  835. tools/databridge/connectors/telegram.py +192 -0
  836. tools/databridge/connectors/whatsapp.py +137 -0
  837. tools/databridge/data_profiler.py +99 -0
  838. tools/databridge/forge/__init__.py +6 -0
  839. tools/databridge/forge/base_selector.py +150 -0
  840. tools/databridge/forge/code_generator.py +206 -0
  841. tools/databridge/forge/community_hub.py +539 -0
  842. tools/databridge/forge/forge_agent.py +306 -0
  843. tools/databridge/forge/import_handler.py +133 -0
  844. tools/databridge/forge/integration_tester.py +127 -0
  845. tools/databridge/forge/marketplace_publisher.py +164 -0
  846. tools/databridge/forge/promoter.py +159 -0
  847. tools/databridge/forge/sandbox_manager.py +257 -0
  848. tools/databridge/forge/spec_parser.py +358 -0
  849. tools/databridge/forge/static_validator.py +363 -0
  850. tools/databridge/forge/templates/__init__.py +591 -0
  851. tools/databridge/format_converter.py +188 -0
  852. tools/databridge/mapping_engine.py +348 -0
  853. tools/databridge/messaging/__init__.py +5 -0
  854. tools/databridge/messaging/agent_bridge.py +254 -0
  855. tools/databridge/messaging/message_envelope.py +111 -0
  856. tools/databridge/messaging/message_logger.py +204 -0
  857. tools/databridge/messaging/messaging_daemon.py +326 -0
  858. tools/databridge/messaging/oauth2_manager.py +411 -0
  859. tools/databridge/pii_detector.py +221 -0
  860. tools/databridge/registry.py +352 -0
  861. tools/databridge/relay_server.py +105 -0
  862. tools/databridge/scale/__init__.py +16 -0
  863. tools/databridge/scale/backpressure.py +134 -0
  864. tools/databridge/scale/chunked_pipeline.py +169 -0
  865. tools/databridge/scale/connection_pool.py +293 -0
  866. tools/databridge/scale/engine.py +492 -0
  867. tools/databridge/scale/worker_pool.py +140 -0
  868. tools/databridge/scale/write_batcher.py +250 -0
  869. tools/databridge/schema_engine.py +324 -0
  870. tools/databridge/stream_manager.py +225 -0
  871. tools/databridge/sync_engine.py +411 -0
  872. tools/databridge/transforms.py +302 -0
  873. tools/db/__init__.py +1 -0
  874. tools/db/backup.py +312 -0
  875. tools/db/backup_manager.py +832 -0
  876. tools/db/init_icdev_db.py +7753 -0
  877. tools/db/init_sparkpilot_db.py +431 -0
  878. tools/db/migrate.py +177 -0
  879. tools/db/migrate_innovation_audit.py +165 -0
  880. tools/db/migration_runner.py +548 -0
  881. tools/db/migrations/001_baseline/meta.json +9 -0
  882. tools/db/migrations/001_baseline/up.py +67 -0
  883. tools/db/migrations/002_memory_enhancements/down.sql +8 -0
  884. tools/db/migrations/002_memory_enhancements/meta.json +9 -0
  885. tools/db/migrations/002_memory_enhancements/up.py +119 -0
  886. tools/db/migrations/003_dev_profiles/meta.json +8 -0
  887. tools/db/migrations/003_dev_profiles/up.py +93 -0
  888. tools/db/migrations/004_innovation_engine/down.py +19 -0
  889. tools/db/migrations/004_innovation_engine/up.py +227 -0
  890. tools/db/migrations/005_phase_37_ai_security/down.py +19 -0
  891. tools/db/migrations/005_phase_37_ai_security/up.py +257 -0
  892. tools/db/migrations/006_phase_36_evolution/down.py +21 -0
  893. tools/db/migrations/006_phase_36_evolution/up.py +323 -0
  894. tools/db/migrations/007_phase_38_cloud/down.py +14 -0
  895. tools/db/migrations/007_phase_38_cloud/up.py +110 -0
  896. tools/db/migrations/008_phase36_37_integration/up.py +55 -0
  897. tools/db/migrations/__init__.py +2 -0
  898. tools/db/pg_migrate.py +642 -0
  899. tools/db/storage.py +1080 -0
  900. tools/decisions/__init__.py +2 -0
  901. tools/decisions/dmn_engine.py +695 -0
  902. tools/devsecops/__init__.py +2 -0
  903. tools/devsecops/attestation_manager.py +449 -0
  904. tools/devsecops/network_segmentation_generator.py +604 -0
  905. tools/devsecops/pdp_config_generator.py +1246 -0
  906. tools/devsecops/pipeline_security_generator.py +475 -0
  907. tools/devsecops/policy_generator.py +644 -0
  908. tools/devsecops/profile_manager.py +374 -0
  909. tools/devsecops/service_mesh_generator.py +1063 -0
  910. tools/devsecops/zta_maturity_scorer.py +355 -0
  911. tools/devsecops/zta_terraform_generator.py +1301 -0
  912. tools/edge_ai/__init__.py +2 -0
  913. tools/edge_ai/model_manager.py +200 -0
  914. tools/embedded/__init__.py +2 -0
  915. tools/embedded/cmake_generator.py +318 -0
  916. tools/embedded/crash_analyzer.py +191 -0
  917. tools/embedded/nl_to_firmware.py +277 -0
  918. tools/events/__init__.py +1 -0
  919. tools/events/event_bus.py +199 -0
  920. tools/finetune/pair_generator.py +832 -0
  921. tools/fleet/__init__.py +2 -0
  922. tools/fleet/device_registry.py +148 -0
  923. tools/fleet/ota_manager.py +153 -0
  924. tools/forge_studio/__init__.py +13 -0
  925. tools/forge_studio/analytics/__init__.py +0 -0
  926. tools/forge_studio/analytics/process_miner.py +383 -0
  927. tools/forge_studio/audit.py +183 -0
  928. tools/forge_studio/blueprint/__init__.py +2 -0
  929. tools/forge_studio/blueprint/build_tracker.py +317 -0
  930. tools/forge_studio/blueprint/export_engine.py +441 -0
  931. tools/forge_studio/blueprint/parent_client.py +335 -0
  932. tools/forge_studio/catalog/__init__.py +2 -0
  933. tools/forge_studio/catalog/component_registry.py +176 -0
  934. tools/forge_studio/catalog/schema_validator.py +193 -0
  935. tools/forge_studio/compliance/__init__.py +1 -0
  936. tools/forge_studio/compliance/compliance_wiring.py +554 -0
  937. tools/forge_studio/deploy/__init__.py +1 -0
  938. tools/forge_studio/deploy/airgap_packager.py +466 -0
  939. tools/forge_studio/deploy/deploy_engine.py +1792 -0
  940. tools/forge_studio/deploy/env_manager.py +431 -0
  941. tools/forge_studio/eject/__init__.py +2 -0
  942. tools/forge_studio/eject/docker_compose_generator.py +237 -0
  943. tools/forge_studio/eject/eject_engine.py +230 -0
  944. tools/forge_studio/eject/expo_scaffolder.py +303 -0
  945. tools/forge_studio/eject/nextjs_scaffolder.py +338 -0
  946. tools/forge_studio/enterprise/__init__.py +0 -0
  947. tools/forge_studio/enterprise/custom_frameworks.py +826 -0
  948. tools/forge_studio/enterprise/hardening_engine.py +1530 -0
  949. tools/forge_studio/enterprise/sso_manager.py +718 -0
  950. tools/forge_studio/enterprise/whitelabel_engine.py +887 -0
  951. tools/forge_studio/formula/__init__.py +0 -0
  952. tools/forge_studio/formula/expression_engine.py +562 -0
  953. tools/forge_studio/formula/formula_registry.py +265 -0
  954. tools/forge_studio/generator/__init__.py +2 -0
  955. tools/forge_studio/generator/app_generator.py +584 -0
  956. tools/forge_studio/generator/complexity_detector.py +368 -0
  957. tools/forge_studio/generator/prompt_templates.py +104 -0
  958. tools/forge_studio/generator/spec_builder.py +192 -0
  959. tools/forge_studio/intake_bridge.py +898 -0
  960. tools/forge_studio/marketplace/__init__.py +0 -0
  961. tools/forge_studio/marketplace/component_hub.py +428 -0
  962. tools/forge_studio/models.py +369 -0
  963. tools/forge_studio/renderer/__init__.py +2 -0
  964. tools/forge_studio/renderer/json_render_engine.py +623 -0
  965. tools/forge_studio/renderer/layout_engine.py +214 -0
  966. tools/forge_studio/renderer/rn_component_map.py +182 -0
  967. tools/forge_studio/supabase/__init__.py +2 -0
  968. tools/forge_studio/supabase/auth_generator.py +283 -0
  969. tools/forge_studio/supabase/migration_generator.py +93 -0
  970. tools/forge_studio/supabase/schema_generator.py +281 -0
  971. tools/forge_studio/tenant_manager.py +387 -0
  972. tools/forge_studio/workflow/__init__.py +2 -0
  973. tools/forge_studio/workflow/bpmn_adapter.py +489 -0
  974. tools/govcon/draft_orchestrator.py +1151 -0
  975. tools/govcon/engine_enrichment.py +373 -0
  976. tools/govcon/knowledge_base.py +487 -0
  977. tools/govcon/knowledge_ingestion.py +510 -0
  978. tools/govcon/sam_scanner.py +754 -0
  979. tools/harness/__init__.py +6 -0
  980. tools/harness/exit_criteria_evaluator.py +231 -0
  981. tools/harness/maturity_assessor.py +347 -0
  982. tools/harness/scaffold_harness.py +416 -0
  983. tools/harness/trace_analyzer.py +281 -0
  984. tools/infra/__init__.py +1 -0
  985. tools/infra/ansible_generator.py +867 -0
  986. tools/infra/dockerfile_generator.py +359 -0
  987. tools/infra/infra_status.py +384 -0
  988. tools/infra/ironbank_metadata_generator.py +403 -0
  989. tools/infra/k8s_generator.py +1000 -0
  990. tools/infra/pipeline_generator.py +830 -0
  991. tools/infra/rollback.py +389 -0
  992. tools/infra/terraform_generator.py +1140 -0
  993. tools/infra/terraform_generator_azure.py +1252 -0
  994. tools/infra/terraform_generator_gcp.py +951 -0
  995. tools/infra/terraform_generator_ibm.py +359 -0
  996. tools/infra/terraform_generator_oci.py +918 -0
  997. tools/infra/terraform_generator_onprem.py +318 -0
  998. tools/knowledge/__init__.py +1 -0
  999. tools/knowledge/knowledge_ingest.py +281 -0
  1000. tools/knowledge/pattern_detector.py +681 -0
  1001. tools/knowledge/recommendation_engine.py +449 -0
  1002. tools/knowledge/self_heal_analyzer.py +492 -0
  1003. tools/knowledge_graph/__init__.py +2 -0
  1004. tools/knowledge_graph/graph_rag.py +498 -0
  1005. tools/knowledge_graph/ingester.py +406 -0
  1006. tools/knowledge_graph/insight_generator.py +369 -0
  1007. tools/knowledge_graph/text_network.py +832 -0
  1008. tools/llm/__init__.py +72 -0
  1009. tools/llm/anthropic_provider.py +170 -0
  1010. tools/llm/azure_openai_provider.py +338 -0
  1011. tools/llm/bedrock_provider.py +315 -0
  1012. tools/llm/embedding_provider.py +438 -0
  1013. tools/llm/gemini_provider.py +381 -0
  1014. tools/llm/ibm_watsonx_provider.py +231 -0
  1015. tools/llm/oci_genai_provider.py +462 -0
  1016. tools/llm/ollama_provider.py +350 -0
  1017. tools/llm/openai_provider.py +225 -0
  1018. tools/llm/prompt_registry.py +447 -0
  1019. tools/llm/provider.py +355 -0
  1020. tools/llm/provider_sdk.py +175 -0
  1021. tools/llm/router.py +1124 -0
  1022. tools/llm/semantic_cache.py +394 -0
  1023. tools/llm/vertex_ai_provider.py +374 -0
  1024. tools/maintenance/__init__.py +2 -0
  1025. tools/maintenance/dependency_scanner.py +1016 -0
  1026. tools/maintenance/maintenance_auditor.py +804 -0
  1027. tools/maintenance/remediation_engine.py +957 -0
  1028. tools/maintenance/vulnerability_checker.py +978 -0
  1029. tools/manifest.md +1066 -0
  1030. tools/marketplace/asset_installer.py +639 -0
  1031. tools/marketplace/feedback_validator.py +359 -0
  1032. tools/marketplace/license_client.py +458 -0
  1033. tools/marketplace/module_crypto.py +544 -0
  1034. tools/marketplace/module_runtime.py +236 -0
  1035. tools/marketplace/token_store.py +264 -0
  1036. tools/mbse/__init__.py +3 -0
  1037. tools/mbse/des_assessor.py +1173 -0
  1038. tools/mbse/des_report_generator.py +787 -0
  1039. tools/mbse/diagram_extractor.py +792 -0
  1040. tools/mbse/digital_thread.py +1650 -0
  1041. tools/mbse/model_code_generator.py +1115 -0
  1042. tools/mbse/model_control_mapper.py +410 -0
  1043. tools/mbse/pi_model_tracker.py +1079 -0
  1044. tools/mbse/reqif_parser.py +1468 -0
  1045. tools/mbse/sync_engine.py +1789 -0
  1046. tools/mbse/thread_heatmap.py +445 -0
  1047. tools/mbse/xmi_parser.py +1558 -0
  1048. tools/mcp/builder_server.py +64 -0
  1049. tools/mcp/compliance_server.py +64 -0
  1050. tools/mcp/connector_forge_server.py +155 -0
  1051. tools/mcp/core_server.py +64 -0
  1052. tools/mcp/devsecops_server.py +11 -0
  1053. tools/mcp/devsecops_zta_server.py +64 -0
  1054. tools/mcp/knowledge_server.py +64 -0
  1055. tools/mcp/monitor_server.py +64 -0
  1056. tools/mcp/ops_server.py +300 -0
  1057. tools/mcp/requirements_analyst_server.py +64 -0
  1058. tools/mcp/requirements_server.py +11 -0
  1059. tools/mcp/security_server.py +64 -0
  1060. tools/mcp/simulation_server.py +64 -0
  1061. tools/mcp/supply_chain_server.py +64 -0
  1062. tools/mcp/tool_registry.py +299 -0
  1063. tools/memory/__init__.py +2 -0
  1064. tools/memory/auto_capture.py +346 -0
  1065. tools/memory/embed_memory.py +157 -0
  1066. tools/memory/history_compressor.py +334 -0
  1067. tools/memory/hybrid_search.py +235 -0
  1068. tools/memory/maintenance_cron.py +288 -0
  1069. tools/memory/memory_consolidation.py +439 -0
  1070. tools/memory/memory_db.py +132 -0
  1071. tools/memory/memory_read.py +101 -0
  1072. tools/memory/memory_write.py +221 -0
  1073. tools/memory/semantic_search.py +138 -0
  1074. tools/memory/time_decay.py +434 -0
  1075. tools/missions/__init__.py +2 -0
  1076. tools/missions/mission_engine.py +459 -0
  1077. tools/monitor/__init__.py +1 -0
  1078. tools/monitor/alert_correlator.py +486 -0
  1079. tools/monitor/auto_resolver.py +603 -0
  1080. tools/monitor/health_checker.py +507 -0
  1081. tools/monitor/heartbeat_daemon.py +779 -0
  1082. tools/monitor/log_analyzer.py +507 -0
  1083. tools/monitor/metric_collector.py +484 -0
  1084. tools/mosa/__init__.py +10 -0
  1085. tools/mosa/icd_generator.py +358 -0
  1086. tools/mosa/modular_design_analyzer.py +682 -0
  1087. tools/mosa/mosa_code_enforcer.py +348 -0
  1088. tools/mosa/tsp_generator.py +265 -0
  1089. tools/observability/__init__.py +100 -0
  1090. tools/observability/genai_attributes.py +88 -0
  1091. tools/observability/instrumentation.py +140 -0
  1092. tools/observability/mlflow_exporter.py +193 -0
  1093. tools/observability/otel_tracer.py +168 -0
  1094. tools/observability/provenance/__init__.py +3 -0
  1095. tools/observability/provenance/prov_recorder.py +322 -0
  1096. tools/observability/shap/__init__.py +3 -0
  1097. tools/observability/shap/agent_shap.py +274 -0
  1098. tools/observability/sqlite_tracer.py +360 -0
  1099. tools/observability/trace_context.py +205 -0
  1100. tools/observability/tracer.py +230 -0
  1101. tools/orchestration/__init__.py +1 -0
  1102. tools/orchestration/peer_channels.py +254 -0
  1103. tools/orchestration/saga_coordinator.py +390 -0
  1104. tools/project/__init__.py +1 -0
  1105. tools/project/manifest_loader.py +418 -0
  1106. tools/project/project_create.py +350 -0
  1107. tools/project/project_list.py +171 -0
  1108. tools/project/project_scaffold.py +1715 -0
  1109. tools/project/project_status.py +478 -0
  1110. tools/project/session_context_builder.py +752 -0
  1111. tools/project/validate_manifest.py +54 -0
  1112. tools/rag/corrective_rag.py +582 -0
  1113. tools/rag/source_registry.py +482 -0
  1114. tools/requirements/__init__.py +1 -0
  1115. tools/requirements/ai_governance_scorer.py +207 -0
  1116. tools/requirements/boundary_analyzer.py +1281 -0
  1117. tools/requirements/clarification_engine.py +605 -0
  1118. tools/requirements/complexity_scorer.py +369 -0
  1119. tools/requirements/consistency_analyzer.py +789 -0
  1120. tools/requirements/constitution_manager.py +592 -0
  1121. tools/requirements/decomposition_engine.py +764 -0
  1122. tools/requirements/document_extractor.py +1002 -0
  1123. tools/requirements/elicitation_techniques.py +508 -0
  1124. tools/requirements/gap_detector.py +260 -0
  1125. tools/requirements/intake_engine.py +2175 -0
  1126. tools/requirements/prd_generator.py +839 -0
  1127. tools/requirements/prd_validator.py +584 -0
  1128. tools/requirements/readiness_scorer.py +302 -0
  1129. tools/requirements/spec_organizer.py +1015 -0
  1130. tools/requirements/spec_quality_checker.py +1083 -0
  1131. tools/requirements/traceability_builder.py +566 -0
  1132. tools/research/__init__.py +3 -0
  1133. tools/research/academic_scanner.py +130 -0
  1134. tools/research/build_buy_analyzer.py +229 -0
  1135. tools/research/challenge_scorer.py +280 -0
  1136. tools/research/community_scanner.py +174 -0
  1137. tools/research/cross_engine_bridge.py +124 -0
  1138. tools/research/dossier_generator.py +305 -0
  1139. tools/research/landscape_scanner.py +315 -0
  1140. tools/research/regulatory_scanner.py +248 -0
  1141. tools/research/research_manager.py +469 -0
  1142. tools/research/source_scanner.py +150 -0
  1143. tools/research/vertical_loader.py +118 -0
  1144. tools/saas/__init__.py +0 -0
  1145. tools/saas/licensing/__init__.py +0 -0
  1146. tools/saas/licensing/license_validator.py +345 -0
  1147. tools/scaffold/__init__.py +2 -0
  1148. tools/scaffold/golden_path.py +504 -0
  1149. tools/security/__init__.py +1 -0
  1150. tools/security/agent_output_validator.py +330 -0
  1151. tools/security/agent_trust_scorer.py +652 -0
  1152. tools/security/ai_bom_generator.py +718 -0
  1153. tools/security/ai_telemetry_logger.py +469 -0
  1154. tools/security/atlas_red_team.py +541 -0
  1155. tools/security/code_pattern_scanner.py +382 -0
  1156. tools/security/confabulation_detector.py +265 -0
  1157. tools/security/container_scanner.py +489 -0
  1158. tools/security/dependency_auditor.py +942 -0
  1159. tools/security/endpoint_security_scanner.py +626 -0
  1160. tools/security/mcp_tool_authorizer.py +242 -0
  1161. tools/security/output_verifier.py +427 -0
  1162. tools/security/prompt_injection_detector.py +737 -0
  1163. tools/security/sast_runner.py +946 -0
  1164. tools/security/secret_detector.py +376 -0
  1165. tools/security/threat_modeler.py +678 -0
  1166. tools/security/tool_chain_validator.py +357 -0
  1167. tools/security/vuln_scanner.py +536 -0
  1168. tools/simulation/__init__.py +2 -0
  1169. tools/simulation/ato_simulator.py +517 -0
  1170. tools/simulation/coa_generator.py +1539 -0
  1171. tools/simulation/monte_carlo.py +745 -0
  1172. tools/simulation/scenario_manager.py +1060 -0
  1173. tools/simulation/simulation_engine.py +1091 -0
  1174. tools/simulator/__init__.py +2 -0
  1175. tools/simulator/sim_runner.py +272 -0
  1176. tools/supply_chain/__init__.py +2 -0
  1177. tools/supply_chain/cve_triager.py +690 -0
  1178. tools/supply_chain/dependency_graph.py +630 -0
  1179. tools/supply_chain/isa_manager.py +526 -0
  1180. tools/supply_chain/scrm_assessor.py +531 -0
  1181. tools/supply_chain/slsa_verifier.py +473 -0
  1182. tools/testing/__init__.py +2 -0
  1183. tools/testing/acceptance_validator.py +411 -0
  1184. tools/testing/api_surface_extractor.py +749 -0
  1185. tools/testing/claude_dir_validator.py +831 -0
  1186. tools/testing/data_types.py +199 -0
  1187. tools/testing/e2e_runner.py +715 -0
  1188. tools/testing/fuzz_cli.py +306 -0
  1189. tools/testing/health_check.py +483 -0
  1190. tools/testing/platform_check.py +143 -0
  1191. tools/testing/production_audit.py +1836 -0
  1192. tools/testing/production_remediate.py +803 -0
  1193. tools/testing/screenshot_validator.py +538 -0
  1194. tools/testing/smoke_test.py +283 -0
  1195. tools/testing/test_agent_models.py +117 -0
  1196. tools/testing/test_orchestrator.py +957 -0
  1197. tools/testing/utils.py +229 -0
  1198. tools/writeguard/__init__.py +1 -0
  1199. tools/writeguard/main.py +1 -0
  1200. tools/writing/__init__.py +7 -0
  1201. tools/writing/ai_content_detector.py +316 -0
  1202. tools/writing/analysis_engine.py +454 -0
  1203. tools/writing/batch_analyzer.py +276 -0
  1204. tools/writing/coherence_analyzer.py +221 -0
  1205. tools/writing/govcon_bridge.py +509 -0
  1206. tools/writing/grammar_checker.py +270 -0
  1207. tools/writing/plagiarism_detector.py +106 -0
  1208. tools/writing/readability_scorer.py +201 -0
  1209. tools/writing/rewriter.py +96 -0
  1210. tools/writing/signal_registrar.py +167 -0
  1211. tools/writing/snippet_manager.py +276 -0
  1212. tools/writing/style_enforcer.py +220 -0
  1213. tools/writing/style_guide_manager.py +438 -0
  1214. tools/writing/tone_profiler.py +168 -0
@@ -0,0 +1,1615 @@
1
+ # CUI // SP-CTI
2
+ # Modern Software Development Best Practices (2024-2026)
3
+ # Applied to ICDEV: DoD/Federal Compliance Automation Platform
4
+
5
+ Classification: CUI // SP-CTI | Impact Level: IL4
6
+ Research Date: 2026-03-08
7
+ Scope: TDD/BDD for AI-Agentic Systems, DevSecOps Pipelines, Code Quality,
8
+ Configuration Management, Documentation-as-Code, Resilience Engineering
9
+
10
+ ---
11
+
12
+ ## Table of Contents
13
+
14
+ 1. [TDD/BDD Best Practices for AI-Agentic Systems](#1-tddbdd-best-practices-for-ai-agentic-systems)
15
+ 2. [DevSecOps Pipeline Best Practices](#2-devsecops-pipeline-best-practices)
16
+ 3. [Code Quality and Maintainability](#3-code-quality-and-maintainability)
17
+ 4. [Configuration Management](#4-configuration-management)
18
+ 5. [Documentation-as-Code](#5-documentation-as-code)
19
+ 6. [Resilience Engineering](#6-resilience-engineering)
20
+ 7. [Priority Actions Summary](#7-priority-actions-summary)
21
+ 8. [Sources](#8-sources)
22
+
23
+ ---
24
+
25
+ ## 1. TDD/BDD Best Practices for AI-Agentic Systems
26
+
27
+ ### 1.1 Testing Non-Deterministic AI Outputs
28
+
29
+ **The Core Problem.** Traditional TDD expects deterministic outputs: given input X,
30
+ assert output Y. With LLMs, the same input produces different outputs on every run.
31
+ ICDEV's 12-agent architecture with a 4-tier LLM routing system (planner, worker,
32
+ scanner, default) through `tools/llm/router.py` makes this challenge pervasive.
33
+
34
+ **Industry Consensus (2025-2026).** The field has converged on a layered evaluation
35
+ strategy that replaces exact-match assertions with behavioral, structural, and
36
+ semantic validation:
37
+
38
+ | Evaluation Layer | What It Checks | When to Use | Example |
39
+ |-----------------|----------------|-------------|---------|
40
+ | Structural | Output schema, required fields, types | Always | SSP has `ssp_id`, `classification` |
41
+ | Semantic | Meaning similarity (cosine similarity) | LLM-generated text | Narrative covers AC-2 concepts |
42
+ | Behavioral | Tool selection, reasoning steps, decisions | Agent orchestration | Compliance agent chose correct framework |
43
+ | Property-based | Invariants that must always hold | Rule engines | Every NIST control maps to >= 1 framework |
44
+ | Rubric-based | LLM-as-judge with scoring criteria | Complex narratives | Narrative scores >= 7/10 for accuracy |
45
+
46
+ **Semantic Similarity Approach.** Embed both the expected reference output and
47
+ the actual output using a sentence transformer, then assert cosine similarity
48
+ exceeds a threshold (typically 0.75-0.85). This tolerates phrasing variation
49
+ while catching semantic drift. Research from Agent CI (2025) shows that cosine
50
+ similarity alone can miss cases where "wording is similar but meaning is
51
+ different," so it should be combined with structural checks:
52
+
53
+ ```python
54
+ # tests/test_narrative_quality.py
55
+ from sentence_transformers import SentenceTransformer
56
+ import numpy as np
57
+
58
+ model = SentenceTransformer("all-MiniLM-L6-v2")
59
+
60
+ def cosine_sim(a: str, b: str) -> float:
61
+ emb = model.encode([a, b])
62
+ return float(np.dot(emb[0], emb[1]) / (np.linalg.norm(emb[0]) * np.linalg.norm(emb[1])))
63
+
64
+ def test_ac2_narrative_semantic_similarity():
65
+ reference = "AC-2 is implemented via centralized identity management..."
66
+ actual = generate_narrative(control="AC-2", project_id="test")
67
+
68
+ # Structural: must contain classification marking
69
+ assert "CUI //" in actual
70
+
71
+ # Semantic: must be conceptually similar to reference
72
+ sim = cosine_sim(reference, actual)
73
+ assert sim > 0.75, f"Semantic similarity {sim:.3f} below threshold"
74
+ ```
75
+
76
+ **LLM-as-Judge Evaluation.** For complex narrative outputs (compliance SSP
77
+ narratives, AI-generated documentation), use an LLM evaluator with a scoring
78
+ rubric. The G-Eval framework (DeepEval, 2025) uses chain-of-thought prompting
79
+ with binary or 1-5 scale rubrics. Binary evaluations are more reliable:
80
+
81
+ ```python
82
+ # tests/evals/test_ssp_narrative_eval.py
83
+ RUBRIC = """
84
+ Evaluate the SSP narrative for control {control_id}.
85
+ Score each criterion as PASS or FAIL:
86
+ 1. ACCURACY: Narrative correctly describes the control implementation
87
+ 2. COMPLETENESS: All required sub-controls are addressed
88
+ 3. CLASSIFICATION: Contains appropriate CUI marking
89
+ 4. SPECIFICITY: References project-specific implementation details
90
+ 5. COMPLIANCE: Uses NIST 800-53 Rev 5 language and terminology
91
+ """
92
+
93
+ def test_ssp_narrative_with_llm_judge():
94
+ narrative = generate_ssp_narrative(control="AC-2", project_id="test")
95
+ judge_result = llm_evaluate(
96
+ rubric=RUBRIC.format(control_id="AC-2"),
97
+ output=narrative,
98
+ judge_model="claude-sonnet",
99
+ )
100
+ assert judge_result["ACCURACY"] == "PASS"
101
+ assert judge_result["CLASSIFICATION"] == "PASS"
102
+ ```
103
+
104
+ **Outlier Detection for Consistency.** When running the same prompt N times, compute
105
+ the centroid (mean embedding vector) and use Median Absolute Deviation (MAD) to
106
+ detect outliers. This catches cases where the model occasionally produces wildly
107
+ different outputs:
108
+
109
+ ```python
110
+ def test_output_consistency(n_runs=5):
111
+ outputs = [generate_ssp_narrative("AC-2", "test") for _ in range(n_runs)]
112
+ embeddings = model.encode(outputs)
113
+ centroid = np.mean(embeddings, axis=0)
114
+ distances = [np.linalg.norm(e - centroid) for e in embeddings]
115
+ median_dist = np.median(distances)
116
+ mad = np.median([abs(d - median_dist) for d in distances])
117
+ # No output should be > 3 MADs from centroid
118
+ for i, d in enumerate(distances):
119
+ assert (d - median_dist) / (mad + 1e-8) < 3.0, f"Run {i} is an outlier"
120
+ ```
121
+
122
+ **ICDEV-Specific Recommendation.** Test at each LLM routing tier differently:
123
+
124
+ | Tier | Test Strategy | Rationale |
125
+ |------|--------------|-----------|
126
+ | Planner (Claude direct) | LLM-as-judge + semantic similarity | Complex reasoning; needs qualitative evaluation |
127
+ | Worker (qwen3.5 draft + Claude review) | Structural + semantic | Verify draft and review improve quality |
128
+ | Scanner (qwen3.5/llava only) | Structural + property-based | Deterministic schemas; verify format compliance |
129
+ | Default (fallback chain) | Structural only | Verify graceful degradation across providers |
130
+
131
+
132
+ ### 1.2 Contract Testing for Agent-to-Agent Communication
133
+
134
+ **Why Contract Testing Matters for ICDEV.** ICDEV's 12 agents communicate via
135
+ JSON-RPC 2.0 over mTLS. Each publishes an Agent Card at `/.well-known/agent.json`.
136
+ When one agent's response schema changes, consumer agents break silently. Contract
137
+ testing catches this at build time, not in production.
138
+
139
+ **Consumer-Driven Contract Testing.** The industry standard (Pact, 2025) defines
140
+ contracts from the consumer's perspective. The consumer specifies what it expects,
141
+ and the provider verifies it can satisfy those expectations. For ICDEV:
142
+
143
+ - The **orchestrator** is the primary consumer of all 11 domain/support agents
144
+ - Each **domain agent** consumes the orchestrator's dispatch and status APIs
145
+ - **Compliance agent** consumes security agent scan results for evidence collection
146
+
147
+ **Implementation Pattern:**
148
+
149
+ ```python
150
+ # tests/contracts/schemas/compliance_ssp_generate.json
151
+ {
152
+ "consumer": "orchestrator",
153
+ "provider": "compliance",
154
+ "method": "ssp_generate",
155
+ "request": {
156
+ "required": ["project_id"],
157
+ "properties": {
158
+ "project_id": {"type": "string"},
159
+ "baseline": {"type": "string", "enum": ["low", "moderate", "high"]}
160
+ }
161
+ },
162
+ "response": {
163
+ "required": ["ssp_id", "controls", "classification"],
164
+ "properties": {
165
+ "ssp_id": {"type": "string"},
166
+ "controls": {"type": "array"},
167
+ "classification": {"type": "string", "pattern": "^CUI //"}
168
+ }
169
+ }
170
+ }
171
+ ```
172
+
173
+ Store contracts as JSON Schema files in `tests/contracts/schemas/`. Each agent's
174
+ CI pipeline validates both directions: "Do I produce what consumers expect?" and
175
+ "Do I receive what I need from providers?"
176
+
177
+ **Contract Versioning.** When a breaking change is necessary:
178
+
179
+ 1. Add a new contract version (e.g., `v2/compliance_ssp_generate.json`)
180
+ 2. Provider must satisfy both v1 and v2 during migration period
181
+ 3. Consumers migrate to v2 on their own schedule
182
+ 4. v1 contract deprecated after all consumers migrate
183
+
184
+ **ICDEV Already Has: `tests/contracts/test_agent_contracts.py`** (created during
185
+ this research). It defines contracts for 9 agent methods with structural validation,
186
+ type checking, and CUI classification enforcement.
187
+
188
+
189
+ ### 1.3 Property-Based Testing for Compliance Rule Engines
190
+
191
+ **Research Evidence.** An empirical study presented at OOPSLA 2025 evaluated
192
+ property-based testing (PBT) across 7,125 Hypothesis tests in 426 Python projects.
193
+ Key finding: **each PBT test finds approximately 50x more mutants than the average
194
+ unit test**. This makes PBT exceptionally valuable for ICDEV's deterministic rule
195
+ engines.
196
+
197
+ **What to Test with Hypothesis.** ICDEV's compliance tools have rich invariants:
198
+
199
+ | Component | Properties to Test |
200
+ |-----------|-------------------|
201
+ | `crosswalk_engine.py` | Every valid NIST control maps to >= 1 framework; coverage percentages are 0.0-1.0; implementing a control never decreases coverage |
202
+ | `nist_lookup.py` | Control IDs follow pattern `[A-Z]{2}-[0-9]+`; every control has a family; enhancement IDs include parent |
203
+ | `zta_maturity_scorer.py` | Scores are 0.0-1.0; adding security measures never decreases score; all 7 pillars are always present |
204
+ | `sbd_assessor.py` | 35 SBD requirements are always evaluated; pillar mapping covers all 8 Cloudyrion pillars |
205
+ | `control_mapper.py` | Activity-to-control mappings are deterministic; same activity always maps to same controls |
206
+ | `agent_trust_scorer.py` | Trust scores are 0.0-1.0; violations always decrease score; trust levels correspond to score ranges |
207
+
208
+ **Example Hypothesis Tests:**
209
+
210
+ ```python
211
+ # tests/test_compliance_properties.py
212
+ from hypothesis import given, strategies as st, assume
213
+
214
+ # Strategy for valid NIST 800-53 control IDs
215
+ nist_control_ids = st.from_regex(
216
+ r"(AC|AT|AU|CA|CM|CP|IA|IR|MA|MP|PE|PL|PM|PS|PT|RA|SA|SC|SI|SR)-[0-9]{1,2}",
217
+ fullmatch=True,
218
+ )
219
+
220
+ @given(control_id=nist_control_ids)
221
+ def test_crosswalk_coverage_is_bounded(control_id):
222
+ """Coverage percentage must always be between 0.0 and 1.0."""
223
+ result = crosswalk_engine.get_coverage(control_id)
224
+ if result["found"]:
225
+ assert 0.0 <= result["coverage"] <= 1.0
226
+
227
+ @given(score=st.floats(min_value=0.0, max_value=1.0))
228
+ def test_trust_level_always_assigned(score):
229
+ """Every valid score must map to exactly one trust level."""
230
+ level = AgentTrustScorer.score_to_level(score)
231
+ assert level in ("normal", "degraded", "untrusted", "blocked")
232
+
233
+ @given(
234
+ scores=st.lists(
235
+ st.floats(min_value=0.0, max_value=1.0),
236
+ min_size=7, max_size=7,
237
+ )
238
+ )
239
+ def test_zta_overall_is_weighted_average(scores):
240
+ """Overall ZTA score must be a valid weighted average of pillar scores."""
241
+ pillars = dict(zip(
242
+ ["identity", "device", "network", "application", "data",
243
+ "visibility", "automation"],
244
+ scores,
245
+ ))
246
+ overall = zta_scorer.compute_overall(pillars)
247
+ assert min(scores) <= overall <= max(scores)
248
+ ```
249
+
250
+ **Agentic Property-Based Testing.** A 2025 arXiv paper describes using Claude Code
251
+ as an agent that generates Hypothesis PBTs targeting Python functions, modules, or
252
+ entire codebases. This approach found novel bugs across the Python ecosystem. For
253
+ ICDEV, this means PBT generation can be partially automated:
254
+
255
+ ```bash
256
+ # Use Claude Code to generate Hypothesis tests for a module
257
+ claude "Generate Hypothesis property-based tests for tools/compliance/crosswalk_engine.py
258
+ focusing on invariants: coverage bounds, monotonic mapping, idempotent lookups"
259
+ ```
260
+
261
+
262
+ ### 1.4 Snapshot Testing for Generated Artifacts
263
+
264
+ **When to Use Snapshots.** ICDEV generates structured compliance artifacts (SSP,
265
+ POAM, SBOM, OSCAL documents, CycloneDX JSON). These artifacts have stable structure
266
+ but dynamic content (timestamps, UUIDs, version numbers). Snapshot testing catches
267
+ unintended structural regressions while allowing expected dynamic fields to change.
268
+
269
+ **Syrupy Framework.** Syrupy is the standard pytest snapshot plugin (used by
270
+ Home Assistant, AWS CDK, and many large Python projects). It stores human-readable
271
+ snapshot files alongside tests, which are committed to version control:
272
+
273
+ ```python
274
+ # tests/test_compliance_snapshots.py
275
+ import re
276
+ import json
277
+
278
+ def normalize(output: dict) -> dict:
279
+ """Strip dynamic fields before snapshot comparison."""
280
+ s = json.dumps(output, indent=2, sort_keys=True)
281
+ # Normalize timestamps
282
+ s = re.sub(r"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}", "TIMESTAMP", s)
283
+ # Normalize UUIDs
284
+ s = re.sub(r"[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}",
285
+ "UUID", s)
286
+ return json.loads(s)
287
+
288
+ def test_ssp_structure(snapshot):
289
+ result = ssp_generator.generate(project_id="test-project", baseline="moderate")
290
+ assert normalize(result) == snapshot
291
+
292
+ def test_sbom_cyclonedx_structure(snapshot):
293
+ result = sbom_generator.generate(project_dir="/test", format="cyclonedx")
294
+ assert normalize(result) == snapshot
295
+
296
+ def test_oscal_assessment_results(snapshot):
297
+ result = cato_live_engine.generate_assessment(project_id="test")
298
+ assert normalize(result) == snapshot
299
+ ```
300
+
301
+ Update snapshots intentionally: `pytest --snapshot-update`
302
+
303
+ **When NOT to Use Snapshots.** Avoid for LLM-generated narrative text (too
304
+ variable). Use semantic similarity + rubric evaluation instead.
305
+
306
+
307
+ ### 1.5 Mutation Testing Applicability
308
+
309
+ **What Mutation Testing Reveals.** Mutation testing modifies source code (e.g.,
310
+ changing `>=` to `>`, removing a conditional branch) and checks whether tests
311
+ detect the mutation. Surviving mutants indicate weak test coverage.
312
+
313
+ **Tool Selection for Python.** `mutmut` (pure Python) and `cosmic-ray` (more
314
+ features, slower) are the primary options. For ICDEV's 410+ tool files, use
315
+ targeted mutation testing on high-value deterministic components:
316
+
317
+ | Component Category | Mutation Value | Rationale | Tool Files |
318
+ |-------------------|---------------|-----------|------------|
319
+ | Compliance rule engines | **High** | Pure deterministic logic; boundary conditions critical | `crosswalk_engine.py`, `nist_lookup.py`, `control_mapper.py` |
320
+ | Scoring algorithms | **High** | Threshold comparisons; weighted averages | `zta_maturity_scorer.py`, `agent_trust_scorer.py`, `readiness_scorer.py` |
321
+ | Security detectors | **High** | False negatives are security risks | `prompt_injection_detector.py`, `secret_detector.py` |
322
+ | LLM router logic | **Medium** | Routing decisions are deterministic; provider probing is not | `router.py` (routing logic only) |
323
+ | Data parsers | **Medium** | Schema validation, field extraction | `xmi_parser.py`, `reqif_parser.py` |
324
+ | LLM-dependent generators | **Low** | Output depends on model; mutations in prompt assembly hard to detect | `narrative_workflow.py`, `ssp_generator.py` |
325
+ | Dashboard/UI code | **Low** | Visual rendering; better tested with E2E | `app.py`, templates |
326
+
327
+ **Targeted Execution:**
328
+
329
+ ```bash
330
+ # Mutate only the crosswalk engine
331
+ mutmut run --paths-to-mutate tools/compliance/crosswalk_engine.py \
332
+ --tests-dir tests/ --runner "pytest tests/test_crosswalk.py"
333
+
334
+ # View surviving mutants
335
+ mutmut results
336
+ mutmut show <mutant_id>
337
+ ```
338
+
339
+
340
+ ### 1.6 Testing Prompt Chains and LLM Routing
341
+
342
+ **ICDEV's Prompt Chains.** The `tools/agent/prompt_chain_executor.py` runs
343
+ multi-step LLM reasoning chains defined in `args/prompt_chains.yaml` (e.g.,
344
+ `plan_critique_refine`, `scout_analyze_recommend`). Testing at three levels:
345
+
346
+ **Level 1: Unit (Mock LLM, Test Orchestration).** Mock the LLM provider and
347
+ verify chain mechanics: step ordering, input/output threading, error handling,
348
+ early termination conditions:
349
+
350
+ ```python
351
+ def test_chain_executes_all_steps():
352
+ with mock_llm(responses=["plan text", "critique text", "refined text"]):
353
+ result = execute_chain("plan_critique_refine", input="design auth flow")
354
+ assert result["steps_completed"] == 3
355
+ assert result["step_names"] == ["plan", "critique", "refine"]
356
+ # Verify output of step N is input to step N+1
357
+ assert "plan text" in result["steps"][1]["input"]
358
+ ```
359
+
360
+ **Level 2: Integration (Deterministic Model Stub).** Use a local small model
361
+ (or canned responses) to verify end-to-end flow without cloud API calls:
362
+
363
+ ```python
364
+ @pytest.mark.integration
365
+ def test_chain_with_local_model():
366
+ """Run chain against Ollama qwen3.5 (requires Ollama running)."""
367
+ result = execute_chain(
368
+ "plan_critique_refine",
369
+ input="design a FedRAMP-compliant auth flow",
370
+ provider_override="ollama",
371
+ )
372
+ assert result["status"] == "completed"
373
+ assert len(result["final_output"]) > 100
374
+ ```
375
+
376
+ **Level 3: Evaluation (Periodic, Real Models).** Run nightly in CI with real
377
+ models and score with rubrics. These are not pass/fail gates but quality
378
+ dashboards:
379
+
380
+ ```python
381
+ @pytest.mark.nightly
382
+ def test_chain_quality_evaluation():
383
+ result = execute_chain("plan_critique_refine", input=STANDARD_PROMPT)
384
+ quality = evaluate_with_rubric(result["final_output"], QUALITY_RUBRIC)
385
+ # Log to metrics, don't hard-fail
386
+ assert quality["overall"] >= 6, f"Quality regression: {quality}"
387
+ ```
388
+
389
+ **LLM Router Testing.** The router (`tools/llm/router.py`) has deterministic
390
+ routing logic (config-driven) and non-deterministic execution (LLM calls).
391
+ Test them separately:
392
+
393
+ ```python
394
+ # Test routing logic (deterministic)
395
+ def test_scanner_tier_routes_to_ollama():
396
+ router = LLMRouter()
397
+ provider, model = router.resolve_provider("compliance_export")
398
+ assert provider == "ollama" # Scanner tier never uses Claude
399
+
400
+ def test_worker_tier_uses_two_tier():
401
+ router = LLMRouter()
402
+ provider, model = router.resolve_provider("code_generation")
403
+ # Worker tier should attempt qwen3.5 first
404
+ assert "qwen" in model.lower() or provider == "ollama"
405
+
406
+ # Test fallback behavior (mock providers)
407
+ def test_fallback_chain_on_provider_failure():
408
+ with mock_provider_unavailable("ollama"):
409
+ router = LLMRouter()
410
+ provider, model = router.resolve_provider("code_generation")
411
+ assert provider == "bedrock" # Falls back to Claude
412
+ ```
413
+
414
+ **Evaluation Frameworks for 2025-2026.** Key tools:
415
+
416
+ | Framework | Best For | ICDEV Relevance |
417
+ |-----------|---------|-----------------|
418
+ | DeepEval | Pytest-integrated LLM evals; G-Eval rubrics | Testing narrative quality |
419
+ | RAGAS | RAG pipeline evaluation | Testing RAG subsystem (Phase 64) |
420
+ | Inspect AI | Multi-step agent behavior | Testing prompt chains |
421
+ | Promptfoo | Prompt regression testing | Detecting prompt template regressions |
422
+ | LangSmith | Tracing + evaluation combined | Development-time debugging |
423
+
424
+ ---
425
+
426
+ ## 2. DevSecOps Pipeline Best Practices
427
+
428
+ ### 2.1 Shift-Left Security for Federal Systems
429
+
430
+ **Executive Order 14028 Compliance.** EO 14028 (May 2021) mandates SBOMs, secure
431
+ development practices, and attestation for all federal software suppliers. NIST
432
+ responded with SSDF v1.2 (draft 2025). In 2026, SBOM mandates are transitioning
433
+ from aspiration to enforcement.
434
+
435
+ **ICDEV's Current Position.** ICDEV already implements shift-left security:
436
+ - SAST: `tools/security/sast_runner.py`
437
+ - Dependency audit: `tools/security/dependency_auditor.py`
438
+ - Secret detection: `tools/security/secret_detector.py`
439
+ - Container scanning: `tools/security/container_scanner.py`
440
+ - SBOM generation: `tools/compliance/sbom_generator.py`
441
+ - Prompt injection detection: `tools/security/prompt_injection_detector.py`
442
+
443
+ **Gap: Pipeline Gate Orchestration.** The individual tools exist but need
444
+ declarative orchestration that enforces gate ordering and prevents skipping.
445
+ The `args/pipeline_gates.yaml` file (created during this research) addresses
446
+ this with 5 stages: pre_commit, build, integration, pre_deploy, post_deploy.
447
+
448
+ **Key Principle:** Every security gate must be:
449
+ 1. **Automated** -- no manual approval steps for routine checks
450
+ 2. **Immovable** -- blocking gates cannot be bypassed without documented exception
451
+ 3. **Audited** -- every gate result (pass/fail/skip) logged to audit_trail
452
+ 4. **Deterministic** -- same code + same config = same gate result
453
+
454
+
455
+ ### 2.2 Continuous ATO (cATO) Pipeline Patterns
456
+
457
+ **DoD cATO Evaluation Criteria (2024).** The DoD CIO published formal cATO
458
+ evaluation criteria requiring:
459
+
460
+ 1. **Active Cyber Defense** -- Continuous monitoring, automated response
461
+ 2. **Secure Software Supply Chain** -- SBOM, provenance, attestation
462
+ 3. **DevSecOps Pipelines** -- Automated security at every stage
463
+ 4. **Continuous Monitoring** -- Real-time evidence collection
464
+ 5. **Rapid Patch Management** -- Automated vulnerability remediation
465
+
466
+ **ICDEV Alignment:**
467
+
468
+ | cATO Requirement | ICDEV Implementation | Status |
469
+ |-----------------|---------------------|--------|
470
+ | Continuous monitoring | `cato_live_engine.py` OSCAL streaming | Implemented (F1) |
471
+ | SBOM on every build | `sbom_generator.py` + pipeline gate | Implemented |
472
+ | Automated scanning | SAST/DAST/SCA/container | Implemented |
473
+ | Immutable audit trail | Append-only audit_trail table | Implemented (D6) |
474
+ | Evidence freshness | 30-day threshold in cATO engine | Implemented (D-INV-2) |
475
+ | Provenance tracking | W3C PROV-AGENT (D287) | Implemented |
476
+ | Rapid patching | CVE triage with SLA (D-SC-*) | Implemented |
477
+
478
+ **cATO Pipeline Pattern (recommended for ICDEV):**
479
+
480
+ ```
481
+ Code Commit
482
+ |
483
+ v
484
+ [Pre-commit Gates] -> Secret detection, lint, CUI marking
485
+ |
486
+ v
487
+ [Build] -> Compile, SAST, dep audit, SBOM generation
488
+ |
489
+ v
490
+ [Integration] -> Contract tests, prompt injection scan, AI BOM
491
+ |
492
+ v
493
+ [Pre-deploy] -> Container scan, STIG, SbD, ZTA maturity, SLSA provenance
494
+ |
495
+ v
496
+ [Deploy to Staging] -> Smoke tests, E2E, acceptance criteria
497
+ |
498
+ v
499
+ [cATO Evidence] -> OSCAL assessment-results streamed per-control
500
+ |
501
+ v
502
+ [Deploy to Production] -> Canary -> Full rollout
503
+ |
504
+ v
505
+ [Continuous Monitoring] -> Evidence freshness, trust scoring, telemetry
506
+ ```
507
+
508
+ **The Software Factory Model.** DoD software factories (Platform One, Black Pearl,
509
+ Kessel Run) establish reusable DevSecOps platforms. ICDEV's architecture aligns
510
+ with this model: the GOTCHA framework provides the reusable platform, and child
511
+ applications inherit the pipeline, gates, and compliance posture.
512
+
513
+
514
+ ### 2.3 SBOM-Driven Vulnerability Management
515
+
516
+ **Current State (2026).** SBOMs are no longer optional for federal suppliers.
517
+ Organizations that build with automated SBOM generation from day one have a
518
+ structural advantage in defense procurement.
519
+
520
+ **ICDEV's SBOM Capabilities:**
521
+ - Software SBOM: `sbom_generator.py` (CycloneDX)
522
+ - Firmware SBOM: `firmware_sbom.py` (CycloneDX 1.5 + VEX CSAF 2.0, D-INV-45/46)
523
+ - AI BOM: `ai_bom_generator.py` (AI component inventory)
524
+ - Dependency graph: `dependency_graph.py` (SQL adjacency list, D27)
525
+
526
+ **Recommended Enhancement: VEX-Driven Triage.** Vulnerability Exploitability
527
+ eXchange (VEX) documents contextualize SBOM vulnerabilities. Not every CVE in
528
+ a dependency is exploitable in your specific deployment. ICDEV's `cve_triager.py`
529
+ should consume VEX data to automatically downgrade non-exploitable findings:
530
+
531
+ ```
532
+ SBOM (what we ship) + CVE feeds (what's vulnerable) + VEX (what's exploitable)
533
+ -> Actionable vulnerability list (what we must fix)
534
+ ```
535
+
536
+
537
+ ### 2.4 Policy-as-Code Maturity Model
538
+
539
+ ICDEV already generates Kyverno and OPA policies via `policy_generator.py`.
540
+ The maturity model for policy-as-code:
541
+
542
+ | Level | Description | ICDEV Status | Action |
543
+ |-------|-------------|-------------|--------|
544
+ | 1 - Manual | Policies in PDFs/wikis | Surpassed | -- |
545
+ | 2 - Coded | Policies in Rego/YAML | **Current** | `policy_generator.py` generates policies |
546
+ | 3 - Tested | Policy unit tests with conftest | **Gap** | Add `tests/test_policies.py` with conftest |
547
+ | 4 - Enforced | Admission controllers block violations | **Partial** | Kyverno generation exists; deployment needed |
548
+ | 5 - Continuous | Policy dashboards, drift detection | **Gap** | Add policy compliance to `vsm_engine.py` |
549
+
550
+ **Kyverno vs OPA for ICDEV:**
551
+
552
+ | Aspect | Kyverno | OPA/Gatekeeper |
553
+ |--------|---------|----------------|
554
+ | Language | YAML (developer-friendly) | Rego (learning curve) |
555
+ | K8s native | Yes (CRDs) | Via Gatekeeper |
556
+ | Mutation | Built-in | Separate webhook |
557
+ | Audit | Built-in reporting | External |
558
+ | ICDEV support | `policy_generator.py --engine kyverno` | `policy_generator.py --engine opa` |
559
+ | Recommendation | **Primary** for ICDEV | Secondary for complex rules |
560
+
561
+
562
+ ### 2.5 GitOps for Infrastructure
563
+
564
+ **ArgoCD for Federal Deployments.** ArgoCD is the dominant GitOps tool for DoD
565
+ Kubernetes environments in 2025-2026, with widespread adoption in AWS GovCloud.
566
+ Key benefits for ICDEV:
567
+
568
+ - **Drift detection**: ArgoCD continuously compares Git state to cluster state,
569
+ aligning with ICDEV's `sync_engine.py` drift detection philosophy
570
+ - **Multi-cluster**: Manage IL4/IL5/IL6 clusters from a single control plane
571
+ with RBAC per clearance level
572
+ - **Audit**: Every sync logged with Git commit SHA, user, timestamp (NIST AU)
573
+ - **Self-heal**: Automatically reverts unauthorized manual changes
574
+
575
+ **ArgoCD + ICDEV Integration Pattern:**
576
+
577
+ ```yaml
578
+ # argocd/applications/icdev-compliance-agent.yaml
579
+ apiVersion: argoproj.io/v1alpha1
580
+ kind: Application
581
+ metadata:
582
+ name: icdev-compliance-agent
583
+ namespace: argocd
584
+ spec:
585
+ project: icdev-agents
586
+ source:
587
+ repoURL: https://github.com/icdev-ai/icdev.git
588
+ targetRevision: main
589
+ path: k8s/agents/compliance
590
+ destination:
591
+ server: https://kubernetes.default.svc
592
+ namespace: icdev
593
+ syncPolicy:
594
+ automated:
595
+ prune: true
596
+ selfHeal: true
597
+ syncOptions:
598
+ - CreateNamespace=true
599
+ ```
600
+
601
+ **Dual-Tool Strategy.** Many organizations use both: ArgoCD for application
602
+ delivery, Flux for cluster bootstrapping. For ICDEV, ArgoCD is sufficient
603
+ as the primary tool.
604
+
605
+ **Best Practices:**
606
+ - Separate app code and K8s manifests into different repos (or directories)
607
+ - Use Kustomize overlays for environments (dev/staging/production/air-gap)
608
+ - Pin image versions explicitly (never use `:latest` in production)
609
+ - Enable self-heal and prune features
610
+ - Never commit plain Secrets to Git (use sealed-secrets or external-secrets)
611
+
612
+
613
+ ### 2.6 Supply Chain Security (SLSA Framework)
614
+
615
+ **SLSA Levels (v1.1/v1.2).** SLSA provides progressive security levels for
616
+ software supply chain integrity:
617
+
618
+ | Level | Requirements | ICDEV Status | Action |
619
+ |-------|-------------|-------------|--------|
620
+ | 0 | No provenance | Surpassed | -- |
621
+ | 1 | Build provenance generated | **Partial** | audit_trail captures builds; need SLSA-format provenance |
622
+ | 2 | Hosted build + authenticated contributors | **Available** | GitHub Actions with OIDC; sign with cosign/Sigstore |
623
+ | 3 | Isolated builds, tamper-evident logs, non-falsifiable provenance | **Not yet** | Ephemeral build containers needed |
624
+
625
+ **SLSA v1.2 Source Track (2025).** The new Source Track covers threats from
626
+ source code authoring, reviewing, and management. This aligns with ICDEV's
627
+ existing code review gates in `args/security_gates.yaml`.
628
+
629
+ **Achieving SLSA Level 2 (Weeks, Not Months):**
630
+
631
+ 1. Use GitHub Actions with OIDC for build provenance
632
+ 2. Sign artifacts with Sigstore/cosign
633
+ 3. Generate SLSA provenance attestation via `slsa-github-generator`
634
+ 4. Verify provenance in the pre-deploy pipeline gate
635
+
636
+ ```yaml
637
+ # .github/workflows/slsa-build.yml
638
+ jobs:
639
+ build:
640
+ runs-on: ubuntu-latest
641
+ outputs:
642
+ digests: ${{ steps.hash.outputs.digests }}
643
+ steps:
644
+ - uses: actions/checkout@v4
645
+ - run: python -m build
646
+ - id: hash
647
+ run: sha256sum dist/* | base64 -w0 > digests.txt
648
+
649
+ provenance:
650
+ needs: build
651
+ uses: slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0
652
+ with:
653
+ base64-subjects: ${{ needs.build.outputs.digests }}
654
+ ```
655
+
656
+ **ICDEV Already Has:** `args/security_gates.yaml` includes `swft` gates that
657
+ check for SLSA provenance (`slsa_provenance_missing` blocks, `min_slsa_level: 2`).
658
+
659
+ ---
660
+
661
+ ## 3. Code Quality and Maintainability
662
+
663
+ ### 3.1 Clean Architecture Applied to AI Agent Systems
664
+
665
+ **Principles (2025-2026).** Clean Architecture organizes software into concentric
666
+ layers where dependencies point inward toward core business logic. Python's
667
+ dynamic nature makes this straightforward without heavy frameworks. Sam Keen's
668
+ "Clean Architecture with Python" (Packt, 2025) is the definitive reference.
669
+
670
+ **How GOTCHA Aligns with Clean Architecture.** ICDEV's 6-layer GOTCHA framework
671
+ already embodies clean architecture principles:
672
+
673
+ | Clean Architecture Layer | GOTCHA Equivalent | Direction |
674
+ |-------------------------|-------------------|-----------|
675
+ | Entities (business rules) | Tools (`tools/`) | Inner (no outward deps) |
676
+ | Use Cases (orchestration) | Goals (`goals/`) + You (AI) | Middle |
677
+ | Interface Adapters | Args (`args/`), Context (`context/`) | Outer ring |
678
+ | Frameworks & Drivers | MCP servers, Dashboard, A2A | Outermost |
679
+
680
+ **Key Gap: Tool-to-Tool Dependencies.** Some tools import directly from other
681
+ tools (e.g., `crosswalk_engine.py` imports `get_connection` from `storage.py`).
682
+ This is acceptable for the storage layer (it's infrastructure) but problematic
683
+ when domain tools import from each other.
684
+
685
+ **Recommendation: Dependency Rule Enforcement.**
686
+
687
+ ```python
688
+ # tools/linting/dep_check.py
689
+ # Verify that compliance tools don't import from security tools directly
690
+ # (they should communicate via the orchestrator or shared interfaces)
691
+
692
+ FORBIDDEN_IMPORTS = {
693
+ "tools/compliance/": ["tools/security/", "tools/devsecops/"],
694
+ "tools/security/": ["tools/compliance/", "tools/mbse/"],
695
+ "tools/mbse/": ["tools/security/", "tools/govcon/"],
696
+ }
697
+ ```
698
+
699
+ ### 3.2 SOLID Principles in Python Agent Code
700
+
701
+ **Single Responsibility.** Each of ICDEV's 410+ tool files follows SRP well --
702
+ one job per script. The `code_analyzer.py` enforces this with cyclomatic
703
+ complexity checks (gate: max avg complexity 25).
704
+
705
+ **Interface Segregation.** Python uses abstract base classes (ABCs) for
706
+ interfaces. ICDEV's `tools/llm/provider.py` defines `LLMProvider` and
707
+ `EmbeddingProvider` ABCs that all providers implement. Extend this pattern:
708
+
709
+ ```python
710
+ # tools/core/interfaces.py
711
+ from abc import ABC, abstractmethod
712
+
713
+ class ComplianceScanner(ABC):
714
+ """Interface for any compliance scanning tool."""
715
+
716
+ @abstractmethod
717
+ def scan(self, project_id: str) -> dict:
718
+ """Run the scan and return findings."""
719
+ ...
720
+
721
+ @abstractmethod
722
+ def gate_check(self, findings: dict) -> bool:
723
+ """Return True if findings pass the gate."""
724
+ ...
725
+
726
+ # Implemented by: stig_checker.py, sbd_assessor.py, fedramp_assessor.py, etc.
727
+ ```
728
+
729
+ **Dependency Inversion.** High-level modules should not depend on low-level
730
+ modules; both should depend on abstractions. The DI container created in
731
+ `tools/core/container.py` enables this:
732
+
733
+ ```python
734
+ # At startup:
735
+ container.register("storage", lambda: get_connection(), singleton=False)
736
+ container.register("llm_router", lambda: LLMRouter(), singleton=True)
737
+ container.register("audit", lambda: AuditTrail(container.resolve("storage")))
738
+
739
+ # In tests:
740
+ container.register("storage", lambda: sqlite3.connect(":memory:"))
741
+ container.register("llm_router", lambda: MockLLMRouter())
742
+ ```
743
+
744
+
745
+ ### 3.3 Error Handling Patterns for Distributed Agent Systems
746
+
747
+ **Problem.** When 12 agents communicate via JSON-RPC 2.0, error propagation
748
+ becomes complex. Without standardized errors, debugging requires string-matching
749
+ on exception messages across agent boundaries.
750
+
751
+ **Solution: Structured Error Hierarchy.** The `tools/core/errors.py` module
752
+ (created during this research) provides 14 exception classes across 5 domains:
753
+
754
+ ```
755
+ ICDEVError (base)
756
+ ├── AgentError
757
+ │ ├── AgentUnavailableError (retryable=True)
758
+ │ ├── AgentTimeoutError (retryable=True)
759
+ │ └── AgentContractError (retryable=False)
760
+ ├── ComplianceError
761
+ │ ├── ComplianceGateError (retryable=False, carries findings)
762
+ │ └── ClassificationError (retryable=False)
763
+ ├── LLMError
764
+ │ ├── LLMFallbackExhaustedError (retryable=False)
765
+ │ └── LLMProviderError (retryable=True)
766
+ ├── StorageError
767
+ │ ├── StorageConnectionError (retryable=True)
768
+ │ └── StorageMigrationError (retryable=False)
769
+ └── SecurityError
770
+ ├── PromptInjectionError (retryable=False)
771
+ └── TrustScoreError (retryable=False)
772
+ ```
773
+
774
+ Every error carries:
775
+ - `retryable` flag: Enables programmatic retry/DLQ decisions
776
+ - `code`: Machine-readable identifier for JSON-RPC error responses
777
+ - `context`: Structured metadata dict for audit trail and OTel spans
778
+ - `to_dict()`: Serialization for JSON-RPC error responses
779
+
780
+
781
+ ### 3.4 OpenTelemetry Observability Best Practices
782
+
783
+ **OpenTelemetry Maturity (2025-2026).** OTel is now CNCF-graduated with stable
784
+ APIs for traces, metrics, logs, and profiling (4th signal, stable March 2024).
785
+ Python has comprehensive auto-instrumentation and 100+ supported libraries.
786
+
787
+ **ICDEV Already Has:** Dual-mode tracer (D280: OTel production, SQLite air-gapped,
788
+ NullTracer fallback). The recommendations below mature this foundation.
789
+
790
+ **GenAI Semantic Conventions.** OpenTelemetry published experimental semantic
791
+ conventions specifically for AI agent systems (2025):
792
+
793
+ ```python
794
+ # tools/observability/otel_conventions.py
795
+ # Following OTel GenAI semantic conventions (experimental, 2025)
796
+
797
+ # Agent span attributes
798
+ AGENT_NAME = "gen_ai.agent.name" # e.g., "compliance"
799
+ AGENT_DESCRIPTION = "gen_ai.agent.description"
800
+
801
+ # LLM invocation attributes
802
+ GEN_AI_SYSTEM = "gen_ai.system" # e.g., "anthropic", "ollama"
803
+ GEN_AI_REQUEST_MODEL = "gen_ai.request.model"
804
+ GEN_AI_RESPONSE_MODEL = "gen_ai.response.model"
805
+ GEN_AI_REQUEST_MAX_TOKENS = "gen_ai.request.max_tokens"
806
+ GEN_AI_USAGE_INPUT_TOKENS = "gen_ai.usage.input_tokens"
807
+ GEN_AI_USAGE_OUTPUT_TOKENS = "gen_ai.usage.output_tokens"
808
+
809
+ # ICDEV custom attributes (namespaced)
810
+ ICDEV_PROJECT_ID = "icdev.project_id"
811
+ ICDEV_CLASSIFICATION = "icdev.classification"
812
+ ICDEV_LLM_TIER = "icdev.llm.tier" # planner/worker/scanner
813
+ ICDEV_LLM_FUNCTION = "icdev.llm.function" # e.g., "code_generation"
814
+ ICDEV_GATE_NAME = "icdev.gate.name"
815
+ ICDEV_GATE_RESULT = "icdev.gate.result" # pass/fail/skip
816
+ ```
817
+
818
+ **Baggage Propagation.** Pass `project_id`, `session_id`, `classification_level`
819
+ as OTel baggage across agent boundaries so that every span in a distributed trace
820
+ carries this context:
821
+
822
+ ```python
823
+ from opentelemetry import baggage, context
824
+
825
+ ctx = baggage.set_baggage("icdev.project_id", project_id)
826
+ ctx = baggage.set_baggage("icdev.classification", "CUI // SP-CTI", context=ctx)
827
+ # All downstream spans inherit this context
828
+ ```
829
+
830
+ **Metrics Export.** Export DORA metrics from `vsm_engine.py` as OTel metrics:
831
+
832
+ ```python
833
+ from opentelemetry import metrics
834
+
835
+ meter = metrics.get_meter("icdev.vsm")
836
+ deployment_frequency = meter.create_counter("icdev.dora.deployment_frequency")
837
+ lead_time = meter.create_histogram("icdev.dora.lead_time_seconds")
838
+ mttr = meter.create_histogram("icdev.dora.mttr_seconds")
839
+ change_failure_rate = meter.create_gauge("icdev.dora.change_failure_rate")
840
+ ```
841
+
842
+ **Best Practices from CNCF (2025):**
843
+ 1. Start with auto-instrumentation, add manual spans for business logic
844
+ 2. Use the OTel Collector (never send telemetry directly to vendors)
845
+ 3. Follow semantic conventions consistently across all 12 agents
846
+ 4. Sample intelligently: 100% in staging, head-based sampling in production
847
+ 5. Correlate traces, metrics, and logs via trace_id
848
+
849
+
850
+ ### 3.5 Technical Debt Management
851
+
852
+ **ICDEV-Specific Debt Items Identified:**
853
+
854
+ | Debt Item | Impact | Effort | Recommendation |
855
+ |-----------|--------|--------|---------------|
856
+ | Direct `sqlite3` import in `router.py` line 13 | Bypasses storage abstraction (D-DB-21) | Low | Replace with `get_connection()` |
857
+ | Logger names use `sparkpilot.*` (e.g., `sparkpilot.llm.router`) | Branding inconsistency after rename to ICDEV | Low | Global rename to `icdev.*` |
858
+ | Test fixtures create schemas inline (e.g., `test_metastore.py`) | Schema drift risk; inline DDL diverges from actual schema | Medium | Share DDL from canonical source or Alembic |
859
+ | 348 tables in a single database | Cognitive load; schema bloat | Medium | Group into PostgreSQL schemas: `core`, `compliance`, `fleet`, `govcon` |
860
+ | No type hints on many older tool files | IDE support degraded; mypy unusable | Medium | Incremental typing starting with `tools/core/` |
861
+ | Some tools still reference `sparkpilot.db` in error messages | Confusing after D-DB-20 migration | Low | Search-and-replace pass |
862
+
863
+ **Tracking Approach.** Use ICDEV's existing code quality infrastructure:
864
+ - `code_analyzer.py` tracks cyclomatic complexity, cognitive complexity, nesting
865
+ - Code quality gate: avg complexity > 25 blocks (D331)
866
+ - Track Technical Debt Ratio (TDR): estimated fix cost / total codebase cost
867
+ - Log debt items to a `technical_debt` table (append-only, NIST AU) with
868
+ priority, estimated effort, and linked ADR
869
+
870
+ **GitHub Debt Insights (2026).** GitHub's new AI-powered Debt Insights feature
871
+ can predict long-term costs of unresolved debt. Consider integrating with
872
+ ICDEV's `analytics/scorecard.py` for a unified health view.
873
+
874
+ ---
875
+
876
+ ## 4. Configuration Management
877
+
878
+ ### 4.1 Feature Flags for Federal Compliance Features
879
+
880
+ **Why Feature Flags for ICDEV.** ICDEV has 12 innovation features (F1-F12),
881
+ optional modules (GovCon, marketplace), and operational modes (air-gap, debug).
882
+ Feature flags enable safe rollout, environment-specific configuration, and
883
+ graceful degradation.
884
+
885
+ **Tool Selection for Air-Gapped Environments.**
886
+
887
+ | Tool | Self-Hosted | Air-Gap | Python SDK | License | Recommendation |
888
+ |------|-----------|---------|-----------|---------|---------------|
889
+ | Unleash | Yes | Yes (FedRAMP/air-gap) | Yes | Open source | **Best for ICDEV** |
890
+ | Flagsmith | Yes | Yes (private cloud) | Yes | Open source | Strong alternative |
891
+ | LaunchDarkly | No | No | Yes | Proprietary | **Not suitable** (SaaS only) |
892
+ | GrowthBook | Yes | Partial | Yes | Open source | Viable |
893
+ | ConfigCat | Yes | Yes | Yes | Freemium | Viable |
894
+ | YAML-based (custom) | Yes | Yes | N/A | N/A | **Current ICDEV approach** |
895
+
896
+ **ICDEV Recommendation: YAML-Based + Unleash.**
897
+
898
+ For the MVP, the `args/feature_flags.yaml` file (created during this research)
899
+ provides zero-dependency feature flags with env var overrides. For production
900
+ multi-tenant deployment, adopt Unleash for dynamic toggling, gradual rollout,
901
+ and per-tenant configuration:
902
+
903
+ ```python
904
+ # tools/core/feature_flags.py
905
+ import os
906
+ from pathlib import Path
907
+
908
+ def is_enabled(flag_name: str, environment: str = None) -> bool:
909
+ """Check if a feature flag is enabled.
910
+
911
+ Resolution order:
912
+ 1. Environment variable: ICDEV_FF_{FLAG_NAME_UPPER}
913
+ 2. YAML config: args/feature_flags.yaml
914
+ 3. Default: False
915
+ """
916
+ env_var = f"ICDEV_FF_{flag_name.upper()}"
917
+ env_value = os.environ.get(env_var)
918
+ if env_value is not None:
919
+ return env_value.lower() in ("true", "1", "yes")
920
+
921
+ config = _load_flags_yaml()
922
+ flag = config.get("flags", {}).get(flag_name, {})
923
+
924
+ if not flag.get("enabled", False):
925
+ return False
926
+
927
+ # Check air-gap overrides
928
+ air_gap = config.get("flags", {}).get("air_gap_mode", {})
929
+ if air_gap.get("enabled", False):
930
+ overrides = air_gap.get("overrides", {})
931
+ if flag_name in overrides:
932
+ return overrides[flag_name]
933
+
934
+ # Check environment restriction
935
+ allowed_envs = flag.get("environments", [])
936
+ if environment and allowed_envs and environment not in allowed_envs:
937
+ return False
938
+
939
+ return True
940
+ ```
941
+
942
+
943
+ ### 4.2 Environment-Based Configuration
944
+
945
+ **Four Environments for ICDEV:**
946
+
947
+ | Environment | Storage | LLM | Network | Gates | Classification |
948
+ |------------|---------|-----|---------|-------|---------------|
949
+ | Production | PostgreSQL | Ollama + Bedrock | Full | Strict (all blocking) | CUI // SP-CTI |
950
+ | Staging | PostgreSQL | Ollama + Bedrock | Full | Strict (all blocking) | CUI // SP-CTI |
951
+ | Dev | SQLite | Ollama + Bedrock | Full | Relaxed (warnings only) | CUI // SP-CTI |
952
+ | Air-gap | SQLite | Ollama only | None | Strict + relaxed freshness | CUI // SP-CTI |
953
+
954
+ **Configuration Cascade:**
955
+
956
+ ```
957
+ Environment variable (highest priority)
958
+ |
959
+ v
960
+ args/feature_flags.yaml (environment-specific)
961
+ |
962
+ v
963
+ args/<tool>_config.yaml (tool-specific)
964
+ |
965
+ v
966
+ Hardcoded defaults (lowest priority)
967
+ ```
968
+
969
+
970
+ ### 4.3 Secret Management Patterns
971
+
972
+ **ICDEV Target: AWS GovCloud (us-gov-west-1).**
973
+
974
+ | Environment | Secret Backend | Pattern |
975
+ |------------|---------------|---------|
976
+ | Production | AWS Secrets Manager | `ICDEV_PG_SECRET_REF=aws:secretsmanager:icdev/pg-creds` |
977
+ | Staging | AWS Secrets Manager | Same, different secret path |
978
+ | Dev/Local | `.env` file (gitignored) | `ICDEV_PG_PASSWORD=localdev` |
979
+ | Air-gap | HashiCorp Vault (on-prem) | `ICDEV_PG_SECRET_REF=vault:secret/icdev/pg` |
980
+
981
+ **Secret Resolver Enhancement.** ICDEV's `storage.py` already supports
982
+ `ICDEV_PG_SECRET_REF=env:PG_PASS`. Extend the resolver:
983
+
984
+ ```python
985
+ # tools/db/secret_resolver.py
986
+ def resolve_secret(ref: str) -> str:
987
+ """Resolve a secret reference to its value.
988
+
989
+ Supported schemes:
990
+ env:VAR_NAME -- Read from environment variable
991
+ aws:secretsmanager:ID -- Fetch from AWS Secrets Manager
992
+ vault:PATH -- Fetch from HashiCorp Vault
993
+ file:/path/to/secret -- Read from file (K8s mounted secrets)
994
+ """
995
+ scheme, _, path = ref.partition(":")
996
+
997
+ if scheme == "env":
998
+ return os.environ[path]
999
+ elif scheme == "aws":
1000
+ _, service, secret_id = path.split(":", 2)
1001
+ return _fetch_aws_secret(secret_id)
1002
+ elif scheme == "vault":
1003
+ return _fetch_vault_secret(path)
1004
+ elif scheme == "file":
1005
+ return Path(path).read_text().strip()
1006
+ else:
1007
+ raise ValueError(f"Unknown secret scheme: {scheme}")
1008
+ ```
1009
+
1010
+ **HashiCorp Vault vs AWS Secrets Manager:**
1011
+
1012
+ | Feature | Vault | AWS Secrets Manager |
1013
+ |---------|-------|-------------------|
1014
+ | Dynamic secrets | Yes (per-use credentials) | No (rotation only) |
1015
+ | Multi-cloud | Yes | AWS only |
1016
+ | Air-gap | Yes (self-hosted) | No |
1017
+ | Complexity | High (self-managed) | Low (managed service) |
1018
+ | Cost | Free (OSS) + infra | $0.40/secret/month |
1019
+ | **ICDEV recommendation** | Air-gap/on-prem | AWS GovCloud production |
1020
+
1021
+
1022
+ ### 4.4 Schema Versioning with Alembic
1023
+
1024
+ **ICDEV's Current State.** D-DB-25 designates Alembic for PostgreSQL schema
1025
+ versioning. With 348 tables, migration management is critical.
1026
+
1027
+ **SQLite + PostgreSQL Dual-Backend Migrations.** Alembic's batch operations
1028
+ mode handles SQLite's ALTER TABLE limitations. The recommended pattern:
1029
+
1030
+ ```python
1031
+ # alembic/env.py
1032
+ def run_migrations_online():
1033
+ connectable = engine_from_config(config.get_section("alembic"))
1034
+
1035
+ with connectable.connect() as connection:
1036
+ # Detect backend for appropriate migration strategy
1037
+ dialect = connection.dialect.name
1038
+
1039
+ context.configure(
1040
+ connection=connection,
1041
+ target_metadata=target_metadata,
1042
+ render_as_batch=(dialect == "sqlite"), # Batch mode for SQLite
1043
+ )
1044
+
1045
+ with context.begin_transaction():
1046
+ context.run_migrations()
1047
+ ```
1048
+
1049
+ **Migration Best Practices for ICDEV:**
1050
+
1051
+ 1. **One migration per change** -- never combine unrelated DDL
1052
+ 2. **Always review autogenerated migrations** -- autogenerate is a starting point
1053
+ 3. **Offline SQL generation for air-gap** -- `alembic upgrade head --sql > migration.sql`
1054
+ 4. **Migration tests** -- run every migration up and down in CI
1055
+ 5. **Never modify released migrations** -- create new migrations to fix issues
1056
+ 6. **Tag milestones** -- `alembic stamp <revision>` for release versions
1057
+
1058
+ ```bash
1059
+ # Generate offline SQL for DBA review (air-gap)
1060
+ alembic upgrade head --sql > migrations/offline/v1.2.0.sql
1061
+
1062
+ # Run migration tests
1063
+ pytest tests/test_migrations.py -v
1064
+ ```
1065
+
1066
+ ---
1067
+
1068
+ ## 5. Documentation-as-Code
1069
+
1070
+ ### 5.1 Architecture Decision Records (ADRs)
1071
+
1072
+ **ICDEV's Current State.** ICDEV already uses extensive D-* numbering (D1 through
1073
+ D-SBD-7+) embedded in `CLAUDE.md`. This is functional but has scaling issues:
1074
+ the CLAUDE.md file is very large, and individual decisions are hard to discover.
1075
+
1076
+ **AWS ADR Best Practices (2025).** AWS published formal ADR guidance recommending:
1077
+
1078
+ 1. **One file per decision** in a dedicated directory
1079
+ 2. **Immutable once accepted** (create new ADR to supersede)
1080
+ 3. **Status lifecycle**: Proposed -> Accepted -> Deprecated/Superseded
1081
+ 4. **Cross-referencing** via explicit `supersedes` and `depends_on` fields
1082
+
1083
+ **Recommended ADR Structure for ICDEV:**
1084
+
1085
+ ```
1086
+ docs/adr/
1087
+ ├── README.md # Index of all ADRs
1088
+ ├── template.md # ADR template
1089
+ ├── core/
1090
+ │ ├── D-DB-20.md # PostgreSQL primary backend
1091
+ │ ├── D-DB-21.md # Storage abstraction layer
1092
+ │ └── ...
1093
+ ├── compliance/
1094
+ │ ├── D-INV-1.md # cATO OSCAL streaming
1095
+ │ ├── D-SBD-1.md # Cloudyrion 8-Pillar mapping
1096
+ │ └── ...
1097
+ ├── security/
1098
+ │ ├── D215.md # Prompt injection categories
1099
+ │ └── ...
1100
+ └── resilience/
1101
+ ├── D280.md # Pluggable tracer ABC
1102
+ └── ...
1103
+ ```
1104
+
1105
+ **ADR Template:**
1106
+
1107
+ ```markdown
1108
+ # D-{DOMAIN}-{NUMBER}: {Title}
1109
+
1110
+ **Status:** Accepted | Proposed | Deprecated | Superseded by D-XX
1111
+ **Date:** YYYY-MM-DD
1112
+ **Supersedes:** D-XX (if applicable)
1113
+ **Depends on:** D-XX, D-YY
1114
+
1115
+ ## Context
1116
+ What is the issue? What forces are at play?
1117
+
1118
+ ## Decision
1119
+ What we decided and why.
1120
+
1121
+ ## Consequences
1122
+ Positive, negative, and risks.
1123
+
1124
+ ## Compliance Impact
1125
+ Which frameworks are affected (NIST, FedRAMP, CMMC, etc.)
1126
+
1127
+ ## Classification
1128
+ CUI // SP-CTI
1129
+ ```
1130
+
1131
+
1132
+ ### 5.2 API Documentation Automation
1133
+
1134
+ **ICDEV's 12 MCP Servers Expose 70+ Tools.** Each MCP server defines tools with
1135
+ name, description, and JSON Schema parameters. This is already machine-readable
1136
+ documentation.
1137
+
1138
+ **Recommendation: Auto-Generate OpenAPI Docs from MCP Tool Definitions.**
1139
+
1140
+ ```python
1141
+ # tools/docs/mcp_doc_generator.py
1142
+ """Generate API reference documentation from MCP server tool definitions.
1143
+
1144
+ Reads each MCP server module, extracts tool definitions, and produces:
1145
+ 1. OpenAPI 3.0 spec (for Swagger UI)
1146
+ 2. Markdown reference (for docs/api/)
1147
+ 3. JSON Schema catalog (for contract testing)
1148
+ """
1149
+
1150
+ def extract_tools_from_mcp(server_module) -> list:
1151
+ """Import MCP server and extract tool definitions."""
1152
+ ...
1153
+
1154
+ def generate_openapi_spec(all_tools: list) -> dict:
1155
+ """Convert MCP tools to OpenAPI paths."""
1156
+ ...
1157
+
1158
+ def generate_markdown(all_tools: list) -> str:
1159
+ """Generate markdown API reference."""
1160
+ ...
1161
+ ```
1162
+
1163
+ **FastAPI Already Supports This.** If ICDEV's dashboard (`tools/dashboard/app.py`)
1164
+ uses Flask, the OpenAPI spec must be generated manually. If migrated to FastAPI,
1165
+ docs are auto-generated from type hints and Pydantic models.
1166
+
1167
+
1168
+ ### 5.3 Living Documentation from Tests
1169
+
1170
+ **BDD Features as Compliance Evidence.** ICDEV's Gherkin/BDD tests in `features/`
1171
+ already serve as living documentation. Enhance with compliance tagging:
1172
+
1173
+ ```gherkin
1174
+ @NIST-AC-2 @FedRAMP-Moderate @CUI @IL4
1175
+ Feature: User Account Provisioning
1176
+ As a system administrator
1177
+ I want user accounts to require approval
1178
+ So that NIST AC-2 account management controls are satisfied
1179
+
1180
+ Scenario: New account requires manager approval
1181
+ Given a pending account request for "analyst@dod.mil"
1182
+ When the account is submitted for provisioning
1183
+ Then the account status should be "pending_approval"
1184
+ And an audit trail entry should be created with action "account_requested"
1185
+ And the entry classification should contain "CUI // SP-CTI"
1186
+ ```
1187
+
1188
+ **Auto-Generate Compliance Traceability from Feature Tags:**
1189
+
1190
+ ```python
1191
+ # tools/docs/compliance_trace_from_bdd.py
1192
+ """Parse @NIST-* tags from .feature files and generate a traceability matrix.
1193
+
1194
+ Maps BDD scenarios to NIST 800-53 controls, then feeds into the crosswalk
1195
+ engine to auto-populate FedRAMP/CMMC/800-171 coverage.
1196
+ """
1197
+ ```
1198
+
1199
+ **Test Results as cATO Evidence.** Feed BDD test results into
1200
+ `cato_live_engine.py` as evidence for the controls tagged in each scenario.
1201
+ A passing `@NIST-AC-2` scenario becomes evidence for AC-2 implementation.
1202
+
1203
+
1204
+ ### 5.4 Compliance Documentation Generation
1205
+
1206
+ **ICDEV Already Excels Here.** The compliance toolchain is comprehensive:
1207
+ - SSP: `ssp_generator.py`
1208
+ - POAM: `poam_generator.py`
1209
+ - OSCAL: `oscal_generator.py`
1210
+ - SBOM: `sbom_generator.py`
1211
+ - CUI markings: `cui_marker.py`
1212
+ - Crosswalk: `crosswalk_engine.py`
1213
+
1214
+ **Enhancement: Docs-from-Gates.** Every pipeline gate execution generates
1215
+ structured data. Aggregate gate results into compliance documentation:
1216
+
1217
+ ```
1218
+ Gate Results (pipeline_gates.yaml)
1219
+ |
1220
+ v
1221
+ Evidence Aggregator
1222
+ |
1223
+ +---> cATO OSCAL assessment-results
1224
+ +---> SSP appendix (automated test evidence)
1225
+ +---> POAM update (failed gates -> new findings)
1226
+ +---> CMMC evidence package
1227
+ ```
1228
+
1229
+ ---
1230
+
1231
+ ## 6. Resilience Engineering
1232
+
1233
+ ### 6.1 Chaos Engineering for Agent Systems
1234
+
1235
+ **Chaos Engineering Platforms (2025-2026).** Two CNCF-incubating projects
1236
+ dominate Kubernetes chaos engineering:
1237
+
1238
+ | Platform | Maturity | Key Feature | ICDEV Relevance |
1239
+ |----------|---------|-------------|----------------|
1240
+ | LitmusChaos | 106 releases | MCP Server for AI-driven chaos | Direct integration with Claude Code |
1241
+ | Chaos Mesh | 74 releases | Fine-grained fault injection | Comprehensive K8s fault simulation |
1242
+
1243
+ **LitmusChaos MCP Server (2025).** Litmus launched an MCP Server that exposes
1244
+ chaos engineering capabilities via the Model Context Protocol. This enables
1245
+ natural-language chaos experiments from Claude Code:
1246
+
1247
+ ```
1248
+ "Run a network latency experiment on the compliance agent pod
1249
+ with 500ms delay for 60 seconds and observe the circuit breaker behavior"
1250
+ ```
1251
+
1252
+ **Chaos Experiments for ICDEV's 12-Agent Architecture:**
1253
+
1254
+ | Experiment | Target | Expected Behavior | Validates |
1255
+ |-----------|--------|-------------------|-----------|
1256
+ | Agent pod kill | Any agent pod | K8s restarts pod; DLQ captures in-flight tasks | Auto-recovery, DLQ |
1257
+ | Network partition | Between orchestrator and domain agents | Circuit breaker trips; cached results served | Circuit breaker, fallback |
1258
+ | LLM provider timeout | Bedrock endpoint | Router falls back to Ollama | LLM fallback chain |
1259
+ | Database connection drop | PostgreSQL | Storage layer falls back to SQLite | Storage fallback (D-DB-20) |
1260
+ | Memory pressure | Any agent pod | K8s OOM kills; pod restarts with clean state | Resource limits, bulkhead |
1261
+ | Clock skew | Evidence collector | cATO freshness checks detect stale evidence | Evidence freshness (D-INV-2) |
1262
+
1263
+ **Implementation Approach:**
1264
+
1265
+ 1. **Phase 1 (No New Tools):** Use ICDEV's existing circuit breaker + DLQ
1266
+ to inject failures in unit/integration tests
1267
+ 2. **Phase 2 (Staging):** Deploy Chaos Mesh in staging K8s cluster; run
1268
+ experiments on non-production agents
1269
+ 3. **Phase 3 (Production):** Graduate to production chaos with LitmusChaos;
1270
+ integrate with monitoring for automated experiment evaluation
1271
+
1272
+
1273
+ ### 6.2 Graceful Degradation Patterns
1274
+
1275
+ **The Degradation Matrix.** The `args/degradation_matrix.yaml` (created during
1276
+ this research) defines fallback behavior for 9 components. The orchestrator
1277
+ consults this matrix when a circuit breaker trips or health check fails.
1278
+
1279
+ **Degradation Strategies:**
1280
+
1281
+ | Strategy | When Used | Example |
1282
+ |----------|----------|---------|
1283
+ | Provider chain | Primary provider down | Cloud LLM -> Ollama fallback |
1284
+ | Cloud escalation | Local provider down | Ollama down -> Claude-only |
1285
+ | SQLite fallback | PostgreSQL down | Switch to local SQLite |
1286
+ | Queue and cache | Agent down | Queue tasks to DLQ; serve cached results |
1287
+ | Cache only | Non-critical agent down | Return cached knowledge |
1288
+ | Air-gap mode | Network down | Disable all external calls |
1289
+ | Deterministic only | All LLMs down | Only run deterministic tools |
1290
+ | Graceful shutdown | No storage available | Flush state and exit |
1291
+
1292
+ **Cascading Failure Protection:**
1293
+
1294
+ ```yaml
1295
+ # From args/degradation_matrix.yaml
1296
+ cascading_rules:
1297
+ - trigger: "postgresql AND sqlite both down"
1298
+ action: graceful_shutdown
1299
+ - trigger: "cloud_llm AND ollama both down"
1300
+ action: degrade_to_deterministic_only
1301
+ - trigger: "3+ agents down simultaneously"
1302
+ action: emergency_mode
1303
+ ```
1304
+
1305
+
1306
+ ### 6.3 Bulkhead Pattern for Agent Isolation
1307
+
1308
+ **ICDEV Already Has Bulkhead Config.** The `args/resilience_config.yaml` includes:
1309
+
1310
+ ```yaml
1311
+ bulkhead:
1312
+ enabled: true
1313
+ default_max_concurrent: 10
1314
+ default_queue_size: 50
1315
+ overrides:
1316
+ bedrock_llm:
1317
+ max_concurrent: 5
1318
+ queue_size: 20
1319
+ sqlite_writes:
1320
+ max_concurrent: 3
1321
+ queue_size: 100
1322
+ ```
1323
+
1324
+ **Kubernetes-Level Bulkheads.** Complement application-level bulkheads with
1325
+ K8s resource isolation:
1326
+
1327
+ ```yaml
1328
+ # Per-agent resource quotas (prevent one agent from starving others)
1329
+ apiVersion: v1
1330
+ kind: ResourceQuota
1331
+ metadata:
1332
+ name: compliance-agent-quota
1333
+ namespace: icdev-compliance
1334
+ spec:
1335
+ hard:
1336
+ requests.cpu: "2"
1337
+ requests.memory: 2Gi
1338
+ limits.cpu: "4"
1339
+ limits.memory: 4Gi
1340
+ pods: "5"
1341
+ ```
1342
+
1343
+ ```yaml
1344
+ # NetworkPolicy: compliance agent can only reach orchestrator and DB
1345
+ apiVersion: networking.k8s.io/v1
1346
+ kind: NetworkPolicy
1347
+ metadata:
1348
+ name: compliance-agent-bulkhead
1349
+ spec:
1350
+ podSelector:
1351
+ matchLabels:
1352
+ app: icdev-compliance-agent
1353
+ policyTypes: [Ingress, Egress]
1354
+ ingress:
1355
+ - from:
1356
+ - podSelector:
1357
+ matchLabels:
1358
+ app: icdev-orchestrator
1359
+ egress:
1360
+ - to:
1361
+ - podSelector:
1362
+ matchLabels:
1363
+ app: icdev-db
1364
+ - to: # Allow DNS
1365
+ - namespaceSelector: {}
1366
+ ports:
1367
+ - port: 53
1368
+ protocol: UDP
1369
+ ```
1370
+
1371
+
1372
+ ### 6.4 Retry with Exponential Backoff
1373
+
1374
+ **ICDEV Already Has Retry Config.** The `args/resilience_config.yaml` defines:
1375
+ - Default: 3 retries, exponential backoff (base 1s, multiplier 2.0, max 30s)
1376
+ - Jitter: 0-25% of computed delay
1377
+ - Per-subsystem overrides (Bedrock: 5 retries, Ollama: 2 retries)
1378
+
1379
+ **Tenacity Library Integration.** While ICDEV's `task_dlq.py` implements custom
1380
+ retry logic, the `tenacity` library is the Python standard for production retries:
1381
+
1382
+ ```python
1383
+ from tenacity import (
1384
+ retry, stop_after_attempt, wait_random_exponential,
1385
+ retry_if_exception_type, before_sleep_log,
1386
+ )
1387
+
1388
+ @retry(
1389
+ stop=stop_after_attempt(5),
1390
+ wait=wait_random_exponential(multiplier=1, max=60),
1391
+ retry=retry_if_exception_type((ConnectionError, TimeoutError)),
1392
+ before_sleep=before_sleep_log(logger, logging.WARNING),
1393
+ )
1394
+ def call_bedrock_llm(prompt: str) -> str:
1395
+ """Call Bedrock with automatic retry and jitter."""
1396
+ return bedrock_client.invoke(prompt)
1397
+ ```
1398
+
1399
+ **Key Insight: `wait_random_exponential` vs `wait_exponential`.**
1400
+ - `wait_exponential`: Fixed intervals (1, 2, 4, 8...) -- good for single-client retry
1401
+ - `wait_random_exponential`: Randomized within exponentially widening window --
1402
+ **required for multi-process/multi-agent systems** to avoid thundering herd
1403
+ - ICDEV should always use `wait_random_exponential` since 12 agents may retry
1404
+ simultaneously against the same backend
1405
+
1406
+
1407
+ ### 6.5 Dead Letter Queue for Failed Agent Tasks
1408
+
1409
+ **Implementation.** The `tools/core/task_dlq.py` (created during this research)
1410
+ provides:
1411
+
1412
+ - **Dispatch with retry**: Exponential backoff + jitter, config-driven from
1413
+ `args/resilience_config.yaml`
1414
+ - **DLQ table**: `agent_task_dlq` (append-only, NIST AU compliant)
1415
+ - **Query API**: Filter by agent, resolved/unresolved, with limits
1416
+ - **Resolution tracking**: Mark entries resolved without deleting (audit trail)
1417
+
1418
+ **DLQ Lifecycle:**
1419
+
1420
+ ```
1421
+ Task dispatched
1422
+ |
1423
+ v
1424
+ [Attempt 1] -- fail --> [Wait 1s + jitter]
1425
+ |
1426
+ v
1427
+ [Attempt 2] -- fail --> [Wait 2s + jitter]
1428
+ |
1429
+ v
1430
+ [Attempt 3] -- fail --> [Move to DLQ]
1431
+ |
1432
+ v
1433
+ DLQ entry created (append-only)
1434
+ |
1435
+ +---> Alert operator (if configured)
1436
+ +---> Dashboard DLQ widget
1437
+ +---> Manual review and resolution
1438
+ |
1439
+ v
1440
+ [Resolution] -- set resolved_at, resolved_by (no DELETE)
1441
+ ```
1442
+
1443
+ **DLQ Monitoring Integration:**
1444
+
1445
+ ```python
1446
+ # Add to health check endpoint
1447
+ def dlq_health() -> dict:
1448
+ entries = get_dlq_entries(unresolved_only=True)
1449
+ return {
1450
+ "dlq_unresolved_count": len(entries),
1451
+ "dlq_oldest_entry": entries[-1]["created_at"] if entries else None,
1452
+ "dlq_by_agent": _group_by_agent(entries),
1453
+ "status": "healthy" if len(entries) < 10 else "degraded",
1454
+ }
1455
+ ```
1456
+
1457
+ ---
1458
+
1459
+ ## 7. Priority Actions Summary
1460
+
1461
+ ### Tier 1: High Impact, Low Effort (Do First)
1462
+
1463
+ | # | Action | Files | Impact |
1464
+ |---|--------|-------|--------|
1465
+ | 1 | Property-based tests with Hypothesis for rule engines | `tests/test_compliance_properties.py` | Catches 50x more bugs per test |
1466
+ | 2 | Circuit breaker in LLM router | `tools/core/circuit_breaker.py` (done) | Prevents cascade failures |
1467
+ | 3 | Structured error hierarchy | `tools/core/errors.py` (done) | Consistent debugging across agents |
1468
+ | 4 | Pipeline gates YAML | `args/pipeline_gates.yaml` (done) | Enforces gate ordering |
1469
+ | 5 | Fix `sparkpilot` logger references | Global rename | Branding consistency |
1470
+
1471
+ ### Tier 2: High Impact, Medium Effort
1472
+
1473
+ | # | Action | Files | Impact |
1474
+ |---|--------|-------|--------|
1475
+ | 6 | Contract tests for A2A schemas | `tests/contracts/` (done) | Prevents integration failures |
1476
+ | 7 | Dead letter queue for agent tasks | `tools/core/task_dlq.py` (done) | Prevents lost work |
1477
+ | 8 | Feature flags with env profiles | `args/feature_flags.yaml` (done) | Safer deployments |
1478
+ | 9 | SLSA Level 2 with Sigstore | `.github/workflows/slsa-build.yml` | Supply chain security |
1479
+ | 10 | Snapshot tests for compliance artifacts | `tests/test_compliance_snapshots.py` | Catches regressions |
1480
+
1481
+ ### Tier 3: Medium Impact, Medium-High Effort
1482
+
1483
+ | # | Action | Files | Impact |
1484
+ |---|--------|-------|--------|
1485
+ | 11 | Extract ADRs from CLAUDE.md | `docs/adr/` directory | Improves discoverability |
1486
+ | 12 | DI container adoption | `tools/core/container.py` (done) | Test isolation |
1487
+ | 13 | Degradation matrix | `args/degradation_matrix.yaml` (done) | Documents failure modes |
1488
+ | 14 | OTel GenAI semantic conventions | `tools/observability/otel_conventions.py` | Standardized tracing |
1489
+ | 15 | LLM evaluation framework (DeepEval) | `tests/evals/` | Narrative quality assurance |
1490
+
1491
+ ### Tier 4: Strategic (Plan and Execute Over Time)
1492
+
1493
+ | # | Action | Files | Impact |
1494
+ |---|--------|-------|--------|
1495
+ | 16 | Chaos engineering with LitmusChaos | K8s manifests | Production resilience validation |
1496
+ | 17 | ArgoCD GitOps deployment | `argocd/` directory | Drift detection, audit trail |
1497
+ | 18 | Secret resolver (AWS + Vault) | `tools/db/secret_resolver.py` | Multi-environment secrets |
1498
+ | 19 | Auto-generate API docs from MCP | `tools/docs/mcp_doc_generator.py` | Self-documenting system |
1499
+ | 20 | Mutation testing on rule engines | CI pipeline config | Test suite quality assurance |
1500
+
1501
+ ### Already Delivered During This Research
1502
+
1503
+ | File | Purpose |
1504
+ |------|---------|
1505
+ | `tools/core/__init__.py` | Package init |
1506
+ | `tools/core/errors.py` | 14-class structured error hierarchy |
1507
+ | `tools/core/circuit_breaker.py` | Thread-safe circuit breaker with config |
1508
+ | `tools/core/container.py` | Lightweight DI container |
1509
+ | `tools/core/task_dlq.py` | Dead letter queue with retry |
1510
+ | `args/pipeline_gates.yaml` | Declarative pipeline gate definitions |
1511
+ | `args/feature_flags.yaml` | Feature flags with env profiles |
1512
+ | `args/degradation_matrix.yaml` | Graceful degradation rules |
1513
+ | `tests/test_core_errors.py` | 16 tests for error hierarchy |
1514
+ | `tests/test_circuit_breaker.py` | 17 tests for circuit breaker |
1515
+ | `tests/test_container.py` | 9 tests for DI container |
1516
+ | `tests/test_task_dlq.py` | 8 tests for DLQ |
1517
+ | `tests/contracts/__init__.py` | Contract tests package |
1518
+ | `tests/contracts/test_agent_contracts.py` | 27 tests for 9 agent contracts |
1519
+
1520
+ **Total: 14 files, 81 passing tests**
1521
+
1522
+ ---
1523
+
1524
+ ## 8. Sources
1525
+
1526
+ ### Testing AI-Agentic Systems
1527
+ - [AI Agents, meet Test Driven Development (Latent Space)](https://www.latent.space/p/anita-tdd)
1528
+ - [Red/green TDD - Agentic Engineering Patterns (Simon Willison)](https://simonwillison.net/guides/agentic-engineering-patterns/red-green-tdd/)
1529
+ - [From Scenario to Finished: Domain-Driven TDD for AI Agents (LangWatch)](https://langwatch.ai/blog/from-scenario-to-finished-how-to-test-ai-agents-with-domain-driven-tdd)
1530
+ - [An Empirical Evaluation of Property-Based Testing in Python (OOPSLA 2025)](https://cseweb.ucsd.edu/~mcoblenz/assets/pdf/OOPSLA_2025_PBT.pdf)
1531
+ - [Agentic Property-Based Testing (arXiv 2025)](https://arxiv.org/html/2510.09907v1)
1532
+ - [Semantic Similarity is Nuanced but Not Difficult (Agent CI)](https://agent-ci.com/blog/2025/10/08/semantic-similarity-nuanced-not-difficult/)
1533
+ - [AI Agent Evaluation: 5 Lessons Learned (Monte Carlo Data)](https://www.montecarlodata.com/blog-ai-agent-evaluation/)
1534
+ - [Beyond Task Completion: Assessing Agentic AI Systems (arXiv 2025)](https://arxiv.org/html/2512.12791v1)
1535
+
1536
+ ### LLM Evaluation Frameworks
1537
+ - [LLM Evaluation Landscape 2026 (AIM Research)](https://research.aimultiple.com/llm-eval-tools/)
1538
+ - [DeepEval: LLM Evaluation Framework (GitHub)](https://github.com/confident-ai/deepeval)
1539
+ - [G-Eval: LLM-as-a-Judge Guide (Confident AI)](https://www.confident-ai.com/blog/g-eval-the-definitive-guide)
1540
+ - [LLM-as-a-Judge Complete Guide (Langfuse)](https://langfuse.com/docs/evaluation/evaluation-methods/llm-as-a-judge)
1541
+ - [LLM Rubric Evaluation (Promptfoo)](https://www.promptfoo.dev/docs/configuration/expected-outputs/model-graded/llm-rubric/)
1542
+ - [OpenEvals by LangChain (GitHub)](https://github.com/langchain-ai/openevals)
1543
+
1544
+ ### Contract Testing
1545
+ - [Contract Testing: Shifting Left with Confidence (Tweag)](https://www.tweag.io/blog/2025-01-23-contract-testing/)
1546
+ - [Contract Testing for Microservices Guide (HyperTest)](https://www.hypertest.co/contract-testing/contract-testing-for-microservices)
1547
+ - [Pact Testing Explained (BaseRock AI)](https://www.baserock.ai/blog/pact-testing)
1548
+
1549
+ ### Snapshot Testing
1550
+ - [Snapshot Testing with Syrupy (Simon Willison TIL)](https://til.simonwillison.net/pytest/syrupy)
1551
+ - [Syrupy: Sweeter Pytest Snapshot Plugin (GitHub)](https://github.com/syrupy-project/syrupy)
1552
+
1553
+ ### DevSecOps and cATO
1554
+ - [DoD cATO Evaluation Criteria (PDF)](https://dodcio.defense.gov/Portals/0/Documents/Library/cATO-EvaluationCriteria.pdf)
1555
+ - [DoD Continuous Authorization Implementation Guide (PDF)](https://dodcio.defense.gov/Portals/0/Documents/Library/DoDCIO-ContinuousAuthorizationImplementationGuide.pdf)
1556
+ - [cATO Needs a DevSecOps Platform (VMware Tanzu)](https://blogs.vmware.com/tanzu/continuous-authorization-to-operate-cato-needs-a-devsecops-platform/)
1557
+ - [Unpacking DoD cATO Part IV: SSSC and DevSecOps (BreakPoint Labs)](https://breakpoint-labs.com/unpacking-the-dod-continuous-authorization-to-operate-cato-evaluation-criteria-part-iv-secure-software-supply-chain-sssc-and-devsecops/)
1558
+ - [DevSecOps Trends 2026 (DebugLies)](https://debuglies.com/2026/01/07/devsecops-trends-2026-ai-agents-revolutionizing-secure-software-development/)
1559
+ - [DevSecOps for Defense (Lasting Dynamics)](https://www.lastingdynamics.com/blog/devsecops-agile-defense-military-software-development/)
1560
+ - [How MOSA Principles Will Reshape DoD RMF (Sonatype)](https://www.sonatype.com/blog/how-mosa-principles-will-reshape-the-dod-rmf)
1561
+
1562
+ ### SLSA and Supply Chain Security
1563
+ - [SLSA Framework Guide (Practical DevSecOps)](https://www.practical-devsecops.com/slsa-framework-guide-software-supply-chain-security/)
1564
+ - [SLSA Security Levels (slsa.dev)](https://slsa.dev/spec/v0.1/levels)
1565
+ - [Supply Chain Security 2025: SBOMs, SLSA, Sigstore (Faith Forge Labs)](https://faithforgelabs.com/blog_supplychain_security_2025.php)
1566
+ - [Supply Chain Security Trifecta: SBOM, SLSA, SSDF (Petronella)](https://petronellatech.com/blog/the-supply-chain-security-trifecta-sbom-slsa-ssdf/)
1567
+
1568
+ ### Clean Architecture and Code Quality
1569
+ - [Python Design Patterns for Clean Architecture 2025 (Glukhov)](https://www.glukhov.org/post/2025/11/python-design-patterns-for-clean-architecture/)
1570
+ - [Clean Architecture with Python (Packt/O'Reilly 2025)](https://www.oreilly.com/library/view/clean-architecture-with/9781836642893/)
1571
+ - [Pragmatic Clean Architecture in Python (Deep Engineering)](https://deepengineering.substack.com/p/pragmatic-clean-architecture-in-python)
1572
+ - [Technical Debt Management (DasRoot 2026)](https://dasroot.net/posts/2026/02/technical-debt-management-sonarqube-cicd/)
1573
+ - [How to Manage Tech Debt in the AI Era (MIT Sloan)](https://sloanreview.mit.edu/article/how-to-manage-tech-debt-in-the-ai-era/)
1574
+
1575
+ ### OpenTelemetry
1576
+ - [OTel Semantic Conventions for GenAI Agent Spans](https://opentelemetry.io/docs/specs/semconv/gen-ai/gen-ai-agent-spans/)
1577
+ - [AI Agent Observability Standards (OTel Blog 2025)](https://opentelemetry.io/blog/2025/ai-agent-observability/)
1578
+ - [OTel Observability 2026 Complete Guide (CalmOps)](https://calmops.com/devops/opentelemetry-observability-2026-complete-guide/)
1579
+ - [OTel Best Practices (Better Stack)](https://betterstack.com/community/guides/observability/opentelemetry-best-practices/)
1580
+ - [OTel Python Instrumentation Guide](https://opentelemetry.io/docs/languages/python/instrumentation/)
1581
+
1582
+ ### GitOps
1583
+ - [ArgoCD in the Federal Trenches (AlphaBravo)](https://blog.alphabravo.io/argocd-in-the-federal-trenches-when-uncle-sam-meets-gitops/)
1584
+ - [GitOps 2026 Complete Guide (CalmOps)](https://calmops.com/devops/gitops-2026-complete-guide/)
1585
+ - [ArgoCD vs FluxCD 2025 (AWS Plain English)](https://aws.plainenglish.io/argocd-vs-flux-in-2025-the-gitops-war-is-over-and-you-won-d22e084929a5)
1586
+
1587
+ ### Resilience Engineering
1588
+ - [Building Resilient Systems: Circuit Breakers and Retry (DasRoot 2026)](https://dasroot.net/posts/2026/01/building-resilient-systems-circuit-breakers-retry-patterns/)
1589
+ - [Resilient Microservices: Recovery Patterns Survey (arXiv 2025)](https://arxiv.org/html/2512.16959v1)
1590
+ - [Circuit Breaker with Bulkhead Isolation (GeeksforGeeks)](https://www.geeksforgeeks.org/system-design/circuit-breaker-with-bulkhead-isolation-in-microservices/)
1591
+ - [Dead Letter Queues and Retry Queues (Medium)](https://medium.com/@vinay.georgiatech/dead-letter-queues-and-retry-queues-the-safety-net-for-distributed-systems-b961c718e6a0)
1592
+ - [Retry Logic with Exponential Backoff in Python (OneUptime)](https://oneuptime.com/blog/post/2025-01-06-python-retry-exponential-backoff/view)
1593
+ - [Tenacity: Jitter, Backoff, and Idempotency (Medium 2025)](https://medium.com/@hadiyolworld007/python-retry-policies-with-tenacity-jitter-backoff-and-idempotency-that-survives-chaos-12bba4fc8d32)
1594
+ - [Exponential Backoff with Jitter (Presidio)](https://www.presidio.com/technical-blog/exponential-backoff-with-jitter-a-powerful-tool-for-resilient-systems/)
1595
+
1596
+ ### Chaos Engineering
1597
+ - [LitmusChaos (GitHub/CNCF)](https://github.com/litmuschaos/litmus)
1598
+ - [Chaos Mesh (GitHub/CNCF)](https://github.com/chaos-mesh/chaos-mesh)
1599
+ - [Chaos Engineering in the Wild (arXiv 2025)](https://arxiv.org/html/2505.13654v1)
1600
+ - [Chaos Mesh + Testkube Integration (Testkube)](https://testkube.io/blog/orchestrating-chaos-engineering-with-testkube-and-chaos-mesh)
1601
+
1602
+ ### Configuration Management
1603
+ - [ADR Best Practices (AWS Architecture Blog 2025)](https://aws.amazon.com/blogs/architecture/master-architecture-decision-records-adrs-best-practices-for-effective-decision-making/)
1604
+ - [ADR Process (AWS Prescriptive Guidance)](https://docs.aws.amazon.com/prescriptive-guidance/latest/architectural-decision-records/adr-process.html)
1605
+ - [Maintain ADRs (Azure Well-Architected Framework)](https://learn.microsoft.com/en-us/azure/well-architected/architect-role/architecture-decision-record)
1606
+ - [Feature Flag Tools for Enterprises 2025 (Flagsmith)](https://www.flagsmith.com/blog/top-7-feature-flag-tools)
1607
+ - [Open-Source Feature Flag Tools (Unleash)](https://www.getunleash.io/blog/11-open-source-feature-flag-tools)
1608
+ - [HashiCorp Vault vs AWS Secrets Manager 2026 (Infisical)](https://infisical.com/blog/aws-secrets-manager-vs-hashicorp-vault)
1609
+ - [Alembic Schema Migration Best Practices (PingCAP)](https://www.pingcap.com/article/best-practices-alembic-schema-migration/)
1610
+ - [Alembic Batch Migrations for SQLite (Alembic Docs)](https://alembic.sqlalchemy.org/en/latest/batch.html)
1611
+
1612
+ ### API Documentation
1613
+ - [OpenAPI Generator (GitHub)](https://github.com/OpenAPITools/openapi-generator)
1614
+ - [API Documentation Tools 2025 (Mintlify)](https://www.mintlify.com/blog/best-api-documentation-tools-of-2025)
1615
+ - [API Docs and SDK Generation (Fern 2025)](https://buildwithfern.com/post/api-documentation-sdk-generation-tools)