---
version: 0.26.0
date: 2026-06-20
headline: "Qwen3.6-27B native prefill 1.67x faster on M3 Pro (batched hybrid + int8 q4kGemm); arm64 build + fleet CI unblocked."
themes: ["model", "fleet", "tools", "ci"]
highlights:
  - "model: batched Q4K hybrid prefill for Qwen3.6 — recurrence off the critical path"
  - "model: int8 SDOT batched q4kGemm — prefill on the decode int8 stream (1.67x end-to-end)"
  - "model: AWQ scalar refs made portable — internal/model builds + tests on arm64 again"
  - "ci: master CI base greened (webbench vet + CLAIMS.md tag), unblocking fleet releases"
  - "fleet: multi-node lease transport, dispatch watchdog, account-identity reconciliation"
  - "model: real TCP StageTransport — pipeline runs bit-exact over an actual socket"
---

**TL;DR** — Qwen3.6-27B prefill in fak's own in-kernel engine is **1.67x faster on the M3 Pro** (per-token fallback 46.3 s → 27.8 s on the 22-token oracle), with the load-bearing finding that the GDN recurrence was never the wall — the f32 projection compute was. The Apple-silicon test build is unblocked, the fleet CI base is green again, and the multi-session control plane gains lease transport + watchdogs.

## Model — Qwen3.6-27B native prefill (M3 Pro)

- **What changed** — Qwen3.6 prefill on the resident-Q4K path no longer falls back to the per-token loop.
  - *Why:* The generic batched-Q4K prefill refuses the hybrid Gated-DeltaNet arch, so prompt processing was re-streaming every weight per token.
  - *How:* `internal/model/qwen35_prefill_q4k.go:prefillQwen35HybridQ4K` — the resident-Q4K twin of the Q8 hybrid prefill — batches every projection/MLP GEMM over the prompt panel while keeping the GDN recurrence; gated by `q4kQwen35HybridPrefillOK`.
  - Phase profiler (`FAK_QPROFILE` in `cmd/fakchat`) proved the recurrence is **0.5%** of prefill — the wall is the f32 `q4kGemm` projection compute (63%).
- **What changed** — The batched `q4kGemm` now rides the int8 SDOT stream P2 gave decode.
  - *Why:* The scalar-f32 dequant+dot was the prefill compute wall.
  - *How:* `internal/model/quant_q4k.go:q4kGemmRangeInt8` dispatches int8-vs-f32 like the decode GEMV; bit-identical to the int8 decode GEMV per (o,t) (`TestQ4KGemmInt8MatchesMatRowsInt8`). Prefill now projects with the same int8 kernel decode uses, so the KV cache prefill builds matches decode's.
  - Witnessed (M3 Pro, 22-tok oracle): 46.3 s → 36.4 s (batched) → **27.8 s (int8)**; first token `248068` (`<think>`) @ 28.15, oracle parity. Witness: `fak/experiments/qwen36/mac-hybrid-prefill-20260620/`.

## Model — portability + transport

- **What changed** — `internal/model` builds and tests on arm64 (Apple silicon) again.
  - *Why:* The AWQ merge filed portable scalar reference kernels + tier-label constants behind `//go:build amd64`, breaking the untagged `awq_test.go` on arm64.
  - *How:* `internal/model/awq_scalar.go` — portable code moved to an untagged file; amd64 behavior byte-identical.
- **What changed** — `StageTransport` pipeline wire backend now runs bit-exact over a real TCP socket.
  - *How:* `internal/model` StageTransport seam + real TCP transport (`feat(model)` series).

## CI / build

- **What changed** — The master CI base is green again, unblocking every session's release.
  - *Why:* `go vet` flagged an embedded Python `%`-format in `internal/webbench/eval.go`, and `CLAIMS.md` carried an unsanctioned `[PARTIAL]` tag — both red across many commits.
  - *How:* fixed the format string + re-tagged the Vulkan parity claim `[SHIPPED]`; `internal/webbench` declared at the foundation tier in architest.

## Fleet / control plane

- **What changed** — Multi-node lease transport over the kernel's WAL-backed lease layer; a dos-dispatch watchdog + registration; account-identity reconciliation collapsing duplicate-login dirs; probe observability (freshness stamp, ledger, stale-verdict alarm); standing supervisor target raised 3→4.
  - *How:* `tools/` dispatch/supervise/lease helpers + `internal/fleet` (`feat(fleet)`, `feat(tools)`, `feat(control-pane)` series).

## Agent / misc

- Tool-call lifting across model dialects (not just Hermes); provider error-envelope + empty-response parse tests; `webbench`/`swebench` run commands; visual-gen quality grader; GPU server launch-ready checkpoint.

_Cut on local-green (full `go build`/`go vet`/`go test ./...`/claims-lint green) per the operator's standing default; the prior CI-base red was pre-existing and fixed forward in this release. 50 commits since v0.25.0._
