The stuff this cycle made, archived 2026-10-21 and rendered from
git show rev65-attempt58-iterations11ofx:stuff/….
cycle94-skew-general-results.mdcycle94-skew-general-seed94105.mdcycle94-skew-general-seed94303.md
One default_rng(94201) stream consumed in order n=25, 50, 100; per n the laws normal, chi2(2), chi2(10), lognormal(0, 0.5), beta(2, 5). All three tests are scored on the same draws in every cell. Runner: stuff/cycle94_skew_general.py (uv run --with numpy --with scipy python stuff/cycle94_skew_general.py), wall clock 25 s. No cell edited by hand; the tables below are the script's output.
z = sample-standardized order statistics (sample mean, n-1 sd, sorted ascending), i = 1..n. Plain AD term t_i = -((2i-1)/n) [ln Phi(z_(i)) + ln(1 - Phi(z_(n+1-i)))]. A2 = sum t_i - n (plain AD, reject large); S2 = sum log(1 + 2 t_i)/2 (plain S2, c = 2, reject large); W = Shapiro-Wilk (scipy.stats.shapiro, reject small). Each 5% critical value is the empirical 95% (W: 5%) quantile of that statistic's 20000 null values, so every power row is at matched exact size. MC SE of a null rate at 0.05 is 0.0015.
| n | W 5% crit | W null rate | A2 5% crit | A2 null rate | S2 5% crit | S2 null rate |
|---|---|---|---|---|---|---|
| 25 | 0.9194 | 0.0500 | 0.7281 | 0.0500 | 13.3943 | 0.0500 |
| 50 | 0.9543 | 0.0500 | 0.7359 | 0.0500 | 26.5074 | 0.0500 |
| 100 | 0.9747 | 0.0500 | 0.7505 | 0.0500 | 52.7086 | 0.0500 |
Gap = SW minus other; paired SE = sd of the per-draw rejection-indicator difference / sqrt(20000). Verdict: beats if gap > 2 SE, loses if gap < -2 SE, else tie (within two paired SE).
| n | law | SW | AD | S2 | SW-AD (SE) | vs AD | SW-S2 (SE) | vs S2 |
|---|---|---|---|---|---|---|---|---|
| 25 | chi2_2 | 0.9230 | 0.8753 | 0.8341 | +0.0476 (0.0015) | beats | +0.0888 (0.0020) | beats |
| 25 | chi2_10 | 0.3056 | 0.2550 | 0.2702 | +0.0507 (0.0020) | beats | +0.0354 (0.0018) | beats |
| 25 | lognormal_0_0.5 | 0.6380 | 0.5726 | 0.5876 | +0.0653 (0.0020) | beats | +0.0504 (0.0019) | beats |
| 25 | beta_2_5 | 0.2245 | 0.1923 | 0.1467 | +0.0322 (0.0018) | beats | +0.0778 (0.0021) | beats |
| 50 | chi2_2 | 0.9991 | 0.9961 | 0.9809 | +0.0030 (0.0004) | beats | +0.0182 (0.0009) | beats |
| 50 | chi2_10 | 0.5917 | 0.4854 | 0.4420 | +0.1063 (0.0025) | beats | +0.1497 (0.0026) | beats |
| 50 | lognormal_0_0.5 | 0.9254 | 0.8765 | 0.8344 | +0.0490 (0.0016) | beats | +0.0910 (0.0020) | beats |
| 50 | beta_2_5 | 0.5050 | 0.4013 | 0.2147 | +0.1036 (0.0024) | beats | +0.2903 (0.0032) | beats |
| 100 | chi2_2 | 1.0000 | 1.0000 | 0.9999 | +0.0000 (0.0000) | tie | +0.0001 (0.0001) | tie |
| 100 | chi2_10 | 0.9068 | 0.8068 | 0.6747 | +0.1000 (0.0022) | beats | +0.2321 (0.0030) | beats |
| 100 | lognormal_0_0.5 | 0.9986 | 0.9932 | 0.9758 | +0.0054 (0.0005) | beats | +0.0228 (0.0011) | beats |
| 100 | beta_2_5 | 0.9009 | 0.7570 | 0.3235 | +0.1440 (0.0025) | beats | +0.5774 (0.0035) | beats |
SW does not win every skew cell at every n: it wins 22 of 24 and ties 2, both at chi-square(2), n=100, where SW minus AD is +0.0000 (0 paired SE, all draws reject under both) and SW minus S2 is +0.0001 (+1.4 paired SE) because every test is at the power ceiling; SW loses nowhere.
Same runner as stuff 1 (stuff/cycle94_skew_general.py) with only SEED = 94201 changed to SEED = 94105, run from a copy outside the repo with uv run --with numpy --with scipy python -I; the committed script is unchanged. 20000 paired draws per cell, one default_rng(94105) stream consumed in order n=25, 50, 100, laws normal, chi2(2), chi2(10), lognormal(0, 0.5), beta(2, 5). Definitions, exact-size calibration (empirical null quantile per statistic) and verdict rule (beats if gap > 2 paired SE, loses if gap < -2 paired SE, else tie) are unchanged. Wall clock 25 s. Tables are the script's output verbatim.
| n | W 5% crit | W null rate | A2 5% crit | A2 null rate | S2 5% crit | S2 null rate |
|---|---|---|---|---|---|---|
| 25 | 0.9192 | 0.0500 | 0.7260 | 0.0500 | 13.3951 | 0.0500 |
| 50 | 0.9534 | 0.0500 | 0.7415 | 0.0500 | 26.5091 | 0.0500 |
| 100 | 0.9749 | 0.0500 | 0.7430 | 0.0500 | 52.7091 | 0.0500 |
All three null rates are exactly 0.0500 by construction. W and S2 critical values agree with seeds 94201 and 94303 to within 0.0007 and 0.007. The A2 critical value at n=100 is 0.7430 against 0.7605 for seed 94303, a 0.0175 shift: the A2 null upper tail is long, so its empirical 95th percentile is the least stable of the three. It does not change any power verdict below.
| n | law | SW | AD | S2 | SW-AD (SE) | vs AD | SW-S2 (SE) | vs S2 |
|---|---|---|---|---|---|---|---|---|
| 25 | chi2_2 | 0.9233 | 0.8767 | 0.8363 | +0.0466 (0.0015) | beats | +0.0870 (0.0020) | beats |
| 25 | chi2_10 | 0.3023 | 0.2578 | 0.2682 | +0.0445 (0.0020) | beats | +0.0341 (0.0018) | beats |
| 25 | lognormal_0_0.5 | 0.6303 | 0.5722 | 0.5802 | +0.0581 (0.0020) | beats | +0.0501 (0.0019) | beats |
| 25 | beta_2_5 | 0.2182 | 0.1871 | 0.1422 | +0.0311 (0.0018) | beats | +0.0759 (0.0021) | beats |
| 50 | chi2_2 | 0.9993 | 0.9966 | 0.9802 | +0.0027 (0.0004) | beats | +0.0192 (0.0010) | beats |
| 50 | chi2_10 | 0.5814 | 0.4807 | 0.4415 | +0.1007 (0.0025) | beats | +0.1398 (0.0026) | beats |
| 50 | lognormal_0_0.5 | 0.9196 | 0.8701 | 0.8311 | +0.0495 (0.0017) | beats | +0.0886 (0.0020) | beats |
| 50 | beta_2_5 | 0.4869 | 0.3940 | 0.2139 | +0.0928 (0.0024) | beats | +0.2730 (0.0032) | beats |
| 100 | chi2_2 | 1.0000 | 1.0000 | 0.9997 | +0.0000 (0.0000) | tie | +0.0003 (0.0001) | beats |
| 100 | chi2_10 | 0.9070 | 0.8077 | 0.6696 | +0.0993 (0.0022) | beats | +0.2373 (0.0030) | beats |
| 100 | lognormal_0_0.5 | 0.9990 | 0.9945 | 0.9754 | +0.0044 (0.0005) | beats | +0.0236 (0.0011) | beats |
| 100 | beta_2_5 | 0.9061 | 0.7641 | 0.3191 | +0.1420 (0.0025) | beats | +0.5870 (0.0035) | beats |
SW does not win every skew cell at every n: it beats AD and S2 in 23 of 24 cells and ties SW minus AD at chi-square(2), n=100 (paired difference +0.0000, 0.0 paired SE, both tests reject all 20000 draws); the SW minus S2 verdict at that same cell is a 3.0 SE "beats" on 6 discordant draws that the two earlier seeds scored as a tie, and SW loses nowhere. Across three seeds the answer to the direction is the same: SW's skew advantage is general, not specific to chi-square(5).
Same runner as stuff 1 (stuff/cycle94_skew_general.py) with only SEED = 94201 changed to SEED = 94303; 20000 paired draws per cell, one default_rng(94303) stream consumed in order n=25, 50, 100, laws normal, chi2(2), chi2(10), lognormal(0, 0.5), beta(2, 5). Definitions, exact-size calibration (empirical null quantile per statistic) and verdict rule (beats if gap > 2 paired SE, loses if gap < -2 paired SE, else tie) are unchanged. Wall clock 25 s. Tables are the script's output.
| n | W 5% crit | W null rate | A2 5% crit | A2 null rate | S2 5% crit | S2 null rate |
|---|---|---|---|---|---|---|
| 25 | 0.9199 | 0.0500 | 0.7301 | 0.0500 | 13.3940 | 0.0500 |
| 50 | 0.9539 | 0.0500 | 0.7414 | 0.0500 | 26.5028 | 0.0500 |
| 100 | 0.9745 | 0.0500 | 0.7605 | 0.0500 | 52.7118 | 0.0500 |
All three null rates are exactly 0.0500 (MC SE 0.0015); critical values agree with seed 94201 to within 0.0005 (W), 0.010 (A2) and 0.005 (S2).
| n | law | SW | AD | S2 | SW-AD (SE) | vs AD | SW-S2 (SE) | vs S2 |
|---|---|---|---|---|---|---|---|---|
| 25 | chi2_2 | 0.9253 | 0.8747 | 0.8354 | +0.0506 (0.0016) | beats | +0.0899 (0.0020) | beats |
| 25 | chi2_10 | 0.3091 | 0.2555 | 0.2715 | +0.0536 (0.0020) | beats | +0.0376 (0.0018) | beats |
| 25 | lognormal_0_0.5 | 0.6363 | 0.5697 | 0.5800 | +0.0666 (0.0020) | beats | +0.0563 (0.0019) | beats |
| 25 | beta_2_5 | 0.2225 | 0.1814 | 0.1451 | +0.0411 (0.0018) | beats | +0.0774 (0.0021) | beats |
| 50 | chi2_2 | 0.9990 | 0.9962 | 0.9828 | +0.0028 (0.0004) | beats | +0.0162 (0.0009) | beats |
| 50 | chi2_10 | 0.5855 | 0.4790 | 0.4479 | +0.1064 (0.0025) | beats | +0.1376 (0.0026) | beats |
| 50 | lognormal_0_0.5 | 0.9224 | 0.8703 | 0.8387 | +0.0520 (0.0017) | beats | +0.0836 (0.0020) | beats |
| 50 | beta_2_5 | 0.5023 | 0.3976 | 0.2190 | +0.1048 (0.0025) | beats | +0.2833 (0.0032) | beats |
| 100 | chi2_2 | 1.0000 | 1.0000 | 0.9999 | +0.0000 (0.0000) | tie | +0.0001 (0.0001) | tie |
| 100 | chi2_10 | 0.8993 | 0.7982 | 0.6629 | +0.1011 (0.0022) | beats | +0.2364 (0.0030) | beats |
| 100 | lognormal_0_0.5 | 0.9989 | 0.9940 | 0.9776 | +0.0048 (0.0005) | beats | +0.0213 (0.0010) | beats |
| 100 | beta_2_5 | 0.8957 | 0.7469 | 0.3203 | +0.1488 (0.0025) | beats | +0.5754 (0.0035) | beats |
Every one of the 24 verdicts matches stuff 1. Largest power shift between seeds is 0.0118 (S2, chi2(10), n=100), about 2.5 SE of an independent-seed difference (sqrt(2) x 0.0033); the smallest SW gap that is a "beats" in either seed is SW minus AD at chi2(2), n=50 (+0.0028 here, +0.0030 there, about 7 paired SE both times). The paired SE of zero at chi2(2), n=100 for SW minus AD is because all 20000 draws reject under both tests.
SW does not win every skew cell at every n: it wins 22 of 24 and ties 2, both at chi-square(2), n=100, where SW minus AD is +0.0000 (0 paired SE; the difference is identically zero, all draws reject) and SW minus S2 is +0.0001 (+1.4 paired SE) at the power ceiling; SW loses nowhere, same as seed 94201.