# Digitable We build **Digit**, a local agent for the Russian-language course platform [courses.digitable.life](https://courses.digitable.life). Its design constraint is unusual: the language model is not allowed to be a source of facts. Every fact in an answer comes from a deterministic utility, a verbatim quote from the course corpus, or a formal certificate — the model only chooses which of those to invoke. The models published here are the piece that does the choosing. ## What is in this organisation **These are tool routers, not general-purpose assistants.** Each one maps a user query to a tool category, then emits a tool call with extracted arguments — or refuses. It does not write the answer. Load one as a chat model and you will get nonsense, and none of our published metrics describe that use. | Repository | What it is | |---|---| | [`digit-router-0.6b`](https://huggingface.co/digitable-lol/digit-router-0.6b) | The shipping router. LoRA adapters (v1/v2/v3) over `Qwen/Qwen3-0.6B` plus merged GGUF quantisations. 424 MiB at Q5_K_M, ~500 ms per full two-step routing cycle on 8 CPU threads. | | [`digit-router-1.7b`](https://huggingface.co/digitable-lol/digit-router-1.7b) | The same training run at 1.7B. Higher routing accuracy; measurably not worth 3× the parameters for this task. | | [`digit-router-experiments`](https://huggingface.co/digitable-lol/digit-router-experiments) | Three adapters that lost — Vikhr, ruadapt, QVikhr-3. Published so the negative result stays reproducible instead of becoming folklore. | ## How to read our numbers Two conventions run through every model card, and both exist because the obvious way to report these numbers is misleading: * **A counted refusal is not a conscious refusal.** An eval harness scores an unparseable answer as a refusal, so a model that merely breaks scores like a model that knows when to decline. We always report both columns. The untuned 0.6B base scores 75.3 % counted against 9.3 % conscious — a 66-point gap that is entirely broken output. * **Known defects are stated before the good tables, not in a footnote.** The imatrix quantisation of the 0.6B model measurably breaks its ability to refuse and carries a do-not-deploy warning next to the file. At Q4 the routers do not emit garbage; they emit structurally flawless tool calls with invented arguments, and a GBNF grammar does not catch that. Our v3 adapters are a routing regression against v2 on a single seed. All of this is on the model pages. Every published file's sha256 is recorded in a `MANIFEST.json` in its repository. We track runs by weight hash rather than by tag, because a tag was once re-created from a different build while a 250-task evaluation was in flight. Base models are `Qwen/Qwen3-*` under Apache-2.0. The training data is derived from a GPL-3.0 utility catalogue; we state that provenance on every page and do not claim to have resolved what it means for weights. --- ## По-русски Мы делаем **Digit** — локального агента для платформы курсов [courses.digitable.life](https://courses.digitable.life). Ограничение архитектуры необычное: языковой модели запрещено быть источником фактов. Содержание ответа даёт детерминированная утилита, дословная цитата из корпуса курсов или формальный сертификат. Модель выбирает, что вызвать, — и только. **Здесь лежат маршрутизаторы, а не универсальные ассистенты.** Модель относит запрос к категории инструментов и извлекает аргументы либо отказывается; ответ она не пишет. Если загрузить её как чат-модель, вы получите бессмыслицу, и опубликованные метрики к такому использованию не относятся. Два правила чтения наших чисел. Первое: **засчитанный отказ ≠ осознанный** — харнесс считает отказом любой неразбираемый ответ, поэтому сломанная модель выглядит как осторожная; мы всегда печатаем обе колонки. Второе: **известные дефекты стоят до таблиц с хорошими числами, а не в примечаниях.** imatrix-квант 0.6B ломает способность отказываться и помечен как непригодный к поставке; при Q4 модель выдаёт структурно безупречные вызовы с выдуманными аргументами, и грамматика этого не ловит; адаптеры v3 — измеренный регресс маршрутизации против v2 на одном seed. sha256 каждого опубликованного файла записан в `MANIFEST.json` соответствующего репозитория.