                 Changes in version 0.2.3 (2026-09-27)                  

Citation and documentation update following publication of the companion
paper. Computations, exported functions, and arguments are unchanged, so
results are identical to version 0.2.2 (the version archived on OSF and
cited in the paper's data availability statement).

  - The companion paper is now published: Nakamura, D. (2026). The
    denominator chooses the estimand: A target-population true-score
    framework for standardized mean differences. Psychological Methods.
    Advance online publication. https://doi.org/10.1037/met0000875
  - DESCRIPTION: the Description field now cites the paper as Nakamura
    (2026) doi:10.1037/met0000875 instead of "in press".
  - Added inst/CITATION, so citation("ltgsmd") returns the paper and a
    citation for the package itself.
  - Help pages, the vignette, and README.md: references to sections,
    equations, and supplementary materials now follow the numbering of
    the published article, and the outdated "submitted" and "in press"
    wording was removed.
  - The section labels in printed output and in one informational note
    were updated accordingly (for example, print() on a
    compute_ltg_smd() result now shows "Decomposition factors
    (Section 3)").

                 Changes in version 0.2.2 (2026-09-02)                  

Tiny hotfix for a single test-suite regex.

CRAN submission preparation (no functional changes)

Following acceptance of the companion paper, the package metadata was
updated for public release. No R code, exported function signatures, or
computational behavior changed; the version number is held at 0.2.2 to
match the version cited in the companion paper's Data Availability
statement.

  - DESCRIPTION: Authors@R now identifies the real author (previously an
    anonymized placeholder used for masked peer review); added a URL
    field pointing to the OSF project; updated the companion-paper
    citation from "submitted" to "in press".
  - LICENSE: copyright holder now named explicitly.
  - README.md: removed the masked-review notice; updated installation
    instructions to reference CRAN; corrected the citation and version
    status.
  - man/*.Rd: regenerated via roxygen2::roxygenise(). These were
    inadvertently omitted from the tarball used for masked review.

Test fix

  - test-bootstrap-strata.R: the expect_warning() pattern was "stratum"
    (singular), but the package's actual warning message uses "strata"
    (plural): "One or more source x group strata has fewer than 4
    observations...". The pattern did not match, so the warning
    propagated through expect_warning as an unmatched warning and the
    test failed with "Expected ... to throw a warning." The pattern is
    now "strata".

No code or API changes. Expected result on R 4.5.3:

R CMD check: 0 errors | 0 warnings | 1 note (Windows time check; harmless)
testthat:    FAIL 0 | PASS 79

                        Changes in version 0.2.1                        

Post-build hotfix release. Addresses issues uncovered by the first full
R CMD check --as-cran and testthat::test_package() run on Windows
R 4.5.3. No public API changes; all changes are test-data, namespace,
and roxygen-doc corrections.

Test infrastructure fixes

  - Added tests/testthat/helper-data.R with make_factor_data(), a helper
    that generates two-group test data with a shared latent factor so
    that estimated alpha is positive and well-conditioned. The first cut
    of the 0.2.0 test suite used independent rnorm() items, which
    produced alpha near zero (often negative). The new validation check
    in v0.2.0 correctly rejected those, so eleven tests failed because
    the test data were not psychometrically realistic. All tests now use
    make_factor_data() and the factor-structured items yield alpha in a
    realistic range (0.8 to 0.95 depending on the noise level).

  - Fixed regex escaping in test-validation.R: the literal-paren
    patterns (0, 1\\] were misparsed as an unclosed regex group. They
    now match by a content keyword ("must lie") that is unambiguous.

  - Tightened the bootstrap-stratum warning test in
    test-bootstrap-strata.R with an explicit regexp = "stratum" pattern,
    so it matches the package's own warning even when boot::boot emits
    incidental warnings.

  - Fixed test-compute_ltg_smd.R::"LTG-SMD agrees with observed
    geometric SMD when reliability = 1" to drop the names attribute
    before expect_equal, which otherwise rejects the comparison on name
    mismatch.

R CMD check NOTE fixes

  - multisite_ltg_smd() now uses stats::aggregate() explicitly instead
    of bare aggregate(), removing the "no visible global function" NOTE.

  - print.multisite_ltg_smd() now uses utils::head() explicitly instead
    of bare head(), removing the second "no visible global function"
    NOTE.

  - denominator_diagnostics() roxygen text now wraps inline math in
    \eqn{...} rather than passing bare (rho_1 rho_0)^{1/4} notation
    through to Rd. This removes the "Lost braces" NOTE.

Confirmed working as designed in v0.2.0

The R CMD check pass on Windows R 4.5.3 confirms:

  - The vignette getting-started.Rmd builds cleanly via knitr +
    rmarkdown.
  - All 9 .Rd documentation files are generated by devtools::document().
  - The package installs and loads with remotes::install_local().
  - All examples in \examples blocks pass.
  - No errors or warnings remain from R CMD check.

After v0.2.1, the expected outcome is 0 errors | 0 warnings | 0 notes
(or at most the universal "New submission" note) on R CMD check, and
FAIL 0 | PASS 47 on the test suite.

This is a pre-submission revision addressing pre-submission code review
feedback. All API-breaking changes are noted explicitly.

Critical bug fixes

  - compute_ltg_smd()'s reliability_estimator argument is now actually
    used. Previously the argument was documented to accept either
    "alpha" or a user-supplied function but was ignored at runtime; the
    package always used coef_alpha(). This is now a real plug-in
    interface: passing reliability_estimator = function(items)
    psych::omega(items)$omega.tot, or any other function returning a
    numeric scalar in (0, 1], works as documented.

  - ltg_smd_ci()'s bootstrap now stratifies on the four-cell cross of
    source (study vs reference) and the experimental group variable, not
    only on source. The previous design preserved overall study and
    reference sample sizes but allowed the focal/reference group ratio
    within each source to vary across replicates, producing unstable
    confidence intervals when group sizes were small or unequal. The new
    stratification preserves all four study x group cell sizes exactly,
    which is the correct design for two-group SMD bootstrap.

  - multisite_ltg_smd() now correctly builds the composite score for the
    external reference data frame when score_var = NULL and
    reference_strategy = "external". Previously the composite was built
    only for the experimental data, causing the function to fail when an
    external reference was supplied without a precomputed composite.

  - Reliability estimates and rho_external values are now validated to
    lie in (0, 1]. Previously a negative coefficient alpha (which can
    occur with strongly anticorrelated items) silently produced NaN
    results from the LTG-SMD formula; now the function stops with an
    informative error.

  - compute_ltg_smd() now checks for zero or non-finite group variances
    and reports an informative error.

API improvements

  - compute_ltg_smd() gains a se_method argument with values
    "fourth_moment" (new default; uses the sample fourth-moment plug-in
    consistent with Section 6 of the companion paper) and "normal" (the
    prior 2*sigma^4/(m-1) approximation, retained for explicit normal-
    theory comparisons).

  - multisite_ltg_smd() adds an se_ltg_method element to its return
    value documenting that site-level LTG-SMD standard errors treat the
    cross-site (or external) reference denominator as fixed. The print
    method displays this note.

  - All public functions now validate rho_external early via a shared
    helper, with named-component and range checks.

DESCRIPTION changes

  - Removed the URL and BugReports fields, which previously contained
    bracketed placeholder strings unsuitable for R CMD check. These will
    be reintroduced after acceptance with real repository URLs.

  - Version bumped to 0.2.0 and Description updated to reflect the
    pluggable reliability estimator and the new bootstrap
    stratification.

Tests added

The test suite is substantially expanded:

  - tests/testthat/test-manual-calculations.R: hand-computed LTG-SMD,
    Hedges's g, external observed, reliability factor, and study-to-
    target factor on tiny deterministic datasets.

  - tests/testthat/test-validation.R: custom-reliability-estimator
    propagation, unknown estimator string error, rho_external range and
    naming checks, negative-alpha detection, zero-variance detection,
    missing-item-column error, missing group_var / score_var errors.

  - tests/testthat/test-bootstrap-strata.R: confirms that bootstrap
    records strata_design = "source x group_var", recovers the four cell
    sample sizes exactly, and emits a warning when any stratum has fewer
    than 4 observations.

  - tests/testthat/test-multisite-and-supplementary.R: external-
    reference path with score_var = NULL, se_ltg_method exposure,
    sensitivity_reference() direction-of-change behavior under narrower
    vs. wider references, export_supplementary() list structure and
    Markdown writing.

Internal changes

  - helpers.R adds check_reliability(), check_rho_external(),
    resolve_reliability_estimator(), and var_s2_plugin() (fourth- moment
    based variance of s^2).

  - group_summary() now also records mu4 (fourth central moment) per
    group, enabling the "fourth_moment" analytic SE.

  - All public functions emit informative error messages instead of
    silently producing NaN or unexpected NULL output.

                        Changes in version 0.1.0                        

Initial pre-submission build.

  - Core functions: compute_ltg_smd(), ltg_smd_ci(),
    denominator_diagnostics(), denominator_sensitivity(),
    sensitivity_reference(), multisite_ltg_smd(), coef_alpha(),
    export_supplementary().
  - Vignette getting-started.Rmd.
  - Initial testthat suite covering core structural checks.
