Research Question: RQ-route-effect-pi
How do transport route and reasoning channel each affect code quality, TDD discipline, throughput and correctness for one and the same model (GPT-5.6 Sol), at constant harness, workflow, kata and prompt style?
game-of-life-example-mapping
| n, run dates | Cost | Code quality | Size | Correctness | TDD discipline | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| β | β | β | β | β | β | β | β | β | β | β | β | β | β | β | β | β | β | |
| model: gpt-5-6-sol-no-thinkingn = 5, 2026-08-15 β 08-16 | 4.2 Β± 0.9 min π | 855k Β± 166k π | $0.96 Β± 0.18 π | 139 Β± 16.80 π | 9.00 Β± 5.57 π | 4.87 Β± 2.96 π | 6.80 Β± 2.77 π | 2.82 Β± 1.08 π | 18.8 Β± 3.70 π | 14.1 Β± 7.05 π | 13.7 Β± 7.71 π | 2.40 Β± 1.67 | 30.6 Β± 8.93 | 8.40 Β± 0.55 | 100% Β± 0 | 100%5/5 | 10.0 Β± 2.45 | 10.0 Β± 2.45 |
| model: gpt-5-6-sol-reasoningn = 5, 2026-08-16 | 4.8 Β± 0.9 min π | 823k Β± 104k π | $0.95 Β± 0.12 π | 126 Β± 21.49 π | 10.6 Β± 6.11 | 5.62 Β± 3.25 π | 8.00 Β± 3.81 π | 3.29 Β± 0.69 | 21.6 Β± 3.36 π | 15.3 Β± 4.60 π | 15.3 Β± 4.60 π | 2.80 Β± 1.10 | 27.2 Β± 2.77 | 8.40 Β± 1.52 | 100% Β± 0 | 100%5/5 | 8.60 Β± 1.67 | 8.80 Β± 1.79 |
| model: gpt-5-6-sol-codex-no-thinkingn = 5, 2026-08-15 β 08-16 | 10.3 Β± 1.8 min | 1.3M Β± 278k | $2.02 Β± 0.39 | 153 Β± 6.72 | 4.40 Β± 1.52 π | 2.47 Β± 0.62 π | 4.60 Β± 0.55 π | 2.38 Β± 0.24 π | 20.8 Β± 6.22 π | 11.5 Β± 3.67 π | 11.1 Β± 4.56 π | 0.60 Β± 1.34 π | 41.6 Β± 5.77 | 9.80 Β± 1.30 | 100% Β± 0 | 100%5/5 | 13.0 Β± 2.65 | 13.2 Β± 2.28 |
Runs behind this table
- 2026-08-15_11-47-44_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-no-thinking
- 2026-08-15_11-50-52_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-codex-no-thinking
- 2026-08-15_12-02-43_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-no-thinking
- 2026-08-15_12-07-08_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-codex-no-thinking
- 2026-08-15_22-44-01_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-no-thinking
- 2026-08-15_22-49-17_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-codex-no-thinking
- 2026-08-15_23-01-46_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-no-thinking
- 2026-08-15_23-06-13_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-codex-no-thinking
- 2026-08-16_06-04-33_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-no-thinking
- 2026-08-16_06-09-51_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-codex-no-thinking
- 2026-08-16_08-03-20_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-reasoning
- 2026-08-16_08-33-55_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-reasoning
- 2026-08-16_08-38-20_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-reasoning
- 2026-08-16_08-44-03_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-reasoning
- 2026-08-16_08-50-03_game-of-life-example-mapping_v6.2.1-phase-continuation-pi_gpt-5-6-sol-reasoning
Findings
RQ-route-effect-pi β Findings
Effect of transport route and reasoning channel on one and the same model
(GPT-5.6 Sol), at constant harness, workflow, kata and prompt style.
game-of-life-example-mapping Γ exact-hybrid-v4.2-phase-continuation-pi, n=5 per cell.
The harness is pi in every cell β this is not a harness comparison. The
codex in the lab ids names the pi provider openai-codex through which the
OpenAI subscription is reached, not the Codex CLI (a separate harness, unused
in this lab). Prose below says "subscription route"; ids keep the literal
codex. See the RQ README, section "Naming".
Overview
Median per cell. Direction per column; ties get a trophy on every winning cell.
| Cell | Route | Reasoning | Throughput (tok/s) higher = better | Duration (s) lower = better | cognitive_max lower = better |
Smell Total lower = better | Production LoC lower = better | Correctness (external) higher = better |
|---|---|---|---|---|---|---|---|---|
gpt-5-6-sol-no-thinking |
Requesty | off | 3379 π | 251 π | 8.0 | 2.0 | 28 π | 100 % π |
gpt-5-6-sol-reasoning |
Requesty | ON | 2899 | 304 | 9.0 | 2.0 | 28 π | 100 % π |
gpt-5-6-sol-codex-no-thinking |
OpenAI subscription | ON | 2074 | 614 | 4.0 π | 0.0 π | 41 | 100 % π |
| subscription route without reasoning | OpenAI subscription | β | not constructible β see F-1.3.5 |
F-1.3.6 β The subscription-route quality advantage is a route effect, not a reasoning effect
This is the finding the RQ was rebuilt to answer. Switching reasoning on for the Requesty route does not reproduce the subscription-route profile on any quality metric:
| Requesty off | Requesty ON | subscription ON | |
|---|---|---|---|
cognitive_max |
8.0 | 9.0 | 4.0 |
| Smell Total | 2.0 | 2.0 | 0.0 |
| Production LoC | 28 | 28 | 41 |
| Cycles / Refactorings | 8 / 5 | 8 / 5 | 10 / 7 |
Reasoning was verified active in all five runs of the middle cell (207β1649
thinking blocks, never zero). Yet cognitive_max does not improve β it is
marginally worse β and Smell Total, LoC, cycles and refactorings are
unchanged. The subscription cell sits apart from both Requesty cells on every one of
them.
The single-run distributions make the same point more sharply than the medians:
Requesty ranges 4β17 on cognitive_max in both reasoning states, while
the subscription route stays inside 3β7. That is not a gradient along thinking effort; it is a
different rΓ©gime.
Consequence: the extra thoroughness on the subscription route β more refactoring passes, halved complexity peak, zero smells β is not bought by the reasoning channel. What produces it is not identified by this RQ. Remaining candidates, none of them separated here: server-side defaults of the Responses API (sampling parameters, system-prompt handling, tool-call semantics), or a different serving backend behind the same model name. That is a question for a follow-up, not an answer this data supports.
F-1.3.5 β Reasoning is coupled to the route and cannot be switched off on the subscription route
The two routes speak different APIs, and that decides whether the model reasons:
| Route | API | thinking blocks per run |
|---|---|---|
| Requesty | openai-completions |
0 (all 5 runs, default profile) |
| OpenAI subscription | openai-codex-responses |
2667β3311 (all 5 runs) |
--thinking off does not change this. It sets pi's thinking level; on the
Responses API the lowest level still reasons, and on Chat Completions there is
no reasoning channel at all.
Declaring reasoning: false in models.json works on Requesty in both
directions (0 β 207β1649 blocks) but not on the subscription route: a run with a verified
reasoning: false profile, verified PI_CONFIG_DIR and verified API produced
2882 blocks β the same volume as the standard runs. The Responses API decides
server-side; the client declaration is not honoured. The fourth cell is
therefore documented as unattainable rather than left open.
F-1.3.1 β Requesty delivers 1.63Γ the throughput, and it is a transport effect
Median 3379 vs 2074 tokens/second between the two -no-thinking cells. Stable
across replicates and unchanged across two batches roughly ten hours apart
(Requesty 3448/3427, subscription 2035/2123), so upstream load is not the driver. Cache
behaviour explains part of it (93β94 % hits vs 83 %).
The reasoning cell settles the attribution that was open in the first version of this finding. Reasoning does cost throughput on Requesty β 3379 β 2899 tok/s, about 14 % β but that is far short of the gap to the subscription route at 2074. Reasoning-on Requesty is still 1.40Γ faster than the subscription route. Most of the difference is transport.
Replicated on a second kata. On sphinx-score-example-mapping (n=3 per
route) the gap is 3432 vs 2388 tok/s β 1.44Γ, the same order as the 1.63Γ here.
Requesty's absolute throughput is nearly identical across both katas (3379 /
3432), the subscription route's a little higher on sphinx (2074 / 2388). This is the most robust
finding of the RQ: it holds across katas, across replicates, across time of day,
and it survives the reasoning control.
F-1.3.2 β The subscription cell produces the structurally cleaner artefact β on game-of-life
cognitive_max halves against both Requesty cells (4.0 vs 8.0/9.0), Smell Total
drops to zero (vs 2.0/2.0), smell_complexity is 0 in all 5 subscription-route runs.
Variance is part of the finding: Requesty's cognitive_max spans 4β17 (Ο=5.6)
with reasoning off and 4β17 with it on, subscription 3β7 (Ο=1.5). The subscription cell is
both better and markedly more predictable. Attribution: route, not reasoning
(F-1.3.6).
This does not generalise across katas. A replication on
sphinx-score-example-mapping (n=3 per route, same workflow, default profile)
holds only half of it:
| game-of-life | sphinx-score | |
|---|---|---|
cognitive_max (Req / subscription) |
8.0 / 4.0 | 2.0 / 2.0 β no difference |
| Smell Total (Req / subscription) | 2.0 / 0.0 | 3.0 / 0.0 |
| Production LoC (Req / subscription) | 28 / 41 | 49 / 36 |
The smell advantage replicates. The complexity advantage does not: on sphinx-score both routes sit at 2.0, essentially at the floor β that kata does not generate enough structural complexity to discriminate. The metric needs a kata that produces complexity before it can show a route difference.
The LoC relation even inverts: the subscription route writes more code than Requesty on game-of-life (41 vs 28) and less on sphinx-score (36 vs 49). An earlier reading of this finding β "the subscription route buys structure with volume" β is therefore not supported; the volume relation is kata-dependent, not a property of the route.
Scope: the structural advantage is established for smells across two katas, and
for cognitive_max only where the kata generates complexity.
F-1.3.3 β More TDD cycles and refactorings in the subscription cell
Median 10 vs 8 cycles and 7 vs 5 refactorings against both Requesty cells, which are identical to each other on both counts. In the first eight runs the separation was absolute; the fifth replicate broke that and the ranges now overlap (cycles 8β9 vs 8β11, refactorings 3β6 vs 5β9), so only the medians separate. Weakest of the findings, but the reasoning cell does confirm it tracks the route rather than thinking effort.
F-1.3.4 β Correctness is invariant across every cell
All 17 runs pass: tests_passing true and verification_pct 1.0 everywhere,
including both feasibility smokes, completed_within_budget 100 %. Neither route
nor reasoning affects whether the task gets solved β they affect speed, work
volume and code structure.
tests_total tracks cycle_count (9.8 subscription vs 8.4 Requesty mean), i.e. the
subscription cell also writes more tests. Whether those tests are worth their count is
not answered here; mutation_score is not among this RQ's outcomes.
The sphinx-score replication tests this against a kata where external
verification is not saturated by construction: sphinx-score is built
around ambiguity (does a Sphinx count itself as a type? do three Undead-Warrior
variants count as one type or three?), so verification_pct had room to
separate. It did not. Both routes score 100 % median, with an identical
per-run distribution (16/16, 15/16, 16/16) β even the single failing scenario
appears once on each side. Ambiguity resolution is route-invariant too.
Reading the cost column
cost_usd is a list-price comparison value β what the work would have cost
over the API β not a billed amount. Both sides are priced with the same tariff
($5/$30/$0.50) from the table in compute-cost.py, which since 2026-09-05 is
the single source for every pi run on both routes. It replaced pi's own inline
figure on the subscription route, which was not reproducible from the recorded
token counts (a fit over 83 codex runs returns a negative input price at 33.6 %
mean error, most likely because the >272k tariff tiers apply per request).
Two limits stand. On a subscription no per-token charge is incurred at all, so this is never a bill. And the tiers are not modelled, so the figures are a lower bound for runs with large single requests β consistently across all cells, which is what a comparison needs.