@@ -631,33 +631,37 @@ The following proto fields are **not applicable** to the C# ADBC driver and will
631631
632632## Implementation Priority
633633
634- ### Phase 1: SEA Telemetry (Highest Priority - Zero Coverage Today)
635- 1 . Extract ` TelemetryHelper ` from ` DatabricksConnection ` for shared use
636- 2 . Wire ` InitializeTelemetry() ` into ` StatementExecutionConnection ` with ` mode=SEA `
637- 3 . Add ` EmitTelemetry() ` to ` StatementExecutionStatement `
638- 4 . Wire telemetry dispose/flush into ` StatementExecutionConnection.Dispose() `
639-
640- ### Phase 2: Missing Fields (Low Risk)
641- 5 . Populate ` runtime_vendor ` and ` client_app_name ` in DriverSystemConfiguration
642- 6 . Populate ` auth_type ` on root log
643- 7 . Populate additional DriverConnectionParameters (enable_arrow, rows_fetched_per_block, etc.)
644- 8 . Set ` WorkspaceId ` in TelemetrySessionContext
645-
646- ### Phase 3: ChunkDetails Wiring (Medium Risk - Crosses Component Boundaries)
647- 9 . Add ` ChunkMetrics ` aggregation to ` CloudFetchDownloader `
648- 10 . Expose metrics via ` CloudFetchReader.GetChunkMetrics() `
649- 11 . Call ` SetChunkDetails() ` in ` DatabricksStatement.EmitTelemetry() ` and ` StatementExecutionStatement.EmitTelemetry() `
650-
651- ### Phase 4: Other Behavioral Changes (Medium Risk)
652- 12 . Track ` retry_count ` on SqlExecutionEvent
653- 13 . Mark internal calls with ` is_internal_call = true `
654- 14 . Add metadata operation telemetry (GetObjects, GetTableTypes)
655-
656- ### Phase 5: E2E Test Coverage
657- 15 . E2E tests for every populated proto field (both Thrift and SEA)
658- 16 . CloudFetch chunk detail tests (requires large enough result set to trigger CloudFetch)
659- 17 . SEA-specific telemetry tests
660- 18 . Error scenario tests
634+ ### Phase 1: E2E Test Infrastructure (Test-First)
635+ 1 . Build E2E test infrastructure using ` CapturingTelemetryExporter ` to assert proto field values
636+ 2 . Write E2E tests for all currently populated proto fields (Thrift) - these establish the baseline
637+ 3 . Write failing E2E tests for missing fields (auth_type, WorkspaceId, runtime_vendor, etc.) - these drive Phase 2-5
638+ 4 . Write failing E2E tests for SEA telemetry (expect telemetry events from SEA connections) - these drive Phase 2
639+ 5 . Write failing E2E tests for ChunkDetails fields - these drive Phase 4
640+
641+ ### Phase 2: SEA Telemetry (Highest Priority - Zero Coverage Today)
642+ 6 . Extract ` TelemetryHelper ` from ` DatabricksConnection ` for shared use
643+ 7 . Wire ` InitializeTelemetry() ` into ` StatementExecutionConnection ` with ` mode=SEA `
644+ 8 . Add ` EmitTelemetry() ` to ` StatementExecutionStatement `
645+ 9 . Wire telemetry dispose/flush into ` StatementExecutionConnection.Dispose() `
646+ 10 . Verify SEA E2E tests from Phase 1 now pass
647+
648+ ### Phase 3: Missing Fields (Low Risk)
649+ 11 . Populate ` runtime_vendor ` and ` client_app_name ` in DriverSystemConfiguration
650+ 12 . Populate ` auth_type ` on root log
651+ 13 . Populate additional DriverConnectionParameters (enable_arrow, rows_fetched_per_block, etc.)
652+ 14 . Set ` WorkspaceId ` in TelemetrySessionContext
653+ 15 . Verify missing-field E2E tests from Phase 1 now pass
654+
655+ ### Phase 4: ChunkDetails Wiring (Medium Risk - Crosses Component Boundaries)
656+ 16 . Add ` ChunkMetrics ` aggregation to ` CloudFetchDownloader `
657+ 17 . Expose metrics via ` CloudFetchReader.GetChunkMetrics() `
658+ 18 . Call ` SetChunkDetails() ` in ` DatabricksStatement.EmitTelemetry() ` and ` StatementExecutionStatement.EmitTelemetry() `
659+ 19 . Verify ChunkDetails E2E tests from Phase 1 now pass
660+
661+ ### Phase 5: Other Behavioral Changes (Medium Risk)
662+ 20 . Track ` retry_count ` on SqlExecutionEvent
663+ 21 . Mark internal calls with ` is_internal_call = true `
664+ 22 . Add metadata operation telemetry (GetObjects, GetTableTypes)
661665
662666---
663667
0 commit comments