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.
- args/agent_config.yaml +113 -0
- args/audit_regimes/cisa_sbd.json +381 -0
- args/audit_regimes/cmmc_l2.json +906 -0
- args/audit_regimes/dod_cssp.json +393 -0
- args/audit_regimes/dodi_5000_87.json +297 -0
- args/audit_regimes/fedramp_moderate.json +650 -0
- args/audit_regimes/ieee_1012.json +373 -0
- args/audit_regimes/nist_800_171.json +624 -0
- args/audit_regimes/nist_800_53.json +907 -0
- args/cloudforge_blueprints/aws_commercial.yaml +29 -0
- args/cloudforge_blueprints/aws_govcloud_il4.yaml +34 -0
- args/cloudforge_blueprints/aws_govcloud_il5.yaml +38 -0
- args/cloudforge_blueprints/azure_commercial.yaml +28 -0
- args/cloudforge_blueprints/azure_gov_il4.yaml +32 -0
- args/cloudforge_blueprints/azure_gov_il5.yaml +36 -0
- args/cloudforge_blueprints/gcp_commercial.yaml +28 -0
- args/cloudforge_blueprints/oci_commercial.yaml +28 -0
- args/cloudforge_config.yaml +231 -0
- args/cloudforge_runbook_templates/backup_verify.yaml +98 -0
- args/cloudforge_runbook_templates/dr_failover.yaml +107 -0
- args/cloudforge_runbook_templates/health_check.yaml +97 -0
- args/cloudforge_runbook_templates/incident_response.yaml +101 -0
- args/cloudforge_runbook_templates/migration_cutover.yaml +105 -0
- args/cloudforge_runbook_templates/patch_rollout.yaml +92 -0
- args/cloudforge_runbook_templates/zone_provision.yaml +93 -0
- args/code_pattern_config.yaml +151 -0
- args/code_quality_config.yaml +47 -0
- args/compliance_config.yaml +17 -0
- args/control_inheritance.yaml +177 -0
- args/csp_mcp_config.yaml +41 -0
- args/cui_markings.yaml +35 -0
- args/databridge_config.yaml +232 -0
- args/db_config.yaml +116 -0
- args/decision_tables/agent_trust_decision.yaml +143 -0
- args/decision_tables/ato_boundary_impact.yaml +132 -0
- args/decision_tables/deployment_approval.yaml +152 -0
- args/degradation_matrix.yaml +163 -0
- args/devsecops_config.yaml +286 -0
- args/endpoint_security_config.yaml +207 -0
- args/exit_criteria.yaml +102 -0
- args/feature_flags.yaml +235 -0
- args/file_access_tiers.yaml +88 -0
- args/forge_studio/blueprint_config.yaml +27 -0
- args/forge_studio/component_catalog.json +411 -0
- args/forge_studio/workflow_templates.yaml +103 -0
- args/govcon_config.yaml +41 -0
- args/harness_config.yaml +67 -0
- args/innovation_config.yaml +321 -0
- args/knowledge_graph_config.yaml +113 -0
- args/llm_config.yaml +222 -0
- args/marketplace_config.yaml +260 -0
- args/monitoring_config.yaml +127 -0
- args/mosa_config.yaml +190 -0
- args/observability_tracing_config.yaml +170 -0
- args/owasp_agentic_config.yaml +171 -0
- args/pipeline_gates.yaml +197 -0
- args/project_defaults.yaml +235 -0
- args/prompt_chains.yaml +163 -0
- args/rag_config.yaml +167 -0
- args/research_config.yaml +89 -0
- args/resilience_config.yaml +197 -0
- args/ricoas_config.yaml +191 -0
- args/security_gates.yaml +763 -0
- args/storage_config.yaml +63 -0
- args/writeguard_config.yaml +131 -0
- args/zta_config.yaml +247 -0
- context/__init__.py +6 -0
- context/agent/__init__.py +6 -0
- context/agent/response_schemas/__init__.py +6 -0
- context/agent/response_schemas/debate_position.json +46 -0
- context/agent/response_schemas/fitness_scorecard.json +74 -0
- context/agent/response_schemas/review_decision.json +39 -0
- context/agent/response_schemas/task_decomposition.json +82 -0
- context/agent/response_schemas/veto_decision.json +40 -0
- context/agentic/__init__.py +6 -0
- context/agentic/architecture_patterns.md +269 -0
- context/agentic/capability_registry.yaml +223 -0
- context/agentic/csp_integration.md +30 -0
- context/agentic/csp_mcp_registry.yaml +280 -0
- context/agentic/fitness_rubric.md +56 -0
- context/agentic/governance_baseline.md +205 -0
- context/ci/__init__.py +6 -0
- context/ci/worktree_templates.json +44 -0
- context/cloud/__init__.py +6 -0
- context/cloud/csp_service_registry.json +739 -0
- context/compliance/__init__.py +6 -0
- context/compliance/ai_rmf_crosswalk.yaml +226 -0
- context/compliance/atlas_mitigations.json +293 -0
- context/compliance/atlas_techniques.json +833 -0
- context/compliance/cisa_sbd_requirements.json +477 -0
- context/compliance/cjis_security_policy.json +522 -0
- context/compliance/cmmc_practices.json +2494 -0
- context/compliance/cmmc_report_template.md +142 -0
- context/compliance/cnssi_1253_overlay.json +109 -0
- context/compliance/control_crosswalk.json +1914 -0
- context/compliance/control_families/__init__.py +6 -0
- context/compliance/csp_certifications.json +251 -0
- context/compliance/cssp_report_template.md +193 -0
- context/compliance/cui_templates/__init__.py +6 -0
- context/compliance/cui_templates/banner_block.txt +4 -0
- context/compliance/cui_templates/code_header.txt +8 -0
- context/compliance/cui_templates/document_template.md +35 -0
- context/compliance/data_type_framework_map.json +321 -0
- context/compliance/data_type_registry.json +147 -0
- context/compliance/dod_cssp_8530.json +463 -0
- context/compliance/eu_ai_act_annex_iii.json +108 -0
- context/compliance/export_templates/__init__.py +6 -0
- context/compliance/export_templates/emass_controls.csv.j2 +4 -0
- context/compliance/export_templates/evidence_package.md.j2 +39 -0
- context/compliance/export_templates/executive_summary.md.j2 +55 -0
- context/compliance/export_templates/poam_tracking.csv.j2 +4 -0
- context/compliance/fedramp_20x_ksi_schemas.json +133 -0
- context/compliance/fedramp_high_baseline.json +4370 -0
- context/compliance/fedramp_moderate_baseline.json +2183 -0
- context/compliance/fedramp_report_template.md +181 -0
- context/compliance/fips_200_areas.json +362 -0
- context/compliance/gao_ai_accountability.json +262 -0
- context/compliance/hipaa_security_rule.json +720 -0
- context/compliance/hitrust_csf_v11.json +930 -0
- context/compliance/impact_level_profiles.json +251 -0
- context/compliance/incident_response_template.md +1110 -0
- context/compliance/iso27001_2022_controls.json +750 -0
- context/compliance/iso27001_nist_bridge.json +382 -0
- context/compliance/iso42001_controls.json +254 -0
- context/compliance/ivv_checklist_template.md +80 -0
- context/compliance/ivv_report_template.md +116 -0
- context/compliance/ivv_requirements.json +372 -0
- context/compliance/mosa_crosswalk.json +327 -0
- context/compliance/mosa_framework.json +250 -0
- context/compliance/narrative_templates/AC.md.j2 +101 -0
- context/compliance/narrative_templates/AU.md.j2 +106 -0
- context/compliance/narrative_templates/IA.md.j2 +104 -0
- context/compliance/narrative_templates/SC.md.j2 +102 -0
- context/compliance/narrative_templates/SI.md.j2 +111 -0
- context/compliance/narrative_templates/__init__.py +6 -0
- context/compliance/narrative_templates/default.md.j2 +50 -0
- context/compliance/narrative_templates/executive_summary.j2 +27 -0
- context/compliance/narrative_templates/poam_milestone.j2 +19 -0
- context/compliance/narrative_templates/ssp_section.j2 +11 -0
- context/compliance/nist_800_171_controls.json +1552 -0
- context/compliance/nist_800_207_crosswalk.json +399 -0
- context/compliance/nist_800_207_zta.json +258 -0
- context/compliance/nist_800_53.json +324 -0
- context/compliance/nist_ai_600_1_genai.json +326 -0
- context/compliance/nist_ai_rmf.json +206 -0
- context/compliance/nist_sp_800_60_types.json +1667 -0
- context/compliance/omb_m25_21_high_impact_ai.json +248 -0
- context/compliance/omb_m26_04_unbiased_ai.json +262 -0
- context/compliance/owasp_agentic_asi.json +133 -0
- context/compliance/owasp_agentic_threats.json +285 -0
- context/compliance/owasp_llm_top10.json +274 -0
- context/compliance/pci_dss_v4.json +510 -0
- context/compliance/poam_template.md +117 -0
- context/compliance/safeai_controls.json +512 -0
- context/compliance/sbd_report_template.md +77 -0
- context/compliance/siem_config_templates/__init__.py +6 -0
- context/compliance/siem_config_templates/filebeat.yml +213 -0
- context/compliance/siem_config_templates/log_sources.json +208 -0
- context/compliance/soc2_trust_criteria.json +661 -0
- context/compliance/ssp_template.md +432 -0
- context/compliance/stig_templates/__init__.py +6 -0
- context/compliance/stig_templates/webapp_stig.json +139 -0
- context/compliance/xai_requirements.json +108 -0
- context/dashboard/__init__.py +6 -0
- context/dashboard/nlq_examples.json +50 -0
- context/dashboard/schema_descriptions.json +23 -0
- context/icdev_methodology.md +100 -0
- context/integration/__init__.py +6 -0
- context/integration/approval_workflows.json +32 -0
- context/integration/gitlab_field_mappings.json +33 -0
- context/integration/jira_field_mappings.json +32 -0
- context/integration/reqif_export_schema.json +23 -0
- context/integration/servicenow_field_mappings.json +22 -0
- context/languages/__init__.py +6 -0
- context/languages/framework_patterns.json +205 -0
- context/languages/language_registry.json +279 -0
- context/llm/__init__.py +6 -0
- context/llm/example_provider.py +89 -0
- context/marketplace/assets/writeguard-core.yaml +100 -0
- context/marketplace/assets/writeguard-govcon.yaml +45 -0
- context/marketplace/assets/writeguard-style-guides.yaml +44 -0
- context/mbse/__init__.py +6 -0
- context/mbse/des_report_template.md +162 -0
- context/mbse/des_requirements.json +411 -0
- context/mbse/digital_thread_patterns.json +403 -0
- context/mbse/reqif_schema.json +280 -0
- context/mbse/sysml_element_types.json +432 -0
- context/oscal/NIST_SP-800-53_rev5_catalog.json +254987 -0
- context/oscal/README.md +43 -0
- context/patterns/__init__.py +6 -0
- context/profiles/__init__.py +6 -0
- context/profiles/dod_baseline_v1.yaml +145 -0
- context/profiles/fedramp_baseline_v1.yaml +143 -0
- context/profiles/financial_baseline_v1.yaml +142 -0
- context/profiles/healthcare_baseline_v1.yaml +135 -0
- context/profiles/law_enforcement_v1.yaml +129 -0
- context/profiles/startup_v1.yaml +134 -0
- context/rag/source_mappings.json +42 -0
- context/requirements/__init__.py +6 -0
- context/requirements/ambiguity_patterns.json +97 -0
- context/requirements/boundary_impact_rules.json +123 -0
- context/requirements/default_constitutions.json +67 -0
- context/requirements/document_extraction_rules.json +58 -0
- context/requirements/gap_patterns.json +108 -0
- context/requirements/readiness_rubric.json +78 -0
- context/requirements/red_alternative_patterns.json +210 -0
- context/requirements/safe_templates.json +72 -0
- context/requirements/spec_quality_checklist.json +122 -0
- context/research/regulatory_registry.json +114 -0
- context/research/verticals/cybersecurity.json +127 -0
- context/research/verticals/defense.json +104 -0
- context/research/verticals/fintech.json +125 -0
- context/research/verticals/healthcare.json +118 -0
- context/research/verticals/logistics.json +117 -0
- context/research/verticals/trading.json +145 -0
- context/simulation/__init__.py +6 -0
- context/simulation/architecture_patterns.json +36 -0
- context/simulation/coa_templates.json +38 -0
- context/simulation/cost_models.json +23 -0
- context/simulation/risk_categories.json +46 -0
- context/supply_chain/__init__.py +6 -0
- context/supply_chain/isa_templates.json +129 -0
- context/supply_chain/nist_800_161_controls.json +247 -0
- context/supply_chain/scrm_risk_matrix.json +147 -0
- context/templates/__init__.py +6 -0
- context/templates/ansible/__init__.py +6 -0
- context/templates/ansible/playbooks/__init__.py +6 -0
- context/templates/ansible/roles/__init__.py +6 -0
- context/templates/gitlab_ci/__init__.py +6 -0
- context/templates/grafana/__init__.py +6 -0
- context/templates/kubernetes/__init__.py +6 -0
- context/templates/project/__init__.py +6 -0
- context/templates/project/api/__init__.py +6 -0
- context/templates/project/cli/__init__.py +6 -0
- context/templates/project/data_pipeline/__init__.py +6 -0
- context/templates/project/iac/__init__.py +6 -0
- context/templates/project/javascript_frontend/__init__.py +6 -0
- context/templates/project/javascript_frontend/src/__init__.py +6 -0
- context/templates/project/javascript_frontend/tests/__init__.py +6 -0
- context/templates/project/microservice/__init__.py +6 -0
- context/templates/project/python_backend/__init__.py +6 -0
- context/templates/project/python_backend/src/__init__.py +6 -0
- context/templates/project/python_backend/tests/__init__.py +6 -0
- context/templates/project/python_backend/tests/features/__init__.py +6 -0
- context/templates/project/python_backend/tests/steps/__init__.py +6 -0
- context/templates/terraform/__init__.py +6 -0
- context/templates/terraform/govcloud_base/__init__.py +6 -0
- context/templates/terraform/modules/__init__.py +6 -0
- context/tone/__init__.py +6 -0
- context/writing/grammar_rules/common_errors.json +306 -0
- context/writing/grammar_rules/govcon_vocabulary.json +113 -0
- context/writing/style_guides/academic.yaml +43 -0
- context/writing/style_guides/business.yaml +42 -0
- context/writing/style_guides/government.yaml +59 -0
- context/writing/style_guides/proposal.yaml +58 -0
- context/writing/style_guides/technical.yaml +43 -0
- docs/adr/README.md +66 -0
- docs/adr/connector-forge-decisions.md +318 -0
- docs/adr/core-decisions.md +289 -0
- docs/adr/db-decisions.md +94 -0
- docs/adr/harness-decisions.md +122 -0
- docs/adr/innovation-decisions.md +262 -0
- docs/adr/marketplace-decisions.md +109 -0
- docs/adr/sbd-decisions.md +109 -0
- docs/adr/scale-engine-decisions.md +108 -0
- docs/adr/writeguard-decisions.md +136 -0
- docs/architecture/bounded-contexts.md +1032 -0
- docs/features/phase-65-writeguard.md +139 -0
- docs/features/phase-66-marketplace-commerce.md +79 -0
- docs/features/phase-67-knowledge-ingestion-rag-autodraft.md +97 -0
- docs/features/phase-68-enhanced-autodraft-pipeline.md +109 -0
- docs/features/phase-69-proposalai-marketplace-module.md +131 -0
- docs/features/phase-70-databridge.md +214 -0
- docs/features/phase-71-databridge-messaging.md +102 -0
- docs/implementation-plan-architecture-evolution.md +614 -0
- docs/marketplace/CONTRIBUTING.md +124 -0
- docs/marketplace/module_manifest_schema.yaml +83 -0
- docs/research/ai-architecture-patterns-2024-2026.md +1236 -0
- docs/research/app-builder-platform-analysis.md +582 -0
- docs/research/architecture-patterns-c4-ddd-agentic.md +871 -0
- docs/research/flowable-boat-competitive-analysis.md +426 -0
- docs/research/modern-dev-practices-2024-2026.md +1615 -0
- docs/research/secure-by-design-cloudyrion-adaptation.md +270 -0
- goals/agent_management.md +144 -0
- goals/ai_accountability.md +90 -0
- goals/ai_narratives.md +79 -0
- goals/ai_transparency.md +76 -0
- goals/ato_simulator.md +78 -0
- goals/audit_engine.md +177 -0
- goals/bite_sized_plans.md +225 -0
- goals/boundary_supply_chain.md +206 -0
- goals/brainstorming_gate.md +186 -0
- goals/build_app.md +604 -0
- goals/cato_live_evidence.md +77 -0
- goals/cloudforge.md +106 -0
- goals/code_intelligence.md +197 -0
- goals/compliance_workflow.md +858 -0
- goals/connector_forge.md +133 -0
- goals/databridge.md +128 -0
- goals/deploy_workflow.md +390 -0
- goals/developer_scorecard.md +78 -0
- goals/devsecops_workflow.md +408 -0
- goals/firmware_sbom.md +79 -0
- goals/forge_hub.md +78 -0
- goals/golden_path.md +77 -0
- goals/harness_engineering.md +91 -0
- goals/integration_testing.md +189 -0
- goals/knowledge_graph.md +128 -0
- goals/maintenance_audit.md +196 -0
- goals/manifest.md +50 -0
- goals/monitoring.md +126 -0
- goals/mosa_workflow.md +463 -0
- goals/multi_agent_orchestration.md +68 -0
- goals/observability_traceability_xai.md +154 -0
- goals/owasp_agentic_security.md +395 -0
- goals/pr_intelligence.md +78 -0
- goals/requirements_intake.md +213 -0
- goals/secure_by_design.md +135 -0
- goals/security_scan.md +381 -0
- goals/self_healing.md +120 -0
- goals/simulation_engine.md +111 -0
- goals/subagent_review.md +205 -0
- goals/systematic_debugging.md +257 -0
- goals/tdd_workflow.md +403 -0
- goals/template_exchange.md +77 -0
- goals/thread_heatmap.md +77 -0
- goals/threat_modeler.md +77 -0
- goals/verification_iron_law.md +192 -0
- goals/vsm_dashboard.md +76 -0
- goals/writeguard.md +89 -0
- goals/zero_trust_architecture.md +403 -0
- hardprompts/__init__.py +6 -0
- hardprompts/agent/__init__.py +6 -0
- hardprompts/agent/agentic_architect.md +100 -0
- hardprompts/agent/debate_prompt.md +32 -0
- hardprompts/agent/fitness_evaluation.md +48 -0
- hardprompts/agent/governance_review.md +214 -0
- hardprompts/agent/reviewer_prompt.md +34 -0
- hardprompts/agent/skill_design.md +172 -0
- hardprompts/agent/task_decomposition.md +275 -0
- hardprompts/agent/veto_check_prompt.md +33 -0
- hardprompts/architect/__init__.py +6 -0
- hardprompts/architect/api_design.md +283 -0
- hardprompts/architect/data_model.md +277 -0
- hardprompts/architect/system_design.md +180 -0
- hardprompts/builder/__init__.py +6 -0
- hardprompts/builder/code_generation.md +59 -0
- hardprompts/builder/refactor.md +58 -0
- hardprompts/builder/scaffold_project.md +69 -0
- hardprompts/builder/test_generation.md +87 -0
- hardprompts/ci/__init__.py +6 -0
- hardprompts/ci/worktree_setup.md +35 -0
- hardprompts/compliance/__init__.py +6 -0
- hardprompts/compliance/cmmc_assessment.md +63 -0
- hardprompts/compliance/cssp_assessment.md +75 -0
- hardprompts/compliance/cui_marking.md +86 -0
- hardprompts/compliance/fedramp_assessment.md +55 -0
- hardprompts/compliance/ivv_assessment.md +96 -0
- hardprompts/compliance/poam_generation.md +57 -0
- hardprompts/compliance/sbd_assessment.md +101 -0
- hardprompts/compliance/security_categorization.md +74 -0
- hardprompts/compliance/ssp_generation.md +56 -0
- hardprompts/compliance/stig_evaluation.md +63 -0
- hardprompts/dashboard/__init__.py +6 -0
- hardprompts/dashboard/nlq_system_prompt.md +26 -0
- hardprompts/infra/__init__.py +6 -0
- hardprompts/infra/k8s_manifests.md +118 -0
- hardprompts/infra/pipeline_generation.md +160 -0
- hardprompts/infra/terraform_generation.md +92 -0
- hardprompts/integration/__init__.py +6 -0
- hardprompts/integration/approval_review.md +17 -0
- hardprompts/integration/jira_mapping.md +25 -0
- hardprompts/integration/servicenow_mapping.md +14 -0
- hardprompts/knowledge/__init__.py +6 -0
- hardprompts/knowledge/pattern_detection.md +73 -0
- hardprompts/knowledge/recommendation_engine.md +90 -0
- hardprompts/knowledge/root_cause_analysis.md +91 -0
- hardprompts/maintenance/__init__.py +6 -0
- hardprompts/maintenance/maintenance_assessment.md +82 -0
- hardprompts/mbse/__init__.py +6 -0
- hardprompts/mbse/digital_thread.md +67 -0
- hardprompts/mbse/model_import.md +62 -0
- hardprompts/mbse/model_to_code.md +65 -0
- hardprompts/modernization/__init__.py +6 -0
- hardprompts/modernization/legacy_analysis.md +93 -0
- hardprompts/modernization/migration_planning.md +150 -0
- hardprompts/modernization/seven_r_assessment.md +107 -0
- hardprompts/proposal_draft.md +53 -0
- hardprompts/rag_citation.md +12 -0
- hardprompts/rag_rerank.md +31 -0
- hardprompts/requirements/__init__.py +6 -0
- hardprompts/requirements/bdd_generation.md +35 -0
- hardprompts/requirements/clarification_prioritization.md +29 -0
- hardprompts/requirements/decomposition.md +60 -0
- hardprompts/requirements/document_extraction.md +45 -0
- hardprompts/requirements/gap_detection.md +70 -0
- hardprompts/requirements/intake_conversation.md +101 -0
- hardprompts/requirements/readiness_assessment.md +39 -0
- hardprompts/requirements/spec_quality.md +33 -0
- hardprompts/requirements/traceability_analysis.md +23 -0
- hardprompts/security/__init__.py +6 -0
- hardprompts/security/endpoint_security.md +78 -0
- hardprompts/security/threat_model.md +70 -0
- hardprompts/security/vulnerability_assessment.md +81 -0
- hardprompts/simulation/__init__.py +6 -0
- hardprompts/simulation/architecture_impact.md +27 -0
- hardprompts/simulation/coa_alternative.md +27 -0
- hardprompts/simulation/coa_generation.md +25 -0
- hardprompts/simulation/compliance_impact.md +28 -0
- hardprompts/simulation/cost_estimation.md +33 -0
- hardprompts/simulation/risk_assessment.md +28 -0
- hardprompts/translation/code_translation.md +68 -0
- hardprompts/translation/dependency_suggestion.md +44 -0
- hardprompts/translation/test_translation.md +64 -0
- hardprompts/translation/translation_repair.md +59 -0
- icdev-0.0.3.dist-info/METADATA +909 -0
- icdev-0.0.3.dist-info/RECORD +1214 -0
- icdev-0.0.3.dist-info/WHEEL +5 -0
- icdev-0.0.3.dist-info/entry_points.txt +9 -0
- icdev-0.0.3.dist-info/licenses/LICENSE +201 -0
- icdev-0.0.3.dist-info/licenses/NOTICE +11 -0
- icdev-0.0.3.dist-info/top_level.txt +7 -0
- memory/MEMORY.md +52 -0
- memory/logs/2026-02-14.md +17 -0
- memory/logs/2026-03-03.md +2 -0
- memory/logs/__init__.py +1 -0
- tools/a2a/icdev_callback_client.py +210 -0
- tools/agent/cards/architect_card.json +29 -0
- tools/agent/cards/builder_card.json +34 -0
- tools/agent/cards/compliance_card.json +29 -0
- tools/agent/cards/connector_forge_card.json +49 -0
- tools/agent/cards/devsecops_zta_card.json +24 -0
- tools/agent/cards/knowledge_card.json +29 -0
- tools/agent/cards/monitor_card.json +29 -0
- tools/agent/cards/orchestrator_card.json +29 -0
- tools/agent/cards/requirements_analyst_card.json +24 -0
- tools/agent/cards/security_card.json +29 -0
- tools/agent/cards/simulation_card.json +24 -0
- tools/agent/cards/supply_chain_card.json +24 -0
- tools/analysis/__init__.py +1 -0
- tools/analysis/code_analyzer.py +770 -0
- tools/analysis/runtime_feedback.py +379 -0
- tools/analytics/__init__.py +2 -0
- tools/analytics/scorecard.py +538 -0
- tools/analytics/vsm_engine.py +612 -0
- tools/architecture/__init__.py +2 -0
- tools/architecture/adr_extractor.py +393 -0
- tools/audit/__init__.py +1 -0
- tools/audit/audit_logger.py +199 -0
- tools/audit/audit_query.py +153 -0
- tools/audit/decision_recorder.py +73 -0
- tools/audit_engine/__init__.py +12 -0
- tools/audit_engine/ai_advisor.py +906 -0
- tools/audit_engine/cli.py +286 -0
- tools/audit_engine/comparator.py +305 -0
- tools/audit_engine/eject_scaffolder.py +399 -0
- tools/audit_engine/engine.py +614 -0
- tools/audit_engine/git_fetcher.py +341 -0
- tools/audit_engine/regime_loader.py +200 -0
- tools/audit_engine/regime_updater.py +325 -0
- tools/audit_engine/report_card.py +289 -0
- tools/audit_engine/scanner.py +684 -0
- tools/audit_engine/self_heal.py +1042 -0
- tools/ci/__init__.py +2 -0
- tools/ci/connectors/__init__.py +2 -0
- tools/ci/connectors/base_connector.py +80 -0
- tools/ci/connectors/connector_registry.py +188 -0
- tools/ci/connectors/mattermost_connector.py +159 -0
- tools/ci/connectors/slack_connector.py +197 -0
- tools/ci/core/__init__.py +2 -0
- tools/ci/core/air_gap_detector.py +115 -0
- tools/ci/core/comment_handler.py +192 -0
- tools/ci/core/conversation_manager.py +480 -0
- tools/ci/core/event_envelope.py +500 -0
- tools/ci/core/event_router.py +444 -0
- tools/ci/core/failure_parser.py +397 -0
- tools/ci/core/recovery_engine.py +527 -0
- tools/ci/gate_enforcer.py +361 -0
- tools/ci/modules/__init__.py +2 -0
- tools/ci/modules/agent.py +271 -0
- tools/ci/modules/git_ops.py +175 -0
- tools/ci/modules/state.py +117 -0
- tools/ci/modules/vcs.py +303 -0
- tools/ci/modules/workflow_ops.py +295 -0
- tools/ci/modules/worktree.py +337 -0
- tools/ci/pipeline_config_generator.py +558 -0
- tools/ci/pr_intelligence.py +485 -0
- tools/ci/triggers/__init__.py +2 -0
- tools/ci/triggers/gitlab_task_monitor.py +327 -0
- tools/ci/triggers/poll_trigger.py +237 -0
- tools/ci/triggers/webhook_server.py +356 -0
- tools/ci/workflows/__init__.py +2 -0
- tools/ci/workflows/icdev_build.py +140 -0
- tools/ci/workflows/icdev_comply.py +284 -0
- tools/ci/workflows/icdev_document.py +152 -0
- tools/ci/workflows/icdev_e2e.py +188 -0
- tools/ci/workflows/icdev_patch.py +186 -0
- tools/ci/workflows/icdev_plan.py +202 -0
- tools/ci/workflows/icdev_plan_build.py +41 -0
- tools/ci/workflows/icdev_plan_build_test.py +46 -0
- tools/ci/workflows/icdev_plan_build_test_review.py +47 -0
- tools/ci/workflows/icdev_review.py +126 -0
- tools/ci/workflows/icdev_sdlc.py +261 -0
- tools/ci/workflows/icdev_test.py +240 -0
- tools/cli/__init__.py +1 -0
- tools/cli/output_formatter.py +756 -0
- tools/cloudforge/__init__.py +12 -0
- tools/cloudforge/airgap/__init__.py +2 -0
- tools/cloudforge/airgap/il_classifier.py +70 -0
- tools/cloudforge/airgap/offline_validator.py +42 -0
- tools/cloudforge/airgap/shift_emulator.py +155 -0
- tools/cloudforge/airgap/sneakernet.py +91 -0
- tools/cloudforge/cd_hub/__init__.py +2 -0
- tools/cloudforge/cd_hub/canary_deployer.py +88 -0
- tools/cloudforge/cd_hub/gitops_renderer.py +123 -0
- tools/cloudforge/cd_hub/hub_controller.py +143 -0
- tools/cloudforge/cd_hub/pipeline_bridge.py +30 -0
- tools/cloudforge/cd_hub/rollback_engine.py +29 -0
- tools/cloudforge/cd_hub/spoke_agent.py +51 -0
- tools/cloudforge/compliance/__init__.py +2 -0
- tools/cloudforge/compliance/ato_accelerator.py +272 -0
- tools/cloudforge/compliance/control_inheritor.py +127 -0
- tools/cloudforge/compliance/evidence_generator.py +129 -0
- tools/cloudforge/compliance/poam_bridge.py +41 -0
- tools/cloudforge/compliance/ssp_bridge.py +52 -0
- tools/cloudforge/compliance/stig_bridge.py +41 -0
- tools/cloudforge/container_forge/__init__.py +2 -0
- tools/cloudforge/container_forge/bigbang_renderer.py +85 -0
- tools/cloudforge/container_forge/hardener.py +169 -0
- tools/cloudforge/container_forge/image_scanner_bridge.py +33 -0
- tools/cloudforge/container_forge/runtime_policy.py +87 -0
- tools/cloudforge/container_forge/sbom_bridge.py +42 -0
- tools/cloudforge/finops/__init__.py +2 -0
- tools/cloudforge/finops/anomaly_detector.py +78 -0
- tools/cloudforge/finops/budget_tracker.py +96 -0
- tools/cloudforge/finops/chargeback.py +69 -0
- tools/cloudforge/finops/cost_collector.py +141 -0
- tools/cloudforge/finops/optimizer.py +55 -0
- tools/cloudforge/hybrid/__init__.py +2 -0
- tools/cloudforge/hybrid/connection_manager.py +141 -0
- tools/cloudforge/hybrid/dns_federator.py +56 -0
- tools/cloudforge/hybrid/health_monitor.py +108 -0
- tools/cloudforge/hybrid/identity_federator.py +53 -0
- tools/cloudforge/hybrid/network_bridge.py +68 -0
- tools/cloudforge/hybrid/topology_manager.py +147 -0
- tools/cloudforge/hybrid/workload_abstractor.py +92 -0
- tools/cloudforge/iac/__init__.py +2 -0
- tools/cloudforge/iac/drift_detector.py +154 -0
- tools/cloudforge/iac/module_library.py +265 -0
- tools/cloudforge/iac/opentofu_adapter.py +89 -0
- tools/cloudforge/iac/pulumi_renderer.py +292 -0
- tools/cloudforge/iac/state_backend.py +146 -0
- tools/cloudforge/iac/terraform_renderer.py +626 -0
- tools/cloudforge/landing_zone/__init__.py +2 -0
- tools/cloudforge/landing_zone/blueprint_loader.py +98 -0
- tools/cloudforge/landing_zone/blueprint_validator.py +113 -0
- tools/cloudforge/landing_zone/zone_provisioner.py +306 -0
- tools/cloudforge/landing_zone/zone_state.py +143 -0
- tools/cloudforge/mbse_thread/__init__.py +2 -0
- tools/cloudforge/mbse_thread/ato_thread_weaver.py +111 -0
- tools/cloudforge/mbse_thread/control_tracer.py +68 -0
- tools/cloudforge/mbse_thread/system_boundary.py +83 -0
- tools/cloudforge/metastore/__init__.py +2 -0
- tools/cloudforge/metastore/dependency_graph.py +202 -0
- tools/cloudforge/metastore/discovery.py +192 -0
- tools/cloudforge/metastore/registry.py +185 -0
- tools/cloudforge/metastore/rto_tracker.py +92 -0
- tools/cloudforge/metastore/runbook_linker.py +82 -0
- tools/cloudforge/migration/__init__.py +2 -0
- tools/cloudforge/migration/assessor.py +187 -0
- tools/cloudforge/migration/cutover_orchestrator.py +117 -0
- tools/cloudforge/migration/databridge_bridge.py +92 -0
- tools/cloudforge/migration/planner.py +98 -0
- tools/cloudforge/migration/risk_scorer.py +97 -0
- tools/cloudforge/migration/validation_runner.py +45 -0
- tools/cloudforge/migration/workload_inventory.py +107 -0
- tools/cloudforge/provider.py +319 -0
- tools/cloudforge/providers/__init__.py +2 -0
- tools/cloudforge/providers/aws_commercial.py +92 -0
- tools/cloudforge/providers/aws_govcloud.py +229 -0
- tools/cloudforge/providers/aws_secret.py +83 -0
- tools/cloudforge/providers/azure_commercial.py +80 -0
- tools/cloudforge/providers/azure_gov.py +91 -0
- tools/cloudforge/providers/azure_secret.py +71 -0
- tools/cloudforge/providers/gcp.py +102 -0
- tools/cloudforge/providers/oci.py +102 -0
- tools/cloudforge/registry.py +140 -0
- tools/cloudforge/runbooks/__init__.py +2 -0
- tools/cloudforge/runbooks/ai_generator.py +119 -0
- tools/cloudforge/runbooks/dag_validator.py +219 -0
- tools/cloudforge/runbooks/engine.py +470 -0
- tools/cloudforge/runbooks/models.py +99 -0
- tools/cloudforge/runbooks/snippet_library.py +158 -0
- tools/cloudforge/runbooks/template_loader.py +122 -0
- tools/cloudforge/runbooks/visualization.py +108 -0
- tools/cloudforge/siem/__init__.py +2 -0
- tools/cloudforge/siem/alert_rules.py +86 -0
- tools/cloudforge/siem/correlation_engine.py +61 -0
- tools/cloudforge/siem/log_aggregator.py +113 -0
- tools/cloudforge/siem/siem_dashboard_data.py +28 -0
- tools/cloudforge/supply_chain/__init__.py +2 -0
- tools/cloudforge/supply_chain/bridge.py +33 -0
- tools/cloudforge/supply_chain/iac_dependency_scanner.py +36 -0
- tools/cloudforge/supply_chain/provider_trust_scorer.py +54 -0
- tools/compat/__init__.py +21 -0
- tools/compat/cli_harmonizer.py +251 -0
- tools/compat/datetime_utils.py +18 -0
- tools/compat/db_utils.py +190 -0
- tools/compat/platform_utils.py +123 -0
- tools/compliance/__init__.py +1 -0
- tools/compliance/accountability_manager.py +391 -0
- tools/compliance/ai_accountability_audit.py +287 -0
- tools/compliance/ai_impact_assessor.py +267 -0
- tools/compliance/ai_incident_response.py +295 -0
- tools/compliance/ai_inventory_manager.py +233 -0
- tools/compliance/ai_reassessment_scheduler.py +250 -0
- tools/compliance/ai_transparency_audit.py +247 -0
- tools/compliance/atlas_assessor.py +276 -0
- tools/compliance/atlas_report_generator.py +1199 -0
- tools/compliance/base_assessor.py +591 -0
- tools/compliance/cato_live_engine.py +607 -0
- tools/compliance/cato_monitor.py +1371 -0
- tools/compliance/cato_scheduler.py +698 -0
- tools/compliance/cjis_assessor.py +76 -0
- tools/compliance/classification_manager.py +1340 -0
- tools/compliance/cmmc_assessor.py +1478 -0
- tools/compliance/cmmc_report_generator.py +1087 -0
- tools/compliance/compliance_detector.py +452 -0
- tools/compliance/compliance_exporter.py +418 -0
- tools/compliance/compliance_status.py +810 -0
- tools/compliance/control_mapper.py +488 -0
- tools/compliance/crosswalk_engine.py +1208 -0
- tools/compliance/cssp_assessor.py +1032 -0
- tools/compliance/cssp_evidence_collector.py +716 -0
- tools/compliance/cssp_report_generator.py +1103 -0
- tools/compliance/cui_marker.py +387 -0
- tools/compliance/diagram_validator.py +599 -0
- tools/compliance/emass/__init__.py +2 -0
- tools/compliance/emass/emass_client.py +822 -0
- tools/compliance/emass/emass_export.py +758 -0
- tools/compliance/emass/emass_sync.py +807 -0
- tools/compliance/eu_ai_act_classifier.py +193 -0
- tools/compliance/evidence_collector.py +459 -0
- tools/compliance/fairness_assessor.py +310 -0
- tools/compliance/fedramp_20x_ksi_emitter.py +692 -0
- tools/compliance/fedramp_assessor.py +1795 -0
- tools/compliance/fedramp_authorization_packager.py +137 -0
- tools/compliance/fedramp_ksi_generator.py +349 -0
- tools/compliance/fedramp_report_generator.py +1115 -0
- tools/compliance/fips199_categorizer.py +869 -0
- tools/compliance/fips200_validator.py +304 -0
- tools/compliance/firmware_sbom.py +646 -0
- tools/compliance/gao_ai_assessor.py +228 -0
- tools/compliance/gao_evidence_builder.py +302 -0
- tools/compliance/hipaa_assessor.py +78 -0
- tools/compliance/hitrust_assessor.py +49 -0
- tools/compliance/incident_response_plan.py +705 -0
- tools/compliance/inheritance_engine.py +693 -0
- tools/compliance/iso27001_assessor.py +92 -0
- tools/compliance/iso42001_assessor.py +114 -0
- tools/compliance/ivv_assessor.py +2314 -0
- tools/compliance/ivv_report_generator.py +1649 -0
- tools/compliance/model_card_generator.py +291 -0
- tools/compliance/mosa_assessor.py +117 -0
- tools/compliance/multi_regime_assessor.py +441 -0
- tools/compliance/narrative_generator.py +1012 -0
- tools/compliance/narrative_quality_gate.py +701 -0
- tools/compliance/narrative_workflow.py +814 -0
- tools/compliance/nist_800_207_assessor.py +191 -0
- tools/compliance/nist_ai_600_1_assessor.py +185 -0
- tools/compliance/nist_ai_rmf_assessor.py +110 -0
- tools/compliance/nist_lookup.py +244 -0
- tools/compliance/omb_m25_21_assessor.py +225 -0
- tools/compliance/omb_m26_04_assessor.py +185 -0
- tools/compliance/oscal_catalog_adapter.py +395 -0
- tools/compliance/oscal_generator.py +2157 -0
- tools/compliance/oscal_tools.py +1182 -0
- tools/compliance/oscal_validator.py +692 -0
- tools/compliance/owasp_agentic_assessor.py +227 -0
- tools/compliance/owasp_asi_assessor.py +197 -0
- tools/compliance/owasp_llm_assessor.py +245 -0
- tools/compliance/pci_dss_assessor.py +80 -0
- tools/compliance/pi_compliance_tracker.py +1447 -0
- tools/compliance/poam_generator.py +388 -0
- tools/compliance/resolve_marking.py +272 -0
- tools/compliance/sbd_assessor.py +2070 -0
- tools/compliance/sbd_report_generator.py +1223 -0
- tools/compliance/sbom_generator.py +993 -0
- tools/compliance/siem_config_generator.py +661 -0
- tools/compliance/slsa_attestation_generator.py +479 -0
- tools/compliance/soc2_assessor.py +77 -0
- tools/compliance/ssp_generator.py +556 -0
- tools/compliance/stig_checker.py +712 -0
- tools/compliance/swft_evidence_bundler.py +326 -0
- tools/compliance/system_card_generator.py +303 -0
- tools/compliance/template_exchange.py +513 -0
- tools/compliance/traceability_matrix.py +1268 -0
- tools/compliance/universal_classification_manager.py +1159 -0
- tools/compliance/xacta/__init__.py +2 -0
- tools/compliance/xacta/xacta_client.py +438 -0
- tools/compliance/xacta/xacta_export.py +546 -0
- tools/compliance/xacta/xacta_sync.py +322 -0
- tools/compliance/xai_assessor.py +231 -0
- tools/core/__init__.py +2 -0
- tools/core/circuit_breaker.py +353 -0
- tools/core/compliance_sidecar.py +344 -0
- tools/core/container.py +110 -0
- tools/core/errors.py +256 -0
- tools/core/feature_flags.py +311 -0
- tools/core/task_dlq.py +350 -0
- tools/dashboard/__init__.py +2 -0
- tools/dashboard/app.py +6288 -0
- tools/dashboard/templates/agent_evolution.html +287 -0
- tools/dashboard/templates/agents/list.html +71 -0
- tools/dashboard/templates/agents.html +132 -0
- tools/dashboard/templates/architecture.html +289 -0
- tools/dashboard/templates/ato_simulator.html +170 -0
- tools/dashboard/templates/audit_engine.html +844 -0
- tools/dashboard/templates/base.html +236 -0
- tools/dashboard/templates/cato_live.html +116 -0
- tools/dashboard/templates/cloudforge.html +195 -0
- tools/dashboard/templates/cloudforge_finops.html +111 -0
- tools/dashboard/templates/cloudforge_hybrid.html +122 -0
- tools/dashboard/templates/cloudforge_metastore.html +234 -0
- tools/dashboard/templates/cloudforge_migration.html +87 -0
- tools/dashboard/templates/cloudforge_runbooks.html +201 -0
- tools/dashboard/templates/cloudforge_siem.html +94 -0
- tools/dashboard/templates/compliance_accel.html +292 -0
- tools/dashboard/templates/crashes.html +122 -0
- tools/dashboard/templates/databridge.html +305 -0
- tools/dashboard/templates/databridge_analytics.html +195 -0
- tools/dashboard/templates/databridge_mapping.html +345 -0
- tools/dashboard/templates/databridge_messaging.html +321 -0
- tools/dashboard/templates/decisions.html +258 -0
- tools/dashboard/templates/devices.html +151 -0
- tools/dashboard/templates/devsecops_maturity.html +278 -0
- tools/dashboard/templates/edge_ai.html +128 -0
- tools/dashboard/templates/firmware.html +120 -0
- tools/dashboard/templates/firmware_sbom.html +193 -0
- tools/dashboard/templates/forge_hub.html +196 -0
- tools/dashboard/templates/forge_studio.html +379 -0
- tools/dashboard/templates/forge_studio_analytics.html +360 -0
- tools/dashboard/templates/forge_studio_builder.html +1637 -0
- tools/dashboard/templates/forge_studio_compliance.html +310 -0
- tools/dashboard/templates/forge_studio_deploy.html +573 -0
- tools/dashboard/templates/forge_studio_enterprise.html +888 -0
- tools/dashboard/templates/forge_studio_marketplace.html +502 -0
- tools/dashboard/templates/forge_studio_workflow.html +696 -0
- tools/dashboard/templates/golden_path.html +175 -0
- tools/dashboard/templates/govcon.html +280 -0
- tools/dashboard/templates/harness.html +148 -0
- tools/dashboard/templates/index.html +207 -0
- tools/dashboard/templates/intelligence.html +336 -0
- tools/dashboard/templates/knowledge/index.html +190 -0
- tools/dashboard/templates/knowledge_graph.html +739 -0
- tools/dashboard/templates/login.html +51 -0
- tools/dashboard/templates/marketplace.html +336 -0
- tools/dashboard/templates/marketplace_admin.html +247 -0
- tools/dashboard/templates/missions.html +403 -0
- tools/dashboard/templates/narratives.html +154 -0
- tools/dashboard/templates/pr_intelligence.html +151 -0
- tools/dashboard/templates/proposals/detail.html +300 -0
- tools/dashboard/templates/proposals/list.html +52 -0
- tools/dashboard/templates/proposals/sam_detail.html +132 -0
- tools/dashboard/templates/proposals/section_detail.html +375 -0
- tools/dashboard/templates/research.html +222 -0
- tools/dashboard/templates/resilience.html +300 -0
- tools/dashboard/templates/scorecard.html +162 -0
- tools/dashboard/templates/simulator.html +131 -0
- tools/dashboard/templates/template_exchange.html +147 -0
- tools/dashboard/templates/thread_heatmap.html +151 -0
- tools/dashboard/templates/threat_model.html +195 -0
- tools/dashboard/templates/vsm.html +141 -0
- tools/dashboard/templates/writeguard.html +277 -0
- tools/databridge/__init__.py +5 -0
- tools/databridge/agent/__init__.py +2 -0
- tools/databridge/agent/daemon.py +227 -0
- tools/databridge/agent/tunnel.py +101 -0
- tools/databridge/agent/ws_relay.py +91 -0
- tools/databridge/analytics.py +167 -0
- tools/databridge/arrow_pipeline.py +327 -0
- tools/databridge/connection_manager.py +424 -0
- tools/databridge/connector.py +331 -0
- tools/databridge/connectors/__init__.py +2 -0
- tools/databridge/connectors/argocd_connector.py +160 -0
- tools/databridge/connectors/avro_connector.py +203 -0
- tools/databridge/connectors/azure_blob.py +63 -0
- tools/databridge/connectors/cdc_connector.py +205 -0
- tools/databridge/connectors/csv_connector.py +172 -0
- tools/databridge/connectors/datadog_connector.py +153 -0
- tools/databridge/connectors/discord_messaging.py +215 -0
- tools/databridge/connectors/dynamics365.py +151 -0
- tools/databridge/connectors/elasticsearch_connector.py +145 -0
- tools/databridge/connectors/email_base.py +114 -0
- tools/databridge/connectors/excel_connector.py +175 -0
- tools/databridge/connectors/fsspec_base.py +300 -0
- tools/databridge/connectors/gcs.py +53 -0
- tools/databridge/connectors/github_connector.py +138 -0
- tools/databridge/connectors/gitlab_connector.py +132 -0
- tools/databridge/connectors/gmail_connector.py +182 -0
- tools/databridge/connectors/hdfs.py +57 -0
- tools/databridge/connectors/health_base.py +401 -0
- tools/databridge/connectors/hubspot.py +124 -0
- tools/databridge/connectors/imap_connector.py +171 -0
- tools/databridge/connectors/jenkins_connector.py +138 -0
- tools/databridge/connectors/jira_connector.py +86 -0
- tools/databridge/connectors/json_connector.py +184 -0
- tools/databridge/connectors/kafka_connector.py +246 -0
- tools/databridge/connectors/kinesis_connector.py +238 -0
- tools/databridge/connectors/local_fs.py +30 -0
- tools/databridge/connectors/matrix.py +197 -0
- tools/databridge/connectors/mattermost_messaging.py +184 -0
- tools/databridge/connectors/messaging_base.py +172 -0
- tools/databridge/connectors/mssql.py +63 -0
- tools/databridge/connectors/mysql.py +57 -0
- tools/databridge/connectors/netsuite.py +170 -0
- tools/databridge/connectors/o365_mail.py +196 -0
- tools/databridge/connectors/oracle.py +65 -0
- tools/databridge/connectors/pagerduty_connector.py +162 -0
- tools/databridge/connectors/parquet_connector.py +131 -0
- tools/databridge/connectors/postgresql.py +58 -0
- tools/databridge/connectors/s3.py +65 -0
- tools/databridge/connectors/saas_base.py +198 -0
- tools/databridge/connectors/salesforce.py +126 -0
- tools/databridge/connectors/sap.py +89 -0
- tools/databridge/connectors/servicenow.py +60 -0
- tools/databridge/connectors/signal_messaging.py +150 -0
- tools/databridge/connectors/slack_messaging.py +203 -0
- tools/databridge/connectors/smtp_connector.py +126 -0
- tools/databridge/connectors/soap_base.py +258 -0
- tools/databridge/connectors/splunk_connector.py +171 -0
- tools/databridge/connectors/sql_base.py +310 -0
- tools/databridge/connectors/sqlite_connector.py +76 -0
- tools/databridge/connectors/teams.py +148 -0
- tools/databridge/connectors/telegram.py +192 -0
- tools/databridge/connectors/whatsapp.py +137 -0
- tools/databridge/data_profiler.py +99 -0
- tools/databridge/forge/__init__.py +6 -0
- tools/databridge/forge/base_selector.py +150 -0
- tools/databridge/forge/code_generator.py +206 -0
- tools/databridge/forge/community_hub.py +539 -0
- tools/databridge/forge/forge_agent.py +306 -0
- tools/databridge/forge/import_handler.py +133 -0
- tools/databridge/forge/integration_tester.py +127 -0
- tools/databridge/forge/marketplace_publisher.py +164 -0
- tools/databridge/forge/promoter.py +159 -0
- tools/databridge/forge/sandbox_manager.py +257 -0
- tools/databridge/forge/spec_parser.py +358 -0
- tools/databridge/forge/static_validator.py +363 -0
- tools/databridge/forge/templates/__init__.py +591 -0
- tools/databridge/format_converter.py +188 -0
- tools/databridge/mapping_engine.py +348 -0
- tools/databridge/messaging/__init__.py +5 -0
- tools/databridge/messaging/agent_bridge.py +254 -0
- tools/databridge/messaging/message_envelope.py +111 -0
- tools/databridge/messaging/message_logger.py +204 -0
- tools/databridge/messaging/messaging_daemon.py +326 -0
- tools/databridge/messaging/oauth2_manager.py +411 -0
- tools/databridge/pii_detector.py +221 -0
- tools/databridge/registry.py +352 -0
- tools/databridge/relay_server.py +105 -0
- tools/databridge/scale/__init__.py +16 -0
- tools/databridge/scale/backpressure.py +134 -0
- tools/databridge/scale/chunked_pipeline.py +169 -0
- tools/databridge/scale/connection_pool.py +293 -0
- tools/databridge/scale/engine.py +492 -0
- tools/databridge/scale/worker_pool.py +140 -0
- tools/databridge/scale/write_batcher.py +250 -0
- tools/databridge/schema_engine.py +324 -0
- tools/databridge/stream_manager.py +225 -0
- tools/databridge/sync_engine.py +411 -0
- tools/databridge/transforms.py +302 -0
- tools/db/__init__.py +1 -0
- tools/db/backup.py +312 -0
- tools/db/backup_manager.py +832 -0
- tools/db/init_icdev_db.py +7753 -0
- tools/db/init_sparkpilot_db.py +431 -0
- tools/db/migrate.py +177 -0
- tools/db/migrate_innovation_audit.py +165 -0
- tools/db/migration_runner.py +548 -0
- tools/db/migrations/001_baseline/meta.json +9 -0
- tools/db/migrations/001_baseline/up.py +67 -0
- tools/db/migrations/002_memory_enhancements/down.sql +8 -0
- tools/db/migrations/002_memory_enhancements/meta.json +9 -0
- tools/db/migrations/002_memory_enhancements/up.py +119 -0
- tools/db/migrations/003_dev_profiles/meta.json +8 -0
- tools/db/migrations/003_dev_profiles/up.py +93 -0
- tools/db/migrations/004_innovation_engine/down.py +19 -0
- tools/db/migrations/004_innovation_engine/up.py +227 -0
- tools/db/migrations/005_phase_37_ai_security/down.py +19 -0
- tools/db/migrations/005_phase_37_ai_security/up.py +257 -0
- tools/db/migrations/006_phase_36_evolution/down.py +21 -0
- tools/db/migrations/006_phase_36_evolution/up.py +323 -0
- tools/db/migrations/007_phase_38_cloud/down.py +14 -0
- tools/db/migrations/007_phase_38_cloud/up.py +110 -0
- tools/db/migrations/008_phase36_37_integration/up.py +55 -0
- tools/db/migrations/__init__.py +2 -0
- tools/db/pg_migrate.py +642 -0
- tools/db/storage.py +1080 -0
- tools/decisions/__init__.py +2 -0
- tools/decisions/dmn_engine.py +695 -0
- tools/devsecops/__init__.py +2 -0
- tools/devsecops/attestation_manager.py +449 -0
- tools/devsecops/network_segmentation_generator.py +604 -0
- tools/devsecops/pdp_config_generator.py +1246 -0
- tools/devsecops/pipeline_security_generator.py +475 -0
- tools/devsecops/policy_generator.py +644 -0
- tools/devsecops/profile_manager.py +374 -0
- tools/devsecops/service_mesh_generator.py +1063 -0
- tools/devsecops/zta_maturity_scorer.py +355 -0
- tools/devsecops/zta_terraform_generator.py +1301 -0
- tools/edge_ai/__init__.py +2 -0
- tools/edge_ai/model_manager.py +200 -0
- tools/embedded/__init__.py +2 -0
- tools/embedded/cmake_generator.py +318 -0
- tools/embedded/crash_analyzer.py +191 -0
- tools/embedded/nl_to_firmware.py +277 -0
- tools/events/__init__.py +1 -0
- tools/events/event_bus.py +199 -0
- tools/finetune/pair_generator.py +832 -0
- tools/fleet/__init__.py +2 -0
- tools/fleet/device_registry.py +148 -0
- tools/fleet/ota_manager.py +153 -0
- tools/forge_studio/__init__.py +13 -0
- tools/forge_studio/analytics/__init__.py +0 -0
- tools/forge_studio/analytics/process_miner.py +383 -0
- tools/forge_studio/audit.py +183 -0
- tools/forge_studio/blueprint/__init__.py +2 -0
- tools/forge_studio/blueprint/build_tracker.py +317 -0
- tools/forge_studio/blueprint/export_engine.py +441 -0
- tools/forge_studio/blueprint/parent_client.py +335 -0
- tools/forge_studio/catalog/__init__.py +2 -0
- tools/forge_studio/catalog/component_registry.py +176 -0
- tools/forge_studio/catalog/schema_validator.py +193 -0
- tools/forge_studio/compliance/__init__.py +1 -0
- tools/forge_studio/compliance/compliance_wiring.py +554 -0
- tools/forge_studio/deploy/__init__.py +1 -0
- tools/forge_studio/deploy/airgap_packager.py +466 -0
- tools/forge_studio/deploy/deploy_engine.py +1792 -0
- tools/forge_studio/deploy/env_manager.py +431 -0
- tools/forge_studio/eject/__init__.py +2 -0
- tools/forge_studio/eject/docker_compose_generator.py +237 -0
- tools/forge_studio/eject/eject_engine.py +230 -0
- tools/forge_studio/eject/expo_scaffolder.py +303 -0
- tools/forge_studio/eject/nextjs_scaffolder.py +338 -0
- tools/forge_studio/enterprise/__init__.py +0 -0
- tools/forge_studio/enterprise/custom_frameworks.py +826 -0
- tools/forge_studio/enterprise/hardening_engine.py +1530 -0
- tools/forge_studio/enterprise/sso_manager.py +718 -0
- tools/forge_studio/enterprise/whitelabel_engine.py +887 -0
- tools/forge_studio/formula/__init__.py +0 -0
- tools/forge_studio/formula/expression_engine.py +562 -0
- tools/forge_studio/formula/formula_registry.py +265 -0
- tools/forge_studio/generator/__init__.py +2 -0
- tools/forge_studio/generator/app_generator.py +584 -0
- tools/forge_studio/generator/complexity_detector.py +368 -0
- tools/forge_studio/generator/prompt_templates.py +104 -0
- tools/forge_studio/generator/spec_builder.py +192 -0
- tools/forge_studio/intake_bridge.py +898 -0
- tools/forge_studio/marketplace/__init__.py +0 -0
- tools/forge_studio/marketplace/component_hub.py +428 -0
- tools/forge_studio/models.py +369 -0
- tools/forge_studio/renderer/__init__.py +2 -0
- tools/forge_studio/renderer/json_render_engine.py +623 -0
- tools/forge_studio/renderer/layout_engine.py +214 -0
- tools/forge_studio/renderer/rn_component_map.py +182 -0
- tools/forge_studio/supabase/__init__.py +2 -0
- tools/forge_studio/supabase/auth_generator.py +283 -0
- tools/forge_studio/supabase/migration_generator.py +93 -0
- tools/forge_studio/supabase/schema_generator.py +281 -0
- tools/forge_studio/tenant_manager.py +387 -0
- tools/forge_studio/workflow/__init__.py +2 -0
- tools/forge_studio/workflow/bpmn_adapter.py +489 -0
- tools/govcon/draft_orchestrator.py +1151 -0
- tools/govcon/engine_enrichment.py +373 -0
- tools/govcon/knowledge_base.py +487 -0
- tools/govcon/knowledge_ingestion.py +510 -0
- tools/govcon/sam_scanner.py +754 -0
- tools/harness/__init__.py +6 -0
- tools/harness/exit_criteria_evaluator.py +231 -0
- tools/harness/maturity_assessor.py +347 -0
- tools/harness/scaffold_harness.py +416 -0
- tools/harness/trace_analyzer.py +281 -0
- tools/infra/__init__.py +1 -0
- tools/infra/ansible_generator.py +867 -0
- tools/infra/dockerfile_generator.py +359 -0
- tools/infra/infra_status.py +384 -0
- tools/infra/ironbank_metadata_generator.py +403 -0
- tools/infra/k8s_generator.py +1000 -0
- tools/infra/pipeline_generator.py +830 -0
- tools/infra/rollback.py +389 -0
- tools/infra/terraform_generator.py +1140 -0
- tools/infra/terraform_generator_azure.py +1252 -0
- tools/infra/terraform_generator_gcp.py +951 -0
- tools/infra/terraform_generator_ibm.py +359 -0
- tools/infra/terraform_generator_oci.py +918 -0
- tools/infra/terraform_generator_onprem.py +318 -0
- tools/knowledge/__init__.py +1 -0
- tools/knowledge/knowledge_ingest.py +281 -0
- tools/knowledge/pattern_detector.py +681 -0
- tools/knowledge/recommendation_engine.py +449 -0
- tools/knowledge/self_heal_analyzer.py +492 -0
- tools/knowledge_graph/__init__.py +2 -0
- tools/knowledge_graph/graph_rag.py +498 -0
- tools/knowledge_graph/ingester.py +406 -0
- tools/knowledge_graph/insight_generator.py +369 -0
- tools/knowledge_graph/text_network.py +832 -0
- tools/llm/__init__.py +72 -0
- tools/llm/anthropic_provider.py +170 -0
- tools/llm/azure_openai_provider.py +338 -0
- tools/llm/bedrock_provider.py +315 -0
- tools/llm/embedding_provider.py +438 -0
- tools/llm/gemini_provider.py +381 -0
- tools/llm/ibm_watsonx_provider.py +231 -0
- tools/llm/oci_genai_provider.py +462 -0
- tools/llm/ollama_provider.py +350 -0
- tools/llm/openai_provider.py +225 -0
- tools/llm/prompt_registry.py +447 -0
- tools/llm/provider.py +355 -0
- tools/llm/provider_sdk.py +175 -0
- tools/llm/router.py +1124 -0
- tools/llm/semantic_cache.py +394 -0
- tools/llm/vertex_ai_provider.py +374 -0
- tools/maintenance/__init__.py +2 -0
- tools/maintenance/dependency_scanner.py +1016 -0
- tools/maintenance/maintenance_auditor.py +804 -0
- tools/maintenance/remediation_engine.py +957 -0
- tools/maintenance/vulnerability_checker.py +978 -0
- tools/manifest.md +1066 -0
- tools/marketplace/asset_installer.py +639 -0
- tools/marketplace/feedback_validator.py +359 -0
- tools/marketplace/license_client.py +458 -0
- tools/marketplace/module_crypto.py +544 -0
- tools/marketplace/module_runtime.py +236 -0
- tools/marketplace/token_store.py +264 -0
- tools/mbse/__init__.py +3 -0
- tools/mbse/des_assessor.py +1173 -0
- tools/mbse/des_report_generator.py +787 -0
- tools/mbse/diagram_extractor.py +792 -0
- tools/mbse/digital_thread.py +1650 -0
- tools/mbse/model_code_generator.py +1115 -0
- tools/mbse/model_control_mapper.py +410 -0
- tools/mbse/pi_model_tracker.py +1079 -0
- tools/mbse/reqif_parser.py +1468 -0
- tools/mbse/sync_engine.py +1789 -0
- tools/mbse/thread_heatmap.py +445 -0
- tools/mbse/xmi_parser.py +1558 -0
- tools/mcp/builder_server.py +64 -0
- tools/mcp/compliance_server.py +64 -0
- tools/mcp/connector_forge_server.py +155 -0
- tools/mcp/core_server.py +64 -0
- tools/mcp/devsecops_server.py +11 -0
- tools/mcp/devsecops_zta_server.py +64 -0
- tools/mcp/knowledge_server.py +64 -0
- tools/mcp/monitor_server.py +64 -0
- tools/mcp/ops_server.py +300 -0
- tools/mcp/requirements_analyst_server.py +64 -0
- tools/mcp/requirements_server.py +11 -0
- tools/mcp/security_server.py +64 -0
- tools/mcp/simulation_server.py +64 -0
- tools/mcp/supply_chain_server.py +64 -0
- tools/mcp/tool_registry.py +299 -0
- tools/memory/__init__.py +2 -0
- tools/memory/auto_capture.py +346 -0
- tools/memory/embed_memory.py +157 -0
- tools/memory/history_compressor.py +334 -0
- tools/memory/hybrid_search.py +235 -0
- tools/memory/maintenance_cron.py +288 -0
- tools/memory/memory_consolidation.py +439 -0
- tools/memory/memory_db.py +132 -0
- tools/memory/memory_read.py +101 -0
- tools/memory/memory_write.py +221 -0
- tools/memory/semantic_search.py +138 -0
- tools/memory/time_decay.py +434 -0
- tools/missions/__init__.py +2 -0
- tools/missions/mission_engine.py +459 -0
- tools/monitor/__init__.py +1 -0
- tools/monitor/alert_correlator.py +486 -0
- tools/monitor/auto_resolver.py +603 -0
- tools/monitor/health_checker.py +507 -0
- tools/monitor/heartbeat_daemon.py +779 -0
- tools/monitor/log_analyzer.py +507 -0
- tools/monitor/metric_collector.py +484 -0
- tools/mosa/__init__.py +10 -0
- tools/mosa/icd_generator.py +358 -0
- tools/mosa/modular_design_analyzer.py +682 -0
- tools/mosa/mosa_code_enforcer.py +348 -0
- tools/mosa/tsp_generator.py +265 -0
- tools/observability/__init__.py +100 -0
- tools/observability/genai_attributes.py +88 -0
- tools/observability/instrumentation.py +140 -0
- tools/observability/mlflow_exporter.py +193 -0
- tools/observability/otel_tracer.py +168 -0
- tools/observability/provenance/__init__.py +3 -0
- tools/observability/provenance/prov_recorder.py +322 -0
- tools/observability/shap/__init__.py +3 -0
- tools/observability/shap/agent_shap.py +274 -0
- tools/observability/sqlite_tracer.py +360 -0
- tools/observability/trace_context.py +205 -0
- tools/observability/tracer.py +230 -0
- tools/orchestration/__init__.py +1 -0
- tools/orchestration/peer_channels.py +254 -0
- tools/orchestration/saga_coordinator.py +390 -0
- tools/project/__init__.py +1 -0
- tools/project/manifest_loader.py +418 -0
- tools/project/project_create.py +350 -0
- tools/project/project_list.py +171 -0
- tools/project/project_scaffold.py +1715 -0
- tools/project/project_status.py +478 -0
- tools/project/session_context_builder.py +752 -0
- tools/project/validate_manifest.py +54 -0
- tools/rag/corrective_rag.py +582 -0
- tools/rag/source_registry.py +482 -0
- tools/requirements/__init__.py +1 -0
- tools/requirements/ai_governance_scorer.py +207 -0
- tools/requirements/boundary_analyzer.py +1281 -0
- tools/requirements/clarification_engine.py +605 -0
- tools/requirements/complexity_scorer.py +369 -0
- tools/requirements/consistency_analyzer.py +789 -0
- tools/requirements/constitution_manager.py +592 -0
- tools/requirements/decomposition_engine.py +764 -0
- tools/requirements/document_extractor.py +1002 -0
- tools/requirements/elicitation_techniques.py +508 -0
- tools/requirements/gap_detector.py +260 -0
- tools/requirements/intake_engine.py +2175 -0
- tools/requirements/prd_generator.py +839 -0
- tools/requirements/prd_validator.py +584 -0
- tools/requirements/readiness_scorer.py +302 -0
- tools/requirements/spec_organizer.py +1015 -0
- tools/requirements/spec_quality_checker.py +1083 -0
- tools/requirements/traceability_builder.py +566 -0
- tools/research/__init__.py +3 -0
- tools/research/academic_scanner.py +130 -0
- tools/research/build_buy_analyzer.py +229 -0
- tools/research/challenge_scorer.py +280 -0
- tools/research/community_scanner.py +174 -0
- tools/research/cross_engine_bridge.py +124 -0
- tools/research/dossier_generator.py +305 -0
- tools/research/landscape_scanner.py +315 -0
- tools/research/regulatory_scanner.py +248 -0
- tools/research/research_manager.py +469 -0
- tools/research/source_scanner.py +150 -0
- tools/research/vertical_loader.py +118 -0
- tools/saas/__init__.py +0 -0
- tools/saas/licensing/__init__.py +0 -0
- tools/saas/licensing/license_validator.py +345 -0
- tools/scaffold/__init__.py +2 -0
- tools/scaffold/golden_path.py +504 -0
- tools/security/__init__.py +1 -0
- tools/security/agent_output_validator.py +330 -0
- tools/security/agent_trust_scorer.py +652 -0
- tools/security/ai_bom_generator.py +718 -0
- tools/security/ai_telemetry_logger.py +469 -0
- tools/security/atlas_red_team.py +541 -0
- tools/security/code_pattern_scanner.py +382 -0
- tools/security/confabulation_detector.py +265 -0
- tools/security/container_scanner.py +489 -0
- tools/security/dependency_auditor.py +942 -0
- tools/security/endpoint_security_scanner.py +626 -0
- tools/security/mcp_tool_authorizer.py +242 -0
- tools/security/output_verifier.py +427 -0
- tools/security/prompt_injection_detector.py +737 -0
- tools/security/sast_runner.py +946 -0
- tools/security/secret_detector.py +376 -0
- tools/security/threat_modeler.py +678 -0
- tools/security/tool_chain_validator.py +357 -0
- tools/security/vuln_scanner.py +536 -0
- tools/simulation/__init__.py +2 -0
- tools/simulation/ato_simulator.py +517 -0
- tools/simulation/coa_generator.py +1539 -0
- tools/simulation/monte_carlo.py +745 -0
- tools/simulation/scenario_manager.py +1060 -0
- tools/simulation/simulation_engine.py +1091 -0
- tools/simulator/__init__.py +2 -0
- tools/simulator/sim_runner.py +272 -0
- tools/supply_chain/__init__.py +2 -0
- tools/supply_chain/cve_triager.py +690 -0
- tools/supply_chain/dependency_graph.py +630 -0
- tools/supply_chain/isa_manager.py +526 -0
- tools/supply_chain/scrm_assessor.py +531 -0
- tools/supply_chain/slsa_verifier.py +473 -0
- tools/testing/__init__.py +2 -0
- tools/testing/acceptance_validator.py +411 -0
- tools/testing/api_surface_extractor.py +749 -0
- tools/testing/claude_dir_validator.py +831 -0
- tools/testing/data_types.py +199 -0
- tools/testing/e2e_runner.py +715 -0
- tools/testing/fuzz_cli.py +306 -0
- tools/testing/health_check.py +483 -0
- tools/testing/platform_check.py +143 -0
- tools/testing/production_audit.py +1836 -0
- tools/testing/production_remediate.py +803 -0
- tools/testing/screenshot_validator.py +538 -0
- tools/testing/smoke_test.py +283 -0
- tools/testing/test_agent_models.py +117 -0
- tools/testing/test_orchestrator.py +957 -0
- tools/testing/utils.py +229 -0
- tools/writeguard/__init__.py +1 -0
- tools/writeguard/main.py +1 -0
- tools/writing/__init__.py +7 -0
- tools/writing/ai_content_detector.py +316 -0
- tools/writing/analysis_engine.py +454 -0
- tools/writing/batch_analyzer.py +276 -0
- tools/writing/coherence_analyzer.py +221 -0
- tools/writing/govcon_bridge.py +509 -0
- tools/writing/grammar_checker.py +270 -0
- tools/writing/plagiarism_detector.py +106 -0
- tools/writing/readability_scorer.py +201 -0
- tools/writing/rewriter.py +96 -0
- tools/writing/signal_registrar.py +167 -0
- tools/writing/snippet_manager.py +276 -0
- tools/writing/style_enforcer.py +220 -0
- tools/writing/style_guide_manager.py +438 -0
- tools/writing/tone_profiler.py +168 -0
goals/tdd_workflow.md
ADDED
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
# Goal: TDD Workflow (RED -> GREEN -> REFACTOR)
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
Implement features using strict Test-Driven Development: write tests FIRST, watch them fail, write the minimum code to pass, then refactor. This workflow enforces the discipline that separates production-grade code from "vibe coding."
|
|
6
|
+
|
|
7
|
+
**Why this matters:** Code without tests is a liability. In government/DoD environments, untested code does not ship. TDD catches defects at the cheapest point in the lifecycle — before they exist.
|
|
8
|
+
|
|
9
|
+
**The iron rule:** No code is written until a failing test demands it.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Prerequisites
|
|
14
|
+
|
|
15
|
+
- [ ] Project initialized (`goals/init_project.md` completed)
|
|
16
|
+
- [ ] Project exists in DB with valid project ID
|
|
17
|
+
- [ ] Requirement or user story clearly defined (what, not how)
|
|
18
|
+
- [ ] Test framework installed (pytest, behave)
|
|
19
|
+
- [ ] `memory/MEMORY.md` loaded (session context)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Process
|
|
24
|
+
|
|
25
|
+
### Step 1: Write Gherkin Feature File (Specification)
|
|
26
|
+
|
|
27
|
+
**Tool:** `python tools/builder/test_writer.py --project <name> --requirement "<requirement text>"`
|
|
28
|
+
|
|
29
|
+
**Expected output:**
|
|
30
|
+
```
|
|
31
|
+
Feature file created: projects/<name>/tests/features/<feature-name>.feature
|
|
32
|
+
|
|
33
|
+
Feature: <Feature Name>
|
|
34
|
+
As a <role>
|
|
35
|
+
I want <capability>
|
|
36
|
+
So that <benefit>
|
|
37
|
+
|
|
38
|
+
Scenario: <Happy path>
|
|
39
|
+
Given <precondition>
|
|
40
|
+
When <action>
|
|
41
|
+
Then <expected result>
|
|
42
|
+
|
|
43
|
+
Scenario: <Error case>
|
|
44
|
+
Given <precondition>
|
|
45
|
+
When <invalid action>
|
|
46
|
+
Then <error handling>
|
|
47
|
+
|
|
48
|
+
Scenario: <Edge case>
|
|
49
|
+
Given <boundary condition>
|
|
50
|
+
When <action>
|
|
51
|
+
Then <correct behavior>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Minimum scenarios per feature:** 3 (happy path, error case, edge case)
|
|
55
|
+
|
|
56
|
+
**Error handling:**
|
|
57
|
+
- Ambiguous requirement → ask user for clarification before generating
|
|
58
|
+
- Feature file already exists → append new scenarios, do not overwrite
|
|
59
|
+
- Generated scenarios too vague → regenerate with more specific requirement
|
|
60
|
+
|
|
61
|
+
**Verify:** Feature file parses correctly with `behave --dry-run`.
|
|
62
|
+
|
|
63
|
+
#### BDD Step Alignment Rules
|
|
64
|
+
|
|
65
|
+
When writing Gherkin features and step definitions, follow these rules to prevent mismatches:
|
|
66
|
+
|
|
67
|
+
1. **Match step definitions to tool return signatures.** Read the tool function's return type before writing Then steps. If a function returns `{"impacts": [...]}`, the step must access `result["impacts"]`, not iterate over `result` directly.
|
|
68
|
+
|
|
69
|
+
2. **Use the exact field names from tool output.** If the tool returns `impact_severity`, do not write a step that checks `impact_score`. Run the tool once and inspect the output dict keys.
|
|
70
|
+
|
|
71
|
+
3. **Trailing colons for data tables.** When a Gherkin step uses a data table, the step text MUST end with a colon. Example: `When I add the following entities:` (not `When I add the following entities`).
|
|
72
|
+
|
|
73
|
+
4. **Article variants need separate decorators.** Behave treats `a` and `an` as different text. Either use a regex step (`@given('(?:a|an) "{type}" entity')`) or register both variants.
|
|
74
|
+
|
|
75
|
+
5. **CHECK constraints in test DB.** If the tool code validates against a Python constant (e.g., `ENTITY_TYPES`), ensure the test database schema uses the same constant. Import `SCHEMA_SQL` from the init script rather than duplicating SQL in `conftest.py` or `environment.py`.
|
|
76
|
+
|
|
77
|
+
6. **Tolerance for probabilistic outputs.** Monte Carlo and simulation results are non-deterministic. Use range checks (`assert 0.3 < value < 0.7`) not exact equality. Histogram bin counts should use `>=` thresholds, not `==`.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
### Step 2: Generate pytest Test Cases (Step Definitions)
|
|
82
|
+
|
|
83
|
+
**Tool:** `python tools/builder/test_writer.py --project <name> --requirement "<requirement text>" --output pytest`
|
|
84
|
+
|
|
85
|
+
**Expected output:**
|
|
86
|
+
```
|
|
87
|
+
Test files created:
|
|
88
|
+
projects/<name>/tests/unit/test_<feature>.py
|
|
89
|
+
projects/<name>/tests/integration/test_<feature>_integration.py
|
|
90
|
+
projects/<name>/tests/features/steps/<feature>_steps.py
|
|
91
|
+
|
|
92
|
+
Tests generated:
|
|
93
|
+
- test_<function>_happy_path
|
|
94
|
+
- test_<function>_invalid_input
|
|
95
|
+
- test_<function>_edge_case
|
|
96
|
+
- test_<function>_boundary_values
|
|
97
|
+
Total: <count> tests
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Test structure requirements:**
|
|
101
|
+
- Each test follows Arrange-Act-Assert pattern
|
|
102
|
+
- Tests are independent (no shared mutable state)
|
|
103
|
+
- Test names describe the behavior, not the implementation
|
|
104
|
+
- Fixtures defined for common setup/teardown
|
|
105
|
+
|
|
106
|
+
**Error handling:**
|
|
107
|
+
- Cannot determine test structure → generate skeleton tests with TODO markers
|
|
108
|
+
- Import errors in generated tests → fix imports before proceeding
|
|
109
|
+
|
|
110
|
+
**Verify:** Tests are syntactically valid Python (`python -m py_compile <file>`).
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
### Step 3: RED — Run Tests (They Must Fail)
|
|
115
|
+
|
|
116
|
+
**Tool:** `pytest projects/<name>/tests/ -v --tb=short`
|
|
117
|
+
|
|
118
|
+
**Expected output:**
|
|
119
|
+
```
|
|
120
|
+
projects/<name>/tests/unit/test_<feature>.py::test_happy_path FAILED
|
|
121
|
+
projects/<name>/tests/unit/test_<feature>.py::test_invalid_input FAILED
|
|
122
|
+
projects/<name>/tests/unit/test_<feature>.py::test_edge_case FAILED
|
|
123
|
+
|
|
124
|
+
========================= X failed in Y.YYs =========================
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Critical check: ALL tests MUST fail.**
|
|
128
|
+
|
|
129
|
+
- If any test passes → the test is not testing new behavior. Investigate:
|
|
130
|
+
- Is the test trivially true? (e.g., `assert True`)
|
|
131
|
+
- Does the implementation already exist?
|
|
132
|
+
- Is the test importing wrong module?
|
|
133
|
+
- If tests error (not fail) → fix test syntax/imports, re-run
|
|
134
|
+
- ImportError is acceptable at this stage (module doesn't exist yet)
|
|
135
|
+
|
|
136
|
+
**Error handling:**
|
|
137
|
+
- Tests pass unexpectedly → STOP. Do not proceed. Diagnose why.
|
|
138
|
+
- Test framework not installed → `pip install pytest behave`
|
|
139
|
+
- Syntax errors in tests → fix before proceeding
|
|
140
|
+
|
|
141
|
+
**This step confirms the tests are actually testing something meaningful.**
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
### Step 4: Generate Implementation Code
|
|
146
|
+
|
|
147
|
+
**Tool:** `python tools/builder/code_generator.py --project <name> --spec "projects/<name>/tests/features/<feature-name>.feature"`
|
|
148
|
+
|
|
149
|
+
**Expected output:**
|
|
150
|
+
```
|
|
151
|
+
Code generated:
|
|
152
|
+
projects/<name>/src/<module>.py
|
|
153
|
+
|
|
154
|
+
Functions/classes created:
|
|
155
|
+
- <function_name>(): <description>
|
|
156
|
+
- <ClassName>: <description>
|
|
157
|
+
|
|
158
|
+
Lines of code: <count>
|
|
159
|
+
Complexity: <low|medium|high>
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Code generation rules:**
|
|
163
|
+
- Write the MINIMUM code to make tests pass
|
|
164
|
+
- No speculative features (YAGNI — You Ain't Gonna Need It)
|
|
165
|
+
- Follow project language conventions
|
|
166
|
+
- Include type hints (Python) or JSDoc (JavaScript)
|
|
167
|
+
- No hardcoded values — use configuration from args/
|
|
168
|
+
|
|
169
|
+
**Error handling:**
|
|
170
|
+
- Generated code has syntax errors → regenerate with corrections
|
|
171
|
+
- Generated code is overly complex → simplify, remember YAGNI
|
|
172
|
+
- Missing dependencies → add to requirements.txt, install
|
|
173
|
+
|
|
174
|
+
**Verify:** Code is syntactically valid (`python -m py_compile <file>`).
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
### Step 5: GREEN — Run Tests (They Must Pass)
|
|
179
|
+
|
|
180
|
+
**Tool:** `pytest projects/<name>/tests/ -v --tb=short --cov=projects/<name>/src --cov-report=term-missing`
|
|
181
|
+
|
|
182
|
+
**Expected output:**
|
|
183
|
+
```
|
|
184
|
+
projects/<name>/tests/unit/test_<feature>.py::test_happy_path PASSED
|
|
185
|
+
projects/<name>/tests/unit/test_<feature>.py::test_invalid_input PASSED
|
|
186
|
+
projects/<name>/tests/unit/test_<feature>.py::test_edge_case PASSED
|
|
187
|
+
|
|
188
|
+
---------- coverage: ----------
|
|
189
|
+
Name Stmts Miss Cover Missing
|
|
190
|
+
------------------------------------------------------------
|
|
191
|
+
projects/<name>/src/<module> 42 3 93% 67-69
|
|
192
|
+
------------------------------------------------------------
|
|
193
|
+
TOTAL 42 3 93%
|
|
194
|
+
|
|
195
|
+
========================= X passed in Y.YYs =========================
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**Gates:**
|
|
199
|
+
- ALL tests must pass (0 failures)
|
|
200
|
+
- Coverage must be >= 80% (target 90%+)
|
|
201
|
+
- No warnings that indicate test issues
|
|
202
|
+
|
|
203
|
+
**If tests fail:**
|
|
204
|
+
1. Read the failure output carefully
|
|
205
|
+
2. Determine if the bug is in the code or the test
|
|
206
|
+
3. Fix the CODE first (tests define the contract)
|
|
207
|
+
4. Only fix tests if they contain genuine errors (wrong assertions, not wrong expectations)
|
|
208
|
+
5. Re-run until green
|
|
209
|
+
|
|
210
|
+
**Error handling:**
|
|
211
|
+
- Flaky tests (pass sometimes, fail sometimes) → investigate non-determinism, fix root cause
|
|
212
|
+
- Coverage below 80% → write additional tests for uncovered lines
|
|
213
|
+
- Tests pass but behavior is wrong → tests are incomplete, go back to Step 1
|
|
214
|
+
|
|
215
|
+
**Do not proceed until ALL tests pass with >= 80% coverage.**
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
### Step 6: REFACTOR — Lint and Format
|
|
220
|
+
|
|
221
|
+
**Tool (lint):** `python tools/builder/linter.py --project <name> --fix`
|
|
222
|
+
|
|
223
|
+
**Expected output:**
|
|
224
|
+
```
|
|
225
|
+
Linting results:
|
|
226
|
+
Files checked: <count>
|
|
227
|
+
Issues found: <count>
|
|
228
|
+
Issues fixed: <count>
|
|
229
|
+
Remaining: <count>
|
|
230
|
+
|
|
231
|
+
Rules applied: flake8 (Python) / eslint (JavaScript)
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**Tool (format):** `python tools/builder/formatter.py --project <name>`
|
|
235
|
+
|
|
236
|
+
**Expected output:**
|
|
237
|
+
```
|
|
238
|
+
Formatting results:
|
|
239
|
+
Files formatted: <count>
|
|
240
|
+
Changes made: <count>
|
|
241
|
+
|
|
242
|
+
Formatter: black (Python) / prettier (JavaScript)
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
**After refactoring, re-run tests:**
|
|
246
|
+
```
|
|
247
|
+
pytest projects/<name>/tests/ -v --tb=short
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**Critical: Tests must still pass after refactoring.** If refactoring breaks tests, the refactoring introduced a bug — revert and try again.
|
|
251
|
+
|
|
252
|
+
**Refactoring guidelines:**
|
|
253
|
+
- Extract repeated code into functions
|
|
254
|
+
- Rename variables for clarity
|
|
255
|
+
- Reduce complexity (cyclomatic complexity < 10)
|
|
256
|
+
- Remove dead code
|
|
257
|
+
- Add docstrings to public functions
|
|
258
|
+
|
|
259
|
+
**Error handling:**
|
|
260
|
+
- Linting finds issues that --fix cannot resolve → manual intervention required
|
|
261
|
+
- Formatter changes break tests → formatter config may conflict with test expectations, investigate
|
|
262
|
+
- Refactoring changes behavior → REVERT. Refactoring must be behavior-preserving.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
### Step 7: Log to Audit Trail
|
|
267
|
+
|
|
268
|
+
**Tool:** `python tools/audit/audit_logger.py --event "tdd_cycle_complete" --actor "orchestrator" --action "implement" --project <name>`
|
|
269
|
+
|
|
270
|
+
**Tool:** `python tools/memory/memory_write.py --content "TDD cycle complete for <feature> in project <name>. Tests: <count> passing, coverage: <pct>%" --type event --importance 5`
|
|
271
|
+
|
|
272
|
+
**Expected output:** Audit entry and memory entry logged.
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## Success Criteria
|
|
277
|
+
|
|
278
|
+
- [ ] Gherkin feature file exists with >= 3 scenarios
|
|
279
|
+
- [ ] All pytest tests pass (0 failures)
|
|
280
|
+
- [ ] Code coverage >= 80%
|
|
281
|
+
- [ ] Linting clean (0 remaining issues)
|
|
282
|
+
- [ ] Formatting applied
|
|
283
|
+
- [ ] Tests still pass after refactoring
|
|
284
|
+
- [ ] Audit trail entry logged
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## Edge Cases & Notes
|
|
289
|
+
|
|
290
|
+
1. **Existing code without tests:** If asked to add tests to existing code, still follow TDD — write the test, verify it exercises the existing behavior (it should pass), then write a NEW test for the new behavior (it should fail), then implement.
|
|
291
|
+
2. **Test-first resistance:** Users may want to write code first. Explain the workflow but respect their choice. Log which approach was used.
|
|
292
|
+
3. **Integration tests:** These follow the same RED-GREEN-REFACTOR cycle but may require mocks for external services. Use `unittest.mock` or `pytest-mock`.
|
|
293
|
+
4. **Database tests:** Use an in-memory SQLite database for test isolation. Never test against production data.
|
|
294
|
+
5. **Coverage exceptions:** Some lines (e.g., `if __name__ == "__main__"`) can be excluded from coverage. Use `# pragma: no cover` sparingly and only with justification.
|
|
295
|
+
6. **Flaky test policy:** A test that fails intermittently is worse than no test. Fix flaky tests immediately or quarantine them with `@pytest.mark.skip(reason="flaky — tracking in issue #X")`.
|
|
296
|
+
7. **Large features:** Break into multiple TDD cycles. Each cycle should be completable in < 30 minutes. If a feature takes longer, decompose it.
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## The TDD Cycle Visualized
|
|
301
|
+
|
|
302
|
+
```mermaid
|
|
303
|
+
stateDiagram-v2
|
|
304
|
+
[*] --> RED : Write failing test
|
|
305
|
+
RED --> GREEN : Write minimum code
|
|
306
|
+
GREEN --> REFACTOR : Clean up
|
|
307
|
+
REFACTOR --> RED : Next requirement
|
|
308
|
+
REFACTOR --> [*] : Feature complete
|
|
309
|
+
|
|
310
|
+
state RED {
|
|
311
|
+
[*] --> WriteGherkin : Feature file
|
|
312
|
+
WriteGherkin --> WritePytest : Step definitions
|
|
313
|
+
WritePytest --> RunFailing : Must FAIL
|
|
314
|
+
}
|
|
315
|
+
state GREEN {
|
|
316
|
+
[*] --> GenerateCode : Minimum implementation
|
|
317
|
+
GenerateCode --> RunPassing : Must PASS
|
|
318
|
+
RunPassing --> CheckCoverage : Coverage >= 80%
|
|
319
|
+
}
|
|
320
|
+
state REFACTOR {
|
|
321
|
+
[*] --> Lint : flake8 / ruff
|
|
322
|
+
Lint --> Format : black
|
|
323
|
+
Format --> ReRun : Tests still pass?
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
classDef red fill:#3a1a1a,stroke:#dc3545,color:#e0e0e0
|
|
327
|
+
classDef green fill:#1a3a2d,stroke:#28a745,color:#e0e0e0
|
|
328
|
+
classDef blue fill:#1a3a5c,stroke:#4a90d9,color:#e0e0e0
|
|
329
|
+
|
|
330
|
+
class RED red
|
|
331
|
+
class GREEN green
|
|
332
|
+
class REFACTOR blue
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
```mermaid
|
|
336
|
+
sequenceDiagram
|
|
337
|
+
participant O as Orchestrator
|
|
338
|
+
participant TW as test_writer.py
|
|
339
|
+
participant PT as pytest
|
|
340
|
+
participant CG as code_generator.py
|
|
341
|
+
participant LN as linter.py
|
|
342
|
+
participant FM as formatter.py
|
|
343
|
+
participant AL as audit_logger.py
|
|
344
|
+
|
|
345
|
+
rect rgb(58, 26, 26)
|
|
346
|
+
Note over O,PT: RED Phase
|
|
347
|
+
O->>TW: Write Gherkin + pytest tests
|
|
348
|
+
TW-->>O: Feature file + test cases
|
|
349
|
+
O->>PT: Run tests (must FAIL)
|
|
350
|
+
PT-->>O: All tests FAILED
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
rect rgb(26, 58, 45)
|
|
354
|
+
Note over O,PT: GREEN Phase
|
|
355
|
+
O->>CG: Generate minimum code
|
|
356
|
+
CG-->>O: Implementation module
|
|
357
|
+
O->>PT: Run tests (must PASS)
|
|
358
|
+
PT-->>O: All tests PASSED (coverage >= 80%)
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
rect rgb(26, 58, 92)
|
|
362
|
+
Note over O,FM: REFACTOR Phase
|
|
363
|
+
O->>LN: Lint code (flake8 / ruff)
|
|
364
|
+
LN-->>O: Clean (0 issues)
|
|
365
|
+
O->>FM: Format code (black)
|
|
366
|
+
FM-->>O: Formatted
|
|
367
|
+
O->>PT: Re-run tests (still pass?)
|
|
368
|
+
PT-->>O: All tests PASSED
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
O->>AL: Log TDD cycle to audit trail
|
|
372
|
+
AL-->>O: Audit entry recorded
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## GOTCHA Layer Mapping
|
|
378
|
+
|
|
379
|
+
| Step | GOTCHA Layer | Component |
|
|
380
|
+
|------|-------------|-----------|
|
|
381
|
+
| Define requirement | Goals | This document |
|
|
382
|
+
| Write feature file | Tools | test_writer.py |
|
|
383
|
+
| Generate tests | Tools | test_writer.py |
|
|
384
|
+
| Run tests (RED) | Tools | pytest |
|
|
385
|
+
| Generate code | Tools | code_generator.py |
|
|
386
|
+
| Run tests (GREEN) | Tools | pytest |
|
|
387
|
+
| Lint + format | Tools | linter.py, formatter.py |
|
|
388
|
+
| Decide test strategy | Orchestration | AI (you) |
|
|
389
|
+
| Code style settings | Args | linter config, formatter config |
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
## Related Files
|
|
394
|
+
|
|
395
|
+
- **Tools:** `tools/builder/test_writer.py`, `tools/builder/code_generator.py`, `tools/builder/linter.py`, `tools/builder/formatter.py`
|
|
396
|
+
- **Context:** `context/coding_standards.md` (if exists)
|
|
397
|
+
- **Hard Prompts:** `hardprompts/test_generation.md`, `hardprompts/code_generation.md`
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
## Changelog
|
|
402
|
+
|
|
403
|
+
- 2026-02-14: Initial creation
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# CUI // SP-CTI
|
|
2
|
+
|
|
3
|
+
# F2: Community Compliance Template Exchange
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Enable sharing, discovery, and reuse of compliance templates (SSP sections, POAM entries, control narratives) across projects and tenants. Community-driven with ratings and quality scoring.
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
- `data/icdev.db` initialized with compliance tables
|
|
12
|
+
- At least one project created via `tools/agent/core_mcp_server.py`
|
|
13
|
+
|
|
14
|
+
## Workflow Steps
|
|
15
|
+
|
|
16
|
+
### 1. Create Template
|
|
17
|
+
```bash
|
|
18
|
+
python tools/compliance/template_exchange.py --create --project-id "sparkpilot" --name "AC-2 Narrative" --framework "NIST 800-53" --control-id "AC-2" --content-file /path/to/template.md --json
|
|
19
|
+
```
|
|
20
|
+
**Expected output:** JSON with template ID, metadata, version, and publication status (draft).
|
|
21
|
+
|
|
22
|
+
### 2. List and Search Templates
|
|
23
|
+
```bash
|
|
24
|
+
python tools/compliance/template_exchange.py --list --framework "NIST 800-53" --json
|
|
25
|
+
python tools/compliance/template_exchange.py --search --query "access control" --json
|
|
26
|
+
```
|
|
27
|
+
**Expected output:** JSON array of templates with ID, name, framework, rating, download count.
|
|
28
|
+
|
|
29
|
+
### 3. Rate Template
|
|
30
|
+
```bash
|
|
31
|
+
python tools/compliance/template_exchange.py --rate --template-id "tpl-001" --rating 4 --comment "Clear and thorough" --json
|
|
32
|
+
```
|
|
33
|
+
**Expected output:** JSON with updated average rating and total review count.
|
|
34
|
+
|
|
35
|
+
### 4. Publish Template
|
|
36
|
+
```bash
|
|
37
|
+
python tools/compliance/template_exchange.py --publish --template-id "tpl-001" --json
|
|
38
|
+
```
|
|
39
|
+
**Expected output:** JSON with publication status, visibility scope, and shareable reference ID.
|
|
40
|
+
|
|
41
|
+
### 5. Import Template
|
|
42
|
+
```bash
|
|
43
|
+
python tools/compliance/template_exchange.py --import --template-id "tpl-001" --target-project "sparkpilot" --json
|
|
44
|
+
```
|
|
45
|
+
**Expected output:** JSON with imported template ID, adaptation notes, and control mapping status.
|
|
46
|
+
|
|
47
|
+
## Decision Reference
|
|
48
|
+
|
|
49
|
+
| Decision | Description |
|
|
50
|
+
|----------|-------------|
|
|
51
|
+
| D-INV-5 | Templates stored as versioned rows in SQLite -- full history preserved |
|
|
52
|
+
| D-INV-6 | Rating uses 1-5 integer scale with weighted average (recent reviews weighted higher) |
|
|
53
|
+
| D-INV-7 | Search uses BM25 keyword matching on template name, description, and content |
|
|
54
|
+
| D-INV-8 | Cross-project import creates a copy -- no shared mutable state between projects |
|
|
55
|
+
|
|
56
|
+
## Edge Cases
|
|
57
|
+
|
|
58
|
+
- Importing a template for a different framework maps controls via crosswalk engine
|
|
59
|
+
- Empty search query returns top-rated templates
|
|
60
|
+
- Duplicate template name within same project appends version suffix
|
|
61
|
+
- Deleted source template does not affect already-imported copies
|
|
62
|
+
|
|
63
|
+
## Tier Gating
|
|
64
|
+
|
|
65
|
+
| Capability | Community | Pro |
|
|
66
|
+
|------------|-----------|-----|
|
|
67
|
+
| Create templates | 5 max | Unlimited |
|
|
68
|
+
| Search and browse | Yes | Yes |
|
|
69
|
+
| Rate templates | Yes | Yes |
|
|
70
|
+
| Publish to exchange | Yes | Yes |
|
|
71
|
+
| Cross-project import | No | Yes |
|
|
72
|
+
|
|
73
|
+
## Security
|
|
74
|
+
|
|
75
|
+
- Template content scanned for secrets before publication
|
|
76
|
+
- CUI markings enforced on all templates at publication time
|
|
77
|
+
- Audit trail logged for all create/publish/import operations
|
goals/thread_heatmap.md
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# CUI // SP-CTI
|
|
2
|
+
|
|
3
|
+
# F5: Digital Thread Gap Heatmap
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Visualize traceability coverage across the digital thread (requirements -> design -> code -> test -> compliance). Identify orphaned artifacts, missing links, and coverage gaps as a heatmap matrix to prioritize remediation efforts.
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
- `data/icdev.db` initialized with MBSE tables
|
|
12
|
+
- Digital thread links populated via `tools/mbse/digital_thread.py`
|
|
13
|
+
- At least one model imported via `xmi_parser.py` or `reqif_parser.py`
|
|
14
|
+
|
|
15
|
+
## Workflow Steps
|
|
16
|
+
|
|
17
|
+
### 1. Generate Heatmap
|
|
18
|
+
```bash
|
|
19
|
+
python tools/mbse/thread_heatmap.py --heatmap --project-id "sparkpilot" --json
|
|
20
|
+
```
|
|
21
|
+
**Expected output:** JSON with heatmap matrix (rows = source artifacts, columns = target artifact types), cell values as coverage percentages (0.0-1.0), and overall thread health score.
|
|
22
|
+
|
|
23
|
+
### 2. Get Gap Matrix
|
|
24
|
+
```bash
|
|
25
|
+
python tools/mbse/thread_heatmap.py --gap-matrix --project-id "sparkpilot" --json
|
|
26
|
+
```
|
|
27
|
+
**Expected output:** JSON array of gap entries with source artifact ID, missing link types, severity (critical/high/medium/low), and suggested remediation.
|
|
28
|
+
|
|
29
|
+
### 3. Get Orphaned Artifacts
|
|
30
|
+
```bash
|
|
31
|
+
python tools/mbse/thread_heatmap.py --orphans --project-id "sparkpilot" --json
|
|
32
|
+
```
|
|
33
|
+
**Expected output:** JSON array of artifacts with zero inbound or outbound links, grouped by artifact type.
|
|
34
|
+
|
|
35
|
+
### 4. Check Coverage Threshold
|
|
36
|
+
```bash
|
|
37
|
+
python tools/mbse/thread_heatmap.py --coverage-check --project-id "sparkpilot" --threshold 0.8 --json
|
|
38
|
+
```
|
|
39
|
+
**Expected output:** JSON with pass/fail status, current coverage percentage, threshold, and list of below-threshold artifact pairs.
|
|
40
|
+
|
|
41
|
+
### 5. Get Historical Trend
|
|
42
|
+
```bash
|
|
43
|
+
python tools/mbse/thread_heatmap.py --trend --project-id "sparkpilot" --window-days 30 --json
|
|
44
|
+
```
|
|
45
|
+
**Expected output:** JSON array of daily coverage snapshots showing improvement or regression.
|
|
46
|
+
|
|
47
|
+
## Decision Reference
|
|
48
|
+
|
|
49
|
+
| Decision | Description |
|
|
50
|
+
|----------|-------------|
|
|
51
|
+
| D-INV-17 | Heatmap computed from digital_thread_links table via SQL aggregation -- no external deps |
|
|
52
|
+
| D-INV-18 | Gap severity based on artifact type: requirement->test gaps are CRITICAL, design->code gaps are HIGH |
|
|
53
|
+
| D-INV-19 | Orphan detection uses bidirectional link check -- both unlinked sources and unlinked targets |
|
|
54
|
+
| D-INV-20 | Coverage threshold configurable per project, defaults to 0.8 |
|
|
55
|
+
|
|
56
|
+
## Edge Cases
|
|
57
|
+
|
|
58
|
+
- Empty digital thread returns heatmap with all zeros and setup instructions
|
|
59
|
+
- Single artifact type returns 1x1 matrix with self-link coverage
|
|
60
|
+
- Deleted artifacts excluded from heatmap but logged in gap report
|
|
61
|
+
- Coverage check with threshold 0.0 always passes (used for baseline)
|
|
62
|
+
|
|
63
|
+
## Tier Gating
|
|
64
|
+
|
|
65
|
+
| Capability | Community | Pro |
|
|
66
|
+
|------------|-----------|-----|
|
|
67
|
+
| Heatmap generation | Yes | Yes |
|
|
68
|
+
| Gap matrix | Yes | Yes |
|
|
69
|
+
| Orphan detection | Yes | Yes |
|
|
70
|
+
| CI/CD gate integration | No | Yes |
|
|
71
|
+
| Historical trending | No | Yes |
|
|
72
|
+
|
|
73
|
+
## Security
|
|
74
|
+
|
|
75
|
+
- Heatmap data is read-only aggregation -- no mutations
|
|
76
|
+
- Coverage check results logged to audit trail
|
|
77
|
+
- CUI markings applied to exported heatmap reports
|
goals/threat_modeler.md
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# CUI // SP-CTI
|
|
2
|
+
|
|
3
|
+
# F7: STRIDE Threat Modeler
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Systematic threat modeling using the STRIDE methodology (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege). Maps identified threats to NIST 800-53 controls and auto-generates POAM entries for unmitigated risks.
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
- `data/icdev.db` initialized with project and compliance tables
|
|
12
|
+
- System architecture documented (components, data flows, trust boundaries)
|
|
13
|
+
- Control mappings populated via `tools/compliance/control_mapper.py`
|
|
14
|
+
|
|
15
|
+
## Workflow Steps
|
|
16
|
+
|
|
17
|
+
### 1. Create Threat Model
|
|
18
|
+
```bash
|
|
19
|
+
python tools/security/threat_modeler.py --create --project-id "sparkpilot" --name "API Gateway Model" --json
|
|
20
|
+
```
|
|
21
|
+
**Expected output:** JSON with model ID, name, creation timestamp, and status (draft).
|
|
22
|
+
|
|
23
|
+
### 2. Analyze Components
|
|
24
|
+
```bash
|
|
25
|
+
python tools/security/threat_modeler.py --analyze --model-id "tm-001" --components /path/to/components.json --json
|
|
26
|
+
```
|
|
27
|
+
**Expected output:** JSON with STRIDE analysis per component: threat ID, category (S/T/R/I/D/E), description, likelihood (1-5), impact (1-5), risk score, and mitigation status.
|
|
28
|
+
|
|
29
|
+
### 3. Map Threats to NIST Controls
|
|
30
|
+
```bash
|
|
31
|
+
python tools/security/threat_modeler.py --map-controls --model-id "tm-001" --json
|
|
32
|
+
```
|
|
33
|
+
**Expected output:** JSON mapping each threat to recommended NIST 800-53 controls, with implementation status from existing compliance data.
|
|
34
|
+
|
|
35
|
+
### 4. Auto-Generate POAM Entries
|
|
36
|
+
```bash
|
|
37
|
+
python tools/security/threat_modeler.py --auto-poam --model-id "tm-001" --json
|
|
38
|
+
```
|
|
39
|
+
**Expected output:** JSON with generated POAM entries for unmitigated threats, including milestone dates and responsible parties.
|
|
40
|
+
|
|
41
|
+
### 5. Get Model Summary
|
|
42
|
+
```bash
|
|
43
|
+
python tools/security/threat_modeler.py --summary --model-id "tm-001" --json
|
|
44
|
+
```
|
|
45
|
+
**Expected output:** JSON with threat counts by STRIDE category, risk distribution, mitigation coverage, and residual risk score.
|
|
46
|
+
|
|
47
|
+
## Decision Reference
|
|
48
|
+
|
|
49
|
+
| Decision | Description |
|
|
50
|
+
|----------|-------------|
|
|
51
|
+
| D-INV-25 | STRIDE analysis uses deterministic rule engine per component type -- air-gap safe |
|
|
52
|
+
| D-INV-26 | Risk score = likelihood x impact (1-25 scale), thresholds: LOW < 6, MEDIUM < 12, HIGH < 20, CRITICAL >= 20 |
|
|
53
|
+
| D-INV-27 | NIST mapping uses crosswalk engine for multi-framework propagation |
|
|
54
|
+
| D-INV-28 | POAM entries auto-generated with 90-day default milestones for HIGH/CRITICAL |
|
|
55
|
+
|
|
56
|
+
## Edge Cases
|
|
57
|
+
|
|
58
|
+
- Component with no applicable STRIDE threats returns clean report
|
|
59
|
+
- Missing control mapping triggers crosswalk engine lookup before failing
|
|
60
|
+
- Duplicate threat model name within project appends version suffix
|
|
61
|
+
- Empty component list returns model shell with instructions
|
|
62
|
+
|
|
63
|
+
## Tier Gating
|
|
64
|
+
|
|
65
|
+
| Capability | Community | Pro |
|
|
66
|
+
|------------|-----------|-----|
|
|
67
|
+
| STRIDE analysis | Yes | Yes |
|
|
68
|
+
| NIST control mapping | Yes | Yes |
|
|
69
|
+
| POAM auto-generation | Yes | Yes |
|
|
70
|
+
| ATT&CK mapping | No | Yes |
|
|
71
|
+
| Auto-remediation suggestions | No | Yes |
|
|
72
|
+
|
|
73
|
+
## Security
|
|
74
|
+
|
|
75
|
+
- Threat models and POAM entries are append-only (NIST AU compliant)
|
|
76
|
+
- Model data scoped to project -- no cross-project access
|
|
77
|
+
- CUI markings applied to all exported threat model artifacts
|