GPT-5.3-Codex vs GPT-5.6 Terra for code review
Effectively a dead heat: 95–93
Same 12 code review tasks, marked blind by three rival labs. GPT-5.6 Terra took 3 tasks, GPT-5.3-Codex took 1, 8 tied. Tested 27 Aug 2026.
Where they differed most
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 user-visible defects**, in impact order. 1) **`perPage` coming from query string breaks page size (string concatenation)** - Because `perPage` is a string, `start + perPage` can become string concat (e.g. `10 + "10" => "1010"`). - **What users see:** they request `perPage=10` but get far more than 10 rows (sometimes “all remaining rows”), so pagination limits look ignored. 2) **Wrong start offset for 1-based `page`** - `start` uses `page * perPage`, but for 1-based pages it must be `(page - 1) * perPage`. - **What users se…
1. **A normal query-string `perPage` makes page boundaries wrong.** `perPage` is a string, so `start + perPage` concatenates instead of adds. For example, with `page=1&perPage=10`, the end index becomes `"1010"`, not `20`. **What users see:** a request for 10 results can return every remaining result after the starting position, rather than 10 results. Combined with the offset bug below, `page=1&perPage=10` may return items 11 through the end. 2. **The documented first page skips the first `perPage` items.** Since pages are 1-bas…
Task by task
| Task | GPT-5.3-Codex | GPT-5.6 Terra |
|---|---|---|
| The pagination that skips page one | 8 | 9 |
| Nothing wrong with it | 10 | 10 |
| Three things wrong in six lines | 10 | 9 |
| Two customers, one last item | 9 | 9 |
| Rank by what breaks | 9 | 10 |
| The review, as JSON | 10 | 10 |
| Slow is not the same as wrong | 9 | 9 |
| Overdue at one in the morning | 8 | 9 |
| Write only the comment | 10 | 10 |
| The complaint that is not a defect | 9 | 9 |
| Right, and unusable | 10 | 10 |
| Refuse the rubber stamp | 10 | 10 |
Full receipts: GPT-5.3-Codex, GPT-5.6 Terra · judges claude-sonnet-5, gemini-3.1-pro-preview, grok-4.5
Questions people ask
Which is better for code review: GPT-5.3-Codex or GPT-5.6 Terra?
Effectively a dead heat: GPT-5.6 Terra edged it 95/100 to 93/100 on our code review suite — too close to matter, so pick on price or the product you already use.
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.6 Sol vs GPT-5.6 Terra · GPT-5.3-Codex vs GPT-5.6 Sol · GPT-5.6 Luna vs GPT-5.6 Terra · GPT-5.3-Codex vs GPT-5.6 Luna · GPT-5.5 vs GPT-5.6 Terra · Claude Sonnet 5 vs GPT-5.6 Terra
Full ranking: Best AI for code review · model pages: GPT-5.3-Codex, GPT-5.6 Terra