{"id":"OMSS-1.0","published":"2026-09-24","status":"draft-for-comment","title":"Open Model Serving Standard","titleRu":"Открытый стандарт обслуживания моделей","license":"CC BY 4.0 (text), MIT (reference implementation)","object":"An offering: one API endpoint origin serving one declared model ID, optionally linked to the owner-served reference model.","objectRu":"Предложение: один адрес API, обслуживающий один заявленный ID модели, при наличии — связанный с эталоном, собранным у владельца модели.","evidenceSources":["certification","operator","scheduler"],"levels":[{"id":"conformant","code":"C","order":1,"title":"OMSS Conformant","titleRu":"Совместимость","promise":"The endpoint honours the OpenAI-compatible contract: well-formed streams, honest parameters, low error rate, complete answers and a stable declared model name.","promiseRu":"API соблюдает контракт OpenAI-совместимого протокола: корректный поток, честная работа параметров, мало ошибок, полные ответы и стабильное заявленное имя модели.","validityDays":30,"criteria":["E1","C1","C2","C3","C4","C5"]},{"id":"faithful","code":"F","order":2,"title":"OMSS Faithful","titleRu":"Верность оригиналу","promise":"On identical hidden tasks the endpoint is statistically equivalent to the model served by its owner: same quality, same answer distribution, same token accounting.","promiseRu":"На одинаковых скрытых задачах API статистически эквивалентен модели у её владельца: то же качество, то же распределение ответов, тот же подсчёт токенов.","validityDays":30,"prerequisites":["P1","P2"],"criteria":["E1","C1","C2","C3","C4","C5","F1","F2","F3","F4","F5"]},{"id":"continuous","code":"F+","order":3,"title":"OMSS Continuous","titleRu":"Верность под наблюдением","promise":"Faithful in every week of the last four, under unannounced audits from several customer identities.","promiseRu":"Верность оригиналу подтверждена в каждой из последних четырёх недель на необъявленных проверках с разных клиентских аккаунтов.","validityDays":14,"prerequisites":["P1","P2"],"criteria":["E1","C1","C2","C3","C4","C5","F1","F2","F3","F4","F5","M1"]}],"markers":[{"id":"attested","code":"A","title":"Attested","titleRu":"Аппаратная аттестация","requirement":"The provider supplies remote attestation (NVIDIA Confidential Computing, Intel TDX or AMD SEV-SNP) binding the serving environment to a weights digest published or countersigned by the model owner; at least one attestation per audit is verified.","requirementRu":"Провайдер предоставляет удалённую аттестацию (NVIDIA Confidential Computing, Intel TDX или AMD SEV-SNP), связывающую среду исполнения с хешем весов, опубликованным или подписанным владельцем модели; на каждом аудите проверяется хотя бы одна аттестация.","implemented":false}],"prerequisites":{"P1":{"title":"Reference collected","titleRu":"Эталон собран","requirementRu":"Для заявленной модели есть снимок эталона той же версии методики, собранный напрямую у владельца модели не раньше чем 45 дней назад.","maxAgeDays":45},"P2":{"title":"Calibrated decision rules","titleRu":"Правила вывода откалиброваны","requirementRu":"Действующий выпуск правил вывода откалиброван на доверенном размеченном наборе с отложенной выборкой, и его доля ложных срабатываний опубликована. Без этого уровень «Верность» не выдаётся: мы не утверждаем эквивалентность, не зная своей ошибки."}},"criteria":{"E1":{"group":"evidence","title":"Sufficient evidence","titleRu":"Достаточно доказательств","requirementRu":"Не меньше 3 аудиторских проверок в окне оценки, минимум в 2 разных дня с промежутком от 12 часов, не меньше 100 запросов измерений и хотя бы одна проверка стандартной или глубокой глубины.","rationaleRu":"Одна удачная проверка ничего не говорит об устойчивости; разнесённые по времени пробы ловят переключения конфигурации.","thresholds":{"minChecks":3,"minDistinctDays":2,"minSpacingHours":12,"minRequests":100,"fullSuites":["standard","deep"]}},"C1":{"group":"conformance","title":"Protocol integrity","titleRu":"Целостность протокола","requirementRu":"Проверка совместимости не завершилась несовместимостью ни разу; не меньше 95% потоковых ответов завершаются маркером [DONE]; usage передан не меньше чем в 90% ответов.","rationaleRu":"Клиентские SDK и биллинг опираются на эти элементы протокола; их отсутствие ломает интеграции и учёт.","thresholds":{"minDoneShare":0.95,"minUsageShare":0.9}},"C2":{"group":"conformance","title":"Parameter honesty","titleRu":"Честность параметров","requirementRu":"Параметр либо выполняется, либо явно отклоняется ошибкой. Если параметр принят, но его эффект не наблюдался в большинстве решающих измерений окна (минимум в двух проверках) или в двух из трёх последних, критерий не выполнен. Для max_tokens, stop и response_format нужно хотя бы одно решающее измерение.","rationaleRu":"Принцип «громко откажи, но не игнорируй молча»: молча проигнорированный параметр ломает продукт незаметно для разработчика.","thresholds":{"core":["max_tokens","stop","response_format"],"minIgnoredChecks":2,"maxIgnoredShare":0.5,"recentChecks":3}},"C3":{"group":"conformance","title":"Reliability","titleRu":"Надёжность","requirementRu":"Верхняя граница 95% интервала Уилсона для доли запросов с ошибкой (таймаут, обрыв потока, 5xx, 429) не выше 3%.","rationaleRu":"Используется верхняя граница, а не точечная оценка: провайдер не получит знак за счёт малой выборки.","thresholds":{"maxErrorRateUpper95":0.03}},"C4":{"group":"conformance","title":"Complete answers","titleRu":"Полные ответы","requirementRu":"Верхняя граница 95% интервала для доли задач без полного ответа (пустой, обрезанный после повторов) не выше 5%.","rationaleRu":"Обрезанные и пустые ответы — частый симптом неверной настройки сервера или экономии на лимитах.","thresholds":{"maxIncompleteUpper95":0.05}},"C5":{"group":"conformance","title":"Stable declared identity","titleRu":"Стабильное заявленное имя","requirementRu":"Поле model в ответах, если оно передаётся, содержит одно и то же значение во всём окне оценки.","rationaleRu":"Разные значения поля model в одном окне означают маршрутизацию на разные модели без ведома клиента. Одинаковое значение не доказывает подлинность — это проверяют критерии F.","thresholds":{"maxDistinctReturnedModels":1}},"F1":{"group":"fidelity","title":"Capability equivalence","titleRu":"Эквивалентность качества","requirementRu":"Разница доли верных ответов с эталоном доказанно лежит в пределах ±5 п.п.: 90% интервал Ньюкомба для разности целиком внутри (−0,05; +0,05) — это тест эквивалентности TOST на уровне 5%. Ни в одной категории с выборкой от 10 задач нижняя граница разности не ниже −0,10.","rationaleRu":"Отсутствие значимой разницы — не доказательство сходства. Мы требуем доказать эквивалентность, поэтому маленькая выборка ведёт к «недостаточно данных», а не к знаку.","thresholds":{"margin":0.05,"alpha":0.05,"categoryFloor":-0.1,"categoryMinSamples":10}},"F2":{"group":"fidelity","title":"Answer distribution","titleRu":"Распределение ответов","requirementRu":"Ни одна проверка в окне не показала статистически значимого сдвига распределения ответов (перестановочный тест, p < 0,01), средний JSD по проверкам не выше 0,05, у каждой стороны не меньше 25 ответов на тип вопроса.","rationaleRu":"Две модели с одинаковой точностью всё равно выбирают разные ответы на неоднозначные вопросы; распределение ловит подмену, которую не видно по доле верных.","thresholds":{"maxMeanJsd":0.05,"minSamplesPerCell":25,"shiftPValue":0.01}},"F3":{"group":"fidelity","title":"Honest token accounting","titleRu":"Честный подсчёт токенов","requirementRu":"Медиана отношения входных токенов к эталону в пределах 0,98–1,02, выходных токенов на символ ответа — в пределах 0,90–1,10.","rationaleRu":"Завышенный подсчёт токенов — прямой переплат клиента; другой токенизатор — признак другой модели.","thresholds":{"prompt":[0.98,1.02],"completion":[0.9,1.1]}},"F4":{"group":"fidelity","title":"Determinism parity","titleRu":"Повторяемость как у оригинала","requirementRu":"Если эталон при temperature 0 совпадает сам с собой не меньше чем в 80% случаев, совпадение ответов провайдера с эталоном не ниже 50%.","rationaleRu":"Детерминированная модель у владельца и недетерминированная у провайдера — признак другой сборки, квантования или модели.","thresholds":{"minReferenceSelfMatch":0.8,"minCandidateMatch":0.5}},"F5":{"group":"fidelity","title":"No substitution signal","titleRu":"Нет сигнала подмены","requirementRu":"В окне нет проверок с уровнем «сигнал для повторной проверки» или «подтверждено внешним источником», а «наблюдается отклонение» — не больше чем в трети проверок.","rationaleRu":"Критерий связывает сертификат с правилами вывода, которые работают для каждой проверки.","thresholds":{"maxDeviationShare":0.3333333333333333,"forbidden":["substitution_suspected","confirmed_external"]}},"M1":{"group":"monitoring","title":"Continuous monitoring","titleRu":"Непрерывное наблюдение","requirementRu":"Каждая из последних 4 недель содержит не меньше 2 аудиторских проверок, и в каждой неделе критерии F1–F5 выполнены на данных этой недели или объединённых данных соседних недель.","rationaleRu":"Разовая проверка не защищает от смены конфигурации после выдачи знака.","thresholds":{"weeks":4,"minChecksPerWeek":2}}},"policy":{"windowDays":14,"surveillance":"Every active certificate is re-evaluated after each new audit. A failed criterion suspends it; a failure confirmed by a second independent audit revokes it. Suspension and revocation are public log entries.","surveillanceRu":"Каждый действующий сертификат пересчитывается после каждого нового аудита. Невыполненный критерий приостанавливает сертификат; подтверждение вторым независимым аудитом отзывает его. Приостановка и отзыв — публичные записи журнала.","hiddenTests":"Audit prompts are generated from a per-epoch secret whose SHA-256 commitment is published when the epoch opens and revealed when it closes.","hiddenTestsRu":"Задачи аудита генерируются из секрета эпохи. Его SHA-256 публикуется при открытии эпохи, сам секрет — при закрытии: провайдер не может заранее знать задачи, а мы не можем задним числом выбрать удобные.","independence":"Fees, when introduced, never depend on the outcome. The certification body does not consult certified providers."}}