SPB Git

spb/zyquo-local Public MIT

Native macOS AI chat that runs LLMs 100% locally on Apple Silicon with MLX — no cloud, no API keys.

Swift 97.2% Shell 1.8% Makefile 1%

phase7: verification table fully green — 6 models 36/36, catalog 30/30

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
simon-pierre boucher committed 12 days ago (Jul 30, 2026) parent 705294b

Showing 2 changed files with +54 and −1

modified docs/PLAN.md +9 −1
@@ -119,5 +119,13 @@ full chat round-trip through the real UI — user bubble, thinking disclosure,
119 119 “⚡ 107.0 tok/s · 467 tokens · 2.0s to first token” stats line, auto-title;
120 120 sidebar search filters live; Installed + Discover screens render per spec.
121 121 Zero warnings. Dark-mode + full design gate re-run before Definition of Done.
122 ## Phase 7 — Local model verification — pending
122 +## Phase 7 — Local model verification — ✅ DONE (2026-07-30)
123 +
124 +- [x] `--verify` harness: download via the app's own DownloadManager, validate, load, deterministic gen, multi-turn carry-over, streaming cancellation, unload + memory-release check, tok/s + TTFT recorded
125 +- [x] 6 models across architectures (qwen3/llama/smollm3/gemma3/qwen2-coder/R1-distill): **36/36 checks green**
126 +- [x] Entire Featured catalog (30 repos) dry-verified live: exists + files + sizes within 10 % — **30/30**, zero corrections needed (MODELS.md ↔ ModelCatalog in sync)
127 +- [x] Test models deleted, smallest kept for dev; results table in docs/VERIFICATION.md
128 +
129 +**Checkpoint:** VERIFY: ALL GREEN, exit 0. Best perf: Llama-3.2-1B at 222.8 tok/s;
130 +unloads verified down to KBs of MLX active memory.
123 131 ## Phase 8 — Signing & notarization — pending
added docs/VERIFICATION.md +45 −0
@@ -0,0 +1,45 @@
1 +<!--
2 + VERIFICATION.md
3 + Zyquo Local
4 +
5 + Author: Simon-Pierre Boucher
6 + Mail: contact@spboucher.ai
7 +-->
8 +
9 +# Phase 7 — Local Model Verification
10 +
11 +Run on 2026-07-30 with `ZyquoLocal --verify` on the build machine
12 +(M5 Max, 48 GB, macOS 27.0 beta). Per model: download through the app's own
13 +`DownloadManager`, directory validation, load, deterministic generation
14 +(temperature 0, "Reply with exactly: OK" → replied "OK"), multi-turn context
15 +carry-over ("vermilion" recall), streaming-cancellation test (stream stops in
16 +≤0.4 s after cancel), unload with verified memory release (MLX active memory
17 +drops to KBs).
18 +
19 +## End-to-end results — 6 models across architectures
20 +
21 +| Model | Download | Load | Generate | Multi-turn | Cancel | Unload | tok/s | TTFT |
22 +|---|---|---|---|---|---|---|---|---|
23 +| Qwen3-0.6B-4bit | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 109.4 | 0.08s |
24 +| Llama-3.2-1B-Instruct-4bit | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 222.8 | 0.74s |
25 +| SmolLM3-3B-4bit | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 97.4 | 0.11s |
26 +| gemma-3-4b-it-qat-4bit | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 58.3 | 1.08s |
27 +| Qwen2.5-Coder-7B-Instruct-4bit | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 112.5 | 0.42s |
28 +| DeepSeek-R1-0528-Qwen3-8B-4bit | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 61.3 | 0.08s |
29 +
30 +Architecture coverage: qwen3, llama, smollm3, gemma3, qwen2 (coder), R1
31 +distill (reasoning, `<think>` streaming). Memory release examples:
32 +4.65 GB → 20 KB (R1-8B), 2.63 GB → 13 KB (gemma-3-4b).
33 +
34 +Per the protocol, test models except the smallest (Qwen3-0.6B-4bit, kept for
35 +ongoing dev) were deleted afterward to reclaim disk.
36 +
37 +## Featured catalog dry-verification — 30/30 ✅
38 +
39 +Every repo in `docs/MODELS.md` / `ModelCatalog` verified against the live
40 +Hub: repo exists, required files listed, total size within 10 % of the
41 +catalog value (all matched to the hundredth of a GB; no gated repos, no
42 +missing files, no corrections required — `MODELS.md` and `ModelCatalog`
43 +remain in sync).
44 +
45 +**VERDICT: ALL GREEN** (`--verify` exit 0)
46