Get in Touch
AI content toolsfrom Opace

Measurement paper · aggregation

The verdict is the strongest section, never the average

A document longer than the classifier's input window is cut into sections and each section is scored on its own. On 700 documents that are half machine-written and half human-written, taking the document mean catches 29 of them. Taking the strongest section catches 638. Both rules were tuned to spend the same human false-positive budget.

On this page
  1. The finding
  2. Why a document is read in pieces
  3. The length bias, measured
  4. Seven combining rules
  5. Two sections agreeing
  6. What shipped is not what was fitted
  7. The cost, published
  8. What this does not prove
Published
30 August 2026
Measured
Re-verified against source 30 August 2026
Shipped rule
0.9855 / 0.9763 · contract segments-v3 · maximum across sections, with a second lower bar
Corpus
5,558 long-form documents, plus a 700-document synthetic half-AI set

01 / The finding

Averaging is the intuitive rule, and it is close to useless

The classifier reads 512 tokens at a time. Anything longer is cut into sections and scored section by section, which means something has to turn several numbers into one verdict. That combining step is the single most consequential design decision in the tool, and it is decided by the strongest section rather than the average of them.

On 700 documents that are half machine-written and half human-written, the document mean catches 29. The strongest section catches 638.

Both rules were refitted to the same human false-positive budget on the same corpus, so this compares combining rules and not thresholds. A machine-written passage inside a human document is exactly the case people are worried about, and the averaging rule misses it twenty-two times out of twenty-three.
Strongest section, half-AI set638 / 700

91.14% [88.81–93.03] on the original build of the synthetic half-AI corpus, fp32.

Document mean, same corpus29 / 700

4.14% [2.90–5.89] at a matched 1.21% human false-positive budget.

Cost of one more section+0.14pp

What each extra section adds to a human document’s chance of being wrongly flagged. The same section takes AI detection from 81.12% to 91.81%.

Figure 1 Strongest section against document mean, on documents that are half machine-written 700 synthetic half-AI documents across 7 registers, fp32. Both rules carry their own refitted threshold, tuned to the same 1.21% human false-positive budget on the long-form corpus, so the difference is the combining rule and not the calibration. Whiskers are Wilson 95% intervals. Pipeline segments-v2 at the retired 0.984 single threshold: a candidate comparison, not the shipped measurement.
Half-AI documents detected by the strongest-section rule against the document-mean rule 0% 20% 40% 60% 80% 100% Strongest section 638 / 700 91.14% Document mean 29 / 700 4.14%
Strongest section, 638 of 700 Document mean, 29 of 700
Detection of half-AI documents by combining rule, with Wilson intervals
Combining ruleDetectedRateWilson 95%Human budget
Strongest section638 / 70091.14%88.81 – 93.031.21%
Document mean29 / 7004.14%2.90 – 5.891.21%

AGGREGATION-AND-RHYTHM.md §2.4. Measured on the original 700-document build, under the segments-v2 pipeline, at a retired flag point. The rule that ships today is the minimum-evidence pair; its own figure on a rebuilt half-AI corpus is in section 07 and is not comparable with these.

Measured at a rule that no longer ships

Corpus
700 synthetic half-AI documents across 7 registers: 50 AI and 50 human articles of matched word count spliced in both orders, 300–900 words a half.
Retired flag point
0.984
Detector
tier3-cycle2-e5small-fp32.onnx, SHA-256 e313ab00de1fffd2…4d2788d
Runtime
Python onnxruntime 1.29.0, CPU, fp32
Measured
30 August 2026
Also
Pipeline segments-v2. Both candidate rules refitted to a 56/4,636 = 1.21% human false-positive budget on the 5,558-document long-form corpus before being run against the half-AI set.

The rule that ships today is 0.9855 / 0.9763. The figures under this stamp answer the same question at a flag point this tool no longer uses, and they are not a description of the tool as it runs now.

02 / Segmentation

Why a document is read in pieces at all

A 1,600-word article does not fit inside a 512-token window, so it is cut. Once a document is several readings rather than one, the combining step exists whether anyone designs it or not, and its consequences are measurable.

