| ContextProviders.Kicktipp | 174 | 1 | 175 | 458 | 99.4% | | 47 | 54 | 87% | |
| ContextProviders.Kicktipp.CommunityRulesFileProvider | 0 | 1 | 1 | 17 | 0% | | 0 | 0 | | |
| ContextProviders.Kicktipp.Csv.CsvDocumentContextExtensions | 2 | 0 | 2 | 41 | 100% | | 0 | 0 | | |
| ContextProviders.Kicktipp.Csv.CsvWriterExtensions | 6 | 0 | 6 | 31 | 100% | | 0 | 0 | | |
| ContextProviders.Kicktipp.Csv.HeadToHeadResultCsvMap | 10 | 0 | 10 | 22 | 100% | | 4 | 4 | 100% | |
| ContextProviders.Kicktipp.Csv.MatchResultCsvMap | 11 | 0 | 11 | 24 | 100% | | 10 | 10 | 100% | |
| ContextProviders.Kicktipp.Csv.TeamStandingCsvMap | 12 | 0 | 12 | 24 | 100% | | 0 | 0 | | |
| ContextProviders.Kicktipp.KicktippContextProvider | 133 | 0 | 133 | 299 | 100% | | 33 | 40 | 82.5% | |
| EHonda.KicktippAi.Core | 112 | 107 | 219 | 1158 | 51.1% | | 4 | 58 | 6.8% | |
| EHonda.KicktippAi.Core.BonusPrediction | 3 | 0 | 3 | 49 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.BonusPredictionMetadata | 2 | 2 | 4 | 49 | 50% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.BonusPredictionResult | 0 | 7 | 7 | 49 | 0% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.BonusQuestion | 6 | 1 | 7 | 49 | 85.7% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.BonusQuestionOption | 4 | 0 | 4 | 49 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.ContextDocument | 10 | 1 | 11 | 22 | 90.9% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.DocumentContext | 3 | 0 | 3 | 5 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.HeadToHeadResult | 9 | 0 | 9 | 14 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.HistoryCsvUtility | 0 | 87 | 87 | 206 | 0% | | 0 | 54 | 0% | |
| EHonda.KicktippAi.Core.KpiDocument | 12 | 1 | 13 | 32 | 92.3% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.Match | 5 | 0 | 5 | 9 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.MatchPrediction | 3 | 0 | 3 | 237 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.MatchResult | 9 | 0 | 9 | 33 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.MatchWithHistory | 4 | 0 | 4 | 33 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.Prediction | 4 | 0 | 4 | 39 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.PredictionJustification | 4 | 0 | 4 | 39 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.PredictionJustificationContextSource | 3 | 0 | 3 | 39 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.PredictionJustificationContextSources | 3 | 0 | 3 | 39 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.PredictionMetadata | 3 | 1 | 4 | 39 | 75% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.PredictionResult | 0 | 7 | 7 | 39 | 0% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.SolutionPathUtility | 11 | 0 | 11 | 45 | 100% | | 4 | 4 | 100% | |
| EHonda.KicktippAi.Core.SolutionRelativeFileProvider | 2 | 0 | 2 | 21 | 100% | | 0 | 0 | | |
| EHonda.KicktippAi.Core.TeamStanding | 12 | 0 | 12 | 22 | 100% | | 0 | 0 | | |
| FirebaseAdapter | 864 | 179 | 1043 | 6855 | 82.8% | | 262 | 314 | 83.4% | |
| FirebaseAdapter.Configuration.FirebaseOptions | 8 | 0 | 8 | 45 | 100% | | 6 | 6 | 100% | |
| FirebaseAdapter.FirebaseContextRepository | 95 | 23 | 118 | 228 | 80.5% | | 22 | 22 | 100% | |
| FirebaseAdapter.FirebaseKpiContextProvider | 57 | 6 | 63 | 187 | 90.4% | | 47 | 50 | 94% | |
| FirebaseAdapter.FirebaseKpiRepository | 104 | 22 | 126 | 288 | 82.5% | | 22 | 22 | 100% | |
| FirebaseAdapter.FirebasePredictionRepository | 491 | 93 | 584 | 1040 | 84% | | 153 | 200 | 76.5% | |
| FirebaseAdapter.FirebasePredictionRepository.StoredContextSource | 2 | 0 | 2 | 1040 | 100% | | 0 | 0 | | |
| FirebaseAdapter.FirebasePredictionRepository.StoredContextSources | 2 | 0 | 2 | 1040 | 100% | | 0 | 0 | | |
| FirebaseAdapter.FirebasePredictionRepository.StoredJustification | 3 | 0 | 3 | 1040 | 100% | | 0 | 0 | | |
| FirebaseAdapter.Models.FirestoreBonusPrediction | 13 | 0 | 13 | 355 | 100% | | 0 | 0 | | |
| FirebaseAdapter.Models.FirestoreContextDocument | 7 | 0 | 7 | 355 | 100% | | 0 | 0 | | |
| FirebaseAdapter.Models.FirestoreKpiDocument | 8 | 0 | 8 | 355 | 100% | | 0 | 0 | | |
| FirebaseAdapter.Models.FirestoreMatch | 6 | 0 | 6 | 355 | 100% | | 0 | 0 | | |
| FirebaseAdapter.Models.FirestoreMatchPrediction | 17 | 0 | 17 | 355 | 100% | | 0 | 0 | | |
| FirebaseAdapter.ServiceCollectionExtensions | 51 | 35 | 86 | 172 | 59.3% | | 12 | 14 | 85.7% | |
| KicktippIntegration | 922 | 136 | 1058 | 2647 | 87.1% | | 634 | 798 | 79.4% | |
| KicktippIntegration.Authentication.KicktippAuthenticationHandler | 90 | 1 | 91 | 224 | 98.9% | | 44 | 54 | 81.4% | |
| KicktippIntegration.BetPrediction | 2 | 0 | 2 | 138 | 100% | | 0 | 0 | | |
| KicktippIntegration.KicktippClient | 816 | 130 | 946 | 1969 | 86.2% | | 586 | 740 | 79.1% | |
| KicktippIntegration.KicktippCredentials | 2 | 0 | 2 | 138 | 100% | | 2 | 2 | 100% | |
| KicktippIntegration.KicktippOptions | 3 | 0 | 3 | 138 | 100% | | 0 | 0 | | |
| KicktippIntegration.ServiceCollectionExtensions | 9 | 5 | 14 | 40 | 64.2% | | 2 | 2 | 100% | |
| OpenAiIntegration | 569 | 116 | 685 | 6255 | 83% | | 138 | 198 | 69.6% | |
| OpenAiIntegration.CostCalculationService | 39 | 0 | 39 | 119 | 100% | | 17 | 18 | 94.4% | |
| OpenAiIntegration.InstructionsTemplateProvider | 40 | 3 | 43 | 98 | 93% | | 21 | 22 | 95.4% | |
| OpenAiIntegration.ModelPricing | 1 | 0 | 1 | 119 | 100% | | 0 | 0 | | |
| OpenAiIntegration.ModelPricingData | 19 | 0 | 19 | 119 | 100% | | 0 | 0 | | |
| OpenAiIntegration.OpenAiPredictor | 0 | 64 | 64 | 127 | 0% | | 0 | 22 | 0% | |
| OpenAiIntegration.PredictionService | 364 | 12 | 376 | 667 | 96.8% | | 80 | 106 | 75.4% | |
| OpenAiIntegration.PredictionService.BonusPredictionEntry | 0 | 2 | 2 | 667 | 0% | | 0 | 0 | | |
| OpenAiIntegration.PredictionService.BonusPredictionsResponse | 0 | 1 | 1 | 667 | 0% | | 0 | 0 | | |
| OpenAiIntegration.PredictionService.JustificationContextSourceEntry | 2 | 0 | 2 | 667 | 100% | | 0 | 0 | | |
| OpenAiIntegration.PredictionService.JustificationContextSourcesResponse | 2 | 0 | 2 | 667 | 100% | | 0 | 0 | | |
| OpenAiIntegration.PredictionService.JustificationResponse | 3 | 0 | 3 | 667 | 100% | | 0 | 0 | | |
| OpenAiIntegration.PredictionService.PredictionResponse | 3 | 0 | 3 | 667 | 100% | | 0 | 0 | | |
| OpenAiIntegration.PredictionService.SingleBonusPredictionResponse | 1 | 0 | 1 | 667 | 100% | | 0 | 0 | | |
| OpenAiIntegration.PredictorContext | 0 | 6 | 6 | 31 | 0% | | 0 | 0 | | |
| OpenAiIntegration.PromptsFileProvider | 1 | 0 | 1 | 17 | 100% | | 0 | 0 | | |
| OpenAiIntegration.ServiceCollectionExtensions | 0 | 28 | 28 | 89 | 0% | | 0 | 10 | 0% | |
| OpenAiIntegration.TokenUsageTracker | 94 | 0 | 94 | 200 | 100% | | 20 | 20 | 100% | |
| Orchestrator | 455 | 2502 | 2957 | 8091 | 15.3% | | 222 | 1348 | 16.4% | |
| Orchestrator.Commands.Observability.AnalyzeMatch.AnalyzeMatchBaseSettings | 0 | 22 | 22 | 95 | 0% | | 0 | 12 | 0% | |
| Orchestrator.Commands.Observability.AnalyzeMatch.AnalyzeMatchCommandHelpers | 0 | 110 | 110 | 199 | 0% | | 0 | 44 | 0% | |
| Orchestrator.Commands.Observability.AnalyzeMatch.AnalyzeMatchComparisonCommand | 0 | 152 | 152 | 263 | 0% | | 0 | 68 | 0% | |
| Orchestrator.Commands.Observability.AnalyzeMatch.AnalyzeMatchComparisonCommand.ComparisonRunResult | 0 | 1 | 1 | 263 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Observability.AnalyzeMatch.AnalyzeMatchContextDocumentInfo | 0 | 1 | 1 | 199 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Observability.AnalyzeMatch.AnalyzeMatchDetailedCommand | 0 | 148 | 148 | 267 | 0% | | 0 | 54 | 0% | |
| Orchestrator.Commands.Observability.AnalyzeMatch.AnalyzeMatchDetailedCommand.RunMetric | 0 | 1 | 1 | 267 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Observability.AnalyzeMatch.AnalyzeMatchDetailedSettings | 0 | 1 | 1 | 95 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Observability.ContextChanges.ContextChangesCommand | 0 | 123 | 123 | 279 | 0% | | 0 | 64 | 0% | |
| Orchestrator.Commands.Observability.ContextChanges.ContextChangesSettings | 0 | 4 | 4 | 27 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Observability.ContextChanges.DiffLine | 0 | 1 | 1 | 279 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Observability.Cost.CostCommand | 0 | 351 | 351 | 585 | 0% | | 0 | 276 | 0% | |
| Orchestrator.Commands.Observability.Cost.CostConfiguration | 0 | 7 | 7 | 68 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Observability.Cost.CostSettings | 0 | 8 | 8 | 68 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Operations.Bonus.BonusCommand | 0 | 180 | 180 | 391 | 0% | | 0 | 116 | 0% | |
| Orchestrator.Commands.Operations.CollectContext.CollectContextKicktippCommand | 0 | 94 | 94 | 208 | 0% | | 0 | 36 | 0% | |
| Orchestrator.Commands.Operations.CollectContext.CollectContextKicktippSettings | 0 | 2 | 2 | 28 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Operations.CollectContext.CollectContextSettings | 0 | 1 | 1 | 28 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Operations.Matchday.BaseSettings | 14 | 0 | 14 | 72 | 100% | | 2 | 2 | 100% | |
| Orchestrator.Commands.Operations.Matchday.MatchdayCommand | 354 | 8 | 362 | 767 | 97.7% | | 189 | 200 | 94.5% | |
| Orchestrator.Commands.Operations.Verify.VerifyBonusCommand | 0 | 171 | 171 | 388 | 0% | | 0 | 108 | 0% | |
| Orchestrator.Commands.Operations.Verify.VerifyMatchdayCommand | 0 | 148 | 148 | 349 | 0% | | 0 | 110 | 0% | |
| Orchestrator.Commands.Operations.Verify.VerifySettings | 0 | 7 | 7 | 39 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Shared.JustificationConsoleWriter | 26 | 28 | 54 | 129 | 48.1% | | 19 | 60 | 31.6% | |
| Orchestrator.Commands.Utility.ListKpi.ListKpiCommand | 40 | 0 | 40 | 82 | 100% | | 8 | 8 | 100% | |
| Orchestrator.Commands.Utility.ListKpi.ListKpiSettings | 2 | 0 | 2 | 15 | 100% | | 0 | 0 | | |
| Orchestrator.Commands.Utility.Snapshots.SnapshotClient | 0 | 106 | 106 | 271 | 0% | | 0 | 34 | 0% | |
| Orchestrator.Commands.Utility.Snapshots.SnapshotEncryptor | 0 | 19 | 19 | 60 | 0% | | 0 | 2 | 0% | |
| Orchestrator.Commands.Utility.Snapshots.SnapshotsAllCommand | 0 | 52 | 52 | 107 | 0% | | 0 | 12 | 0% | |
| Orchestrator.Commands.Utility.Snapshots.SnapshotsAllSettings | 0 | 3 | 3 | 72 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Utility.Snapshots.SnapshotsBaseSettings | 0 | 2 | 2 | 72 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Utility.Snapshots.SnapshotsEncryptCommand | 0 | 72 | 72 | 129 | 0% | | 0 | 12 | 0% | |
| Orchestrator.Commands.Utility.Snapshots.SnapshotsEncryptSettings | 0 | 3 | 3 | 72 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Utility.Snapshots.SnapshotsFetchCommand | 0 | 163 | 163 | 218 | 0% | | 0 | 24 | 0% | |
| Orchestrator.Commands.Utility.Snapshots.SnapshotsFetchSettings | 0 | 1 | 1 | 72 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Utility.UploadKpi.UploadKpiCommand | 0 | 63 | 63 | 140 | 0% | | 0 | 20 | 0% | |
| Orchestrator.Commands.Utility.UploadKpi.UploadKpiCommand.KpiDocumentJson | 0 | 4 | 4 | 140 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Utility.UploadKpi.UploadKpiSettings | 0 | 3 | 3 | 20 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Utility.UploadTransfers.UploadTransfersCommand | 0 | 53 | 53 | 112 | 0% | | 0 | 18 | 0% | |
| Orchestrator.Commands.Utility.UploadTransfers.UploadTransfersCommand.TransfersDocumentJson | 0 | 4 | 4 | 112 | 0% | | 0 | 0 | | |
| Orchestrator.Commands.Utility.UploadTransfers.UploadTransfersSettings | 0 | 3 | 3 | 20 | 0% | | 0 | 0 | | |
| Orchestrator.EnvironmentHelper | 0 | 43 | 43 | 103 | 0% | | 0 | 12 | 0% | |
| Orchestrator.Infrastructure.Factories.ContextProviderFactory | 0 | 10 | 10 | 35 | 0% | | 0 | 2 | 0% | |
| Orchestrator.Infrastructure.Factories.FirebaseServiceFactory | 0 | 25 | 25 | 76 | 0% | | 0 | 4 | 0% | |
| Orchestrator.Infrastructure.Factories.KicktippClientFactory | 0 | 52 | 52 | 114 | 0% | | 0 | 6 | 0% | |
| Orchestrator.Infrastructure.Factories.OpenAiServiceFactory | 0 | 44 | 44 | 110 | 0% | | 0 | 16 | 0% | |
| Orchestrator.Infrastructure.ServiceRegistrationExtensions | 0 | 49 | 49 | 245 | 0% | | 0 | 2 | 0% | |
| Orchestrator.Infrastructure.TypeRegistrar | 11 | 0 | 11 | 42 | 100% | | 0 | 0 | | |
| Orchestrator.Infrastructure.TypeResolver | 8 | 1 | 9 | 38 | 88.8% | | 4 | 6 | 66.6% | |
| Orchestrator.LoggingConfiguration | 0 | 12 | 12 | 24 | 0% | | 0 | 4 | 0% | |
| Orchestrator.LoggingConfiguration<T> | 0 | 12 | 12 | 24 | 0% | | 0 | 4 | 0% | |
| Orchestrator.PathUtility | 0 | 14 | 14 | 58 | 0% | | 0 | 4 | 0% | |
| Orchestrator.Program | 0 | 120 | 120 | 155 | 0% | | 0 | 8 | 0% | |
| TestUtilities | 114 | 36 | 150 | 597 | 76% | | 40 | 40 | 100% | |
| TestUtilities.CoreTestFactories | 32 | 34 | 66 | 262 | 48.4% | | 22 | 22 | 100% | |
| TestUtilities.FakeLoggerAssertions.FakeLoggerAssertionExtensions | 4 | 0 | 4 | 40 | 100% | | 0 | 0 | | |
| TestUtilities.FakeLoggerAssertions.FakeLoggerContainsAssertion<T> | 14 | 1 | 15 | 46 | 93.3% | | 4 | 4 | 100% | |
| TestUtilities.FakeLoggerAssertions.FakeLoggerContainsAssertion<T> | 1 | 0 | 1 | 46 | 100% | | 0 | 0 | | |
| TestUtilities.FakeLoggerAssertions.FakeLoggerDoesNotContainAssertion<T> | 13 | 1 | 14 | 45 | 92.8% | | 2 | 2 | 100% | |
| TestUtilities.MockFileProviderHelpers | 17 | 0 | 17 | 54 | 100% | | 4 | 4 | 100% | |
| TestUtilities.OpenAITestHelpers | 11 | 0 | 11 | 38 | 100% | | 4 | 4 | 100% | |
| TestUtilities.StringAssertions.StringAssertionExtensions | 2 | 0 | 2 | 16 | 100% | | 0 | 0 | | |
| TestUtilities.StringAssertions.StringEqualsWithNormalizedLineEndingsAssertion | 20 | 0 | 20 | 50 | 100% | | 4 | 4 | 100% | |