# SIQ-1-35B — live fleet bench + teamwork games (B70 Turbo)

Model: **SIQ-1-35B** (reasoning finetune of Qwen3.6-35B-A3B; arch `qwen3_5_moe`, 35B/~3B active),
**Q5_K_M**, llama.cpp SYCL on a single **Intel Arc Pro B70** (30.3 GiB), `llama-server`. Ship config
`-ngl 99 -fa on -ctk/-ctv q8_0 -b 8192 -ub 4096`, `GGML_SYCL_DISABLE_DNN=1`, `--jinja`. Served on
**:8092** (prod `:8090` untouched).

Run date 2026-06-29 (UTC). Artifacts under `results/live_evals/siq/`.

## 1. Live agent-fleet bench, `-np 32 -c 131072` (real concurrent requests, :8092)

| class | prompt_n | agents | aggregate decode t/s | per-agent t/s |
|---|---:|---:|---:|---:|
| tool | 125 | 1  | 63.06  | 82.79 |
| tool | 125 | 8  | 141.90 | 19.68 |
| tool | 125 | 16 | 162.83 | 11.18 |
| **tool** | 125 | **32** | **223.71** | 7.83 |
| structured | 443 | 32 | 164.79 | 6.53 |
| novel | 775 | 32 | 125.34 | 5.78 |

**Headline:** at 32 concurrent agents SIQ sustains ~125–224 t/s aggregate decode (vs ~63 agg / 83
per-agent single-agent). Curve is indistinguishable from the rest of the qwen3_5_moe family (identical
arch + quant + serve). The reasoning finetune does **not** change raw decode throughput; with thinking ON
(default) it spends tokens on reasoning, but t/s is unchanged.

## 2. Teamwork build games (frogger + maze)

Canonical `agentic-arcade/teamwork` harness on `:8092`, **team 6 / merge-top 2 / 15-min**, thinking OFF,
served `-np 6 -c 262144`. SIQ's builds were the **largest in the campaign** (frogger seed 40 KB) and its
rounds the slowest (frogger round 2,234 s) — the reasoning training pushes more elaborate code; one team
round fit each game.

| game | rounds | winner | seed→final bytes | jsdom valid | notes |
|---|---:|---|---|:--:|---|
| **frogger** | 1 | worker | 40,189 → 40,828 | ✅ | clean seed first try; 6/6 workers valid |
| **maze** | 1 | merged | 16,237 → 19,185 | ✅ | clean seed first try; 6/6 workers valid; merger won |

## 3. Code-quality eval (Claude Opus 4.8 judge, /50 rubric)

| game | chars | **/50** | Comp | Corr | Struct | Robust | Polish |
|---|---:|---:|:--:|:--:|:--:|:--:|:--:|
| **Frogger** | 40,828 | **42** | 10 | 8 | 9 | 7 | 8 |
| **Maze** | 19,185 | **30** | 9 | 2 | 8 | 3 | 8 |

### Frogger — 42/50 (best game in the campaign)

The most complete and **correct** build of the whole study. It implements **authentic Frogger**: five
home slots you must all fill (not just "reach the top"), three difficulty levels, working **drowning**,
working **log + turtle riding** (with a 1-px landing tolerance), a fully wired win path (fill 5 homes →
LEVEL_COMPLETE → next level → VICTORY at level 3), lives/score/level/high-score/progress-bar HUD, and
menu / level-complete / game-over / victory screens. Detailed sprites (multi-part frog, cars with
windshield/headlights/taillights, trucks, gradient logs with grain, turtles with shells/legs), animated
water waves + shimmer, an animated menu, death particles, drowning bubbles, fireworks. `getContext('2d')`
correct; validates clean.

Minor deductions only: vehicle collision is checked **only while the frog is stationary** (`!frog.moving`,
line 1164), so you're briefly invulnerable mid-hop; drowning has a ~2 s grace timer (forgiving vs classic);
high score is in-memory (no `localStorage`); and there's no audio/SFX. None of these break play. This is
the one game that a player could actually finish — it **matches AgentWorld-35B's teamwork frogger (42)**.

### Maze — 30/50 (gorgeous but non-functional: tile/pixel unit bug)

Even more *ambitious* than NEX2's maze — recursive-backtracker maze, **360° aim** (keyboard + smooth
mouse-follow), a live **minimap**, escalating waves, hp-scaling enemies, particles, screen shake, and
**seven Web Audio SFX**. It draws beautifully (maze, glowing player with thruster, enemies with HP bars,
minimap, particles all render) and validates clean (7/7 assertions). **But it is unplayable** — a
systematic **tile-vs-pixel unit confusion** kills the core loop (verified by re-running the game's own
`isWall`/`canMove` on a generated grid):

- **The player spawns frozen.** Positions are in *tile* units (player at `(1.5,1.5)`, map is 13×13), but
  `canMove(px+dx, py, 6)` (line 109) passes a radius of **6 tiles** into `isWall`, so it samples
  `isWall(1.5−6, …)` = out-of-bounds = wall → `canMove` is **false** at spawn. The player can never move
  (a correct radius would be ~0.3 tiles = 12 px). *Confirmed: `canMove(1.5,1.5,6) === false`.*
- **Bullets die on spawn.** `bx = px + cos(aim)*14` (line 132) is `1.5 + 14 = 15.5` — off the 13-tile map
  → `isWall` true → the bullet is destroyed the same frame. Shooting does nothing.
- **Contact damage is unavoidable.** The enemy-touch test uses `< 12` (line 199), i.e. 12 *tiles*, which
  covers ~92% of the 13-tile map, so any spawned robot drains the (frozen) player's lives → GAME OVER in
  a few seconds.

So: frozen player, dead bullets, unavoidable damage. The validator passes it because none of this is a JS
error — `canMove` returning false and off-map bullets are valid JS, just wrong gameplay. The bug class is
**unit discipline** (pixels used where tiles are expected), distinct from the radius-undefined bug in the
Ornith/NEX2 mazes, but with the same outcome: a maze that loads and looks great but can't be played.

### The SIQ split, and the campaign-wide maze pattern

SIQ is bimodal: the reasoning finetune produced the **best frogger (42)** *and* a **non-functional maze
(30)** — more ambition, and when a single systemic error slips in (here unit conversion), it sinks the
whole game. Across all three qwen3_5_moe models the **maze is the consistent failure**: Ornith (radius
undefined → can't shoot), NEX2 (radius undefined → invisible + can't shoot), SIQ (tile/pixel units →
frozen). The teamwork harness keeps builds runnable and the static gate green; it does not catch these
**semantic** core-loop bugs. Frogger — simpler, grid-locked, fewer continuous-coordinate interactions —
fares far better (SIQ 42, NEX2 37, Ornith 33).

## Reproduce
```bash
bash /home/frosty40/qworld_turbo/bench/run_live_evals.sh \
  /home/frosty40/SIQ-1-35B-Turbo/artifacts/siq-1-35b-Q5_K_M.gguf siq siq 8092
```
