GEMMA DEVELOPER AGENTSAVED EVIDENCE

← Weight change

Direct mathematical edit / wsp31-0020

Deep-thought gate in all 60 layers: one neuron per layer detects depth >= 800 in a thought and writes the end-of-thought state (per-layer do

Gemma 4 31B, frozen four-bit baseAuthor: claudeState: doneVerdict: harmful

When

Recorded date: 2026-11-13

Ledger date only; exact weight-build/change timestamp is not recorded here. Not a live training event.

Exact tensor-change timestamp: unavailable.

Why change it?

Unedited batch b001 (three identical arms, 288 scored episodes of 120 stage-1 tasks, `code/seq_stats.py`): solved 54%. Of the 133 failures, 60 end at the 7.5-minute session limit (31 with an empty patch), 26 at the 30-call cap and 47 submit a wrong patch. Limit episodes carry about 8,500 thought tokens, 35% to 40% of them beyond depth 800 of one thought and 54% to 59% beyond depth 400 (solved episodes: 3,950 thought tokens, 16% and 35%). At about 25 generated tokens per second a cut at depth 800 returns about 3,200 tokens, 130 of the 450 seconds. Same target as ledger 0008 (make long thoughts end sooner so that the wall-clock goes to tool…

Which part changed?

Deep-thought gate in all 60 layers: one neuron per layer detects depth >= 800 in a thought and writes the end-of-thought state (per-layer do

The source describes adapter targets and mathematical changes. No before/after tensor comparison is available in this viewer.

How was it changed?

Computed directly by author-written code and packaged as a low-rank adapter over the frozen base; not gradient-trained. This entry: arm `deep:end=0.05`. Gate `deep` in every layer, write `v_L = 0.05 * d_end_L`. Control: `deep:end=0.05:ctrl`. base: champion generation 0 No edit had passed when this entry was built (no `CHAMPION.md`); statistics, weights and pre-tests are those of the unedited model. The entry holds only this change. size: whole network 4.4116% over 180 matrices, largest matrix 22.1827% control size: whole network 4.4117% over 180 matrices, largest matrix 22.1814% Built by `code/net_job.py` (one GPU-0 hold, forward pass `tools/g31.py` only, no optimiser anywhere) and rebuilt bit for bit by `build.sh` (`code/net_build.py` from…

Did it improve?

harmful · Stage 1: -13.50 (b004) tasks against reference arms. Stage 2: not yet measured. Matched control, stage 2: not yet measured. Verdict: harmful.

Measured regression in the recorded screen.
Correction records supersede original result counts. The current summary uses the corrected paper table; uncorrected text below is original historical evidence, not the latest result.

Evaluation set: wsp31_screen_v1 · Batch: b004. Local screening and historical task scores are not competition scores unless explicitly identified in the source. Different evaluation sets cannot be compared as a gain.

Original evidence

Literal source excerpts follow. They may contain original predictions and superseded counts; use the measured-outcome summary and corrections above for the current result.

Hypothesis
Unedited batch b001 (three identical arms, 288 scored episodes of 120 stage-1 tasks, `code/seq_stats.py`): solved
54%. Of the 133 failures, 60 end at the 7.5-minute session limit (31 with an empty patch), 26 at the 30-call cap and
47 submit a wrong patch. Limit episodes carry about 8,500 thought tokens, 35% to 40% of them beyond depth 800 of one
thought and 54% to 59% beyond depth 400 (solved episodes: 3,950 thought tokens, 16% and 35%). At about 25 generated
tokens per second a cut at depth 800 returns about 3,200 tokens, 130 of the 450 seconds.

Same target as ledger 0008 (make long thoughts end sooner so that the wall-clock goes to tool calls), in the regime
record 0004 describes for real training: every layer moved a little, coherently. 0008 replaces one neuron in each of
10 layers (30 to 48) and writes 0.3 of the end-of-thought contrast per layer; this entry replaces one neuron in each
of the 60 layers and writes 0.05 per layer. What is different, and why it could matter: (i) each layer's detector
reads that layer's own representation of thought depth, so the 60 gates err partly independently and the summed
write follows depth more closely than one gate does (held-out firing of single gates: table below);
(ii) a false firing in one layer moves the stream by a sixth of what it does in 0008; (iii) the write is present
from the first layers on, where later attention can still read it, and not only in the band 30 to 48.
This is not the E4B "think briefly" edit (28 / 28 / 25 vs 29, PRIOR_E4B.md): the session limit binds here, and the
write is conditional on depth. The risk is the one the unedited data shows: in a quarter of solved episodes the
thought before the first edit is longer than 800 tokens, and cutting it may delay that edit.
Exact recipe
This entry: arm `deep:end=0.05`. Gate `deep` in every layer, write `v_L = 0.05 * d_end_L`. Control: `deep:end=0.05:ctrl`.

base: champion generation 0

No edit had passed when this entry was built (no `CHAMPION.md`); statistics, weights and pre-tests are those of the
unedited model. The entry holds only this change.

size: whole network 4.4116% over 180 matrices, largest matrix 22.1827%

control size: whole network 4.4117% over 180 matrices, largest matrix 22.1814%

Built by `code/net_job.py` (one GPU-0 hold, forward pass `tools/g31.py` only, no optimiser anywhere) and rebuilt
bit for bit by `build.sh` (`code/net_build.py` from `code/data/net_stats_slim.pt`).

Data. `tools/data/probe_b001.jsonl`: unedited arms `base`, `aa`, `zero` of batch b001, all 58 instances are stage-1
tasks. Instances sorted by name; every fourth (index % 4 == 1, 15 tasks) is held out for the pre-test, the other 43
are fit tasks. One episode per task (the one with most deep, post-edit and first-edit thought positions), truncated
to 11,000 tokens. Fit episodes (one per task, in capture order, 32 captured before the capture deadline): lepture__python-livereload-198, gcaufield__MonkeyPack-27, cool-RR__PySnooper.57472b46.lm_rewrite__g0pq8oow, benoitc__gunicorn.bacbf8aa.func_basic__3napqcbj, cool-RR__PySnooper.57472b46.lm_rewrite__031xvy9b, kinto__kinto-http.py-122, keras-team__keras-20443, celery__billiard-372, cloudtools__troposphere-1968, lepture__mistune.bf54ef67.combine_module__dalnbilu, beeware__briefcase-912, hhursev__recipe-scrapers-1187, DanielSank__constraintula-14, jd__tenacity.0d40e76f.func_basic__85q611gl, Mimino666__langdetect.a1598f1a.lm_rewrite__dk9wx21q, googlefonts__glyphslib-563, jd__tenacity.0d40e76f.combine_module__jua0momz, django-money__django-money.835c1ab8.lm_rewrite__v5cndhkm, jsvine__pdfplumber.02ff4313.func_pm_remove_assign__1v9soh1j, jsvine__pdfplumber.02ff4313.lm_rewrite__1nhq0adm, life4__textdistance.c3aca916.combine_file__ciwv50c6, gweis__isodate.17cb25eb.func_basic__ydtogylj, Textualize__textual-1352, django-money__django-money.835c1ab8.combine_module__bqggrnha, joke2k__django-environ-361, brazilian-utils__brutils-python-114, keis__base58-46, fgmacedo__python-statemachine-370, cookiecutter__cookiecutter.b4451231.lm_rewrite__byoy8vaf, azure__walinuxagent-1183, juju-solutions__charms.reactive-71, PyCQA__flake8.cf1542ce.lm_rewrite__yh5du3ns.
No task outcome enters any statistic.

Positions per fit episode (seeded sample, `sample_rows`): last token of a thought (E, the model's next token was
`<channel|>`; the token the history re-rendering merged with a newline is restored, `thinklib.positions`), thought
positions at depth < 100 (40), 100-399 (40), 400-799 (50), >= 800 (70), positions outside thoughts (40), up to 60
more thought positions at depth >= 300 after the episode's first edit, and up to 80 thought positions of the call
that makes the first file edit. Depth = tokens since `<|channel>`. "Edited" = an earlier call of the episode was
`edit_file` or `write_file`. Captured at all 60 layers: `mlp_in`, `resid_post`, `mlp_raw`, `mlp_act`.

Gate (one neuron per layer, replaced outright, mode "set"): the neuron with the smallest mean |activation| over the
sampled positions of the fit episodes (second smallest for the `pre` gate, so both gates can share a layer).
Gate row = `(12 / sigma) (w - (theta / cbar) m)`: `w` = unit ridge-LDA probe on `mlp_in[L]`, `w ~ (S + lam I)^-1
(mean+ - mean-)` with `S` the full within-class covariance (solved in the dual form on at most 4,000 rows, seed 0)
and `lam` = 10 times the mean coordinate variance; `m` = unit mean `mlp_in` (`m . x = cbar` at every position; the
model has no bias). Up row = `m / cbar` (reads 1). The probe direction is fitted on the fit episodes with index
% 3 != 0; `theta` (95% quantile of the probe on the negatives), `sigma` (sd on the positives) and the neuron's mean
activation `gbar` are taken on the remaining third, so they are out-of-sample values. (On the turn-0 capture this
probe has a held-out-episode AUC of 0.86 to 0.96 for depth >= 800, the diagonal probe of ledger 0008 0.76 to 0.91:
`code/probe_cmp.py`.)
- `deep` gate: positives = thought positions at depth >= 800; negatives = thought positions at depth < 200 and
  positions outside thoughts.
- `pre` gate: positives = thought positions at depth >= 400 while no file edit has been made; negatives = thought
  positions at depth < 150, positions outside thoughts, and every thought position after the first edit.
Layers whose AUC on the calibration third is below 0.75 are skipped: gate `deep`: none skipped (60 layers used); calibration AUC over the 60 layers min 0.81, median 0.87, max 0.99.

Write (down column of the same neuron) = `clipdiv(v_L, w_post_L) * rms_y_L / (gbar_L * layer_scalar_L)`: `v_L` the
stream vector below, `w_post_L` the post-feedforward norm weights (`clipdiv(d, w) = d / w`, zero where `|w|` is under
its 5% quantile), `rms_y_L` the rms of the raw MLP output at the gate's positives, `gbar_L` the neuron's mean
activation at its positives. At an average positive position the write moves `resid_post[L]` by `v_L`.
- `d_end_L` = mean `resid_post[L]` at E positions minus mean at the other thought positions (pooled over episodes).
- `d_commit_L` = mean over episodes of [mean `resid_post[L]` over the thought positions of the call that makes the
  first edit minus mean over the thought positions of earlier read / run calls of the same episode] (episodes with
  at least 8 positions on each side). d_commit fitted on 18 episodes; split-half cosine of d_commit (layers 0, 6, ..., 54): 0.22 0.54 0.71 0.70 0.59 0.40 0.34 0.24 0.21 0.16; cosine(d_end, d_commit) same layers: 0.43 0.55 0.50 0.51 0.21 -0.22 0.01 0.06 0.05 0.05.

Control (`ctrl/`): same code path, same neurons, identical gate and up rows (it fires at the same positions with the
same strength); the written stream vector `v_L` has the sign of every coordinate flipped at random (seed 1000 + L)
before the division by `w_post`: identical per-coordinate magnitudes, hence identical norm in the stream and
identical `|dW|_F` in every matrix. It tests the direction against an equal-sized, equally gated write.

Approximations: bf16 storage of the factors; the gate is a linear probe, so it fires on a share of other positions
(table); `clipdiv` zeroes 5% of the coordinates; the write formula ignores the change of the rms of the raw MLP
output. `d_commit` is a difference of thought states, not a verified control direction.

Checker and rebuild:

```
saved queue/net-deep-gate-close-b05/edit r 1 modules 180 rho med 0.073
saved queue/net-deep-gate-close-b05/ctrl r 1 modules 180 rho med 0.073
OK edit: 180 modules changed (of 180 present), r=1, max |dW|_F/|W|_F 0.2218 at 6.down_proj
OK ctrl: 180 modules changed (of 180 present), r=1, max |dW|_F/|W|_F 0.2218 at 6.down_proj
```
- `edit/adapter_model.safetensors` sha256 `b9b76229861ff7ab53e5211b216d840753ce2f2fd145da34737d7035eba0784d`: identical to the adapter `D_E05` evaluated in the hold
- `ctrl/adapter_model.safetensors` sha256 `3b3d9e5c36cba18b4ba6252e0932f0c825cdb1a93f69bd0cdb02750aa479b8b9`: identical to the adapter `D_E05c` evaluated in the hold

### Pre-test 1: teacher-forced, forward pass `tools/g31.py`, held-out tasks (episodes named in the table, prefix 8,000 tokens)

The forward pass agrees with the served unedited model (TOOLS.md section 3); its agreement on an edited model is
verified there only for the rank-4 comparison. Gate firing on held-out episodes (pre-activation > 0):

```
 deep L0  auc 0.947 | fire d<100 0.02 100-400 0.14 400-800 0.59 >=800 0.68 | pre>=400 0.62 post>=400 - post all 0.02 | non 0.04 E 0.18 tool-pt 0.00
 deep L6  auc 0.936 | fire d<100 0.01 100-400 0.13 400-800 0.35 >=800 0.51 | pre>=400 0.40 post>=400 - post all 0.01 | non 0.01 E 0.23 tool-pt 0.00
 deep L12 auc 0.846 | fire d<100 0.01 100-400 0.06 400-800 0.18 >=800 0.29 | pre>=400 0.22 post>=400 - post all 0.00 | non 0.00 E 0.05 tool-pt 0.00
 deep L18 auc 0.822 | fire d<100 0.01 100-400 0.07 400-800 0.17 >=800 0.28 | pre>=400 0.21 post>=400 - post all 0.02 | non 0.01 E 0.00 tool-pt 0.00
 deep L24 auc 0.871 | fire d<100 0.00 100-400 0.08 400-800 0.22 >=800 0.21 | pre>=400 0.22 post>=400 - post all 0.00 | non 0.00 E 0.05 tool-pt 0.00
 deep L30 auc 0.839 | fire d<100 0.00 100-400 0.06 400-800 0.18 >=800 0.18 | pre>=400 0.18 post>=400 - post all 0.00 | non 0.01 E 0.00 tool-pt 0.00
 deep L36 auc 0.821 | fire d<100 0.00 100-400 0.06 400-800 0.20 >=800 0.17 | pre>=400 0.19 post>=400 - post all 0.00 | non 0.01 E 0.00 tool-pt 0.00
 deep L42 auc 0.721 | fire d<100 0.00 100-400 0.06 400-800 0.19 >=800 0.18 | pre>=400 0.18 post>=400 - post all 0.01 | non 0.01 E 0.00 tool-pt 0.00
 deep L48 auc 0.724 | fire d<100 0.01 100-400 0.05 400-800 0.15 >=800 0.16 | pre>=400 0.15 post>=400 - post all 0.02 | non 0.01 E 0.00 tool-pt 0.00
 deep L54 auc 0.676 | fire d<100 0.01 100-400 0.04 400-800 0.12 >=800 0.16 | pre>=400 0.13 post>=400 - post all 0.02 | non 0.01 E 0.00 tool-pt 0.00
 deep L59 auc 0.733 | fire d<100 0.01 100-400 0.03 400-800 0.09 >=800 0.14 | pre>=400 0.10 post>=400 - post all 0.02 | non 0.00 E 0.00 tool-pt 0.00
```

Greedy reading of the logged thoughts: "cut" = the arm's top token is `<channel|>` at a position where the agent
went on thinking; "kept" = share of a logged thought before the first cut (mean over thoughts); "E top=101" = share
of logged thought ends where `<channel|>` is still the top token; "agree" = same top token as the unedited model at
positions outside thoughts, after a thought, and at the tool name; "d lp(edit)" = change of log p(`edit`) at the
tool-name position before / after the first edit.

```
episodes 4 ['jpadilla__pyjwt-847', 'Nikoleta-v3__blackbook', 'borgbackup__borg-7448', 'janehmueller__python-j'] arms ['base', 'D_E05', 'P_EC05', 'D_E12', 'K_E03', 'K_E08', 'P_C12', 'K05t', 'D_E05c', 'P_EC05c', 'K_E03c']
rows by class {0: 22, 1: 1592, 2: 2157, 3: 2109, 4: 600, 5: 22, 6: 22} | thought rows pre-edit 5288 post-edit 570
arm      | cut share d<200 200-400 400-800 >=800 | dlp101 >=800 | kept short(<400) long(>=800) n | long thoughts cut | E top=101 | agree non think tool | d lp(edit) pre/post | d lp(read) pre | tool argmax changed
base     | 0.000 0.000 0.000 0.000 |  +0.00 | 1.00 1.00 n 17/3 | 0 of 3 | 0.909 | 1.000 1.000 1.000 | +0.00 / +0.00 | +0.00 | 0.000
D_E05    | 0.000 0.002 0.003 0.000 |  +3.69 | 1.00 0.79 n 17/3 | 1 of 3 | 0.909 | 0.983 1.000 1.000 | +0.45 / +0.14 | +0.29 | 0.000
D_E12    | 0.000 0.004 0.008 0.001 |  +6.63 | 1.00 0.67 n 17/3 | 2 of 3 | 0.864 | 0.972 1.000 1.000 | +1.35 / +0.38 | +1.00 | 0.000
D_E05c   | 0.000 0.000 0.000 0.000 |  +0.09 | 1.00 1.00 n 17/3 | 0 of 3 | 0.909 | 0.982 1.000 1.000 | +0.08 / +0.12 | +0.06 | 0.000
```

Reading of the table. Four held-out episodes hold only 17 short logged thoughts (under 400 tokens) and 3 long ones (800 or more), so `kept` and `long thoughts cut` are counts out of three. The matched controls evaluated in the same hold (`D_E05c`, `P_EC05c`) cut nothing and move log p(`<channel|>`) at depth >= 800 by +0.1 to +0.2 nats, against +2.6 to +6.6 for the edit arms. No arm changes the token after a thought or the top tool name. This entry (row `D_E05`): 1 of 3 long thoughts cut, 0.79 of their length kept, short thoughts untouched, true thought ends unchanged (0.909), agreement outside thoughts 0.983, log p(`<channel|>`) at depth >= 800 up by 3.7 nats (control `D_E05c`: +0.09, no cut). It is the lower rung of the dose pair with `net-deep-gate-close-b12`.

### Pre-test 2: served generation (`tools/vgen.py --at cont`, vLLM, one hold)

Not run. The served check is prepared (`code/gpu_job3.sh` runs `tools/vgen.py --at cont` on
`scratch/job3/deep_pre.jsonl`: exact contexts 850 tokens deep in pre-edit thoughts of held-out tasks, built by
`code/mk_callset.py`) and needs about seven more minutes of a hold. My first hold of this turn was lost to a script
error (CRLF line endings in the job file) and the second began too l

Runner facts (2026-11-13 01:08:55 EST): source `wsp31/authors/claude/queue/net-deep-gate-close-b05/`; served copy `wsp31/queue/frozen/claude__net-deep-gate-close-b05/`; sha256 over files, edit `ef47706dba43bc74a7e292709d7e3764b33a1d016be85931ac51ec848667ca1f`, control `eaf7f8207e9386eb424c9e4baaf349594eebd22fe9079a8e65de0d2bd5b19586`; both passed the checker.
Prediction (written before the run)
predicted_gain_120: -6 to 8

Reference numbers (unedited arms of b001, 288 episodes): 5,440 thought tokens per episode, 244 per model call, 7.8%
of calls with a thought of 800 tokens or more, 24% of all thought tokens beyond depth 800, 23.6% of episodes at the
session limit, 13.2% empty patches, first edit at call 9 (median).

Behaviour that should move in the edit arm against the reference arm of the same batch:
- thought tokens per model call: down by 10% to 25% (pre-test table: columns `kept` and `long thoughts cut`); share of calls with a thought of 800 tokens or more: from about 8% to
  under 5%;
- episodes ending at the session limit: from about 24% to 14%-20%; empty patches: from about 13% to 9%-12%;
- tool calls per episode: up by 1 to 3 (the time goes to calls); well-formed tool calls unchanged.
Solved tasks: most of the gain, if any, should come from tasks whose reference episode ends at the limit; I expect
1 to 3 losses among tasks the reference solves after a long thought before its first edit.

Control (same gates, sign-flipped write): thought tokens per call within 5% of the reference, limit share within 4
points, gain between -4 and +4.

What would prove the hypothesis wrong: (a) thought tokens per call fall by less than 5%: the teacher-forced cut
does not carry over to rollouts (the edit is inert, not the idea); (b) thought tokens per call fall by 15% or more
and the limit share falls, but the gain is 0 or negative: time spent in long thoughts is not what costs these
tasks, and the whole thought-ending family (0007 to 0013, 0015) loses its premise; (c) the control moves thought
length as much as the edit: the effect is the gated perturbation, not the direction.
Result
**Stage 1** (batch `b004`, 4 arms on one server, concurrency 2 per arm, finished 2026-11-13 18:18:22 EST; `results/wsp31/batches/b004/`). Reference arm: unedited.

- unedited: solved 56 of 102, agent errors 23, at session limit 23, at tool-call cap 16, empty patch 15, median tool calls 18.0, mean 297.5 s, median 25.2 completion tokens/s of model time.
- edit: solved 47 of 102, agent errors 36, at session limit 36, at tool-call cap 19, empty patch 28, median tool calls 22.0, mean 319.2 s, median 25.8 completion tokens/s of model time; vs base on 102 common tasks: -9.0 tasks (95% interval -17.0 to -1.0), base-only 14, arm-only 5, exact p 0.0636.
- second unedited arm (identical weights): solved 59 against 56; 4 tasks solved only by the first, 7 only by the second (11 tasks differ; record 0003 measured 11.3 per identical pair); median 24.9 completion tokens/s. The gain used by the rule is against the mean of the two reference arms per task.
- edit against the mean of the two reference arms: -10.5 tasks of 102 (95% interval -18.0 to -3.5).
- Predicted gain -6 to +8; measured -10.5: outside the interval.
Verdict and notes
harmful by the fixed rule: stage-1 gain -10.5, bar +3, harmful at -6 or below.
Correction record 0042 — supersedes original counts
corrected solved: base 56 to 70, e0021 50 to 60, e0020 47 to 58, aa 59 to 73 (of 120); verdict changes: none

Written 2026-11-14 03:26:54 EST.

| arm | solved before | solved corrected | gain before | gain corrected |
|---|---|---|---|---|
| `base` | 56 of 102 | 70 of 120 | - | - |
| `e0021` | 50 of 102 | 60 of 120 | -7.5 | -11.5 |
| `e0020` | 47 of 102 | 58 of 120 | -10.5 | -13.5 |
| `aa` | 59 of 102 | 73 of 120 | - | - |

Gain: tasks over the per-task mean of the two reference arms (or the one reference arm), as the rule uses it. "Before" is the batch's own rows rescored with the same scorer (`supp1/score_before.json`; the batch's `score.json` is kept as written).

Per rerun task, before and after, every arm:

| task | `base` | `e0021` | `e0020` | `aa` |
|---|---|---|---|---|
| `ag2ai__faststream-2701` (b004-supp1) | no row to solved | no row to solved | no row to solved | no row to solved |
| `fabfuel__ecs-deploy-123` (b004-supp1) | no row to solved | no row to solved | no row to solved | no row to solved |
| `factoryboy__factory_boy-1067` (b004-supp1) | no row to solved | no row to not solved (7.5-minute limit) | no row to solved | no row to solved |
| `fnl__syntok-17` (b004-supp1) | no row to solved | no row to solved | no row to solved | no row to solved |
| `microsoft__electionguard-python-191` (b004-supp1) | no row to solved | no row to solved | no row to solved | no row to solved |
| `omise__omise-python-53` (b004-supp1) | no row to not solved | no row to not solved (7.5-minute limit) | no row to not solved | no row to not solved |
| `pdfminer__pdfminer.six.1a8bd2f7.func_basic__zytwj6qb` (b004-supp1) | no row to solved | no row to solved | no row to solved | no row to solved |
| `pdfminer__pdfminer.six.1a8bd2f7.lm_rewrite__iv8vwrta` (b004-supp1) | no row to solved | no row to solved | no row to solved | no row to solved |
| `pygments__pygments.27649ebb.func_basic__n2kqhtxn` (b004-supp1) | no row to solved | no row to not solved (7.5-minute limit) | no row to solved | no row to solved |
| `quantum-tii__qibo-345` (b004-supp1) | no row to not solved (7.5-minute limit) | no row to not solved (empty patch) | no row to not solved (empty patch) | no row to not solved (7.5-minute limit) |
| `quantum-tii__qibo-410` (b004-supp1) | no row to solved | no row to not solved (7.5-minute limit) | no row to solved | no row to solved |
| `readthedocs__sphinx-notfound-page-233` (b004-supp1) | no row to not solved | no row to not solved (7.5-minute limit) | no row to not solved (7.5-minute limit) | no row to not solved (7.5-minute limit) |
| `rustedpy__result.0b855e1e.func_basic__kan6677p` (b004-supp1) | no row to solved | no row to solved | no row to solved | no row to solved |
| `rustedpy__result.0b855e1e.pr_165` (b004-supp1) | no row to solved | no row to solved | no row to solved | no row to solved |
| `stanfordnlp__dspy-8089` (b004-supp1) | no row to solved | no row to solved | no row to not solved (empty patch) | no row to solved |
| `taverntesting__tavern-851` (b004-supp1) | no row to not solved | no row to not solved (7.5-minute limit) | no row to not solved (7.5-minute limit) | no row to not solved (7.5-minute limit) |
| `thomasgermain__pymultiMATIC-107` (b004-supp1) | no row to not solved (empty patch) | no row to not solved (empty patch) | no row to not solved (empty patch) | no row to not solved (7.5-minute limit) |
| `timothycrosley__isort-819` (b004-supp1) | no row to solved | no row to solved | no row to not solved (empty patch) | no row to solved |
| `tox-dev__pipdeptree-488` (b004-supp1) | no row to solved | no row to not solved (7.5-minute limit) | no row to not solved (7.5-minute limit) | no row to solved |

Reference arms `base` and `aa` differ on 11 task(s) before and 11 after.

Scored on 120 of the 120 tasks of the final list.

n/a (a correction).

- 0021 (`e0021`): stage-1 gain -7.5 to -11.5; by the fixed rule harmful before, harmful corrected. Same decision; the entry's stage-1 counts are now the corrected ones.
- 0020 (`e0020`): stage-1 gain -10.5 to -13.5; by the fixed rule harmful before, harmful corrected. Same decision; the entry's stage-1 counts are now the corrected ones.