A plateau criterion of the form 'the last interval contributes at most 10% of the total' fires when the last interval is NEGATIVE, so it reports a plateau for a series that reversed - and the guard that caught it was a separate monotonicity check written for a different reason
also called a one-sided threshold on a two-sided quantity · why K1 fired and does not count · the monotonicity guard earned its place
A test written to ask whether a change had stopped - is the last step small? - answered yes only because the last step went backwards, and a backwards step is also a small one by that arithmetic. A separate check that the series moved only one way caught it, and without that second check the beat would have reported a clean result that was the opposite of the truth.
The same thing, for a scientist
**The defect, in one line.** A criterion firing on `L = [A(t2) - A(t1)]/A(t2) <= threshold`, intended to mean *the effect has stopped growing*, also fires whenever `A(t2) < A(t1)` - because a negative numerator satisfies any positive threshold. **Measured here: `L = -0.1897` and `-0.4328` on two populations, both satisfying `L <= 0.10`, and the scoring code printed "K1 FIRES - PLATEAUED BY 24 h" for a series that rose by 0.0609 and 0.1182 in its last interval** [E1]. **What saved it was not the criterion and not a review of the output - it was a guard written for a different purpose.** K0 asked only *is the series monotone non-increasing*, pre-registered as *"a guard, not a result"*, with the declared consequence that its failure suppresses the kinetic criteria. K0 failed on both sets, RK2 fired, and K1, K2 and K3 were suppressed. **The `L` strings survive verbatim in `results.json` beside a `SUPPRESSED_BY_RK2` field, because the size of a criterion's error is a result.** **The transferable form, which is not about time series.** *Whenever a criterion is a ratio or difference whose numerator is intended to be positive, the threshold is one-sided and the quantity is two-sided.* Three shapes in this corpus have it: | shape | intended reading | what it also fires on | |---|---|---| | `(A_late - A_early)/A_late <= k` | the effect has plateaued | the effect **reversed** | | `(1 - V)/(1 - G) <= k` (this corpus's `F`) | the weaker drug achieves a small share | `V > 1`, i.e. the mark **rose** under the drug - `F` then goes negative and reads as 'tiny' | | `abs(X_a - X_b) < k` (this beat's P1, P3) | the two arms agree | nothing; **an absolute value is correctly two-sided and is the fix** | **The fix is one of three things and all three are cheap.** Take the absolute value, as P1 and P3 do. Add a separate sign or monotonicity guard whose failure suppresses the criterion, as K0 does. Or state the criterion as a two-sided interval - `0 <= L <= 0.10` - which is what K1 should have said and did not. **And note the near-miss that makes this worth an entry.** `F` in this corpus has the second shape. Q122 measured `V = 1.0829` in one cell - F3_NT's H3K79me2 at F3's own top-0.1% set - which gives `1 - V = -0.0829` and an `F` of about -0.10. **That cell is in Q122's committed `results.json` and is not one of the six `F` values it reported**, so nothing went wrong; but the arithmetic to produce a negative `F` that reads as a small positive one is already present in this corpus's data.
Why the review step would not have caught it
The output read "K1 FIRES - PLATEAUED BY 24 h" on both populations, with L = -0.1897 and -0.4328 printed beside it. A negative L is visible in the output. It was not caught by reading the output; it was caught because a different criterion mechanically suppressed it.
That ordering matters for how a beat is built. A verdict string that contains the word FIRES is the thing that gets quoted into a summary, and the number beside it is the thing that does not. This project has a recorded rule about exactly that - the last line is the one that gets quoted - and the defence that worked here was mechanical rather than attentive: a guard whose failure changes what the results file says, not a note asking the reader to check the sign.
So the rule is: when a criterion's statistic can go negative, do not rely on noticing. Write the guard.
The related shape: a criterion whose statistic is bounded only when a guard holds
L is bounded in [0, 1] if and only if the series is monotone. That was known at writing time - this beat's pre-registration says so in as many words, "it is dimensionless, it is bounded in [0, 1] when the series is monotone, and a plateau is exactly the statement that L is small. K0 guards the monotonicity that makes it bounded" - and the criterion was still written one-sided.
Knowing that a statistic needs a precondition is not the same as encoding the precondition. The pre-registration encoded it as a separate criterion whose consequence was declared, which is why the beat recovered. Had K0 been written as a sentence in the caveats instead of as a scored criterion with a declared suppression rule, the beat would have reported a plateau.
| defect shape | a one-sided threshold on a statistic that can take either sign |
|---|---|
| absence class | measured-not-analysed |
| absence class note | The instances here were found in this beat's own output. NO corpus-wide sweep for one-sided thresholds on two-sided statistics was run, so the prevalence of this shape among the 624 stated falsifiers and the criteria in analyses/*/PREREGISTRATION.md is unmeasured. That sweep is pure text analysis over files already on disk - an afternoon, no download, no wet work - and it is filed measured-not-analysed for that reason rather than as a never-measured gap. |
| absence class assigned | 2026-09-23 (Q124) |
instances encountered
[ "L = [A_late - A_early]/A_late <= k, intended as 'plateaued', also fires when the effect reversed - OBSERVED in this beat, suppressed by a separate guard", "F = (1 - V)/(1 - G) <= k, intended as 'the weaker drug achieves a small share', goes negative when V > 1 - NEAR-MISS, a V of 1.0829 exists in Q122's committed JSON and is not among its reported F values", "abs(X_a - X_b) < k - correctly two-sided; this is the fix, and this beat's P1 and P3 use it" ]
fixes
[ "take the absolute value", "add a separate sign or monotonicity guard whose failure SUPPRESSES the criterion, with the suppression declared in advance", "state the criterion as a two-sided interval, e.g. 0 <= L <= 0.10" ]
- A criterion that can fire in the direction opposite to its intent is worse than no criterion, because it produces a confident pre-registered verdict. Pre-registration is this project's main defence against post-hoc reading, and a mis-signed threshold turns that defence into a source of false confidence with the pre-registration's authority behind it.
- The fix that worked was a guard written for a different reason, which means the recovery was partly luck. If the next beat writes a plateau criterion without a monotonicity guard, nothing in the validator, the absence-class checker or the join checker will notice.
- How many of this corpus's 624 stated falsifiers and the scored criteria across analyses/*/PREREGISTRATION.md carry a one-sided threshold on a two-sided statistic? The sweep is text analysis over files already on disk and was not run.
- Does the F statistic need redefining so that V > 1 is not silently absorbed? Reporting F as undefined when V > 1 - the same treatment Q122 already gives it when G >= 0.95 - would be consistent with how this corpus already handles an uninterpretable denominator, and no beat has proposed it.
- Are there criteria in this corpus whose statistic is bounded only under a precondition stated in the caveats rather than encoded as a suppressing guard? Those are the ones that would fail the way this one nearly did, and they are identifiable by grepping for 'assuming' and 'provided that' in criterion text.
- E1strong confidence 4 of 5: Replicated in peer-reviewed work by more than one group.dataset
In this beat's ARM 1, the plateau statistic L = [A(24h) - A(16h)]/A(24h) with A(t) = 1 - V(t) evaluates to -0.1897 at the FLAG-defined set and -0.4328 at the mark's own set, both satisfying the pre-registered firing condition L <= 0.10, while the underlying series rose by 0.0609 and 0.1182 respectively between 16 h and 24 h; the pre-registered monotonicity guard K0 failed on both sets, refutation RK2 fired, and the declared consequence suppressed K1, K2 and K3. Separately, Q122's committed results.json contains V = 1.0829 (F3_NT H3K79me2 at F3's own top-0.1% set), for which the corpus's F = (1-V)/(1-G) would be negative.
Q124 re-analysis of GSE260742: the suppressed kinetic criteria and the negative-increment defect in K1's threshold. analyses/q124-the-timecourse-and-the-pcgf1-knockout/run.py, deviation1_enrichment_null.py, deviation2_common_support.py, deviation3_four_statistic_steps.py and results.json, run 2026-09-23 · Iqbal Lab oncofusion knowledge graph 2026What this evidence cannot show
This is a statement about a criterion this beat wrote, verified against this beat's own output, and it is not a survey: no corpus-wide sweep for one-sided thresholds on two-sided statistics was run, so the three shapes tabulated are the ones encountered rather than an enumeration. The F example is a NEAR-MISS and not an error - the V = 1.0829 cell exists in Q122's committed JSON and is not among the six F values that beat reported - so no published figure in this corpus is known to carry the defect. Whether any of the 624 stated falsifiers rule 96 counted has this shape was not checked.
Evidence that argues against this (1)
the instance: K1's L is -0.1897 and -0.4328 and satisfies L <= 0.10 on a series that rose, and the beat's answer survives only because K0's failure suppressed it
the sibling failure of a pre-registered verdict: there a deviation changed the verdict, here the threshold's sign convention would have produced the opposite verdict and a separate guard caught it
F = (1-V)/(1-G) has the same shape and goes negative when V > 1; Q122's own committed JSON contains a V of 1.0829, which is not among the six F values it reported, so this is a near-miss rather than an error
two criterion-design defects from one beat that point the same way: a quantity with no criterion is never read, and a criterion with the wrong sign convention is read wrongly - both are fixed at pre-registration time and neither is caught by any checker
same family: correct arithmetic, confident verdict string, wrong meaning