B6/B7 rank-two: independent observed-data marginal likelihood¶
Rank-two posterior inference is not yet validated
This research-only mathematical falsification compares two independently implemented likelihood evaluations, not posterior MCMC, SBC or credible interval coverage. Protected main, stable 1.1.0 and 1.2 gates are unchanged.
With known channel-wise noise and k=2 Gaussian participant scores, the observed-data likelihood is N(Xμ, D + (XL)(XL)ᵀ). This study computes each participant's full observation-space Gaussian log density using a dense covariance determinant and solve, then checks a separately implemented Woodbury/determinant-lemma expression using Q = I₂ + (XL)ᵀD⁻¹(XL).
The predeclared contract covers paired and asynchronous channels, matched rank-two Gaussian factor priors, and a near-tied equal-eigenvalue stress case outside the matched Gaussian loading prior. Independent covariance and likelihood values must be invariant to L → LR for a rank-two orthogonal R. A single participant's missing channel measurements are excluded rather than imputed. Each original mathematical run preserves source JSON and SHA256.
Passing numerical equality is necessary but not sufficient: before rank-two four-chain NUTS, separately check differentiable PyTensor likelihood and gradients against dense numerical derivatives and verify prior/parameterization consistency. Rank-two posterior convergence, prior-based SBC, fixed-parameter coverage and real-data usefulness remain OPEN under scientific issue #255.
Verified source contract — 11 October 2026¶
The original rank-two scientific workflow #38087129154 on draft PR #273, exact source commit f7a3ba6b8fd6dc6022bffdaf55c88b2eb137b10e, passed 3/3 Python 3.11–3.13 scientific jobs and preserved independently generated cases.json, evidence.json and SHA256SUMS in three artifacts. Its source ledger reports four mathematical designs, zero contract failures. Each Python job re-evaluates the same four prescribed design categories, not four new independent posterior datasets.
| Mathematical test design | Status | Statistical interpretation |
|---|---|---|
| Paired x/y, matched Gaussian rank-two loadings | Passed dense versus Woodbury likelihood and rotation-invariance thresholds | Observed-data numerical identity, not posterior inference |
| Asynchronous x/y, matched Gaussian rank-two loadings | Passed | Native observation-time masks retained |
| Paired x/y, near-tied equal-eigenvalue stress | Passed | Out-of-prior numerical stress, not matched-prior SBC |
| Asynchronous x/y, near-tied equal-eigenvalue stress | Passed | Out-of-prior numerical stress, not matched-prior SBC |
The original code declares an absolute dense-versus-Woodbury log-likelihood discrepancy threshold < 10⁻⁷, factor-rotation log-likelihood discrepancy < 10⁻⁷ and maximum rotated-population-covariance discrepancy < 10⁻¹⁰. All four cases met the prespecified combined contract. The aggregate logs report passing booleans rather than exact case-level numerical discrepancies, so this page does not manufacture a numerical difference chart. Consult the retained cases.json in the original workflow artifacts for exact values.
Original retained artifacts: Python 3.11 11681893932; Python 3.12 11682179563; Python 3.13 11681983569. The source mathematical study changes no stable API, package version or production-release approval.
Remaining independent gate: compare the actual PyTensor graph (likelihood, priors, parameter-transform Jacobians and gradients) against external dense-Gaussian analytical or finite-difference references, then run rank-two NUTS with identifiable covariance/mean diagnostics. Scientific blocker #255 remains open.