Skip to content

Prepare v2.0.0 official release#11

Merged
HadenSmith merged 45 commits into
mainfrom
version-2-code-migration
Jul 17, 2026
Merged

Prepare v2.0.0 official release#11
HadenSmith merged 45 commits into
mainfrom
version-2-code-migration

Conversation

@HadenSmith

Copy link
Copy Markdown
Contributor

Summary

This PR prepares RMC-BestFit for the official v2.0.0 release.

It switches production dependencies back to published NuGet packages, removes beta.5 metadata, synchronizes App/UI/project serialization version strings, and adds a repeatable release workflow for future BestFit releases.

Release Significance

Version 1.0 focused on three core desktop workflows:

  • Input Data
  • Distribution Fitting
  • Univariate Analysis

Version 2.0.0 is a major expansion into a full Bayesian hydrologic analysis platform, including:

  • Time Series elements and download workflows
  • Peaks-over-threshold data creation
  • Nonstationary frequency analysis
  • Mixture models
  • Composite workflows for competing risks, mixtures, and model averaging
  • Point process analysis
  • Bivariate analysis
  • Coincident frequency analysis
  • Rating curve analysis
  • Time series analysis
  • A reusable RMC.BestFit .NET model-library package

Validation

  • dotnet restore
  • dotnet build -c Debug
  • dotnet build -c Release
  • dotnet test src/RMC.BestFit.Tests -c Debug --no-build
  • dotnet test src/RMC.BestFit.UI.Tests -c Debug --no-build
  • dotnet test src/RMC.BestFit.App.Tests -c Debug --no-build
  • dotnet test src/RMC.BestFit.Api.Tests -c Debug --no-build
  • dotnet pack src/RMC.BestFit/RMC.BestFit.csproj -c Release -o packages /p:Version=2.0.0
  • Inspect NuGet package metadata and dependencies

HadenSmith added 30 commits June 5, 2026 13:39
Add Bulletin17CDistribution.CloneWithDataFrame, which binds a resampled
data frame through the XElement round-trip so SetDefaultParameters does
not rebuild the parameter list from boot data. Bootstrap replicates
previously lost the parent initial values, had every parameter penalty
disabled (silently dropping regional-skew prior propagation), and, when
default-parameter derivation threw for a resampled frame, were left with
an empty parameter list that failed every replicate. DataFrame change
notifications are now ignored while deserializing so mid-construction
threshold reprocessing cannot overwrite restored state.
…rameters

Align the bootstrap replicate acceptance gate with the parent fit
(reject only hard optimizer failures and non-finite estimates), warm
start each replicate at the parent fit via CloneWithDataFrame, and drop
realizations that fail every retry from the delivered sample instead of
substituting the parent parameter vector, which injected zero-variance
mass at the parent fit and biased confidence intervals narrow. The pivot
bootstrap now compacts to accepted replicates before link fitting and
pivot generation (seeding stays keyed to the original replicate index),
and drops z-limit rejections and failed transforms. The plain MVN
sampler adopts the LinkedMVN drop-and-guard pattern. Samplers abort with
a user-facing diagnostic (UncertaintyDiagnosticMessage, surfaced as an
analysis warning) when fewer than two realizations survive or more than
half are discarded. Sampling loops report progress from the first
completed replicate, and the pivot phases report monotonically (55/56/44
split) instead of jumping backward between phases.
…antics

BootstrapDiagnostics now records the retained (delivered) realization
count, pivot transform failures, and the distribution of replicate GMM
optimizer outcomes, with backward-compatible XML (legacy diagnostics
fall back to ValidReplicates for the retained count). The plain MVN
sampler populates the same diagnostics so all sampling methods report
requested, valid, discarded, and used counts. The report section is
method-aware, replaces the parent-fallback wording with discard
semantics, prints the GMM status distribution, and warns when fewer
than half of the requested realizations (or fewer than 1,000) were
retained. Diagnostics are now persisted with the analysis so the report
section survives Save/Open.
B17CAnalysisPropertiesControl.Element_PropertyChanged now marshals to
the dispatcher before rebinding penalty-grid ItemsSource, matching the
B17CAnalysisControl pattern; model-layer notifications can arrive on
worker threads during a run. The UI wrapper ignores the aggregate
ThresholdSeries recompute notification raised by its own run's
preprocessing (narrow guard: only that property, only while the run is
in flight) so ClearResults cannot fire on a worker thread mid-run, and
surfaces the model's specific uncertainty diagnostic in the partial-
failure warning instead of the fixed covariance text.
@HadenSmith
HadenSmith merged commit 9e611bc into main Jul 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant