Asked to harden the rotation and legacy orthogonality probes into instruments that can certify a candidate, by grounding 17 named defects. Fourteen iterations closed 14 of the 17 and landed five correctness fixes โ with an explicit finding that neither probe can certify anything yet.
| Quantity | Value | Meaning |
|---|---|---|
| Attack items closed | 14 of 17 | three never reached |
| Oracle parity | 2.44e-15 against the reference R package | the binding statistic is now pinned |
| Unanimity-rule false-veto rate | 72% below the line | the guard measures line-proximity, not instability |
| Shuffled-null headroom | 15x (rotation, 60 of 60), 7.7x (legacy, 400 of 400) | bands sit well above chance |
| Data-driven BAN floor | 4,720 bar-equivalents vs a declared floor of 1,000 | the declared floor is 4.7x too low |
| Firing | What it did |
|---|---|
| 1 | Pinned the statistic to its author's own R package and refuted an earlier divergence โ it had been measured against a third-party package |
| 4 | Measured the unanimity guard on genuinely independent data: it vetoes 72% of the time anyway |
| 7 | Landed the shuffled-data control on both probes โ both correctly report nothing |
| 8 | Found the volatility regime labels are computed with lookahead: 2-5% of past rows get relabelled on each re-run |
| 14 | Confirmed row-order invariance, then hit the iteration cap; loop stopped and its cron cancelled |
Three named attack items remain open and unreached before the cap โ all hermetic, so they need only the loop re-armed. Beyond that the OPERATOR owes sign-off on the two pre-registration drafts (every remedy is a dial) and a supervised full-width read on bigblack for three queue items. One research gap needs a 2001 paper retrieved off-box.
The campaign's own definition of done requires every attack item closed with a recorded reason; three are open with no reason but the clock, and the loop's cron was cancelled.
'CAP REACHED 2026-07-30. 14 iterations run, 14 of 17 items addressed, loop stopped and its cron cancelled.' (LOOP_PROMPT.md line 3)
Lifecycle status is process state, not a judgement of the findings. Results are stated as numbers with their uncertainty.
Goal: make the rotation and legacy orthogonality probes operational as certifying instruments โ not merely as measuring ones. Both now read a correct substrate (#674), but neither can currently defend a verdict.
On 2026-07-29 an 11-source primary-literature retrieval established that the symptoms this campaign had been reading as data findings are mostly properties of the estimator and the decision rule. The ledger below records each item as it is grounded.
| Symptom | Actually a property of | Mechanism |
|---|---|---|
| A candidate "sits 0.0008 from the line" | Estimator | ฮพ randomly breaks X-ties, so it is a randomized statistic. Measured spread 0.0432 โ 54 margins |
| Sub-slice readings cross the line | Estimator | attainable max is (nโ2)/(n+1), and โn scaling gives a quarter ~2ร the null SD |
| 30.9% tied values in one cell | Data (consequences estimator-side) | Y-ties change the denominator and inflate ฯยฒ; X-ties inject Monte-Carlo noise |
| Power collapses as cells are added | Decision rule | 558 crossing opportunities under a zero-tolerance conjunction |
| A fixed absolute 0.50 line on a max | Decision rule | no null distribution exists for a max of ฮพ statistics โ by the author's own statement |
Neither probe can certify a candidate yet, and that was the expected outcome. The loop was authorised to land zero-parameter correctness fixes and to measure everything else. Every remaining blocker is either a dial needing pre-registration, or a re-baseline needing a full-width bigblack read โ both out of scope by design.
| Capability | Rotation | Legacy |
|---|---|---|
| Reads one row per bar ยท deterministic fetch ยท values uncorrupted | yes #674 | yes #674 |
| Estimator pinned to a canonical oracle | yes 2.44e-15 vs XICOR โ iter 1 | n/a |
| Gate reproducible ยท row-order invariant | yes iter 3, iter 14 | untested |
| Reports nothing on shuffled data ยท bands above noise floor | yes 15ร headroom โ iter 7 | yes 7.7ร โ iter 7 |
| Estimator stable near a decision line | band safe, margins not iter 2 ยท fix available, not wired iter 3 | unknown L-4 unreached |
| Comparison panel legitimate | blind spot iter 5 | over-credits +0.42 levels, +0.16 trade IDs โ iter 5, iter 6 |
| Labels free of lookahead | no 2โ5% of past rows relabelled per re-run โ iter 8 | n/a |
| BAN verdict is data-driven | only above 4,720 bar-equiv vs declared 1,000 โ iter 10 | untested |
| Verdict statistically calibrated | no 72% false veto iter 4 ยท drifts with N iter 9 ยท permutation calibrates the wrong null iter 13 | no L-3 unreached |
| Can certify a candidate | not yet | not defensibly |
| Artifact | What |
|---|---|
| Final status page | Per-capability verdicts, the 14-item attack-list outcome, and the operator handoff queue. |
| LOOP_PROMPT.md | The iteration contract: attack list, guardrails, autonomy boundary, bigblack handoff queue. |
| KB.md | Standing knowledge for the loop โ what is settled, what is contested, what must not be assumed. |
| CLAUDE.md | Navigator for AI re-entry after compaction. |
| Research SSoT | findings/evolution/audits/2026-07-29-probe-hardening-loop/SOTA-RESEARCH-CASCADE-DECIDABILITY.md โ 11 primary sources, 63 recorded gaps. |
| Harnesses | findings/evolution/audits/2026-07-29-probe-hardening-loop/harness/ โ every committed number is re-runnable from here. |
Computation runs on the laptop. Hermetic by default: committed fixtures
(tests/fixtures/*-bars-close-sample-10k.csv, 10,000 real closes, 2.63% ties), synthetic
generators with known ground truth, and CRAN XICOR 0.4.1 under R 4.6.1 as the ฮพ oracle
reference โ Chatterjee's own package.
Real-cell reads are permitted narrow only, under the additive
narrow_2gib_profile (2 GiB / 2 threads / โค8 columns, readonly=2). Measured
2026-07-29: at 2 GiB a full 125-column deduplicated fetch fails (Code 241) on large cells at
every configuration tried, and lowering LIMIT does not help because
close_time_us is not in the sort key โ the whole partition is scanned and FINAL-merged
regardless. A 4-column read passes on every cell, worst case 9.35 s. So the frozen 5 GiB
profile is the minimum for full-width work, and a full R2 re-run stays a supervised
operation.
One row per iteration, appended in order. Rows are never edited or reordered โ a wrong row is superseded by a later row, not corrected in place. Each row links the iteration page that carries the evidence.
| Iter | Date | What was grounded | Status | Page |
|---|---|---|---|---|
| 1 | 2026-07-29 | ฮพ pinned to Chatterjee's own implementation โ and the prior 2e-3 divergence refuted.
Leg 1 (continuous X, so both sides deterministic): exact parity vs CRAN XICOR 0.4.1, max
|diff| 2.44e-15 across 15 cases, Y-tie fractions 0/5/10/30.9/50% ร independent / quadratic /
near-monotone. Leg 2 (X-ties, so XICOR is random): repo consistent with XICOR's B=2000
rearrangement distribution on all 6 cases, two-sided smoothed p โฅ 0.0060 vs ฮฑ=0.00167.
The earlier 2e-3 gap was against xicorpy, not canon โ XICOR never branches on
ties, so the tie-formula hypothesis had nothing to attach to; and xicorpy's tie
detector checks duplicate (x,y) row pairs, not tied values in a column, so it reports "no
ties" on a 30.9%-tied column. Gate landed as /xi:oracle. Also recorded: this harness
produced a false positive on itself (a min/max support test over 200 draws flagged an
ordinary draw 3.1e-5 below the observed min), replaced with the smoothed two-sided p-value the
research prescribes. One non-central case (z=โ2.73) is carried forward as evidence for R-2,
since a deterministic hash tie-break is one specific rearrangement rather than a random draw. |
FIXED R-3 |
iter 1 |
| 2 | 2026-07-29 | ฮพ's tie-break jitter is ordinary sampling error (nโยฝ) โ the 0.006 moat survives, the
0.0008 margin does not. Fitted exponent โ0.465 / โ0.493 / โ0.521 (Rยฒ 0.984โ0.997) across tie
fractions 0.10 / 0.309 / 0.50, so Chatterjee's "ignorable if n is large" holds for this estimator.
At the cascade's own n = 3,990 near the line: sd 0.00171โ0.00295 (0.28โ0.49ร moat), and
0.00436 (0.73ร moat) in the realistic worst case of a rate-valued kernel on a 201-level
lattice. So the band placement is safe at ~1.4 ฯ, but the reported 0.0008 margin is 0.18 ฯ โ
categorical_recurrence_rate_close_ties's 0.4992-vs-0.50 verdict is seed noise.
Decisive reframe: exposure is per-KERNEL, not per-cell. The real BTCUSDT fixture through the
probe's own value-row construction gave sd exactly 0.00000 โ a continuous derived series has
no X-ties, so ฮพ is deterministic; the 30.9% tie rate lives in raw closes, not in a rolling
statistic. Only lattice-valued kernels (rates, counts, signs) are exposed. Also cross-validates
the research: its 0.0080 at n=2,000 is reproduced here as 0.00782 โ and identified as a
near-null measurement, which is why my pre-written prediction of 0.0057 was ~2ร too high.
Scopes R-2 from "average everything" down to "lattice-valued kernels adjudicated near a
line". |
GROUNDED R-1 |
iter 2 |
| 3 | 2026-07-29 | De-randomised ฮพ lands as a zero-parameter capability, and the iter-1 oracle gate stops
flaking. Both from one root cause โ the same X-tie randomness had infected the gate itself,
whose p-value moved 0.0060 โ 0.0050 โ 0.0030 against a 0.00167 threshold across re-runs.
Seeding XICOR's draws (its own manual prescribes this) makes the gate bit-identical across
runs (md5 match), worst case now a deterministic p=0.00600 at 3.6ร margin.
chatterjee_xi_derandomised() averages over rearrangements and reports its own
MC-SE โ the property that makes it safe without a pre-registered threshold. The 1/โR law was
verified, not assumed, across 200 replications (ratios 0.899โ0.985), and the reported
MC-SE tracks true sd closely (R=32: 0.000804 vs 0.000781). Budget is derived: R=37
resolves the 0.0008 margin at 1 SE, 147 for 2ร headroom, 330 for 3ร. Free for continuous kernels
(short-circuits to reps=1, mc_se=0, 1 ms). Cost is negligible โ R=128 across 62 cells is
7 seconds against a 41-minute R2 run. Cascade deliberately NOT rewired: that would
move every verdict and belongs to the supervised re-baseline, so the capability and its evidence
land, adoption stays queued. |
FIXED R-2 |
iter 3 |
| 4 | 2026-07-29 | The zero-tolerance unanimity guard measures nearness to the line, not instability of the
data โ 72% false veto on candidates that genuinely belong below it. Measured against a known
ground truth with the repo's own xi_cell_vote_stable /
xi_worstcell_verdict_guarded, 60 candidates per level, 62 cells, n=3,990, continuous
x so estimator jitter is excluded and only the RULE is under test. False-veto is 0% at every
true ฮพ from 0.00 to 0.40 (nothing is ever flagged), then collapses: at ฮพ=0.45, worst-cell
0.4740 โ below the 0.50 line โ only 17/60 certify, refused by the unanimity clause rather
than by magnitude. A flat tolerance k cannot fix this: required k is 0 below 0.40, โ2 at
0.45, โ38 of 62 at 0.48 โ any k large enough to recover power near the line nullifies the guard
everywhere else. That refines the research's k-FWER recommendation rather than following it.
Self-attacked: the ฮพ=0.48 row is NOT claimed as false veto โ its worst-cell mean is 0.5046,
above the line, so refusing it is defensible; the argument rests on 0.45 alone. Incidentally
measured the max-over-62 selection bias in our own instrument: worst-cell sits +0.024 above
per-cell truth at ฮพ=0.45. Four remedy options drafted with free parameters named; no dial
touched, guard not deleted (its deletion argument is second-hand and about the sample mean โ
gap #962). |
QUANTIFIED R-6 |
iter 4 |
| 5 | 2026-07-29 | Prediction wrong, and the direction reverses: neither panel is correct. I predicted โฅ2 of 7 candidates would flip with legacy too harsh on price-level correlation. Zero flipped โ all seven are functions of log-returns, hence stationary, hence they never touch the price-level family. Return-based kernels are immune to this defect. Adversarial arms added after that null result found the single flip runs the opposite way: a pure function of price level is BAN under legacy (correct) and PASS under A1 (blind spot) โ A1 cannot see the levels a candidate is redundant with. The mechanism I predicted is real but sub-threshold: an independent-but-trending candidate has ฯ inflated +0.42 (0.357 โ 0.776) by the level family alone, yet stays under the 0.85 band. Consequence: the obvious fix โ apply A1's exclusion to legacy โ is not a pure improvement, it trades over-crediting for blindness. No code changed; L-1 moves from "confirmed defect, apply A1" to "characterised, both panels defective in opposite directions, operator decision needed". Harness artifact disclosed: the ฯ=1.0000 is trivially true because the fixture lacks vwap so I synthesised it as the same rolling mean as the candidate โ the exactness is an artifact, the direction is not. | GROUNDED L-1 |
iter 5 |
| 6 | 2026-07-29 | The trade-ID panel was a declared treatment, not a bug โ but the head-to-head's "legacy" arm
ran a panel legacy would never use. The harness self-documents it at
step2b_real_legacy_loo.py:175: "a1_panel_excluded bypassed for the legacy panel
ONLY โ that IS the variable under test", and it runs both arms. The bug framing is
refuted. What survives is sharper: legal_all is the rotation universe, and
it is a strict superset of legacy's own panel by exactly 6 columns (both trade IDs,
gap_trade_count, is_liquidation_cascade, is_orphan, max_gap_duration_us) with zero columns
going the other way. Neither probe's own rules admit trade IDs; only legal_all does.
Empirically a monotone trade ID is a stronger artifact than price level: the same
independent-but-trending candidate that levels lifted to 0.776 (sub-threshold, iter 5) is lifted
to 0.9340 โ WATCH, the trade ID adding +0.16 and crossing the 0.85 band. Stationary
return-based kernels untouched (ฯ โค 0.42) โ same trend-specific immunity as iter 5. Consequence is
interpretive, not a code fix: that arm is not "the legacy probe". Self-correction disclosed:
my first run compared against a1_panel_excluded alone and reported 13 differing
columns; legal_all still applies STR_KEY_PLACEHOLDER/PURE_META/type filters, so the
real figure is 6 โ corrected before publishing. |
GROUNDED L-2 |
iter 6 |
| 7 | 2026-07-29 | The shuffled-null gate lands for both probes, and both bands sit well above their noise
floors. Taken ahead of the suggested order because X-1 is a standing operator hard rule
and six iterations had produced measurements with no gate at all โ a compliance gap in the
loop's own work. The null permutes the candidate within each cell, destroying association while
leaving every marginal (ties, skew, point masses, panel correlation) exactly intact, so anything
still reported is the instrument's own artifact. Results โ rotation ฮพ_worst: mean 0.0256 ยท p95
0.0342 ยท PASS 60/60; legacy worst |ฯ|: mean 0.0600 ยท p95 0.1106 ยท PASS 400/400.
Neither probe manufactures redundancy on shuffled data, and both POSITIVE controls fired
(BAN at ฮพ 0.9815 and ฯ 0.9925) so neither leg is inert. The ฮพ null mean reproduces iter 4's
0.0256 exactly โ two independently written harnesses agreeing. Noise floors, the number this
was for: ฮพ p95 0.0342 vs the 0.50 line = 15ร headroom; legacy p95 0.1106 vs 0.85 =
7.7ร. Neither band is set inside its own noise โ a different question from the
panel-Rยฒ defect, which failed for sitting below where real features live, not below chance.
Landed as /xi:structural-gates in /xi:check-full, with
/xi:doctor extended to verify both harnesses. Limits: the legacy panel here is 7
columns not ~19, so 0.1106 is a lower bound (~0.14 extrapolated); synthetic cells are independent
so the floors are optimistic; and X-2 remains open and may not transfer โ a redundancy
screen has no train/test split, so the rule needs restating before it can be a gate. |
FIXED X-1 |
iter 7 |
| 8 | 2026-07-29 | The volatility regime label is computed with lookahead. X-2 had to be restated first โ a
redundancy screen has no train/test split, so the transferable invariant is "perturbing FUTURE
rows must not change any label or reading assigned to PAST rows". Under that test,
regime_labels() computes volatility on a trailing window (correct) then buckets
it against globally computed terciles โ so a bar's regime is assigned relative to volatility
that had not happened yet. Magnitude is entirely scenario-dependent, which is itself the
finding: operationally 2.25% of past rows relabelled by appending just 5% more bars (2.47%
at +10%, 5.24% at +25% and +50%), against 65.74% under a 2.5ร volatility stress โ the
stress figure is a bound and must not be quoted as the operational number. My prediction of 5โ25%
was wrong in both directions. The test discriminates: sess_lab 0.00%,
trend_lab 0.00%, ฮพ sub-slice bit-identical โ it isolates the one axis consulting a
global statistic. Not a prediction leak (nothing is forecast); the harm is
irreproducible stratification, and it lands on the coverage ledger, which accumulates
across runs and would therefore be summing observations taken under different stratifications.
No existing verdict is invalidated โ within one run the stratification is self-consistent.
Four remedies drafted; all but one invalidate all accumulated coverage, so it is the operator's
call. Harness runnable as /xi:future-perturbation but deliberately kept out of
check-full โ wiring a known-failing gate into the suite would force the decision by making CI
unusable, which is coercion rather than reporting. check-full stays green. |
QUANTIFIED X-2 |
iter 8 |
| 9 | 2026-07-30 | Quadrupling coverage consumes the entire PASS moat โ the cost of the expansion plan, quantified. Cells cut as overlapping windows of one master series, which is faithfully why the real 62 are dependent. The Gaussian maximum law fits almost exactly: displacement/sd vs โ(2 ln N) has slope 0.964โ1.079 and Rยฒ 0.966โ0.997 across every level and overlap. Correlation damps it ~12% (N=62: 0.0307 at overlap 0.9 vs 0.0347 at 0.0), so iter 4's +0.024 and iter 7's floors โ both on independent cells โ are conservative, which is the right direction to be wrong in. The number that matters: 62โ248 cells moves the worst-cell statistic +0.0053 to +0.0098, against a PASS moat of only 0.006 (0.494 ceiling โ 0.50 line). So a candidate at 0.494 on today's grid lands near 0.501 on a 4ร grid โ over the line without becoming one bit more redundant. Pure selection: the candidate didn't change, the max got more chances. All three predictions held. Refines the research's caution: it said don't subtract the โ(2 ln N) drift because Gaussian results don't transfer to a bounded tied rank statistic โ this shows the scaling does describe ฮพ empirically, but subtraction still needs a per-cell sd (a modelling choice), real cells differ in n and tie structure, and any correction is parameter-bearing. No dial touched. Operational takeaway: a verdict is only comparable to another taken at the same N. | QUANTIFIED R-9 |
iter 9 |
| 10 | 2026-07-30 | BAN is only data-driven above 4,720 bar-equivalents โ 4.7ร the declared FLOOR_BARS=1000 โ and
iteration 2's ceiling claim was overstated. The (nโ2)/(n+1) ceiling is attained
exactly (|diff| โค 1.11e-16). At the cascade's typical scale the fullโquarter ceiling gap is
0.0023, just 1% of the floor-scale gap (0.1719) โ negligible against either line, so
the ceiling is NOT a general mechanism for sub-slice disagreement and my iter-2 framing
implied otherwise. Where it does bite is sharper than predicted โ three regimes, not one:
below 59 value rows the full cell itself is capped under 0.95 so BAN is silently
unreachable; between 59 and 236 rows (1,180โ4,720 bar-equiv) the full cell can exceed 0.95 but
the quarter cannot, forcing "unstable" by arithmetic rather than evidence; above 236 rows
stability reflects the data. Verified through the real xi_cell_vote_stable, not
inferred from reading code. The guard's docstring says "BAN can never rest on noisy thin-cell
evidence" and it does achieve that โ but in regime 2 the exclusion is not evidence-quality
filtering, and 4,720 is a threshold nobody chose, emerging from FLOOR_BARS ร quarters ร the
0.95 line. PASS is never affected (a quarter needs only 20 rows to attain 0.50). Self-attack
recorded: my prediction was wrong in shape (regime 1 unanticipated), the forced? flag
has an off-by-one at exactly 236 rows, and the measurement uses a near-perfect relation so it
establishes the mechanism, not its frequency. Nothing changed โ all three are dials. |
GROUNDED R-4 |
iter 10 |
| 11 | 2026-07-30 | The campaign's one CONTESTED item resolves โ by measurement, without the unretrievable
citation. The dispute was whether a closed-form standardisation can recover comparability
between sub-slice lengths, blocked because the fixed-b refutation was second-hand and about
the sample mean (gap #962). The question is directly measurable for ฮพ. Across 2,000
replications at n=3,990: โk scaling holds in all four arms (max rel. error 1.6โ2.5%) and
shape is preserved in all four โ so standardisation DOES work; the sub-slice rule is
repairable, not necessarily deletable, supporting the c.6 position. But ยง(b)'s suspicion was
right for a different reason than it gave: the constant is not universal. z_sd using 2/5 โ
continuous 0.974โ0.998 (collapses), 30.9% ties 0.991โ1.009 (collapses), 5 levels
1.069โ1.092 (fails), binary 1.580โ1.605 (fails badly). That last figure matches Thm 2.2's
predicted โ(1/0.4)=1.581 to three decimals โ theorem reproduced, not cited. My prediction was
wrong (I expected 30.9% ties to break it; they didn't), and rather than assert the "Y is still
nearly continuous" explanation I added 5-level and binary arms to test it โ confirmed. Concrete
consequence: LINKUSDT@100 is in the safe zone, but sign-valued kernels like the shipped
bar_sign_markov_flux are exactly where a hard-coded 2/5 understates sd by 58%. The
sound repair is Thm 2.3's plug-in ฯฬยฒโ โ measurement shows it is necessary, not optional. Nothing
changed; KB entry can move CONTESTED โ resolved-with-caveat. Limit that keeps ยง(b) partly alive:
contiguous splits of i.i.d. data were tested, so serial dependence remains unaddressed. |
GROUNDED R-5 |
iter 11 |
| 12 | 2026-07-30 | ฯฬยฒโ is fit for purpose โ the repair route iteration 11 identified is green. Iter 11 argued
from theory that ฯยฒ must be estimated; this tests whether the estimator delivers, since "a
consistent estimator exists" and "this implementation is calibrated on my data" are different
claims. 1,000 null draws ร 4 regimes ร 2 lengths through XICOR(ties=TRUE). sd accuracy 7/8
within 5%, including both binary rows โ the case that defeats the fixed constant. The
estimator demonstrably responds to discreteness rather than passing it through: reported
sd รท โ(2/5n) = 1.0000 continuous, 1.0000 tied31, 1.0908 levels5, 1.5811 binary โ exactly
โ(1/0.4), the theoretical Bernoulli(ยฝ) value. So the shipped
bar_sign_markov_flux exposure iter 11 flagged is handled. p-values uniform
8/8, binary included โ the normal-approximation risk I named in advance did not materialise.
The one mismatch chased rather than waved: tied31@3990 reports sd 5.7% high; I first checked
my own harness (2,757 distinct of 3,990 = tie fraction exactly 0.309, faithful), then found
the mechanism โ at 30.9% ties the estimator returns exactly the no-ties constant while the
true sd sits just below, so it is marginally wrong in the conservative direction. Confirmed
downstream: tied31 under-rejects (P(p<.05) = 0.040/0.045 vs nominal 0.05). Inference stays valid,
loses a little power. Nothing changed โ landing the standardisation moves every sub-slice
comparison and is the operator's call. |
GROUNDED R-8 |
iter 12 |
| 13 | 2026-07-30 | A permutation reference fixes the max but calibrates the WRONG NULL โ and my own size check was
too lenient. Substantive finding, which held as predicted: permuting the candidate within each
cell absorbs the selection bias, the cell dependence and the per-cell heterogeneity with no sd
estimate and no Gaussian assumption โ it solves the max-selection problem cleanly. But
shuffling destroys all association, so the reference is "ฮพ = 0" while the cascade's
rule is "ฮพ_worst < 0.50", a practical-redundancy threshold. Measured: the permutation test
reaches 90% power at per-cell ฮพ โ 0.094 while the fixed line fires 0% across the entire
sweep (iter 9 put its firing point near ฮพโ0.45) โ roughly 5ร apart. The two problems
are separate; permutation fixes the first and cannot fix the second, which refines the
research's c.3 recommendation. Self-criticism, recorded not re-tuned: the harness printed
"VALID" for a size of 0.092 against nominal 0.05 โ 2.09 se out, exact binomial P=0.038. That
is not a clean pass and my 3ฯ criterion waved it through. A permutation test should be exact.
Likely cause is a design question the research does not address: I permute each cell
independently while the observed cells are overlapping windows, so the reference is built
under a different dependence structure โ and the naive expectation was that this would be
conservative, whereas it went the other way. I have no explanation and did not invent one.
Second flaw disclosed: dep_c is a mixing coefficient, not ฮพ, so the sweep never
reached the decision-relevant band near 0.45. QUANTIFIED, not FIXED โ adoption needs the size
settled, the permutation scheme resolved, and ฮฑ/B pre-registered. Nothing changed. |
QUANTIFIED R-7 |
iter 13 |
| 14 | 2026-07-30 | Row-order invariance holds exactly โ and PR #674's re-ordering, which I introduced, moved
nothing. X-3 read literally would pass vacuously (every harness here is seeded), so it was
aimed at the metamorphic version: re-order rows without changing content, the verdict must not
move. The stake is the loop's own: iteration 1 changed the fetch to
ORDER BY close_time_us DESC, first_agg_trade_id DESC, which reorders every row tied
on close_time_us โ and BTCUSDT@250's window carries 40,054 such ties. If ฮพ were
order-dependent, that "pure correctness fix" would have silently moved verdicts.
Content-addressed keys give exact invariance โ |diff| 0.00e+00 at every tie rate
including 0.95 โ while the positional default demonstrably does not (1.71e-03 / 4.47e-04 /
5.27e-03), so the negative control fires 3/3 and the gate can bite. Sizing that: the
positional drift reaches 5.27e-03 against a 0.006 PASS moat โ re-ordering alone could move
a verdict nearly the full width of the moat, which is what the content-addressed fix bought.
Replaying #674's exact permutation leaves ฮพ bit-identical (0.00e+00), and
xi_cell_vote_stable returns an identical value and stability flag. Verified,
not assumed. Self-consistency noted: the harness had to use the unique key rather than
close_time_us as identity โ precisely the degeneracy iteration 1's G2 gate now refuses, arrived at
independently. Landed as /xi:order-invariance in /xi:check-full (unlike
X-2, which is real but failing and stays out). Suite green: oracle 2.44e-15, shuffled null clean,
order-invariance exact. Zero free parameters. |
FIXED X-3 |
iter 14 |
| โ | 2026-07-30 | CAP REACHED โ loop stopped after 14 iterations. Neither probe can certify a candidate yet, and
that was the expected outcome. 14 of 17 attack items addressed (3 legacy items unreached);
14 committed harnesses; 2 pre-registration drafts; 16 commits. Five zero-parameter fixes
landed: the ฮพ oracle gate (the binding stage was the repo's only unpinned statistic โ now
exact to 2.44e-15 against Chatterjee's own package), the de-randomised estimator with
self-reported MC-SE, a seeded gate (the iter-1 gate was itself flaking), and the X-1 and X-3
structural gates โ all wired into /xi:check-full, suite green. Four items
quantified and left untouched because each is a dial: the unanimity guard's 72% false veto,
the volatility-tercile lookahead, the worst-of-N coverage cost, and the permutation reference's
wrong-null result. The loop corrected the record and itself: two campaign framings refuted
(L-1 ran the opposite way; L-2's "bug" was a declared treatment), the one contested item resolved,
one of my own earlier claims overturned (iter 2's ceiling argument), two of my own harnesses
caught producing bad output, and predictions wrong in 5 of 14 iterations โ recorded as
findings, not smoothed over. The guard was never deleted โ gap #962 still blocks it,
and iter 11 showed it is repairable anyway. Everything remaining needs either your
pre-registration or a full-width bigblack read; both were out of scope by design. Handoff queue
and per-capability verdicts on the
final
status page. |
CAP REACHED loop stopped |
final status |
Status vocabulary: GROUNDED measured, no fix needed ยท FIXED zero-parameter correctness fix committed ยท QUANTIFIED measured, fix needs pre-registration (draft written, dial untouched) ยท BLOCKED recorded reason, moved on.
P_50 from the 66 shipped columns on deduplicated data โ mechanical, k=50 frozen, zero degrees of freedom.k provably cannot work.