From e6adb3e6db2b82e8ae0d8bab9b2b09cdc5930160 Mon Sep 17 00:00:00 2001 From: tegwick Date: Fri, 3 Oct 2025 11:09:47 +0200 Subject: [PATCH] feat: enhance issue management tooling and clarify performance metrics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enhanced issue management: - Added create-issue target to Makefile with support for TITLE/BODY parameters - Support for both inline BODY and BODY_FILE for complex markdown descriptions - Created issue #82 for architectural independence improvement Performance metrics clarification: - Identified distinction between Performance Index (83.3/100 - GOOD) and Architecture Independence Index (14.3% - POOR) - Performance Index: Template rendering, database ops, memory usage (markitect perf-track) - Architecture Index: Layer isolation, dependency violations (make chaos-validate) - Updated issue #82 to clarify scope: improve architectural independence while maintaining performance Technical improvements: - Added create-issue to .PHONY targets in Makefile - Enhanced help documentation for issue management commands - Preserved chaos validation results for historical tracking 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- Makefile | 22 +- .../chaos_report_20251003_105604.md | 125 ++ .../chaos_validation_20251003_105600.json | 1034 +++++++++++++++++ 3 files changed, 1180 insertions(+), 1 deletion(-) create mode 100644 tools/chaos_results/chaos_report_20251003_105604.md create mode 100644 tools/chaos_results/chaos_validation_20251003_105600.json diff --git a/Makefile b/Makefile index 48a147b8..c404e805 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # MarkiTect - Advanced Markdown Engine # Makefile for common development tasks -.PHONY: help setup install test build clean update status dev lint format check-deps venv-status update-digest add-diary-entry list-issues show-issue list-open-issues close-issue close-issue-enhanced close-issues-batch test-from-issue tdd-start tdd-add-test tdd-finish tdd-status test-status test-new test-coverage test-arch test-foundation test-infrastructure test-integration test-domain test-service test-application test-presentation test-quick test-layers test-random test-random-seed test-random-repeat test-install-randomly test-clean test-tdd test-changed test-module test-cache-clean test-efficient cli-help release-status release-validate release-prepare release-build release-publish release-dry-run chaos-validate chaos-matrix chaos-inject chaos-report +.PHONY: help setup install test build clean update status dev lint format check-deps venv-status update-digest add-diary-entry list-issues show-issue list-open-issues create-issue close-issue close-issue-enhanced close-issues-batch test-from-issue tdd-start tdd-add-test tdd-finish tdd-status test-status test-new test-coverage test-arch test-foundation test-infrastructure test-integration test-domain test-service test-application test-presentation test-quick test-layers test-random test-random-seed test-random-repeat test-install-randomly test-clean test-tdd test-changed test-module test-cache-clean test-efficient cli-help release-status release-validate release-prepare release-build release-publish release-dry-run chaos-validate chaos-matrix chaos-inject chaos-report # Default target help: @@ -79,6 +79,7 @@ help: @echo "Issue Management:" @echo " list-issues - Show all gitea issues with status and priority" @echo " list-open-issues - Show only open issues (active backlog)" + @echo " create-issue TITLE='...' BODY='...' - Create a new issue (or BODY_FILE='/path/to/file.md')" @echo " show-issue NUM=X - Show detailed view of specific issue" @echo " close-issue NUM=X [COMMENT='reason'] - Close an issue and mark as completed" @echo " close-issue-enhanced NUM=X [WORK='description'] - Close issue with enhanced tddai/issue_closer.py" @@ -411,6 +412,25 @@ show-issue: $(VENV)/bin/activate list-open-issues: $(VENV)/bin/activate @PYTHONPATH=. $(VENV_PYTHON) tddai_cli.py list-open-issues +# Create a new issue +create-issue: + @if [ -z "$(TITLE)" ]; then \ + echo "❌ Please specify issue title: make create-issue TITLE='Fix bug' BODY='Description'"; \ + echo "❌ Or use: make create-issue TITLE='Fix bug' BODY_FILE='/path/to/body.md'"; \ + exit 1; \ + fi + @if [ -z "$(BODY)" ] && [ -z "$(BODY_FILE)" ]; then \ + echo "❌ Please specify either BODY='...' or BODY_FILE='/path/to/file.md'"; \ + exit 1; \ + fi + @echo "📋 Creating new issue..." + @echo "📋 Title: $(TITLE)" + @if [ -n "$(BODY_FILE)" ]; then \ + tea issue create --title "$(TITLE)" --description "$$(cat $(BODY_FILE))"; \ + else \ + tea issue create --title "$(TITLE)" --description "$(BODY)"; \ + fi + # Close an issue and mark as completed close-issue: $(VENV)/bin/activate @if [ -z "$(NUM)" ]; then \ diff --git a/tools/chaos_results/chaos_report_20251003_105604.md b/tools/chaos_results/chaos_report_20251003_105604.md new file mode 100644 index 00000000..703b08ea --- /dev/null +++ b/tools/chaos_results/chaos_report_20251003_105604.md @@ -0,0 +1,125 @@ +# Architectural Independence Chaos Engineering Report + +## Executive Summary + +**Validation Date**: 2025-10-03T10:56:00.359162 +**Duration**: 0.02 seconds +**Layers Tested**: 7 +**Total Chaos Injections**: 14 +**Successful Injections**: 2 +**Total Violations Detected**: 42 + +**Overall Health**: ❌ VIOLATIONS DETECTED + +## Architectural Layer Overview + +- **L1_Presentation**: CLI Interface and User Interaction (Dependencies: L2_Application) +- **L2_Application**: Feature Workflows and Use Cases (Dependencies: L3_Domain, L4_Service) +- **L3_Domain**: Business Logic and Domain Models (Dependencies: L4_Service) +- **L4_Service**: Application Services and Orchestration (Dependencies: L5_Infrastructure) +- **L5_Infrastructure**: Technical Infrastructure (Dependencies: L6_Integration, L7_Foundation) +- **L6_Integration**: External API and System Integration (Dependencies: L7_Foundation) +- **L7_Foundation**: Core Components and Utilities (Dependencies: None) + +## Dependency Matrix + +- **L1_Presentation**: L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- **L2_Application**: L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- **L3_Domain**: L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- **L4_Service**: L5_Infrastructure, L6_Integration, L7_Foundation +- **L5_Infrastructure**: L6_Integration, L7_Foundation +- **L6_Integration**: L7_Foundation +- **L7_Foundation**: None + +## Chaos Injection Results + +### L1_Presentation + +**import_failure**: ❌ FAIL +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L1_Presentation +- Violations: 6 + +**module_unavailable**: ❌ FAIL +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L1_Presentation +- Violations: 6 + +### L2_Application + +**import_failure**: ❌ FAIL +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L2_Application, L1_Presentation +- Violations: 5 + +**module_unavailable**: ❌ FAIL +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L2_Application, L1_Presentation +- Violations: 5 + +### L3_Domain + +**import_failure**: ❌ FAIL +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L3_Domain, L1_Presentation, L2_Application +- Violations: 4 + +**module_unavailable**: ❌ FAIL +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L3_Domain, L1_Presentation, L2_Application +- Violations: 4 + +### L4_Service + +**import_failure**: ❌ FAIL +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L4_Service, L1_Presentation, L2_Application, L3_Domain +- Violations: 3 + +**module_unavailable**: ❌ FAIL +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L4_Service, L1_Presentation, L2_Application, L3_Domain +- Violations: 3 + +### L5_Infrastructure + +**import_failure**: ❌ FAIL +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L5_Infrastructure, L1_Presentation, L2_Application, L3_Domain, L4_Service +- Violations: 2 + +**module_unavailable**: ❌ FAIL +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L5_Infrastructure, L1_Presentation, L2_Application, L3_Domain, L4_Service +- Violations: 2 + +### L6_Integration + +**import_failure**: ❌ FAIL +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L6_Integration, L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure +- Violations: 1 + +**module_unavailable**: ❌ FAIL +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L6_Integration, L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure +- Violations: 1 + +### L7_Foundation + +**import_failure**: ✅ PASS +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L7_Foundation, L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration +- Violations: 0 + +**module_unavailable**: ✅ PASS +- Affected Layers: L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration, L7_Foundation +- Expected Affected: L7_Foundation, L1_Presentation, L2_Application, L3_Domain, L4_Service, L5_Infrastructure, L6_Integration +- Violations: 0 + + +## Recommendations + +❌ **Action Required**: Architectural violations detected that need attention. +🔧 **Priority**: Review and refactor components with dependency violations. +📊 **Monitor**: Run chaos tests regularly to prevent regression. diff --git a/tools/chaos_results/chaos_validation_20251003_105600.json b/tools/chaos_results/chaos_validation_20251003_105600.json new file mode 100644 index 00000000..b0906e1b --- /dev/null +++ b/tools/chaos_results/chaos_validation_20251003_105600.json @@ -0,0 +1,1034 @@ +{ + "start_time": "2025-10-03T10:56:00.359162", + "layer_results": { + "L1_Presentation": { + "import_failure": { + "target_layer": "L1_Presentation", + "injection_type": "import_failure", + "start_time": "2025-10-03T10:56:00.359221", + "end_time": "2025-10-03T10:56:00.360477", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L1_Presentation" + ], + "dependency_violations": [ + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": false, + "error_message": null + }, + "module_unavailable": { + "target_layer": "L1_Presentation", + "injection_type": "module_unavailable", + "start_time": "2025-10-03T10:56:00.360954", + "end_time": "2025-10-03T10:56:00.361470", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L1_Presentation" + ], + "dependency_violations": [ + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": false, + "error_message": null + } + }, + "L2_Application": { + "import_failure": { + "target_layer": "L2_Application", + "injection_type": "import_failure", + "start_time": "2025-10-03T10:56:00.361711", + "end_time": "2025-10-03T10:56:00.362155", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L2_Application", + "L1_Presentation" + ], + "dependency_violations": [ + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": false, + "error_message": null + }, + "module_unavailable": { + "target_layer": "L2_Application", + "injection_type": "module_unavailable", + "start_time": "2025-10-03T10:56:00.362361", + "end_time": "2025-10-03T10:56:00.362734", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L2_Application", + "L1_Presentation" + ], + "dependency_violations": [ + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": false, + "error_message": null + } + }, + "L3_Domain": { + "import_failure": { + "target_layer": "L3_Domain", + "injection_type": "import_failure", + "start_time": "2025-10-03T10:56:00.362955", + "end_time": "2025-10-03T10:56:00.363334", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L3_Domain", + "L1_Presentation", + "L2_Application" + ], + "dependency_violations": [ + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": false, + "error_message": null + }, + "module_unavailable": { + "target_layer": "L3_Domain", + "injection_type": "module_unavailable", + "start_time": "2025-10-03T10:56:00.363534", + "end_time": "2025-10-03T10:56:00.363919", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L3_Domain", + "L1_Presentation", + "L2_Application" + ], + "dependency_violations": [ + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": false, + "error_message": null + } + }, + "L4_Service": { + "import_failure": { + "target_layer": "L4_Service", + "injection_type": "import_failure", + "start_time": "2025-10-03T10:56:00.364126", + "end_time": "2025-10-03T10:56:00.364574", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L4_Service", + "L1_Presentation", + "L2_Application", + "L3_Domain" + ], + "dependency_violations": [ + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": false, + "error_message": null + }, + "module_unavailable": { + "target_layer": "L4_Service", + "injection_type": "module_unavailable", + "start_time": "2025-10-03T10:56:00.365091", + "end_time": "2025-10-03T10:56:00.366564", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L4_Service", + "L1_Presentation", + "L2_Application", + "L3_Domain" + ], + "dependency_violations": [ + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": false, + "error_message": null + } + }, + "L5_Infrastructure": { + "import_failure": { + "target_layer": "L5_Infrastructure", + "injection_type": "import_failure", + "start_time": "2025-10-03T10:56:00.367069", + "end_time": "2025-10-03T10:56:00.368206", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L5_Infrastructure", + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service" + ], + "dependency_violations": [ + "L6_Integration", + "L7_Foundation" + ], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": false, + "error_message": null + }, + "module_unavailable": { + "target_layer": "L5_Infrastructure", + "injection_type": "module_unavailable", + "start_time": "2025-10-03T10:56:00.368623", + "end_time": "2025-10-03T10:56:00.370101", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L5_Infrastructure", + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service" + ], + "dependency_violations": [ + "L6_Integration", + "L7_Foundation" + ], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": false, + "error_message": null + } + }, + "L6_Integration": { + "import_failure": { + "target_layer": "L6_Integration", + "injection_type": "import_failure", + "start_time": "2025-10-03T10:56:00.370673", + "end_time": "2025-10-03T10:56:00.372068", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L6_Integration", + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure" + ], + "dependency_violations": [ + "L7_Foundation" + ], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": false, + "error_message": null + }, + "module_unavailable": { + "target_layer": "L6_Integration", + "injection_type": "module_unavailable", + "start_time": "2025-10-03T10:56:00.372449", + "end_time": "2025-10-03T10:56:00.373694", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L6_Integration", + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure" + ], + "dependency_violations": [ + "L7_Foundation" + ], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": false, + "error_message": null + } + }, + "L7_Foundation": { + "import_failure": { + "target_layer": "L7_Foundation", + "injection_type": "import_failure", + "start_time": "2025-10-03T10:56:00.374086", + "end_time": "2025-10-03T10:56:00.375199", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L7_Foundation", + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration" + ], + "dependency_violations": [], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": true, + "error_message": null + }, + "module_unavailable": { + "target_layer": "L7_Foundation", + "injection_type": "module_unavailable", + "start_time": "2025-10-03T10:56:00.375596", + "end_time": "2025-10-03T10:56:00.376841", + "affected_layers": [ + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration", + "L7_Foundation" + ], + "expected_affected": [ + "L7_Foundation", + "L1_Presentation", + "L2_Application", + "L3_Domain", + "L4_Service", + "L5_Infrastructure", + "L6_Integration" + ], + "dependency_violations": [], + "test_results": { + "L1_Presentation": { + "success": false, + "error": "No test files found for pattern test_l1_*.py", + "test_count": 0, + "failures": 0 + }, + "L2_Application": { + "success": false, + "error": "No test files found for pattern test_l2_*.py", + "test_count": 0, + "failures": 0 + }, + "L3_Domain": { + "success": false, + "error": "No test files found for pattern test_l3_*.py", + "test_count": 0, + "failures": 0 + }, + "L4_Service": { + "success": false, + "error": "No test files found for pattern test_l4_*.py", + "test_count": 0, + "failures": 0 + }, + "L5_Infrastructure": { + "success": false, + "error": "No test files found for pattern test_l5_*.py", + "test_count": 0, + "failures": 0 + }, + "L6_Integration": { + "success": false, + "error": "No test files found for pattern test_l6_*.py", + "test_count": 0, + "failures": 0 + }, + "L7_Foundation": { + "success": false, + "error": "No test files found for pattern test_l7_*.py", + "test_count": 0, + "failures": 0 + } + }, + "success": true, + "error_message": null + } + } + }, + "violations": [], + "summary": { + "total_injections": 14, + "successful_injections": 2, + "total_violations": 42, + "layers_tested": 7 + }, + "end_time": "2025-10-03T10:56:00.377134", + "duration": 0.017972 +} \ No newline at end of file