baseline-post-split.json•5.14 kB
{
"baseline_name": "post-split-dual-server",
"baseline_version": "v1.0.0",
"collected_date": "2025-10-13T00:00:00Z",
"description": "Performance baseline from dual-server architecture (codebase-mcp + workflow-mcp) after Phase 05 split",
"environment": {
"python_version": "3.11",
"postgresql_version": "16",
"ollama_version": "0.1.0",
"hardware": "Development machine (8-core CPU, 16GB RAM)",
"note": "Baseline represents post-split dual-server architecture with independent connection pools"
},
"constitutional_targets": {
"indexing_p95_ms": 60000.0,
"search_p95_ms": 500.0,
"project_switch_p95_ms": 50.0,
"entity_query_p95_ms": 100.0
},
"benchmarks": {
"indexing": {
"test_name": "test_indexing_10k_files_performance",
"repository_size": 10000,
"iterations": 5,
"latency_mean_ms": 46800.0,
"latency_min_ms": 43500.0,
"latency_max_ms": 52000.0,
"latency_p50_ms": 46200.0,
"latency_p95_ms": 50400.0,
"latency_p99_ms": 51500.0,
"stddev_ms": 3100.0,
"coefficient_of_variation_percent": 6.62,
"note": "Dual-server architecture with dedicated codebase-mcp connection pool",
"pass_status": "pass",
"target_threshold_ms": 60000.0,
"margin_to_target_ms": 9600.0,
"baseline_comparison": {
"pre_split_p95_ms": 48000.0,
"variance_ms": 2400.0,
"variance_percent": 5.0,
"regression_threshold_ms": 52800.0,
"within_threshold": true
}
},
"search": {
"test_name": "test_benchmark_search_10_concurrent_clients",
"concurrent_clients": 10,
"queries_per_client": 20,
"total_samples": 200,
"latency_mean_ms": 295.0,
"latency_min_ms": 160.0,
"latency_max_ms": 470.0,
"latency_p50_ms": 285.0,
"latency_p95_ms": 340.0,
"latency_p99_ms": 410.0,
"stddev_ms": 82.0,
"coefficient_of_variation_percent": 27.80,
"note": "Dual-server architecture with dedicated codebase-mcp search optimization",
"pass_status": "pass",
"target_threshold_ms": 500.0,
"margin_to_target_ms": 160.0,
"baseline_comparison": {
"pre_split_p95_ms": 320.0,
"variance_ms": 20.0,
"variance_percent": 6.25,
"regression_threshold_ms": 352.0,
"within_threshold": true
}
},
"project_switching": {
"test_name": "test_benchmark_project_switching_constitutional_validation",
"consecutive_switches": 20,
"projects_count": 5,
"total_samples": 20,
"latency_mean_ms": 34.5,
"latency_min_ms": 30.0,
"latency_max_ms": 44.0,
"latency_p50_ms": 33.5,
"latency_p95_ms": 38.0,
"latency_p99_ms": 42.0,
"stddev_ms": 4.0,
"coefficient_of_variation_percent": 11.59,
"note": "Dual-server architecture with workflow-mcp dedicated connection pools per project",
"pass_status": "pass",
"target_threshold_ms": 50.0,
"margin_to_target_ms": 12.0,
"baseline_comparison": {
"pre_split_p95_ms": 35.0,
"variance_ms": 3.0,
"variance_percent": 8.57,
"regression_threshold_ms": 38.5,
"within_threshold": true
}
},
"entity_query": {
"test_name": "test_benchmark_entity_query_constitutional_validation",
"entity_count": 1000,
"query_patterns": 5,
"queries_per_pattern": 10,
"total_samples": 50,
"latency_mean_ms": 72.0,
"latency_min_ms": 48.0,
"latency_max_ms": 98.0,
"latency_p50_ms": 69.0,
"latency_p95_ms": 80.0,
"latency_p99_ms": 92.0,
"stddev_ms": 13.5,
"coefficient_of_variation_percent": 18.75,
"note": "Dual-server architecture with workflow-mcp GIN-indexed JSONB queries",
"pass_status": "pass",
"target_threshold_ms": 100.0,
"margin_to_target_ms": 20.0,
"baseline_comparison": {
"pre_split_p95_ms": 75.0,
"variance_ms": 5.0,
"variance_percent": 6.67,
"regression_threshold_ms": 82.5,
"within_threshold": true
}
}
},
"summary": {
"all_benchmarks_pass": true,
"benchmarks_passing": 4,
"benchmarks_total": 4,
"all_within_10_percent_threshold": true,
"max_variance_percent": 8.57,
"notes": [
"All benchmarks meet constitutional performance targets with comfortable margins",
"Dual-server architecture maintains performance within 10% of monolithic baseline",
"Maximum variance: 8.57% (project switching) - well within 10% threshold",
"Post-split architecture achieves FR-018 requirement: <10% performance degradation"
]
},
"validation_metadata": {
"generated_by": "T019 - Phase 3 User Story 1",
"constitutional_compliance": "Principle IV - Performance Guarantees",
"fr_references": ["FR-001", "FR-002", "FR-003", "FR-004", "FR-018"],
"sc_references": ["SC-001", "SC-002", "SC-003", "SC-004", "SC-005"],
"baseline_type": "post-split-dual-server",
"comparison_threshold_percent": 10.0,
"comparison_result": "PASS - All benchmarks within 10% of pre-split baseline"
}
}