Gemini 3.1 Pro Preview vs GPT-5.6 Sol for code review

The verdict

GPT-5.6 Sol wins, 9685

Same 12 code review tasks, marked blind by three rival labs. GPT-5.6 Sol took 9 tasks, Gemini 3.1 Pro Preview took 0, 3 tied. Tested 18 Aug 2026.

Where they differed most

The task — The pagination that skips page one

Review this function. Context you can rely on: `page` is 1-based — the public API docs promise that page=1 returns the first page; `items` is always an array and may be empty; `perPage` is taken straight from a query string. function pageOf(items, page, perPage) { const start = page * perPage; const rows = items.slice(start, start + perPage); const lastPage = Math.ceil(items.length / perPage); return { rows, total: items.length, lastPage, hasNext: page <= lastPage }; } List the real defects, most damaging first, and for each one say what a user of the API would actually SEE — not what the code does, what they notice. Then give the corrected function. Do not list style preferences as defects.

Here are the real defects in the function, ordered from most to least damaging, based on what an API user would actually experience.

### 1. The "Missing First Page" Bug (Incorrect 1-based math)
* **What the user sees:** The user can never see the first page of their data. When they request `page=1`, the API returns the data for page 2. 
* **Why it happens:** The code calculates `const start = page * perPage;`. If `page` is 1 and `perPage` is 10, `start` becomes 10. The slice skips items 0-9 entirely.

### 2. The "Massive Payload" Bug (String c…
### Defects, most damaging first

1. **`perPage` is used as a string**
   - `page * perPage` coerces it to a number, but `start + perPage` performs string concatenation.
   - **What users see:** with `page=1&perPage=10` and 100 items, the API returns items 11–100—90 rows instead of 10.

2. **The offset treats a 1-based page number as 0-based**
   - The first page must start at `(page - 1) * perPage`.
   - **What users see:** even if `perPage` is supplied as a number, page 1 omits the first `perPage` items, and every page is shifted forward.

3.…

Task by task

TaskGemini 3.1 Pro PreviewGPT-5.6 Sol
The pagination that skips page one79
Nothing wrong with it810
Three things wrong in six lines89
Two customers, one last item910
Rank by what breaks99
The review, as JSON910
Slow is not the same as wrong910
Overdue at one in the morning810
Write only the comment1010
The complaint that is not a defect99
Right, and unusable810
Refuse the rubber stamp89

Full receipts: Gemini 3.1 Pro Preview, GPT-5.6 Sol · judges claude-sonnet-5, gpt-5.6-terra, grok-4.5

Questions people ask

Which is better for code review: Gemini 3.1 Pro Preview or GPT-5.6 Sol?

GPT-5.6 Sol — it scored 96/100 against 85/100 on our 12-task code review suite, winning 9 tasks to 0 with 3 tied. Every answer was marked blind by three judges from three rival AI labs.

How was this tested?

Both models answered the identical published code review tasks. Three AI judges from three different labs scored every answer blind against a fixed rubric; mechanically checkable rules (word limits, banned phrases) are enforced by the test harness in code. The raw outputs and judge verdicts are downloadable.

More code review head-to-heads: GPT-5.5 vs GPT-5.6 Sol · Claude Sonnet 5 vs GPT-5.6 Sol · GPT-5.6 Sol vs Grok 4.5 · GLM 5.2 vs GPT-5.6 Sol · GPT-5.6 Sol vs Kimi K3 · Gemini 3.5 Flash vs GPT-5.6 Sol

Full ranking: Best AI for code review · model pages: Gemini 3.1 Pro Preview, GPT-5.6 Sol