| |
| """Phase 7 Integration Validation — Test bridge + orchestrator together |
| |
| Quick test to verify Phase 7 works with actual CodetteOrchestrator (without full web server). |
| Tests the complete Path A validation. |
| |
| Usage: |
| python validate_phase7_integration.py |
| """ |
|
|
| import sys |
| from pathlib import Path |
|
|
| sys.path.insert(0, str(Path(__file__).resolve().parent.parent / "inference")) |
| sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) |
|
|
| print("\n" + "=" * 70) |
| print("Phase 7 Integration Validation Test") |
| print("=" * 70 + "\n") |
|
|
| |
| print("[1/4] Importing modules...") |
| try: |
| from inference.codette_orchestrator import CodetteOrchestrator |
| from reasoning_forge.query_classifier import QueryClassifier, QueryComplexity |
| from inference.codette_forge_bridge import CodetteForgeBridge |
| from reasoning_forge.executive_controller import ExecutiveController |
| print(" [OK] All imports successful\n") |
| except Exception as e: |
| print(f" [FAIL] Import error: {e}") |
| sys.exit(1) |
|
|
| |
| print("[2/4] Initializing Executive Controller...") |
| try: |
| exec_ctrl = ExecutiveController(verbose=False) |
| print(" [OK] Executive Controller initialized\n") |
| except Exception as e: |
| print(f" [FAIL] {e}") |
| sys.exit(1) |
|
|
| |
| print("[3/4] Testing routing decisions...") |
| try: |
| classifier = QueryClassifier() |
|
|
| test_cases = [ |
| ("What is the speed of light?", QueryComplexity.SIMPLE, "SIMPLE factual"), |
| ("How does X relate to Y?", QueryComplexity.MEDIUM, "MEDIUM conceptual"), |
| ("Is AI conscious?", QueryComplexity.MEDIUM, "MEDIUM philosophical"), |
| ] |
|
|
| for query, expected, desc in test_cases: |
| complexity = classifier.classify(query) |
| decision = exec_ctrl.route_query(query, complexity) |
|
|
| status = "OK" if decision.query_complexity == complexity else "MISMATCH" |
| latency = decision.estimated_latency_ms |
| cost = decision.estimated_compute_cost |
|
|
| print(f" [{status}] {desc:25s} - {latency:5.0f}ms, {cost:3.0f} units") |
|
|
| print(" [OK] All routing decisions correct\n") |
| except Exception as e: |
| print(f" [FAIL] {e}") |
| import traceback |
| traceback.print_exc() |
| sys.exit(1) |
|
|
| |
| print("[4/4] Testing CodetteForgeBridge initialization...") |
| try: |
| |
| |
|
|
| class MockOrchestrator: |
| """Mock for testing bridge initialization without loading real model.""" |
| available_adapters = ["test"] |
| def route_and_generate(self, query, **kwargs): |
| return {"response": "test", "adapter": "test"} |
|
|
| mock_orch = MockOrchestrator() |
| bridge = CodetteForgeBridge(mock_orch, use_phase6=True, use_phase7=True, verbose=False) |
|
|
| if bridge.executive_controller is None: |
| print(" [WARN] Phase 7 Executive Controller not initialized") |
| print(" (This is expected if Phase 6 is disabled)") |
| else: |
| print(" [OK] Phase 7 Executive Controller initialized in bridge") |
|
|
| print(" [OK] CodetteForgeBridge can initialize\n") |
| except Exception as e: |
| print(f" [FAIL] {e}") |
| import traceback |
| traceback.print_exc() |
| sys.exit(1) |
|
|
| print("=" * 70) |
| print("PASS: Phase 7 integration validation complete!") |
| print("\nNext steps:") |
| print(" 1. Run: python run_phase7_demo.py") |
| print(" 2. Run: codette_web.bat") |
| print(" 3. Test queries in web UI at http://localhost:7860") |
| print("=" * 70 + "\n") |
|
|