# Sprint 177 Plan: Real Toolchain Provider Execution + Diagnostic Canonicalization ## Context `docs/constructive_editing_runtime_plan.md` Phase C requires runtime-detected toolchain execution and canonical diagnostics from real provider outputs. ## Goals 1. Make provider listing/probing reflect runtime reality 2. Execute real build/test probes via provider routes 3. Normalize provider/LSP diagnostics into canonical payloads ## Steps ### Step 1924: Runtime provider discovery + listing (10 tests) Primary files: - `editor/src/mcp/RegisterSprint151Tools.h` - provider discovery/runtime modules Tests (10): detected providers schema, missing-provider behavior, deterministic ordering, environment-scoped visibility, and backward compatibility fields. ### Step 1925: Real provider probe execution paths (10 tests) Primary files: - `editor/src/BuildSystem.h` - provider probe invocation handlers Tests (10): probe success/failure paths, timeout + cleanup behavior, exit-code mapping, deterministic command metadata, and strict-mode fail semantics. ### Step 1926: Canonical diagnostic normalization from provider/LSP output (10 tests) Primary files: - `editor/src/StructuredDiagnostics.h` - `editor/src/LspOps.h` - `editor/src/graduation/DiagnosticNormalizationCanonicalModel.h` Tests (10): multi-provider parse coverage, fallback normalization, dedupe policy, deterministic ordering/truncation, category mapping, and schema validation. ### Step 1927: Representative toolchain fixture suite (8 tests) Add fixtures for C++/Rust/Python/Go toolchain and lint outputs. Tests (8): fixture parser stability, canonical packet consistency, and identical output across repeated runs. ### Step 1928: Sprint 177 Integration Summary (8 tests) Add `editor/src/Sprint177IntegrationSummary.h`. Record: - `steps_completed=5` - `runtime_provider_listing_active=true` - `real_provider_probe_execution_active=true` - `canonical_diagnostics_from_provider_outputs=true` - `success=true` ## Architecture Gate - Provider probes must execute real commands or emit explicit skipped/blocked status - Diagnostics must be canonicalized into a deterministic machine-readable format