The obvious objection to taking the maximum is that a long document gets more chances to trip the flag, so long human documents should be flagged more often for no reason beyond their length. That objection is correct in principle. It was measured, and the rest of this page is what the measurement said.

Section
One token-bounded piece of a document under the segments-v3 segmentation contract. Each is scored independently and carries its own probability.
The shipped rule
A document is flagged when a document is flagged when its strongest section reaches 0.9855, or its second-strongest reaches 0.9763. Two arms, one primary and one secondary, and the second exists because two sections agreeing at a lower confidence is better evidence than one section alone.
Matched false-positive budget
Each candidate rule carries its own refitted threshold, chosen so that every rule wrongly flags the same share of human documents. A fixed threshold across rules would have conflated a change of rule with a change of calibration.

Measurement conditions

Corpus
The 5,558-document long-form corpus of 28 August 2026: 922 AI documents across 13 models, 4,636 human. Not fully held out — 268 of the 922 AI documents sit in the cycle-2 dataset, 168 of those in the train split; the human side is effectively clean at 11 of 4,636.
Operating point
0.9855 / 0.9763 · contract segments-v3 · T = 0.8324
Detector
tier3-cycle2-e5small-fp32.onnx, SHA-256 e313ab00de1fffd2…4d2788d
Runtime
Python onnxruntime 1.29.0, CPU, fp32; browser rows are onnxruntime-web, int8 dynamic per-channel
Measured
30 August 2026
Also
Detector trained 28 August 2026. Browser artefact tier3-cycle2-e5small-int8-perchannel.onnx, base model intfloat/e5-small. The two runtimes are different artefacts and their false-positive rates differ materially; both are printed on this page rather than the flattering one.

03 / Length bias

The bias is real, small, and lives where it was expected to

Take every document with at least six sections. Ask what the flag rate would be if the verdict were the maximum over a random subset of j of that document’s own sections, computed exactly over all C(k, j) subsets rather than sampled. Register, source, author and topic are held constant, because it is the same document throughout. Only the number of chances varies.

Figure 2 Drawing more sections from the same document: the cost and the benefit, together Each x position is the same documents read a different number of times, so nothing but the number of chances changes across the curve. Left axis, human flag rate over 510 documents with six or more sections. Right axis, AI detection over 315 such documents. Neither axis starts at zero and each is tinted to its own series; the two ranges differ by two orders of magnitude and must not be read as one line against another.
Human flag rate and AI detection against the number of sections drawn from the same document 0% 0.25% 0.5% 0.75% 1% 75%81.25%87.5%93.75%100% Human flag rate n = 510 documents axis 0–1% AI detection n = 315 documents axis 75–100% 123456 sections drawn from the document 0.145% 0.288% 0.428% 0.566% 0.701% 0.834% 81.12% 91.81% 94.91% 96.37% 97.25% 97.79%
Human flag rate, left axis 0–1% AI detection, right axis 75–100%
Human flag rate and AI detection by number of sections drawn
Sections drawnHuman flag rate, n = 510AI detection, n = 315
10.145%81.12%
20.288%91.81%
30.428%94.91%
40.566%96.37%
50.701%97.25%
60.834%97.79%

AGGREGATION-AND-RHYTHM.md §1.4. Exact enumeration over all C(k, j) subsets of each document's own sections. fp32.

Each extra section adds 0.14 percentage points to a human document’s chance of being wrongly flagged. The relationship is almost perfectly linear, so going from a two-section document to a nine-section one costs roughly one point. In academic discussion, the register with the worst human false-positive rate, it is +0.74pp per section; in white papers over the same range it is zero.

The right-hand curve is the reason nothing was done about it. The same extra section that costs 0.14pp of human false positives takes AI detection from 81.12% to 91.81%. A section is evidence, not only opportunity, and a correction that removes the opportunity removes the evidence with it.

Two further readings from the same record

