Files
claude-skills-reference/engineering/tech-debt-tracker/expected_outputs/sample_prioritization_output.json
Leo 91af2a883a feat: Add tech-debt-tracker POWERFUL-tier skill
Complete technical debt management system with three interconnected tools:

• debt_scanner.py - AST-based Python analysis + regex patterns for multi-language debt detection
• debt_prioritizer.py - Multiple prioritization frameworks (CoD, WSJF, RICE) with sprint planning
• debt_dashboard.py - Historical trend analysis, health scoring, and executive reporting

Features:
- 15+ debt types detected (complexity, duplicates, security, architecture, etc.)
- Business impact analysis with ROI calculations
- Health scoring (0-100) with trend forecasting
- Executive and engineering stakeholder reports
- Zero external dependencies, stdlib only
- Comprehensive documentation and sample data

Addresses: tech debt identification, prioritization, tracking, and stakeholder communication
2026-02-16 13:00:55 +00:00

1686 lines
45 KiB
JSON

{
"metadata": {
"analysis_date": "2026-02-16T12:59:31.382843",
"framework_used": "cost_of_delay",
"team_size": 5,
"sprint_capacity_hours": 80,
"total_items_analyzed": 20
},
"prioritized_backlog": [
{
"id": "DEBT-0008",
"type": "magic_numbers",
"description": "Magic number 1800 used for lock timeout",
"file_path": "src/user_service.py",
"line_number": 98,
"severity": "low",
"metadata": {
"value": 1800,
"context": "account_lockout_duration"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 1,
"hours_estimate": 5.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 2,
"revenue_impact": 2,
"team_velocity_impact": 3,
"quality_impact": 3,
"security_impact": 2
},
"interest_rate": {
"daily_cost": 2.4,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 2.1,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.8
},
{
"id": "DEBT-0010",
"type": "long_line",
"description": "Line too long: 156 characters",
"file_path": "src/frontend.js",
"line_number": 127,
"severity": "low",
"metadata": {
"length": 156,
"recommended_max": 120
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 1,
"hours_estimate": 0.375,
"risk_factor": 1.0,
"skill_level_required": "junior",
"confidence": 0.95
},
"business_impact": {
"customer_impact": 2,
"revenue_impact": 2,
"team_velocity_impact": 3,
"quality_impact": 3,
"security_impact": 2
},
"interest_rate": {
"daily_cost": 2.4,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 0.16,
"category": "code_quality",
"impact_tags": [
"quick-win"
],
"priority_score": 4.8
},
{
"id": "DEBT-0011",
"type": "commented_code",
"description": "Dead code left in comments",
"file_path": "src/frontend.js",
"line_number": 285,
"severity": "low",
"metadata": {
"lines_of_commented_code": 8
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 1,
"hours_estimate": 5.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 2,
"revenue_impact": 2,
"team_velocity_impact": 3,
"quality_impact": 3,
"security_impact": 2
},
"interest_rate": {
"daily_cost": 2.4,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 2.1,
"category": "maintenance",
"impact_tags": [
"quick-win"
],
"priority_score": 4.8
},
{
"id": "DEBT-0007",
"type": "empty_catch_blocks",
"description": "Empty catch block in update_user method",
"file_path": "src/user_service.py",
"line_number": 156,
"severity": "medium",
"metadata": {
"method_name": "update_user",
"exception_type": "generic"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 10.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 3,
"revenue_impact": 3,
"team_velocity_impact": 5,
"quality_impact": 5,
"security_impact": 3
},
"interest_rate": {
"daily_cost": 4.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 7.01,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.72
},
{
"id": "DEBT-0009",
"type": "deep_nesting",
"description": "Deep nesting detected: 6 levels in preferences handling",
"file_path": "src/frontend.js",
"line_number": 32,
"severity": "medium",
"metadata": {
"nesting_level": 6,
"recommended_max": 4
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 10.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 3,
"revenue_impact": 3,
"team_velocity_impact": 5,
"quality_impact": 5,
"security_impact": 3
},
"interest_rate": {
"daily_cost": 4.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 7.01,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.72
},
{
"id": "DEBT-0012",
"type": "global_variables",
"description": "Global variable userCache should be encapsulated",
"file_path": "src/frontend.js",
"line_number": 7,
"severity": "medium",
"metadata": {
"variable_name": "userCache",
"scope": "global"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 10.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 3,
"revenue_impact": 3,
"team_velocity_impact": 5,
"quality_impact": 5,
"security_impact": 3
},
"interest_rate": {
"daily_cost": 4.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 7.01,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.72
},
{
"id": "DEBT-0014",
"type": "hardcoded_values",
"description": "Tax rates hardcoded in payment processing logic",
"file_path": "src/payment_processor.py",
"line_number": 45,
"severity": "medium",
"metadata": {
"values": [
"0.08",
"0.085",
"0.0625",
"0.06"
],
"context": "tax_calculation"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 10.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 3,
"revenue_impact": 3,
"team_velocity_impact": 5,
"quality_impact": 5,
"security_impact": 3
},
"interest_rate": {
"daily_cost": 4.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 7.01,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.72
},
{
"id": "DEBT-0016",
"type": "inefficient_algorithm",
"description": "O(n) user search could be optimized with indexing",
"file_path": "src/user_service.py",
"line_number": 178,
"severity": "medium",
"metadata": {
"current_complexity": "O(n)",
"recommended_complexity": "O(log n)",
"method_name": "search_users"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 10.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 3,
"revenue_impact": 3,
"team_velocity_impact": 5,
"quality_impact": 5,
"security_impact": 3
},
"interest_rate": {
"daily_cost": 4.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 7.01,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.72
},
{
"id": "DEBT-0017",
"type": "memory_leak_risk",
"description": "Event listeners attached without cleanup",
"file_path": "src/frontend.js",
"line_number": 145,
"severity": "medium",
"metadata": {
"event_type": "click",
"cleanup_missing": true
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 10.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 3,
"revenue_impact": 3,
"team_velocity_impact": 5,
"quality_impact": 5,
"security_impact": 3
},
"interest_rate": {
"daily_cost": 4.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 7.01,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.72
},
{
"id": "DEBT-0001",
"type": "large_function",
"description": "create_user function in user_service.py is 89 lines long",
"file_path": "src/user_service.py",
"line_number": 13,
"severity": "high",
"metadata": {
"function_name": "create_user",
"length": 89,
"recommended_max": 50
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 15.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.7
},
"business_impact": {
"customer_impact": 4,
"revenue_impact": 6,
"team_velocity_impact": 10,
"quality_impact": 8,
"security_impact": 3
},
"interest_rate": {
"daily_cost": 7.4,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.03
},
"cost_of_delay": 19.48,
"category": "code_quality",
"impact_tags": [
"velocity-blocker",
"quality-risk",
"quick-win"
],
"priority_score": 4.26
},
{
"id": "DEBT-0005",
"type": "missing_docstring",
"description": "PaymentProcessor class missing docstring",
"file_path": "src/payment_processor.py",
"line_number": 8,
"severity": "low",
"metadata": {
"class_name": "PaymentProcessor"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 1,
"hours_estimate": 1.25,
"risk_factor": 1.0,
"skill_level_required": "junior",
"confidence": 0.9
},
"business_impact": {
"customer_impact": 1,
"revenue_impact": 1,
"team_velocity_impact": 2,
"quality_impact": 2,
"security_impact": 1
},
"interest_rate": {
"daily_cost": 1.6,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 0.35,
"category": "code_quality",
"impact_tags": [
"quick-win"
],
"priority_score": 4.1
},
{
"id": "DEBT-0013",
"type": "synchronous_ajax",
"description": "Synchronous AJAX call blocks UI thread",
"file_path": "src/frontend.js",
"line_number": 189,
"severity": "high",
"metadata": {
"method": "XMLHttpRequest",
"async": false
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 15.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 4,
"revenue_impact": 4,
"team_velocity_impact": 7,
"quality_impact": 7,
"security_impact": 4
},
"interest_rate": {
"daily_cost": 5.6,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 14.73,
"category": "other",
"impact_tags": [
"velocity-blocker",
"quality-risk",
"quick-win"
],
"priority_score": 3.73
},
{
"id": "DEBT-0015",
"type": "no_error_handling",
"description": "API calls without proper error handling",
"file_path": "src/payment_processor.py",
"line_number": 78,
"severity": "high",
"metadata": {
"api_endpoint": "stripe",
"error_scenarios": [
"network_failure",
"invalid_response"
]
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 15.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 4,
"revenue_impact": 4,
"team_velocity_impact": 7,
"quality_impact": 7,
"security_impact": 4
},
"interest_rate": {
"daily_cost": 5.6,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 14.73,
"category": "other",
"impact_tags": [
"velocity-blocker",
"quality-risk",
"quick-win"
],
"priority_score": 3.73
},
{
"id": "DEBT-0019",
"type": "outdated_dependency",
"description": "jQuery version 2.1.4 has known security vulnerabilities",
"file_path": "package.json",
"line_number": 15,
"severity": "high",
"metadata": {
"package": "jquery",
"current_version": "2.1.4",
"latest_version": "3.6.4",
"vulnerabilities": [
"CVE-2020-11022",
"CVE-2020-11023"
]
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 15.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 4,
"revenue_impact": 4,
"team_velocity_impact": 7,
"quality_impact": 7,
"security_impact": 4
},
"interest_rate": {
"daily_cost": 5.6,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 14.73,
"category": "other",
"impact_tags": [
"velocity-blocker",
"quality-risk",
"quick-win"
],
"priority_score": 3.73
},
{
"id": "DEBT-0018",
"type": "sql_injection_risk",
"description": "Potential SQL injection in user query",
"file_path": "src/database.py",
"line_number": 25,
"severity": "critical",
"metadata": {
"query_type": "dynamic",
"user_input": "unsanitized"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 3,
"hours_estimate": 20.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 5,
"revenue_impact": 5,
"team_velocity_impact": 9,
"quality_impact": 9,
"security_impact": 5
},
"interest_rate": {
"daily_cost": 7.199999999999999,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 25.26,
"category": "other",
"impact_tags": [
"velocity-blocker",
"quality-risk",
"quick-win"
],
"priority_score": 3.24
},
{
"id": "DEBT-0006",
"type": "todo_comment",
"description": "TODO: Move this to configuration file",
"file_path": "src/user_service.py",
"line_number": 8,
"severity": "low",
"metadata": {
"comment": "TODO: Move this to configuration file"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 1,
"hours_estimate": 0.75,
"risk_factor": 1.0,
"skill_level_required": "junior",
"confidence": 0.9
},
"business_impact": {
"customer_impact": 1,
"revenue_impact": 1,
"team_velocity_impact": 1,
"quality_impact": 1,
"security_impact": 1
},
"interest_rate": {
"daily_cost": 0.8,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.01
},
"cost_of_delay": 0.11,
"category": "maintenance",
"impact_tags": [
"quick-win"
],
"priority_score": 3.1
},
{
"id": "DEBT-0002",
"type": "duplicate_code",
"description": "Password validation logic duplicated in 3 locations",
"file_path": "src/user_service.py",
"line_number": 45,
"severity": "medium",
"metadata": {
"duplicate_count": 3,
"other_files": [
"src/auth.py",
"src/frontend.js"
]
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 15.0,
"risk_factor": 1.4,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 3,
"revenue_impact": 4,
"team_velocity_impact": 6,
"quality_impact": 6,
"security_impact": 2
},
"interest_rate": {
"daily_cost": 4.8,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.08
},
"cost_of_delay": 12.69,
"category": "code_quality",
"impact_tags": [
"quick-win"
],
"priority_score": 2.39
},
{
"id": "DEBT-0020",
"type": "test_debt",
"description": "No unit tests for critical payment processing logic",
"file_path": "src/payment_processor.py",
"line_number": 19,
"severity": "high",
"metadata": {
"coverage": 0,
"critical_paths": [
"process_payment",
"refund_payment"
],
"risk_level": "high"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 6,
"hours_estimate": 36.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 7,
"revenue_impact": 7,
"team_velocity_impact": 10,
"quality_impact": 10,
"security_impact": 4
},
"interest_rate": {
"daily_cost": 8.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.04
},
"cost_of_delay": 50.82,
"category": "testing",
"impact_tags": [
"customer-facing",
"revenue-impact",
"velocity-blocker",
"quality-risk",
"quick-win"
],
"priority_score": 1.94
},
{
"id": "DEBT-0004",
"type": "high_complexity",
"description": "process_payment function has cyclomatic complexity of 24",
"file_path": "src/payment_processor.py",
"line_number": 19,
"severity": "high",
"metadata": {
"function_name": "process_payment",
"complexity": 24,
"recommended_max": 10
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 5,
"hours_estimate": 30.0,
"risk_factor": 1.4,
"skill_level_required": "senior",
"confidence": 0.5
},
"business_impact": {
"customer_impact": 6,
"revenue_impact": 7,
"team_velocity_impact": 10,
"quality_impact": 10,
"security_impact": 4
},
"interest_rate": {
"daily_cost": 8.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.05
},
"cost_of_delay": 42.36,
"category": "code_quality",
"impact_tags": [
"revenue-impact",
"velocity-blocker",
"quality-risk",
"quick-win"
],
"priority_score": 1.65
},
{
"id": "DEBT-0003",
"type": "security_risk",
"description": "Hardcoded API key in payment_processor.py",
"file_path": "src/payment_processor.py",
"line_number": 10,
"severity": "critical",
"metadata": {
"security_issue": "hardcoded_credentials",
"exposure_risk": "high"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 7,
"hours_estimate": 44.0,
"risk_factor": 1.8,
"skill_level_required": "senior",
"confidence": 0.4
},
"business_impact": {
"customer_impact": 10,
"revenue_impact": 10,
"team_velocity_impact": 10,
"quality_impact": 10,
"security_impact": 10
},
"interest_rate": {
"daily_cost": 8.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 61.91,
"category": "security",
"impact_tags": [
"security-critical",
"customer-facing",
"revenue-impact",
"velocity-blocker",
"quality-risk",
"quick-win"
],
"priority_score": 1.01
}
],
"sprint_allocation": {
"total_debt_hours": 277.4,
"debt_capacity_per_sprint": 16.0,
"total_sprints_needed": 17,
"high_priority_items": 0,
"sprint_plan": [
{
"sprint_number": 1,
"items": [
{
"id": "DEBT-0008",
"type": "magic_numbers",
"description": "Magic number 1800 used for lock timeout",
"file_path": "src/user_service.py",
"line_number": 98,
"severity": "low",
"metadata": {
"value": 1800,
"context": "account_lockout_duration"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 1,
"hours_estimate": 5.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 2,
"revenue_impact": 2,
"team_velocity_impact": 3,
"quality_impact": 3,
"security_impact": 2
},
"interest_rate": {
"daily_cost": 2.4,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 2.1,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.8
},
{
"id": "DEBT-0010",
"type": "long_line",
"description": "Line too long: 156 characters",
"file_path": "src/frontend.js",
"line_number": 127,
"severity": "low",
"metadata": {
"length": 156,
"recommended_max": 120
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 1,
"hours_estimate": 0.375,
"risk_factor": 1.0,
"skill_level_required": "junior",
"confidence": 0.95
},
"business_impact": {
"customer_impact": 2,
"revenue_impact": 2,
"team_velocity_impact": 3,
"quality_impact": 3,
"security_impact": 2
},
"interest_rate": {
"daily_cost": 2.4,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 0.16,
"category": "code_quality",
"impact_tags": [
"quick-win"
],
"priority_score": 4.8
},
{
"id": "DEBT-0011",
"type": "commented_code",
"description": "Dead code left in comments",
"file_path": "src/frontend.js",
"line_number": 285,
"severity": "low",
"metadata": {
"lines_of_commented_code": 8
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 1,
"hours_estimate": 5.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 2,
"revenue_impact": 2,
"team_velocity_impact": 3,
"quality_impact": 3,
"security_impact": 2
},
"interest_rate": {
"daily_cost": 2.4,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 2.1,
"category": "maintenance",
"impact_tags": [
"quick-win"
],
"priority_score": 4.8
}
],
"total_hours": 10.375,
"capacity_used": 0.6484375
},
{
"sprint_number": 2,
"items": [
{
"id": "DEBT-0007",
"type": "empty_catch_blocks",
"description": "Empty catch block in update_user method",
"file_path": "src/user_service.py",
"line_number": 156,
"severity": "medium",
"metadata": {
"method_name": "update_user",
"exception_type": "generic"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 10.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 3,
"revenue_impact": 3,
"team_velocity_impact": 5,
"quality_impact": 5,
"security_impact": 3
},
"interest_rate": {
"daily_cost": 4.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 7.01,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.72
}
],
"total_hours": 10.0,
"capacity_used": 0.625
},
{
"sprint_number": 3,
"items": [
{
"id": "DEBT-0009",
"type": "deep_nesting",
"description": "Deep nesting detected: 6 levels in preferences handling",
"file_path": "src/frontend.js",
"line_number": 32,
"severity": "medium",
"metadata": {
"nesting_level": 6,
"recommended_max": 4
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 10.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 3,
"revenue_impact": 3,
"team_velocity_impact": 5,
"quality_impact": 5,
"security_impact": 3
},
"interest_rate": {
"daily_cost": 4.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 7.01,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.72
}
],
"total_hours": 10.0,
"capacity_used": 0.625
},
{
"sprint_number": 4,
"items": [
{
"id": "DEBT-0012",
"type": "global_variables",
"description": "Global variable userCache should be encapsulated",
"file_path": "src/frontend.js",
"line_number": 7,
"severity": "medium",
"metadata": {
"variable_name": "userCache",
"scope": "global"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 10.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 3,
"revenue_impact": 3,
"team_velocity_impact": 5,
"quality_impact": 5,
"security_impact": 3
},
"interest_rate": {
"daily_cost": 4.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 7.01,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.72
}
],
"total_hours": 10.0,
"capacity_used": 0.625
},
{
"sprint_number": 5,
"items": [
{
"id": "DEBT-0014",
"type": "hardcoded_values",
"description": "Tax rates hardcoded in payment processing logic",
"file_path": "src/payment_processor.py",
"line_number": 45,
"severity": "medium",
"metadata": {
"values": [
"0.08",
"0.085",
"0.0625",
"0.06"
],
"context": "tax_calculation"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 10.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 3,
"revenue_impact": 3,
"team_velocity_impact": 5,
"quality_impact": 5,
"security_impact": 3
},
"interest_rate": {
"daily_cost": 4.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 7.01,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.72
}
],
"total_hours": 10.0,
"capacity_used": 0.625
},
{
"sprint_number": 6,
"items": [
{
"id": "DEBT-0016",
"type": "inefficient_algorithm",
"description": "O(n) user search could be optimized with indexing",
"file_path": "src/user_service.py",
"line_number": 178,
"severity": "medium",
"metadata": {
"current_complexity": "O(n)",
"recommended_complexity": "O(log n)",
"method_name": "search_users"
},
"detected_date": "2024-02-10T10:30:00",
"status": "identified",
"effort_estimate": {
"size_points": 2,
"hours_estimate": 10.0,
"risk_factor": 1.0,
"skill_level_required": "mid",
"confidence": 0.6
},
"business_impact": {
"customer_impact": 3,
"revenue_impact": 3,
"team_velocity_impact": 5,
"quality_impact": 5,
"security_impact": 3
},
"interest_rate": {
"daily_cost": 4.0,
"frequency_multiplier": 1.0,
"team_impact_multiplier": 1.0,
"compound_rate": 0.02
},
"cost_of_delay": 7.01,
"category": "other",
"impact_tags": [
"quick-win"
],
"priority_score": 4.72
}
],
"total_hours": 10.0,
"capacity_used": 0.625
}
],
"recommendations": [
"Allocate 16.0 hours per sprint to tech debt",
"Focus on 0 high-priority items first",
"Estimated 17 sprints to clear current backlog"
]
},
"insights": {
"category_distribution": {
"other": 11,
"code_quality": 5,
"maintenance": 2,
"testing": 1,
"security": 1
},
"total_effort_hours": 277.4,
"effort_by_category": {
"other": 130.0,
"code_quality": 61.6,
"maintenance": 5.8,
"testing": 36.0,
"security": 44.0
},
"priority_distribution": {
"medium": 17,
"low": 3
},
"high_risk_items_count": 1,
"quick_wins_count": 5,
"total_cost_of_delay": 303.6,
"average_daily_interest_rate": 4.69,
"top_categories_by_effort": [
[
"other",
130.0
],
[
"code_quality",
61.625
],
[
"security",
44.0
]
]
},
"charts_data": {
"priority_effort_scatter": [
{
"x": 5.0,
"y": 4.8,
"label": "Magic number 1800 used for lock timeout",
"category": "other",
"size": 2.1
},
{
"x": 0.375,
"y": 4.8,
"label": "Line too long: 156 characters",
"category": "code_quality",
"size": 0.16
},
{
"x": 5.0,
"y": 4.8,
"label": "Dead code left in comments",
"category": "maintenance",
"size": 2.1
},
{
"x": 10.0,
"y": 4.72,
"label": "Empty catch block in update_user method",
"category": "other",
"size": 7.01
},
{
"x": 10.0,
"y": 4.72,
"label": "Deep nesting detected: 6 levels in preferences han",
"category": "other",
"size": 7.01
},
{
"x": 10.0,
"y": 4.72,
"label": "Global variable userCache should be encapsulated",
"category": "other",
"size": 7.01
},
{
"x": 10.0,
"y": 4.72,
"label": "Tax rates hardcoded in payment processing logic",
"category": "other",
"size": 7.01
},
{
"x": 10.0,
"y": 4.72,
"label": "O(n) user search could be optimized with indexing",
"category": "other",
"size": 7.01
},
{
"x": 10.0,
"y": 4.72,
"label": "Event listeners attached without cleanup",
"category": "other",
"size": 7.01
},
{
"x": 15.0,
"y": 4.26,
"label": "create_user function in user_service.py is 89 line",
"category": "code_quality",
"size": 19.48
},
{
"x": 1.25,
"y": 4.1,
"label": "PaymentProcessor class missing docstring",
"category": "code_quality",
"size": 0.35
},
{
"x": 15.0,
"y": 3.73,
"label": "Synchronous AJAX call blocks UI thread",
"category": "other",
"size": 14.73
},
{
"x": 15.0,
"y": 3.73,
"label": "API calls without proper error handling",
"category": "other",
"size": 14.73
},
{
"x": 15.0,
"y": 3.73,
"label": "jQuery version 2.1.4 has known security vulnerabil",
"category": "other",
"size": 14.73
},
{
"x": 20.0,
"y": 3.24,
"label": "Potential SQL injection in user query",
"category": "other",
"size": 25.26
},
{
"x": 0.75,
"y": 3.1,
"label": "TODO: Move this to configuration file",
"category": "maintenance",
"size": 0.11
},
{
"x": 15.0,
"y": 2.39,
"label": "Password validation logic duplicated in 3 location",
"category": "code_quality",
"size": 12.69
},
{
"x": 36.0,
"y": 1.94,
"label": "No unit tests for critical payment processing logi",
"category": "testing",
"size": 50.82
},
{
"x": 30.0,
"y": 1.65,
"label": "process_payment function has cyclomatic complexity",
"category": "code_quality",
"size": 42.36
},
{
"x": 44.0,
"y": 1.01,
"label": "Hardcoded API key in payment_processor.py",
"category": "security",
"size": 61.91
}
],
"category_effort_distribution": [
{
"category": "other",
"effort": 130.0
},
{
"category": "code_quality",
"effort": 61.6
},
{
"category": "maintenance",
"effort": 5.8
},
{
"category": "testing",
"effort": 36.0
},
{
"category": "security",
"effort": 44.0
}
],
"priority_timeline": [
{
"item_rank": 1,
"description": "Magic number 1800 used for loc",
"effort": 5.0,
"cumulative_effort": 5.0,
"priority_score": 4.8
},
{
"item_rank": 2,
"description": "Line too long: 156 characters",
"effort": 0.375,
"cumulative_effort": 5.4,
"priority_score": 4.8
},
{
"item_rank": 3,
"description": "Dead code left in comments",
"effort": 5.0,
"cumulative_effort": 10.4,
"priority_score": 4.8
},
{
"item_rank": 4,
"description": "Empty catch block in update_us",
"effort": 10.0,
"cumulative_effort": 20.4,
"priority_score": 4.72
},
{
"item_rank": 5,
"description": "Deep nesting detected: 6 level",
"effort": 10.0,
"cumulative_effort": 30.4,
"priority_score": 4.72
},
{
"item_rank": 6,
"description": "Global variable userCache shou",
"effort": 10.0,
"cumulative_effort": 40.4,
"priority_score": 4.72
},
{
"item_rank": 7,
"description": "Tax rates hardcoded in payment",
"effort": 10.0,
"cumulative_effort": 50.4,
"priority_score": 4.72
},
{
"item_rank": 8,
"description": "O(n) user search could be opti",
"effort": 10.0,
"cumulative_effort": 60.4,
"priority_score": 4.72
},
{
"item_rank": 9,
"description": "Event listeners attached witho",
"effort": 10.0,
"cumulative_effort": 70.4,
"priority_score": 4.72
},
{
"item_rank": 10,
"description": "create_user function in user_s",
"effort": 15.0,
"cumulative_effort": 85.4,
"priority_score": 4.26
},
{
"item_rank": 11,
"description": "PaymentProcessor class missing",
"effort": 1.25,
"cumulative_effort": 86.6,
"priority_score": 4.1
},
{
"item_rank": 12,
"description": "Synchronous AJAX call blocks U",
"effort": 15.0,
"cumulative_effort": 101.6,
"priority_score": 3.73
},
{
"item_rank": 13,
"description": "API calls without proper error",
"effort": 15.0,
"cumulative_effort": 116.6,
"priority_score": 3.73
},
{
"item_rank": 14,
"description": "jQuery version 2.1.4 has known",
"effort": 15.0,
"cumulative_effort": 131.6,
"priority_score": 3.73
},
{
"item_rank": 15,
"description": "Potential SQL injection in use",
"effort": 20.0,
"cumulative_effort": 151.6,
"priority_score": 3.24
},
{
"item_rank": 16,
"description": "TODO: Move this to configurati",
"effort": 0.75,
"cumulative_effort": 152.4,
"priority_score": 3.1
},
{
"item_rank": 17,
"description": "Password validation logic dupl",
"effort": 15.0,
"cumulative_effort": 167.4,
"priority_score": 2.39
},
{
"item_rank": 18,
"description": "No unit tests for critical pay",
"effort": 36.0,
"cumulative_effort": 203.4,
"priority_score": 1.94
},
{
"item_rank": 19,
"description": "process_payment function has c",
"effort": 30.0,
"cumulative_effort": 233.4,
"priority_score": 1.65
},
{
"item_rank": 20,
"description": "Hardcoded API key in payment_p",
"effort": 44.0,
"cumulative_effort": 277.4,
"priority_score": 1.01
}
],
"interest_rate_trend": [
{
"item_index": 0,
"daily_cost": 2.4,
"category": "other"
},
{
"item_index": 1,
"daily_cost": 2.4,
"category": "code_quality"
},
{
"item_index": 2,
"daily_cost": 2.4,
"category": "maintenance"
},
{
"item_index": 3,
"daily_cost": 4.0,
"category": "other"
},
{
"item_index": 4,
"daily_cost": 4.0,
"category": "other"
},
{
"item_index": 5,
"daily_cost": 4.0,
"category": "other"
},
{
"item_index": 6,
"daily_cost": 4.0,
"category": "other"
},
{
"item_index": 7,
"daily_cost": 4.0,
"category": "other"
},
{
"item_index": 8,
"daily_cost": 4.0,
"category": "other"
},
{
"item_index": 9,
"daily_cost": 7.4,
"category": "code_quality"
},
{
"item_index": 10,
"daily_cost": 1.6,
"category": "code_quality"
},
{
"item_index": 11,
"daily_cost": 5.6,
"category": "other"
},
{
"item_index": 12,
"daily_cost": 5.6,
"category": "other"
},
{
"item_index": 13,
"daily_cost": 5.6,
"category": "other"
},
{
"item_index": 14,
"daily_cost": 7.199999999999999,
"category": "other"
},
{
"item_index": 15,
"daily_cost": 0.8,
"category": "maintenance"
},
{
"item_index": 16,
"daily_cost": 4.8,
"category": "code_quality"
},
{
"item_index": 17,
"daily_cost": 8.0,
"category": "testing"
},
{
"item_index": 18,
"daily_cost": 8.0,
"category": "code_quality"
},
{
"item_index": 19,
"daily_cost": 8.0,
"category": "security"
}
]
},
"recommendations": [
"Start with 5 quick wins to build momentum and demonstrate immediate value from tech debt reduction efforts.",
"Focus initial efforts on 'other' category debt, which represents the largest effort investment (130.0 hours)."
]
}