Skip to content

The cohort-trend worry, tested properly

scripts/quasi_independence.py, datasets/results/quasi-independence.json. Lynden-Bell needs the lag and its truncation limit to be quasi-independent, and the limit here is a deterministic function of creation month, so the assumption is that review latency is stationary over the eighteen months the corpus spans. The log recorded that it fails, citing OpenStack's P(lag<=1) rising from 0.667 in the oldest cohort to 0.905 in a recent one. That citation was wrong, and the conclusion drawn from it was too strong.

The obvious diagnostic is biased, and most of that slope is the truncation. Each cohort's rate is conditional on its own horizon, so a cohort with three months to settle reports P(lag<=1 | lag<=3), not P(lag<=1). Simulating from a single stationary law with the real cohort sizes reproduces 0.753 rising to 0.904 on its own. The apparent trend is mostly an artifact of the very truncation the analysis exists to correct.

conditional Kendall tau (Tsai 1990) quasi-independence
OpenStack +0.0173 [-0.0162, +0.0492] not rejected
Qt -0.0018 [-0.0310, +0.0267] not rejected

The tau is restricted to pairs whose order the truncation could not have hidden, which is what makes it survive the bias above. Neither organization rejects.

The goodness-of-fit check was also the wrong yardstick, and its verdict survives anyway for one organization. censoring.py compares the fit against the longest-horizon cohort and had been calling a gap outside a binomial two-standard-error band a failure. The statistic is a maximum over thirteen correlated lags, whose null is much wider than any single comparison, so that band was too tight by construction. Calibrated against its own simulated null instead:

max gap null median null 95th p verdict
OpenStack 0.0857 0.0359 0.0670 0.017 rejected
Qt 0.0192 0.0217 0.0443 0.580 not rejected

So OpenStack's fit really is off, at p = 0.017 rather than the clear failure the crude band implied, and Qt's is squarely consistent. Quasi-independence is not what is wrong with OpenStack: the tau does not reject it, and whatever the misfit is, it is not a latency trend that a cohort covariate would absorb.

How much it could matter, bounded by refitting. Restricting the fit to the six most recent cohorts trades the identified tail for cohorts that resemble the windows being estimated:

dev missing, pooled dev missing, recent cohorts test at acceptance
OpenStack 39.1% 32.2% 1.1% -> 0.0%
Qt 28.8% 26.3% 0.7% -> 0.0%

The dev figures could be about seven points lower for OpenStack and two for Qt, in the direction that makes the dev window less censored than reported. The test window's figure only shrinks. So every way of fitting this points the same way on the decision: the confirmatory contrast is nearly uncensored, and the dev window is not. The registered figure stays the pooled one, which is the more conservative of the two.

Corrected in the record. The earlier entry's claim that quasi-independence "is violated, and OpenStack's own check says so" rested on a biased diagnostic and a miscalibrated band. The misfit is real but milder, the mechanism is unidentified, and the cohort-aware refit is a bound rather than a fix.