Across the whole corpus the human false-positive rate is not monotonic in section count. It peaks at 24/979 = 2.45% for three-section documents and falls to 8/887 = 0.90% at five or more. What dominates is register composition rather than length: human fiction runs at 29/260 = 11.15% and clusters in the three- and four-section buckets, while student essays run at 0/420 and make up a quarter of the two-section bucket.

The pooled per-section mean probability for human documents is also flat or falling with length within every register measured. White papers read 0.409, 0.354, 0.299, 0.176 and 0.208 from one section to five-plus. Longer human writing is not more machine-like section by section. The bias is in the combining step, it is worth 0.14pp per section, and it sits against a register spread of eleven points.

04 / Candidates

The intuitive fix is the worst option available

Correcting the threshold for section count is what a statistician reaches for first. It costs 8.46 points of detection and buys nothing back. Sweeping the correction strength makes the mechanism plain: at γ = 0.5 the five-plus-section bucket loses 15.8 points of detection to save 0.90pp of false positives on 887 documents, and at full Bonferroni the rule collapses to 388/922 = 42.08%. A multiple-comparisons correction assumes the extra tests are noise. Here they are mostly signal.

Figure 3 Seven combining rules, each refitted to the same human false-positive budget AI documents detected by each candidate rule, at a budget of at most 1.21% human false positives measured over 4,636 human documents. Each rule carries its own refitted threshold, printed in the table below, because a fixed threshold would have conflated a rule change with a calibration change. Pipeline segments-v2 at the retired 0.984 era: a candidate comparison, not the shipped measurement. Minimum evidence is highlighted because it is the family the shipped rule came from, at parameters that were themselves refitted afterwards.
AI detection by combining rule at a matched human false-positive budget 0% 20% 40% 60% 80% 100% Human FP Minimum evidence 887 / 922 96.20% 1.21% Plain maximum 877 / 922 95.12% 1.23% Second-highest section 868 / 922 94.14% 1.21% Highest adjacent pair 855 / 922 92.73% 1.21% Document mean 811 / 922 87.96% 1.21% Šidák-shaped threshold 799 / 922 86.66% 1.23% Full Bonferroni 388 / 922 42.08%
Candidate combining rules, refitted thresholds, detection and human false positives
CandidateRefitted ruleAI detectedHuman false positives
Minimum evidence max ≥ 0.9845 or second ≥ 0.9765 887 / 922 = 96.20% 56 / 4,636 = 1.21%
Plain maximum max ≥ 0.9841 877 / 922 = 95.12% 57 / 4,636 = 1.23%
Second-highest section second ≥ 0.9712 868 / 922 = 94.14% 56 / 4,636 = 1.21%
Highest adjacent pair sustained over two adjacent sections ≥ 0.9658 855 / 922 = 92.73% 56 / 4,636 = 1.21%
Document mean mean ≥ 0.8476 811 / 922 = 87.96% 56 / 4,636 = 1.21%
Šidák-shaped threshold T(k) = 1 − 0.0284/√k 799 / 922 = 86.66% 57 / 4,636 = 1.23%
Full Bonferroni correction at full strength 388 / 922 = 42.08% not reported at this budget

AGGREGATION-AND-RHYTHM.md §2 and §2.1. 922 AI documents across 13 models, 4,636 human documents, fp32. The full Bonferroni row is the endpoint of the correction-strength sweep and is not reported at a matched budget.

Measured at a rule that no longer ships

Corpus
The 5,558-document long-form corpus of 28 August 2026: 922 AI documents across 13 models, 4,636 human. Not fully held out — 268 of the 922 AI documents sit in the cycle-2 dataset, 168 of those in the train split; the human side is effectively clean at 11 of 4,636.
Retired flag point
0.984
Detector
tier3-cycle2-e5small-fp32.onnx, SHA-256 e313ab00de1fffd2…4d2788d
Runtime
Python onnxruntime 1.29.0, CPU, fp32
Measured
30 August 2026
Also
Pipeline segments-v2. Every candidate refitted to a 56/4,636 = 1.21% budget before evaluation. The minimum-evidence parameters in this table, 0.9845 / 0.9765, are the fitted candidate and not the shipped pair.

The rule that ships today is 0.9855 / 0.9763. The figures under this stamp answer the same question at a flag point this tool no longer uses, and they are not a description of the tool as it runs now.

Read the same table the other way, holding detection fixed at 877/922 and reading off the cost instead. Plain maximum spends 55/4,636 = 1.19% of human false positives, the mean of the top two spends 60/4,636, and the document mean spends 206/4,636 = 4.44%. The averaging rule is expensive at both ends.

05 / The second bar

Two sections agreeing is worth a lower bar

Minimum evidence is the rule that ships, in refitted form. It flags when one section is very confident, or when two sections agree at a lower confidence. Because it is a two-parameter rule fitted on the corpus it was evaluated on, it was cross-validated before it was believed: 200 random split-halves, both rules refitted on half A at a 1.208% false-positive budget and evaluated on half B.

Figure 4 The two-bar rule, drawn A diagram, not a measurement. No figure on this page is attached to any height here: the bars are illustrative, and the vertical gap between the two flag points is exaggerated so both can be seen at all. It shows the case the secondary arm exists for — no section reaches the primary bar, two sections clear the secondary, and the document is flagged.
Diagram of the two-bar rule: six section scores against the primary and secondary flag points Diagram — bar heights are illustrative and the axis is not to scale 1.00 0 Section 1 Section 2 strongest Section 3 Section 4 second-strongest Section 5 Section 6 Primary bar 0.9855 — no section reaches it Secondary bar 0.9763 — two sections clear it Verdict: flagged on the secondary arm. A single-section document has no second section, so it cannot be flagged this way.
The two sections that decide the verdict Sections below both bars
The two arms of the shipped combining rule
ArmFlag pointWhat it reads
Primary0.9855The strongest section in the document, on its own.
Secondary0.9763The second-strongest section. Two sections agreeing at a lower confidence, which a one-section document cannot produce.

Schematic drawn from the shipped rule's definition: a document is flagged when its strongest section reaches 0.9855, or its second-strongest reaches 0.9763. Contract segments-v3. It illustrates the rule and measures nothing.

Cross-validated detection and false positives over 200 random split-halves
RuleHeld-out detectionHeld-out human false positives
Plain maximum95.22% (sd 0.85)1.22% (sd 0.33)
Minimum evidence96.03% (sd 0.83)1.30% (sd 0.34)
Difference+0.82pp, 95% of splits in [−0.22, +1.74]+0.077pp

200 random split-halves of the 5,558-document long-form corpus. Both rules refitted on half A at a 1.208% human false-positive budget and evaluated on half B. Source: AGGREGATION-AND-RHYTHM.md §2.

Minimum evidence wins on 178 of 200 splits, ties on 15 and loses on 7. It also spends slightly more false positives out of sample than it was fitted to, which the in-corpus table does not show and which is recorded here because it is the honest half of the result.

The gain lands where short documents live. At the matched budget the two-section bucket goes from 30/37 = 81.08% to 34/37 = 91.89% and the three-section bucket from 178/198 = 89.90% to 183/198 = 92.42%, while five-plus is unchanged at 477 against 478 of 487. The gap between short and long documents narrows from 16.9 points to 6.3.

06 / Refitting

What shipped is not what was fitted

The candidate’s parameters, 0.9845 / 0.9765, were fitted on fp32 section scores because those were the only full-corpus segmented scores that existed. The browser runtime was then measured over the same 5,558 documents and the rule did not hold there. It would have taken browser human false positives from 90/4,636 to 106/4,636, and browser academic discussion from 16/420 = 3.81% to 23/420 = 5.48%. The candidate had been accepted as detection gained at matched false positives. That is true on fp32 and false in the browser, so it is not the trade a browser visitor would have received.

Refitted against both runtimes at once, under the constraint that neither route may finish with more false positives than the rule it replaces, the shipped pair is 0.9855 / 0.9763.

The prior rule and the shipped pair, on both runtimes
RuleRuntimeAI detectedHuman false positivesTwo-section AIFictionAcademic discussion
Prior 0.984fp32877/922 = 95.12%56/4,636 = 1.208%30/37 = 81.08%29/260 = 11.15%8/420 = 1.90%
Prior 0.984browser877/922 = 95.12%90/4,636 = 1.941%31/37 = 83.78%28/260 = 10.77%16/420 = 3.81%
Shipped 0.9855 / 0.9763fp32883/922 = 95.77%45/4,636 = 0.971%34/37 = 91.89%23/260 = 8.85%8/420 = 1.90%
Shipped 0.9855 / 0.9763browser889/922 = 96.42%90/4,636 = 1.941%34/37 = 91.89%26/260 = 10.00%21/420 = 5.00%

Server rows are fp32 Python onnxruntime; browser rows are int8 onnxruntime-web. The two are different artefacts and their false-positive rates differ materially. Both are printed rather than the flattering one. Source: AGGREGATION-AND-RHYTHM.md §6.

Measurement conditions

Corpus
The 5,558-document long-form corpus of 28 August 2026: 922 AI documents across 13 models, 4,636 human. Not fully held out — 268 of the 922 AI documents sit in the cycle-2 dataset, 168 of those in the train split; the human side is effectively clean at 11 of 4,636.
Operating point
0.9855 / 0.9763 · contract segments-v3 · T = 0.8324
Detector
tier3-cycle2-e5small-fp32.onnx, SHA-256 e313ab00de1fffd2…4d2788d
Runtime
Both routes: Python onnxruntime 1.29.0, CPU, fp32, and onnxruntime-web, int8 dynamic per-channel
Measured
30 August 2026
Also
Detector tier3-cycle2-e5small-fp32.onnx for the fp32 rows and tier3-cycle2-e5small-int8-perchannel.onnx for the browser rows, both from cycle 2, base model intfloat/e5-small.

One arithmetic note, because it moves a digit. The stored per-section probabilities carry four decimal places, and the secondary bar is decided by 19 AI and 9 human documents on fp32 that sit close enough to it that rounding matters. At four decimals the shipped rule reads 884 detections; from a full-precision re-score of all 21,093 segments it reads 883. The unrounded run reproduces the canonical 56/4,636 for the prior rule exactly, which is what licenses the 883.

07 / The cost

The cost, published because it was accepted knowingly

Raising the primary bar from 0.9841 to 0.9855 opens a gap, and half-AI documents fall into it.

The 700-document half-AI corpus had to be rebuilt, because the original build script was not saved. On the rebuild, which has a median of three sections rather than five, plain maximum catches 612/700 = 87.43% and the shipped pair catches 604/700 = 86.29%, both fp32. Nine documents lost against one gained, McNemar p = 0.027.

Rebuilt half-AI corpus, fp32 604 / 700 = 86.29%

The shipped pair 0.9855 / 0.9763 on the rebuild. Not comparable with the 638/700 in Figure 1, which is the original build under a different pipeline and a retired flag point.

Where the losses sit 0.9840 to 0.9855

Every lost document has its strongest section inside the gap the higher primary opened, and its second-highest section is the human half, at a median of 0.4365.

The regression is structural rather than statistical. The secondary arm cannot rescue those documents, because a second-section rule cannot save a half-AI document by definition of what makes it half-AI.

A purely additive rule — primary held at 0.984, secondary added — cannot regress this by construction, and was tested. It fails differently. To stay inside the browser’s false-positive budget the secondary has to rise to 0.9825, at which point the two-section gain disappears completely, back to 30/37 = 81.08%. There is no pair that holds two-section detection, browser false positives and mixed-content detection at once. Every candidate gives up one of them.

The alternative wrongly flags 16 more people in 4,636 and takes browser academic discussion to 5.48%.

Academics are among the least able to argue back against a false accusation. Nine missed half-AI documents in 700, on a capability that stays near 86% either way, was judged the smaller harm. The trade was taken with the numbers in front of it.

Measurement conditions

Corpus
700 synthetic half-AI documents across 7 registers: 50 AI and 50 human articles of matched word count spliced in both orders, 300–900 words a half. Rebuilt after the original build script was lost; the rebuild has a median of three sections rather than five.
Operating point
0.9855 / 0.9763 · contract segments-v3 · T = 0.8324
Detector
tier3-cycle2-e5small-fp32.onnx, SHA-256 e313ab00de1fffd2…4d2788d
Runtime
Python onnxruntime 1.29.0, CPU, fp32. The 604/700 figure is fp32 and stays fp32 until the mixed-content cost is re-measured on the browser runtime.
Measured
30 August 2026
Also
McNemar p = 0.027 against plain maximum on the same rebuild, nine documents lost against one gained.

08 / Limits

What this does not prove

The half-AI corpus is synthetic. These are spliced halves, not documents a person actually half-wrote. The corpus tests the mechanism that maximum aggregation exists to protect. Its absolute rates must not be quoted as a detection figure for edited text.

Two builds, two numbers. The original 700-document build reads 638/700 for plain maximum; the rebuild reads 612/700 on the same specification. Both are true of their own corpus and neither is a correction of the other. Any comparison must stay inside one build.

Cross-validation is blind to the mixed-content axis. The 5,558-document corpus contains no mixed documents. The shipped pair wins 194 of 200 split-halves on fp32 and 200 of 200 in the browser, and both results are blind to the regression in section 07. That is a limitation of the validation method, and it applies to every future operating point fitted the same way. A mixed-content check belongs inside the fit rather than after it.

The corpus is not fully held out.

Of the 922 AI documents, 268 — 29.1% — appear in the cycle-2 dataset and 168 of those in the training split. The human side is effectively clean at 11 of 4,636. The independent subset reads 620/654 = 94.80% against 257/268 = 95.90% for the seen subset, measured at the superseded 0.984 single-threshold rule and not at the shipped pair. The seen-against-unseen split at 0.9855 / 0.9763 has never been measured.

Source: AGGREGATION-AND-RHYTHM.md §6 and corpus-reconciliation-2026-08-29/analysis.txt §2.

The fit did not include WebGPU. The pair was fitted from onnxruntime-web’s WASM provider under headless Node. WebGPU was measured afterwards and holds; that measurement is a separate paper.

Register labels are machine-assigned. Every per-register figure on this page inherits that.

Two figures quoted in the project’s handover notes for this argument — a detection count for averaging on the rebuild, and a pair of mean-against-maximum rates — appear in no measurement record found in this sweep. They are not used anywhere on this page, and they should not be repeated until a measurement file carries them.

Provenance

Source file and section for every figure on this page
FigureFileSection
638/700 and 29/700 on the original half-AI build, segments-v2, 0.984 eraAGGREGATION-AND-RHYTHM.md§2.4
Within-document curve, exact over all C(k, j) subsets; n = 510 human, 315 AIAGGREGATION-AND-RHYTHM.md§1.4
Non-monotonic human false positives by section count; per-register per-section meansAGGREGATION-AND-RHYTHM.md§1
Seven candidate rules at a matched budget; correction-strength sweep to 388/922AGGREGATION-AND-RHYTHM.md§2, §2.1
200 split-halves; 178 wins, 15 ties, 7 losses; per-bucket gainsAGGREGATION-AND-RHYTHM.md§2
Both runtimes at 0.984 and at 0.9855 / 0.9763; the 883 against 884 rounding noteAGGREGATION-AND-RHYTHM.md§6
Rebuilt half-AI corpus, 612/700 and 604/700, McNemar p = 0.027AGGREGATION-AND-RHYTHM.md§6
268/922 and 168 train-split overlap; human 11/4,636corpus-reconciliation-2026-08-29/analysis.txt§2
Detector artefact, SHA-256 and temperature; shipped flag pointsthresholds.json, via research-method.tswhole file

Every file named above ships with the open measurement repository, so any figure on this page can be re-run rather than taken on trust.

Read on

The combining rule is one decision. What the model reads inside each section is another.