# Parasail — gemma-4-31b grade card

OpenAI chat/completions · serves `google/gemma-4-31B-it` as gemma-4-31b · probed live 2026-07-27

HTML version: [https://inferencecanary.com/parasail/gemma-4-31b/](https://inferencecanary.com/parasail/gemma-4-31b/) · matrix: [https://inferencecanary.com/index.md](https://inferencecanary.com/index.md)

## Grades


| Axis | Grade | Basis |
|---|---|---|
| Harness | A− | A − 0 red − 1 yellow, per the published ladder |
| Billing | OK | Reported usage consistent with bytes on the wire. |
| Caching | Sometimes (1/3 hits) | Reused already-seen context on 1/3 cold→warm trials. Speed numbers: [https://inferencecanary.com/speed/index.md](https://inferencecanary.com/speed/index.md) |
| Faithfulness | not yet run | Battery not yet run on this provider. |

## Flags

- **[yellow · harness] Tool results replayed out of order are mis-paired on most providers** — The chat dialect's contract is that a tool message is matched to its call by tool_call_id, in any order. After two parallel calls, replaying the results reversed swaps the data between them on these providers — the template renders by name, and these providers render positionally, dropping their own dialect's id contract. An async harness that appends results in completion order silently swaps payloads. One provider pairs correctly, proving the fix is implementable provider-side. (details: [/findings/index.md](https://inferencecanary.com/findings/index.md#tool-results-out-of-order))

