# Srivastava–Du diagonal mean tests **Status:** formula, independent fixture, scale, exchange, and boundary gates pass in the advertised high-dimensional asymptotic regime. These tests replace the full covariance inverse with marginal variance standardization and estimate the calibration variance through `tr(R²)`, where `R` is the sample correlation matrix. Every tested feature must have positive variance. The two-sample form assumes a common covariance matrix. The independent ledger recomputes the diagonal quadratic form, finite-sample centering, `tr(R²)` correction, and standard-normal tail without using pySHT helpers. It also checks invariance to separate positive feature rescalings and to exchanging the two groups. Null vectors are removed before scaling and two groups use one deterministic feature-wise anchor. Regressions at common locations `1e8` and `1e14` compare against the information still representable in the translated float64 input. ## Null calibration gate The advertised high-dimensional scenario uses independent Gaussian identity-covariance data with `p=100` and 50 covariance degrees of freedom: `n=51` for `sd_1samp` and `n_x=n_y=26` for `sd_2samp`. The audit directly samples the independent normal mean component and Wishart covariance component, including the complete sample-correlation correction. | Seed | alpha=0.01 | alpha=0.05 | alpha=0.10 | |---|---:|---:|---:| | 20260810 | 0.01245 | 0.05080 | 0.09605 | | 20260811 | 0.01260 | 0.05015 | 0.09495 | Each row uses 20,000 null datasets. The one- and two-sample designs share these rates and pass the release tolerance at all three levels. This does not extend the calibration claim to arbitrary covariance spectra. ## Targeted alternative-power gate The public standardized-coordinate paths were run with `p=40 > n=30` and identity covariance. For `sd_1samp`, child-0 PCG64 draws 30 rows from $N_{40}(0.18\mathbf 1,I)$ before `mean.sd_1samp(x)`. For `sd_2samp`, it draws 30 rows from $N_{40}(0.25\mathbf 1,I)$ and then 30 rows from $N_{40}(0,I)$ before `mean.sd_2samp(x, y)`. Each named integer seed initializes a `SeedSequence`; child 0 is the persistent data stream and child 1 is a separate persistent PCG64 auxiliary stream, unused here. Streams advance in replication order and reset between methods. Rejection means `pvalue < alpha`. | Public function | Seed | Replications | alpha=0.01 count/rate | alpha=0.05 count/rate | alpha=0.10 count/rate | |---|---:|---:|---:|---:|---:| | `sd_1samp` | 2026090310 | 1,000 | 848 / 0.848 | 934 / 0.934 | 963 / 0.963 | | `sd_2samp` | 2026090311 | 1,000 | 824 / 0.824 | 935 / 0.935 | 958 / 0.958 | These deliberately strong alternatives test response direction, not relative efficiency. `python -m tools.mean_power_audits` reproduces the counts under Python 3.12.13, NumPy 2.5.1, and SciPy 1.18.0. The worst-case binomial standard error for 1,000 outer replications is 0.0159. Primary reference: M. S. Srivastava and M. Du, *A Test for the Mean Vector with Fewer Observations than the Dimension*, Journal of Multivariate Analysis 99 (2008), 386–402.