CHANGES IN VERSION 4.0

NEW FEATURES

* Added opt-in supervised sparse soft-structured PCA through `msma()` using
  `structure.method`, `gammaX`, `history.method`, and `niterS4`.
* Added hard-exclusive structured PCA with
  `structure.method = "exclusive"`.
* Added `s4pca_reconstruct()` for training-data and new-data reconstruction.
* Added `s4pca_conformal_select()` for repeated split reconstruction-based
  selection of `lambdaX`, `gammaX`, and `comp`, with an optional overlap
  constraint and full-data refitting.
* Added `overlap_all`, `overlap_selected`, convergence diagnostics, and stored
  preprocessing information to structured-PCA results.

COMPATIBILITY

* Calls that do not request structured PCA retain the Version 3.2 dispatcher
  and computational paths.
* The manuscript-generating S4PCA code is retained as a frozen numerical
  reference. The refactored engine is tested against it at tolerance 1e-12.
* Unsupported combinations, including multiblock structured PCA, PLS,
  multi-column Z, and NMF-based super-level structured analysis, fail with
  explicit messages rather than silently changing interpretation.

VALIDATION AND DOCUMENTATION

* Added input-validation, diagnostics, public-API, reconstruction,
  model-selection, reproducibility, and Version 3.2 regression tests.
* Added a soft-structured PCA vignette and documentation for the two new public
  helper functions.
* Corrected UTF-8 metadata handling during documentation generation.

BUG FIXES

* Made reduced-dimension simulation fixtures safe for variable counts below
  the manuscript template size.
* Avoided use of the reserved R keyword `repeat` with `$` indexing.

CHANGES IN VERSION 3.2

NEW FEATURES

* Added sparse non-negative matrix factorization at the super level through
  sprmethod = "sNMF".
* Z can now contain multiple supervision variables in separate columns.
* Added con4spv to specify weights for combining multiple columns of Z.

COMPATIBILITY

* Calls using only version 3.1 functionality are dispatched to the preserved
  version 3.1 computational engine.
* The extended computational engine is used only when NMF, sNMF, multivariate
  Z, or con4spv is explicitly requested.

BUG FIXES

* A one-column matrix supplied to Z is now normalized to a vector before the
  preserved version 3.1 engine is called. This makes Z = z and Z = cbind(z)
  produce identical numerical results and returned objects.

PACKAGE CHECKS

* Renamed the internal legacy and extended computational engines so that they
  are not interpreted as unregistered S3 methods of the msma generic.

* Added the internal `.s4pca_fit_reference()` candidate engine and the first
  regression suite against the frozen manuscript-generating implementation.

* Added a validated internal S4PCA interface and diagnostic metadata while
  retaining the reference-compatible numerical engine unchanged.
* Added strict validation for data, supervision, tuning, iteration, and seed
  inputs.

* Fixed reduced-dimension S4PCA test fixtures and ensured the canonical UTF-8
  DESCRIPTION is installed before roxygen2 documentation generation.

PUBLIC S4PCA API

* Added opt-in S4PCA through `msma()` using `structure.method`, `gammaX`,
  `history.method`, and `niterS4`.
* Added public contract tests and a soft-structured PCA vignette.

S4PCA MODEL SELECTION

* Added `s4pca_reconstruct()` for training and new-data reconstruction.
* Added `s4pca_conformal_select()` for repeated split reconstruction-based
  selection of `lambdaX`, `gammaX`, and `comp`, with an overlap constraint.
* Updated the Version 3.2 versus Version 4.0 compatibility validation document.

* Fixed parsing of the repeated-split identifier by using bracket indexing for
  the reserved R keyword `repeat`.

RELEASE VALIDATION

* Added reproducible scripts for the independent Version 3.2 compatibility
  audit, the `mand` reverse-dependency check, and release-manifest generation.

* Reload the newly installed namespace after the build so interactive
  post-build tests see the current Version 4.0 exports generated by roxygen2.

* Removed a redundant source-tree NAMESPACE inspection test. Export status is
  already verified against the installed namespace, avoiding a context-only
  skip when tests are run from the development tree.

* Fixed the Milestone 6 compatibility runner to use absolute input, reference,
  source, and output paths when rendering from the validation directory.

* Corrected the `mand` reverse-dependency audit to install msma 4.0 into a
  genuinely isolated library and to separate compatibility checks from CRAN
  incoming same-version warnings.

* Made the `mand.Rcheck` log discovery robust to the Windows R front end,
  which may create the check directory in the development root even when the
  command is launched after changing to the reverse-dependency work directory.


