01
State the relationship between instruction files
The opening sentence identifies the audience of AGENTS.md and the role of CLAUDE.md. It also makes the project's intended precedence explicit instead of leaving the two files to appear interchangeable.
Source excerpt starting at line 3.3Binding for every AI agent (Claude, Codex, Cursor, review bots, …). CLAUDE.md is the full constitution; this is the operating contract. When they conflict, CLAUDE.md wins.
02 / House vocabulary
Define parity in terms of what users can do
Hardware acceleration is allowed to vary by host. The guide distinguishes that from a missing user-visible feature and rejects disabling a working optimization everywhere as a way to satisfy parity.
Source excerpt starting at line 15.15- The parity rule covers user-visible BEHAVIOUR. Hardware acceleration varies by host by design (CUDA/MPS/DirectML, Triton availability, `torch.compile`); skipping an optimization where it physically cannot work is not a parity violation.16- Do not "fix" a parity finding by disabling a working optimization everywhere. That trades a real regression for a semantic one.17- A feature the user can see and use on one OS but not another IS a violation. Judge by what the user can do, not by how fast it runs.
03 / Verification by change type
Test offline behavior without a warm cache
The offline-test rule requires both an offline flag and an empty model cache. It names the reason: a populated development cache can hide the failure that CI will encounter.
Source excerpt starting at line 12.12- Tests and CI simulate CI honestly: `HF_HUB_OFFLINE=1` + empty `HF_HUB_CACHE` — a populated dev cache masks real failures.
04 / Pointing at the source of truth
Give mechanical rules to deterministic checks
The file points at existing tests for changelog style, locale parity, version consistency, and CJK text. It directs the agent to read computed results before repeating their work.
Source excerpt starting at line 10.10- Mechanical rules live in deterministic tests, never in agent effort: changelog style (`tests/test_changelog_style.py`), locale parity (`tests/test_locale_parity.py`), version lockstep (`tests/test_app_version.py`), CJK (`tests/test_no_hardcoded_cjk.py`).
05 / Contribution etiquette
Re-evaluate stale branches under current checks
The merge protocol warns that a green result from an older workflow is not evidence that current main will pass. It requires updating stale branches before evaluating their CI and watching the post-merge runs.
Source excerpt starting at line 22.223. Merge current `main` into stale branches before judging their CI — PR-green under an old workflow ≠ main-green.234. Gate: "Tests (backend + frontend)" green + MERGEABLE.245. After EVERY merge: watch `main`'s own post-merge runs to green (`gh run list --branch main`). Red main = drop everything and fix.
06 / Hard prohibitions
Route synthetic audio through one boundary
The local-first rule bans new required network calls, gates model downloads, and names the shared synthetic-audio function. These are specific implementation boundaries for preserving the product promise.
Source excerpt starting at line 29.29- Local-first: no new required network calls; any HF download gated on installed-ness or explicit user action; all synthetic audio through the `mark_synthetic` chokepoint.