Skip to content

fix(ci): restore coverage accuracy after phase 1/2#88

Merged
JerrettDavis merged 1 commit intomainfrom
fix/coverage-reporting
Apr 24, 2026
Merged

fix(ci): restore coverage accuracy after phase 1/2#88
JerrettDavis merged 1 commit intomainfrom
fix/coverage-reporting

Conversation

@JerrettDavis
Copy link
Copy Markdown
Owner

Summary

  • Root cause confirmed: Phase 2 added Dashboard.UI.Tests and Dashboard.Api.Tests which instrument ExperimentFramework.Dashboard.UI (3,252 lines, only 7.3% covered by bUnit tests) and ExperimentFramework.Dashboard.Api (732 lines, 49.5% covered) for the first time. These assemblies were absent from all coverage XMLs before Phase 2, so they didn't count. Now they do — correctly — but they pull the overall percentage down.
  • Plumbing gap fixed: Governance.Persistence.Sql.Tests (added in Phase 2 with 17 tests) was missing coverlet.collector, so it never emitted a coverage XML and never contributed its 95% coverage of Governance.Persistence.Sql to Codecov. Now fixed.
  • Codecov config fixed: The e2e flag had paths: - samples/ExperimentFramework.DashboardHost/ which contradicts the global ignore: samples/**. Removed to eliminate the contradiction.

Files changed

File Change
tests/ExperimentFramework.Governance.Persistence.Sql.Tests/*.csproj Added coverlet.collector v6.0.4
tests/ExperimentFramework.Governance.Persistence.Sql.Tests/packages.lock.json Generated lock file for CI --use-lock-file restore
.codecov.yml Removed samples/ExperimentFramework.DashboardHost/ from e2e flag paths

Coverage impact

The Governance.Persistence.Sql fix adds ~474 lines at 95.4% coverage, which provides a modest improvement. The main drop (83% → ~65-67%) reflects real uncovered code in Dashboard.UI and Dashboard.Api that was not measured before Phase 2 — this is accurate and should be addressed by follow-up test coverage for those assemblies, not by lowering the target or excluding them.

Test plan

  • Governance.Persistence.Sql.Tests runs with coverage and emits coverage.cobertura.xml ✅ (verified locally: 17 passed, 95.4% coverage for Governance.Persistence.Sql)
  • Solution-wide dotnet restore --use-lock-file succeeds ✅
  • dotnet test ExperimentFramework.slnx -p:ExcludeE2ETests=true --collect:"XPlat Code Coverage" still passes
  • CI green on PR → merge → Codecov updates with improved number

🤖 Generated with Claude Code

- Add coverlet.collector to Governance.Persistence.Sql.Tests (was missing,
  causing the 17 SQL persistence tests to not emit a coverage XML; the
  Governance.Persistence.Sql assembly now reports 95% coverage to Codecov)
- Remove samples/ExperimentFramework.DashboardHost/ from the e2e Codecov
  flag paths — it contradicted the global ignore: samples/** directive
- Add packages.lock.json for Governance.Persistence.Sql.Tests to satisfy
  the CI restore --use-lock-file constraint after adding coverlet.collector

Root cause of 83% → 65.5% drop: Phase 2 added Dashboard.UI.Tests and
Dashboard.Api.Tests which now instrument Dashboard.UI (3,252 lines, 7%
covered) and Dashboard.Api (732 lines, 49% covered). These were not
measured at all before, so their uncovered lines now correctly appear in
the denominator. The drop reflects genuine low coverage in these new src/
packages brought into scope by Phase 2. Governance.Persistence.Sql.Tests
missing coverlet was a plumbing gap that is now fixed; the remaining delta
(Dashboard.UI, Dashboard.Api low coverage) is real and tracked in follow-up.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Snapshot Warnings

⚠️: No snapshots were found for the head SHA d2e7dfa.
Ensure that dependencies are being submitted on PR branches and consider enabling retry-on-snapshot-warnings. See the documentation for more information and troubleshooting advice.

OpenSSF Scorecard

PackageVersionScoreDetails
nuget/coverlet.collector 6.0.4 🟢 5
Details
CheckScoreReason
Code-Review⚠️ 0Found 1/26 approved changesets -- score normalized to 0
Maintained🟢 1030 commit(s) and 24 issue activity found in the last 90 days -- score normalized to 10
Dangerous-Workflow🟢 10no dangerous workflow patterns detected
Packaging⚠️ -1packaging workflow not detected
Token-Permissions🟢 9detected GitHub workflow tokens with excessive permissions
CII-Best-Practices⚠️ 0no effort to earn an OpenSSF best practices badge detected
Binary-Artifacts🟢 7binaries present in source code
Fuzzing⚠️ 0project is not fuzzed
License🟢 10license file detected
Pinned-Dependencies⚠️ 0dependency not pinned by hash detected -- score normalized to 0
Signed-Releases⚠️ 0Project has not signed or included provenance with any releases.
Branch-Protection⚠️ -1internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
Security-Policy⚠️ 0security policy file not detected
SAST🟢 9SAST tool detected but not run on all commits

Scanned Files

  • tests/ExperimentFramework.Governance.Persistence.Sql.Tests/ExperimentFramework.Governance.Persistence.Sql.Tests.csproj

@github-actions
Copy link
Copy Markdown

Code Coverage

Summary
  Generated on: 04/24/2026 - 15:10:59
  Coverage date: 04/24/2026 - 15:08:12 - 04/24/2026 - 15:10:09
  Parser: MultiReport (16x Cobertura)
  Assemblies: 27
  Classes: 286
  Files: 252
  Line coverage: 69.4%
  Covered lines: 6892
  Uncovered lines: 3035
  Coverable lines: 9927
  Total lines: 44071
  Branch coverage: 60.8% (2538 of 4170)
  Covered branches: 2538
  Total branches: 4170
  Method coverage: 82% (1035 of 1262)
  Full method coverage: 72.1% (911 of 1262)
  Covered methods: 1035
  Fully covered methods: 911
  Total methods: 1262

ExperimentFramework                                                                                             90.4%
  ExperimentFramework.Activation.ActivationEvaluator                                                            93.1%
  ExperimentFramework.Activation.SystemTimeProvider                                                              100%
  ExperimentFramework.Decorators.BenchmarkDecoratorFactory                                                       100%
  ExperimentFramework.Decorators.DecoratorPipeline                                                               100%
  ExperimentFramework.Decorators.ErrorLoggingDecoratorFactory                                                    100%
  ExperimentFramework.Decorators.TimeoutDecoratorFactory                                                         100%
  ExperimentFramework.ExperimentBuilder                                                                         81.1%
  ExperimentFramework.ExperimentBuilderExtensions                                                                100%
  ExperimentFramework.ExperimentFrameworkBuilder                                                                 100%
  ExperimentFramework.ExperimentLoggingBuilder                                                                   100%
  ExperimentFramework.ExperimentRegistry                                                                         100%
  ExperimentFramework.KillSwitch.ExperimentDisabledException                                                     100%
  ExperimentFramework.KillSwitch.InMemoryKillSwitchProvider                                                      100%
  ExperimentFramework.KillSwitch.KillSwitchDecoratorFactory                                                      100%
  ExperimentFramework.KillSwitch.NoopKillSwitchProvider                                                          100%
  ExperimentFramework.KillSwitch.TrialDisabledException                                                          100%
  ExperimentFramework.Metrics.MetricsDecoratorFactory                                                            100%
  ExperimentFramework.Metrics.NoopExperimentMetrics                                                              100%
  ExperimentFramework.Models.BehaviorRule                                                                        100%
  ExperimentFramework.Models.Experiment                                                                          100%
  ExperimentFramework.Models.ExperimentRegistration                                                               75%
  ExperimentFramework.Models.SelectionModeExtensions                                                             100%
  ExperimentFramework.Models.SelectionRule                                                                       100%
  ExperimentFramework.Models.ServiceExperimentDefinition<T>                                                      100%
  ExperimentFramework.Models.Trial                                                                               100%
  ExperimentFramework.Naming.DefaultExperimentNamingConvention                                                   100%
  ExperimentFramework.Naming.ExperimentSelectorName                                                              100%
  ExperimentFramework.RuntimeExperimentProxy<T>                                                                 81.8%
  ExperimentFramework.Selection.Providers.BooleanFeatureFlagProvider                                             100%
  ExperimentFramework.Selection.Providers.BooleanFeatureFlagProviderFactory                                      100%
  ExperimentFramework.Selection.Providers.ConfigurationValueProvider                                              80%
  ExperimentFramework.Selection.Providers.ConfigurationValueProviderFactory                                      100%
  ExperimentFramework.Selection.SelectionModeAttribute                                                           100%
  ExperimentFramework.Selection.SelectionModeProviderBase                                                        100%
  ExperimentFramework.Selection.SelectionModeProviderFactory<T>                                                  100%
  ExperimentFramework.Selection.SelectionModeRegistry                                                            100%
  ExperimentFramework.ServiceCollectionExtensions                                                               77.6%
  ExperimentFramework.ServiceExperimentBuilder<T>                                                               94.5%
  ExperimentFramework.ServiceRegistration.OperationMetadata                                                      100%
  ExperimentFramework.ServiceRegistration.OperationResult                                                        100%
  ExperimentFramework.ServiceRegistration.PlanExecutionResult                                                   83.3%
  ExperimentFramework.ServiceRegistration.RegistrationPlan                                                       100%
  ExperimentFramework.ServiceRegistration.RegistrationPlanBuilder                                               97.2%
  ExperimentFramework.ServiceRegistration.RegistrationPlanExecutor                                              62.7%
  ExperimentFramework.ServiceRegistration.RegistrationPlanReport                                                98.1%
  ExperimentFramework.ServiceRegistration.ServiceGraphPatchOperation                                              77%
  ExperimentFramework.ServiceRegistration.ServiceGraphSnapshot                                                   100%
  ExperimentFramework.ServiceRegistration.ValidationFinding                                                      100%
  ExperimentFramework.ServiceRegistration.Validators.LifetimeSafetyValidator                                     100%
  ExperimentFramework.Telemetry.NoopExperimentTelemetry                                                          100%
  ExperimentFramework.Telemetry.OpenTelemetryExperimentTelemetry                                                 100%
  ExperimentFramework.Validation.TrialConflictDetector                                                          98.7%
  ExperimentFramework.Validation.TrialConflictException                                                          100%
  ExperimentFramework.Variants.VariantFeatureManagerAdapter                                                      100%

ExperimentFramework.Admin                                                                                        100%
  ExperimentFramework.Admin.ExperimentAdminEndpoints                                                             100%
  ExperimentFramework.Admin.GovernanceAdminEndpoints                                                             100%

ExperimentFramework.Audit                                                                                          0%
  ExperimentFramework.Audit.CompositeAuditSink                                                                     0%
  ExperimentFramework.Audit.LoggingAuditSink                                                                       0%
  ExperimentFramework.Audit.ServiceCollectionExtensions                                                            0%

ExperimentFramework.AutoStop                                                                                     100%
  ExperimentFramework.AutoStop.AutoStopOptions                                                                   100%
  ExperimentFramework.AutoStop.Rules.MinimumSampleSizeRule                                                       100%
  ExperimentFramework.AutoStop.Rules.StatisticalSignificanceRule                                                 100%
  ExperimentFramework.AutoStop.ServiceCollectionExtensions                                                       100%
  ExperimentFramework.AutoStop.VariantData                                                                       100%

ExperimentFramework.Bandit                                                                                      98.8%
  ExperimentFramework.Bandit.Algorithms.EpsilonGreedy                                                            100%
  ExperimentFramework.Bandit.Algorithms.ThompsonSampling                                                        97.3%
  ExperimentFramework.Bandit.Algorithms.UpperConfidenceBound                                                     100%
  ExperimentFramework.Bandit.ArmStatistics                                                                       100%
  ExperimentFramework.Bandit.ServiceCollectionExtensions                                                         100%

ExperimentFramework.Configuration                                                                               68.8%
  ExperimentFramework.Configuration.Building.ConfigurationExperimentBuilder                                     85.3%
  ExperimentFramework.Configuration.Building.TypeResolver                                                         69%
  ExperimentFramework.Configuration.ConfigurationFileWatcher                                                    89.4%
  ExperimentFramework.Configuration.Exceptions.ConfigurationLoadException                                        100%
  ExperimentFramework.Configuration.Exceptions.ExperimentConfigurationException                                  100%
  ExperimentFramework.Configuration.Exceptions.TypeResolutionException                                           100%
  ExperimentFramework.Configuration.Extensions.ConfigurationExtensionRegistry                                   79.1%
  ExperimentFramework.Configuration.Extensions.ConfigurationExtensionServiceCollectionExtensions                92.8%
  ExperimentFramework.Configuration.Extensions.Handlers.ConfigurationKeySelectionModeHandler                     100%
  ExperimentFramework.Configuration.Extensions.Handlers.CustomDecoratorHandler                                  93.7%
  ExperimentFramework.Configuration.Extensions.Handlers.CustomSelectionModeHandler                              66.6%
  ExperimentFramework.Configuration.Extensions.Handlers.FeatureFlagSelectionModeHandler                          100%
  ExperimentFramework.Configuration.Extensions.Handlers.GovernanceConfigurationHandler                            44%
  ExperimentFramework.Configuration.Extensions.Handlers.InMemoryBackplaneConfigurationHandler                   11.1%
  ExperimentFramework.Configuration.Extensions.Handlers.LoggingBackplaneConfigurationHandler                    11.1%
  ExperimentFramework.Configuration.Extensions.Handlers.LoggingDecoratorHandler                                 91.6%
  ExperimentFramework.Configuration.Extensions.Handlers.OpenTelemetryBackplaneConfigurationHandler              11.1%
  ExperimentFramework.Configuration.Extensions.Handlers.TimeoutDecoratorHandler                                  100%
  ExperimentFramework.Configuration.Loading.ConfigurationFileDiscovery                                           100%
  ExperimentFramework.Configuration.Loading.ExperimentConfigurationLoader                                       84.6%
  ExperimentFramework.Configuration.Models.CircuitBreakerDecoratorOptions                                        100%
  ExperimentFramework.Configuration.Models.OutcomeCollectionDecoratorOptions                                     100%
  ExperimentFramework.Configuration.Models.TimeoutDecoratorOptions                                               100%
  ExperimentFramework.Configuration.Schema.Generated.ConfigurationSchema                                           0%
  ExperimentFramework.Configuration.Schema.Generated.SchemaRegistry                                                0%
  ExperimentFramework.Configuration.Schema.SchemaExporter                                                          0%
  ExperimentFramework.Configuration.Schema.SchemaHasher                                                          100%
  ExperimentFramework.Configuration.Schema.SchemaVersionTracker                                                 94.5%
  ExperimentFramework.Configuration.ServiceCollectionExtensions                                                 48.2%
  ExperimentFramework.Configuration.Validation.ConfigurationValidationError                                      100%
  ExperimentFramework.Configuration.Validation.ConfigurationValidationResult                                     100%
  ExperimentFramework.Configuration.Validation.ConfigurationValidator                                           69.5%

ExperimentFramework.Dashboard                                                                                   23.3%
  ExperimentFramework.Dashboard.Authorization.ClaimsPrincipalAuthProvider                                          0%
  ExperimentFramework.Dashboard.DashboardMiddleware                                                                0%
  ExperimentFramework.Dashboard.Data.DefaultDashboardDataProvider                                               52.6%
  ExperimentFramework.Dashboard.EndpointRouteBuilderExtensions                                                  61.5%
  ExperimentFramework.Dashboard.NullTenantResolver                                                                 0%
  ExperimentFramework.Dashboard.Persistence.InMemoryRolloutPersistence                                             0%
  ExperimentFramework.Dashboard.ServiceCollectionExtensions                                                     86.3%
  ExperimentFramework.Dashboard.TenantResolvers.ClaimTenantResolver                                                0%
  ExperimentFramework.Dashboard.TenantResolvers.CompositeTenantResolver                                            0%
  ExperimentFramework.Dashboard.TenantResolvers.HttpHeaderTenantResolver                                           0%
  ExperimentFramework.Dashboard.TenantResolvers.SubdomainTenantResolver                                            0%
  ExperimentFramework.Dashboard.Theming.DefaultThemeProvider                                                       0%

ExperimentFramework.Dashboard.Abstractions                                                                       100%
  ExperimentFramework.Dashboard.Abstractions.TenantContextAccessor                                               100%

ExperimentFramework.Dashboard.Api                                                                                 56%
  ExperimentFramework.Dashboard.Api.DashboardApiExtensions                                                       100%
  ExperimentFramework.Dashboard.Api.Endpoints.AnalyticsEndpoints                                                70.8%
  ExperimentFramework.Dashboard.Api.Endpoints.AuditEndpoints                                                     100%
  ExperimentFramework.Dashboard.Api.Endpoints.ConfigurationEndpoints                                            39.6%
  ExperimentFramework.Dashboard.Api.Endpoints.ExperimentEndpoints                                               65.7%
  ExperimentFramework.Dashboard.Api.Endpoints.GovernanceEndpoints                                               64.2%
  ExperimentFramework.Dashboard.Api.Endpoints.PluginEndpoints                                                    100%
  ExperimentFramework.Dashboard.Api.Endpoints.RolloutEndpoints                                                  92.8%
  ExperimentFramework.Dashboard.Api.Endpoints.TargetingEndpoints                                                 100%

ExperimentFramework.Dashboard.UI                                                                                 7.2%
  ExperimentFramework.Dashboard.UI.Components.Layout.MainLayout                                                  100%
  ExperimentFramework.Dashboard.UI.Components.Pages.Analytics                                                      0%
  ExperimentFramework.Dashboard.UI.Components.Pages.Configuration                                                  0%
  ExperimentFramework.Dashboard.UI.Components.Pages.CreateExperiment                                               0%
  ExperimentFramework.Dashboard.UI.Components.Pages.DslEditor                                                      0%
  ExperimentFramework.Dashboard.UI.Components.Pages.Experiments                                                 30.5%
  ExperimentFramework.Dashboard.UI.Components.Pages.Governance.Audit                                               0%
  ExperimentFramework.Dashboard.UI.Components.Pages.Governance.Lifecycle                                           0%
  ExperimentFramework.Dashboard.UI.Components.Pages.Governance.Policies                                            0%
  ExperimentFramework.Dashboard.UI.Components.Pages.Governance.Versions                                            0%
  ExperimentFramework.Dashboard.UI.Components.Pages.HypothesisTesting                                              0%
  ExperimentFramework.Dashboard.UI.Components.Pages.MinimalTest                                                    0%
  ExperimentFramework.Dashboard.UI.Components.Pages.Plugins                                                        0%
  ExperimentFramework.Dashboard.UI.Components.Pages.Rollout                                                        0%
  ExperimentFramework.Dashboard.UI.Components.Pages.Targeting                                                      0%
  ExperimentFramework.Dashboard.UI.Components.Shared.MonacoEditor                                                  0%
  ExperimentFramework.Dashboard.UI.Models.ExperimentWizardModel                                                    0%
  ExperimentFramework.Dashboard.UI.Services.DashboardStateService                                               98.5%
  ExperimentFramework.Dashboard.UI.Services.ExperimentApiClient                                                    0%
  ExperimentFramework.Dashboard.UI.Services.ExperimentCodeGenerator                                                0%
  ExperimentFramework.Dashboard.UI.Services.GovernanceListResponse<T>                                              0%
  ExperimentFramework.Dashboard.UI.Services.ThemeService                                                         100%

ExperimentFramework.Data                                                                                        98.1%
  ExperimentFramework.Data.Configuration.OutcomeCollectionDecoratorHandler                                       100%
  ExperimentFramework.Data.Decorators.OutcomeCollectionDecoratorFactory                                          100%
  ExperimentFramework.Data.ExperimentBuilderExtensions                                                           100%
  ExperimentFramework.Data.Models.ExperimentOutcome                                                              100%
  ExperimentFramework.Data.Models.OutcomeAggregation                                                             100%
  ExperimentFramework.Data.Models.OutcomeQuery                                                                   100%
  ExperimentFramework.Data.Recording.OutcomeRecorder                                                             100%
  ExperimentFramework.Data.Recording.OutcomeRecorderOptions                                                      100%
  ExperimentFramework.Data.ServiceCollectionExtensions                                                           100%
  ExperimentFramework.Data.Storage.InMemoryOutcomeStore                                                         93.6%
  ExperimentFramework.Data.Storage.NoopOutcomeStore                                                              100%

ExperimentFramework.Distributed                                                                                 94.6%
  ExperimentFramework.Distributed.InMemoryDistributedLockProvider                                               92.5%
  ExperimentFramework.Distributed.InMemoryDistributedState                                                      95.4%
  ExperimentFramework.Distributed.ServiceCollectionExtensions                                                    100%

ExperimentFramework.Distributed.Redis                                                                            100%
  ExperimentFramework.Distributed.Redis.RedisDistributedLockProvider                                             100%
  ExperimentFramework.Distributed.Redis.RedisDistributedState                                                    100%
  ExperimentFramework.Distributed.Redis.ServiceCollectionExtensions                                              100%

ExperimentFramework.FeatureManagement                                                                             80%
  ExperimentFramework.FeatureManagement.ExperimentBuilderExtensions                                               50%
  ExperimentFramework.FeatureManagement.ServiceCollectionExtensions                                              100%
  ExperimentFramework.FeatureManagement.VariantFeatureFlagProvider                                               100%

ExperimentFramework.Governance                                                                                  93.2%
  ExperimentFramework.Governance.Approval.AutomaticApprovalGate                                                  100%
  ExperimentFramework.Governance.Approval.ManualApprovalGate                                                     100%
  ExperimentFramework.Governance.Approval.RoleBasedApprovalGate                                                  100%
  ExperimentFramework.Governance.ApprovalManager                                                                 100%
  ExperimentFramework.Governance.ApprovalResult                                                                  100%
  ExperimentFramework.Governance.GovernanceBuilder                                                              65.9%
  ExperimentFramework.Governance.GovernanceConfiguration                                                           0%
  ExperimentFramework.Governance.LifecycleManager                                                               98.9%
  ExperimentFramework.Governance.Policy.ConflictPreventionPolicy                                                96.9%
  ExperimentFramework.Governance.Policy.ErrorRatePolicy                                                           97%
  ExperimentFramework.Governance.Policy.PolicyEvaluator                                                          100%
  ExperimentFramework.Governance.Policy.TimeWindowPolicy                                                        96.7%
  ExperimentFramework.Governance.Policy.TrafficLimitPolicy                                                       100%
  ExperimentFramework.Governance.ServiceCollectionExtensions                                                     100%
  ExperimentFramework.Governance.Versioning.VersionManager                                                      86.3%

ExperimentFramework.Governance.Persistence                                                                       5.2%
  ExperimentFramework.Governance.Persistence.ConcurrencyConflictException                                          0%
  ExperimentFramework.Governance.Persistence.InMemoryGovernancePersistenceBackplane                                0%
  ExperimentFramework.Governance.Persistence.PersistenceResult<T>                                               68.4%
  ExperimentFramework.Governance.Persistence.ServiceCollectionExtensions                                           0%

ExperimentFramework.Governance.Persistence.Redis                                                                45.4%
  ExperimentFramework.Governance.Persistence.Redis.RedisGovernancePersistenceBackplane                          78.1%
  ExperimentFramework.Governance.Persistence.Redis.ServiceCollectionExtensions                                     0%

ExperimentFramework.Governance.Persistence.Sql                                                                  93.9%
  ExperimentFramework.Governance.Persistence.Sql.EntityConfigurations.ApprovalRecordEntityConfiguration          100%
  ExperimentFramework.Governance.Persistence.Sql.EntityConfigurations.ConfigurationVersionEntityConfiguration    100%
  ExperimentFramework.Governance.Persistence.Sql.EntityConfigurations.ExperimentStateEntityConfiguration         100%
  ExperimentFramework.Governance.Persistence.Sql.EntityConfigurations.PolicyEvaluationEntityConfiguration        100%
  ExperimentFramework.Governance.Persistence.Sql.EntityConfigurations.StateTransitionEntityConfiguration         100%
  ExperimentFramework.Governance.Persistence.Sql.GovernanceDbContext                                             100%
  ExperimentFramework.Governance.Persistence.Sql.ServiceCollectionExtensions                                       0%
  ExperimentFramework.Governance.Persistence.Sql.SqlGovernancePersistenceBackplane                              94.8%

ExperimentFramework.Metrics.Exporters                                                                            100%
  ExperimentFramework.Metrics.Exporters.OpenTelemetryExperimentMetrics                                           100%
  ExperimentFramework.Metrics.Exporters.PrometheusExperimentMetrics                                              100%

ExperimentFramework.OpenFeature                                                                                   80%
  ExperimentFramework.OpenFeature.ExperimentBuilderExtensions                                                     50%
  ExperimentFramework.OpenFeature.OpenFeatureProvider                                                            100%
  ExperimentFramework.OpenFeature.ServiceCollectionExtensions                                                    100%

ExperimentFramework.Plugins                                                                                     86.8%
  ExperimentFramework.Plugins.Abstractions.PluginEventArgs                                                       100%
  ExperimentFramework.Plugins.Abstractions.PluginLoadFailedEventArgs                                             100%
  ExperimentFramework.Plugins.Configuration.PluginConfigurationValidator                                         100%
  ExperimentFramework.Plugins.Configuration.PluginDiscoveryService                                               100%
  ExperimentFramework.Plugins.Configuration.PluginsConfig                                                        100%
  ExperimentFramework.Plugins.HotReload.PluginReloadEventArgs                                                    100%
  ExperimentFramework.Plugins.HotReload.PluginReloadFailedEventArgs                                              100%
  ExperimentFramework.Plugins.HotReload.PluginReloadService                                                      100%
  ExperimentFramework.Plugins.HotReload.PluginWatcher                                                           85.8%
  ExperimentFramework.Plugins.Integration.PluginBuilderExtensions                                                100%
  ExperimentFramework.Plugins.Integration.PluginManager                                                         83.3%
  ExperimentFramework.Plugins.Integration.PluginTypeResolver                                                     100%
  ExperimentFramework.Plugins.Loading.PluginContext                                                             55.4%
  ExperimentFramework.Plugins.Loading.PluginLoadContext                                                           72%
  ExperimentFramework.Plugins.Loading.PluginLoader                                                              91.9%
  ExperimentFramework.Plugins.Loading.SharedTypeRegistry                                                        89.1%
  ExperimentFramework.Plugins.Manifest.ManifestLoader                                                             92%
  ExperimentFramework.Plugins.Manifest.ManifestValidationResult                                                   50%
  ExperimentFramework.Plugins.Manifest.ManifestValidator                                                        97.7%
  ExperimentFramework.Plugins.Manifest.PluginManifest                                                            100%
  ExperimentFramework.Plugins.Manifest.PluginManifestAttribute                                                   100%
  ExperimentFramework.Plugins.Manifest.PluginManifestJson                                                        100%
  ExperimentFramework.Plugins.Security.PluginSecurityValidator                                                    73%
  ExperimentFramework.Plugins.ServiceCollectionDecoratorExtensions                                              70.5%
  ExperimentFramework.Plugins.ServiceCollectionExtensions                                                        100%

ExperimentFramework.Resilience                                                                                    99%
  ExperimentFramework.Resilience.CircuitBreakerDecoratorFactory                                                  100%
  ExperimentFramework.Resilience.CircuitBreakerOpenException                                                     100%
  ExperimentFramework.Resilience.CircuitBreakerOptions                                                           100%
  ExperimentFramework.Resilience.Configuration.CircuitBreakerDecoratorHandler                                    100%
  ExperimentFramework.Resilience.ResilienceBuilderExtensions                                                     100%
  ExperimentFramework.Resilience.ResilienceServiceCollectionExtensions                                          85.7%

ExperimentFramework.Rollout                                                                                     98.7%
  ExperimentFramework.Rollout.Configuration.RolloutSelectionModeHandler                                          100%
  ExperimentFramework.Rollout.Configuration.StagedRolloutSelectionModeHandler                                   97.9%
  ExperimentFramework.Rollout.ExperimentBuilderExtensions                                                        100%
  ExperimentFramework.Rollout.RolloutAllocator                                                                    95%
  ExperimentFramework.Rollout.RolloutProvider                                                                    100%
  ExperimentFramework.Rollout.ServiceCollectionExtensions                                                        100%
  ExperimentFramework.Rollout.StagedRolloutOptions                                                               100%
  ExperimentFramework.Rollout.StagedRolloutProvider                                                              100%

ExperimentFramework.Science                                                                                     93.8%
  ExperimentFramework.Science.Analysis.ExperimentAnalyzer                                                       88.3%
  ExperimentFramework.Science.Builders.EndpointBuilder                                                           100%
  ExperimentFramework.Science.Builders.HypothesisBuilder                                                         100%
  ExperimentFramework.Science.Builders.SuccessCriteriaBuilder                                                    100%
  ExperimentFramework.Science.Corrections.BenjaminiHochbergCorrection                                            100%
  ExperimentFramework.Science.Corrections.BonferroniCorrection                                                   100%
  ExperimentFramework.Science.Corrections.HolmBonferroniCorrection                                               100%
  ExperimentFramework.Science.EffectSize.CohensD                                                                 100%
  ExperimentFramework.Science.EffectSize.EffectSizeExtensions                                                    100%
  ExperimentFramework.Science.EffectSize.OddsRatio                                                               100%
  ExperimentFramework.Science.EffectSize.RelativeRisk                                                            100%
  ExperimentFramework.Science.Models.Hypothesis.Endpoint                                                           0%
  ExperimentFramework.Science.Models.Hypothesis.HypothesisDefinition                                               0%
  ExperimentFramework.Science.Models.Results.StatisticalTestResult                                              66.6%
  ExperimentFramework.Science.Models.Snapshots.EnvironmentInfo                                                     0%
  ExperimentFramework.Science.Power.PowerAnalyzer                                                               78.7%
  ExperimentFramework.Science.Reporting.JsonReporter                                                            88.8%
  ExperimentFramework.Science.Reporting.MarkdownReporter                                                        92.6%
  ExperimentFramework.Science.ServiceCollectionExtensions                                                        100%
  ExperimentFramework.Science.Snapshots.InMemorySnapshotStore                                                   90.1%
  ExperimentFramework.Science.Statistics.ChiSquareTest                                                          98.9%
  ExperimentFramework.Science.Statistics.MannWhitneyUTest                                                       97.3%
  ExperimentFramework.Science.Statistics.OneWayAnova                                                            98.4%
  ExperimentFramework.Science.Statistics.PairedTTest                                                            96.9%
  ExperimentFramework.Science.Statistics.TwoSampleTTest                                                         88.4%

ExperimentFramework.Simulation                                                                                  89.5%
  ExperimentFramework.Simulation.Builders.SimulationRunner                                                       100%
  ExperimentFramework.Simulation.Builders.SimulationRunner<T1, T2>                                                74%
  ExperimentFramework.Simulation.Builders.SimulationRunnerBuilder                                                100%
  ExperimentFramework.Simulation.Builders.SimulationServiceBuilder<T>                                            100%
  ExperimentFramework.Simulation.Comparators.EqualityComparator<T>                                               100%
  ExperimentFramework.Simulation.Comparators.JsonComparator<T>                                                  88.4%
  ExperimentFramework.Simulation.Comparators.SimulationComparators                                               100%
  ExperimentFramework.Simulation.Models.ImplementationResult<T>                                                 85.7%
  ExperimentFramework.Simulation.Models.Scenario<T1, T2>                                                         100%
  ExperimentFramework.Simulation.Models.ScenarioResult<T>                                                        100%
  ExperimentFramework.Simulation.Models.SimulationReport                                                         100%
  ExperimentFramework.Simulation.Reporting.SimulationReportExtensions                                           93.4%
  ExperimentFramework.Simulation.ServiceCollectionExtensions                                                       0%

ExperimentFramework.StickyRouting                                                                                100%
  ExperimentFramework.StickyRouting.ExperimentBuilderExtensions                                                  100%
  ExperimentFramework.StickyRouting.ServiceCollectionExtensions                                                  100%
  ExperimentFramework.StickyRouting.StickyRoutingProvider                                                        100%
  ExperimentFramework.StickyRouting.StickyTrialRouter                                                            100%

ExperimentFramework.Targeting                                                                                    100%
  ExperimentFramework.Targeting.Configuration.TargetingSelectionModeHandler                                      100%
  ExperimentFramework.Targeting.InMemoryTargetingConfiguration                                                   100%
  ExperimentFramework.Targeting.ServiceCollectionExtensions                                                      100%
  ExperimentFramework.Targeting.SimpleTargetingContext                                                           100%
  ExperimentFramework.Targeting.TargetingProvider                                                                100%
  ExperimentFramework.Targeting.TargetingRules                                                                   100%

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 24, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 74.42%. Comparing base (e44f9c5) to head (d2e7dfa).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main      #88      +/-   ##
==========================================
+ Coverage   65.50%   74.42%   +8.92%     
==========================================
  Files         242      250       +8     
  Lines        9624     9888     +264     
  Branches     1626     1397     -229     
==========================================
+ Hits         6304     7359    +1055     
+ Misses       2973     2529     -444     
+ Partials      347        0     -347     
Flag Coverage Δ
unittests 74.42% <ø> (+8.92%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 132 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@JerrettDavis JerrettDavis merged commit 7848a45 into main Apr 24, 2026
11 checks passed
@JerrettDavis JerrettDavis deleted the fix/coverage-reporting branch April 24, 2026 15:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant