Group rows keep a 0.0 stderr when every subtask is entirely on the boundary, so the row with the most evidence carries no bound

Author: Rodrigo-PalmaCreated Sep 14, 2026Updated Sep 14, 2026

What happens

When every subtask in a group sits entirely on 0 (or entirely on 1), the group row reports <metric>_stderr = 0.0, exactly as the task rows did before #4090. The group is the row with the most evidence behind it, so it is the row where a bound would be tightest, and it is the one row that ends up carrying no bound at all.

The case was raised by @buyan201430-code on #4090, measured on published result files. This is the group counterpart of #4070. #4090 fixes the task level and deliberately stops there: test_boundary_interval_does_not_reach_group_aggregation pins that exclusion, because the group has no score vector of its own, only pooled stderrs. This issue is for the remaining case.

Reproducible example

On current main (d6de8164), building a group from the seven real leaderboard_math_*_hard sizes (307, 123, 132, 280, 154, 193, 135; total n = 1324) with every subtask scoring 0 out of n:

python
SIZES = [307, 123, 132, 280, 154, 193, 135]
group = Group(name="leaderboard_math_hard",
              aggregate_metric_list=[AggMetricConfig(metric="exact_match", weight_by_size=True)])
for i, n in enumerate(SIZES):
    t = MockTask(f"sub{i}", agg={"exact_match": mean}, n_eval_docs=n)
    group.add(t)
    acc[f"sub{i}"] = _make_acc(t, {("exact_match", "none"): [0.0] * n})
n total                  : 1324
group exact_match,none   : 0.0
group exact_match_stderr : 0.0
group keys               : ['alias', 'exact_match,none', 'exact_match_stderr,none', 'name', 'sample_count', 'sample_len']

pooled_sample_stderr([0.0] * 7, SIZES) returns exactly 0.0: a subtask on the boundary contributes zero variance, so the pool of them is zero too.

Why it is worth a bound

A 95% Wilson bound at those sample sizes, from the helper #4090 adds:

row n published today bound at that n
leaderboard_math_algebra_hard (narrowest subtask) 307 0.0 ± 0.0000 <= 0.0124
leaderboard_math_counting_and_prob_hard (widest subtask) 123 0.0 ± 0.0000 <= 0.0303
leaderboard_math_hard (group of the seven) 1324 0.0 ± 0.0000 <= 0.0029

After #4090 the subtask rows carry their bound and the group row does not, which reads backwards: the row pooling ten times more evidence is the least informative one on the page.

Prevalence

In the published result files (open-llm-leaderboard/results, revision aa81ecc38fdc5708254b833923368970efdf5ef5), a 600 file sample contains 634 rows where the metric is exactly 0.0 or 1.0 and the stderr is exactly 0.0. 94 of them (14.8%) are group rows, all leaderboard or leaderboard_math_hard. Script, file list and row level output: https://gist.github.com/Rodrigo-Palma/6c6cb3a3d3aac998a833e9545e0dafc6

That count deliberately excludes 49 files carrying the 2025-02-13 stamp, where the stderr is 0.0 even for scores that are not on the boundary. Those belong to #3966 and are a different thing: frozen published data, already not reproducible on main, which writes "N/A" when no stderr function is available. The case in this issue is the opposite situation, a score legitimately on the boundary and a stderr legitimately computed as 0.0, and it reproduces on main today.

Proposed rule

A group gets <metric>_boundary_ci95 only when every leaf subtask is itself entirely on the boundary and on the same side, computed over the summed n. Concretely:

  • Descend to the leaves, not to the immediate children, so nested groups behave.
  • All leaves all-zero, or all leaves all-one. A mix is not a degenerate vector and gets nothing.
  • Any leaf off the boundary, or without a score vector, and the group gets nothing.
  • Key and format identical to the task level, so a reader parses one shape in both places.

Two notes on the edges. On the boundary a weighted and an unweighted group mean coincide (every item is the same value), so the rule does not have to care which aggregation the group uses for the score itself. And the check has to key off the leaf vectors rather than the aggregated group cell: a group cell of 0.0 does not imply its children were on the boundary, so reading the cell alone could attach a <= 0.0029 bound to a group whose subtasks scored well above zero.

This depends on #4090, since it reuses the same boundary_ci helper, so it makes sense as a change on top of it rather than beside it. Happy to implement it if the approach looks right.

Source: EleutherAI/lm-evaluation-harness