Controlled A19/A20 comparison, September 20, 2026.

Requires Python 3 with matplotlib and numpy.
Run: python3 analyze_runs.py qwen256_g1 qwen2048_g1 gemma256_g1 gemma2048_g2
Then: python3 plot_repeats.py
Hardware context: python3 plot_sources.py

Read methodology.md for conditions, measurement definitions and limits.
The patch applies to the base revision in build-provenance.json; add ResearchBenchmarkHarness.swift under apple/Russet/Services.
Build Release with RUSSET_RESEARCH and launch with RUSSET_RESEARCH_MODEL, RUSSET_RESEARCH_ID, RUSSET_RESEARCH_GREEDY=1, RUSSET_RESEARCH_INPUT=256 or 2048, RUSSET_RESEARCH_TOKENS=256, RUSSET_RESEARCH_LOOPS=4. Export Documents/ResearchBenchmarks/<runID>.
Qwen manifest v1 paths contain an extra model-directory suffix from iOS path aliasing; the file hashes are unaffected. Parsed tokenizer configurations are identical.
