Почини сбой публикации в маркетплейс
Когда модальное окно «Опубликовать или обновить» возвращает ошибку или ты получаешь от нас письмо о сбое публикации, найди свой код ошибки ниже и следуй исправлению. Как только ты запушишь исправление в свой репозиторий, кликни «Опубликовать или обновить» снова, чтобы перепроверить немедленно, или дождись следующего прогона ежедневного индексатора.
Каждый перечисленный здесь сбой это то, что ты можешь починить в своём репозитории. Если ты не видишь своей ошибки здесь, проверь полный справочник ошибок публикации для менее частых кодов.
terms_accepted не задан
Ты видишь это, когда у твоего caputchin.json нет "terms_accepted": true на верхнем уровне.
- Открой
caputchin.jsonсвоего репозитория. - Прочитай Условия отправки в маркетплейс.
- Добавь
"terms_accepted": trueна верхнем уровне манифеста. - Закоммить и запушь.
- Кликни «Опубликовать или обновить» снова или дождись следующего прогона ежедневной индексации.
Значение должно быть литеральным JSON-булевым true. Строки ("true"), числа (1) или опущение поля все считаются как не принято.
Лицензия не в одобренном списке
Ты видишь это, когда license отсутствует, некорректна или называет идентификатор вне нашего одобренного списка.
- Выбери идентификатор SPDX из одобренного списка, который по-настоящему покрывает твой код и встроенные ассеты.
- Открой
caputchin.jsonи задай полеlicenseна верхнем уровне, например"license": "MIT". - Если твой код под двойной лицензией, используй выражение SPDX
OR(например"MIT OR Apache-2.0"). Хотя бы одна ветвь должна быть в одобренном списке. - Если твой код под MIT, но встраивает ассеты Creative Commons, используй
AND(например"MIT AND CC-BY-4.0"). Каждая ветвь должна быть в одобренном списке. - Закоммить, запушь, повтори.
Если твой проект зависит от лицензии, которой нет в нашем одобренном списке (чаще всего семейство GPL, AGPL или LGPL), единственное исправление это перелицензировать или убрать затронутые компоненты. Мы не можем давать исключения на пер-авторской основе.
Мы не смогли найти твой репозиторий
Ты видишь это, когда наш запрос манифеста возвращает 404.
Частые причины и исправления:
- Твой репозиторий приватный. Сделай его публичным или убери тему
caputchin-game, чтобы перестать появляться в индексе. - У твоего репозитория нет темы GitHub
caputchin-game. Добавь её через секцию About на странице репозитория. - У твоего репозитория нет
caputchin.jsonв корне (или, для игр-детей в коллекции, нетcaputchin.jsonв leaf-каталоге). - URL репозитория, который ты ввёл, неверный. Используй
owner/nameили полный URLhttps://github.com/owner/name.
Запушь caputchin.json в свой репозиторий, затем повтори.
Структура манифеста некорректна
Ты видишь manifest-error, чей детальный текст начинается с имени поля вроде entry, npm, games, marketplace.support или run.modules[0].name.
Деталь говорит тебе ровно, какое поле неверно:
entry: entry must be a clean relative path: твоё значениеentryсодержит обход (../), абсолютные слеши, строки запроса или пробелы. Используй чистый путь относительно репозитория вродеdist/game.js.npm: npm package name is malformed: твоё полеnpmне валидная координата npm. Используйnameили@scope/name, только буквенно-цифровые + дефисы + точки + подчёркивания.games[i] must be a relative path inside the repo: путь-ребёнок в массивеgamesтвоей коллекции выходит за репозиторий. Используй пути вродеpackages/leaf-memory, а не../externalили/abs/path.run.entry must be a clean relative path: то же правило гигиены, что и уentry, применённое к опциональной split-run точке входа.run.modules[i].name: имя модуля должно совпадать с[a-zA-Z0-9_-]+\.(wasm|js)$и не может бытьentry.jsилиartifact.js.
Отредактируй названное поле по правилу, закоммить, запушь, повтори.
У marketplace.author некорректный email
Ты видишь это, когда marketplace.author.email присутствует, но не совпадает с нормальной формой email (одна @, домен с точками, без пробелов).
- Открой
caputchin.json. - Найди
marketplace.author.email. - Либо исправь значение на настоящий адрес email (мы используем его только для уведомлений о сбое публикации), либо убери поле целиком.
- Закоммить, запушь, повтори.
Ты также можешь убрать весь блок marketplace.author, если не хочешь получать уведомления о сбое публикации.
Твой артефакт run недетерминирован
Ты видишь это, когда наш дым соответствия запускает функцию run(seed, trace) твоей игры, и она не производит соответствующий вердикт.
Важно: это не фатальный сбой публикации. Твоя игра всё ещё залистена в просмотре маркетплейса и может быть встроена. Она просто показывается как Не воспроизводима и не может ставить ворота на ключе сайта, пока проблема детерминизма не починена.
Частые причины:
- Твоя симуляция читает
Date.now(),performance.now(),Math.random()или другие недетерминированные глобалы. - Твоя симуляция читает внешнее состояние (DOM, сеть, хранилище), которое мы не предоставляем при реплее.
- Твоя симуляция зависит от арифметики с плавающей точкой, которая различается между рантаймами.
Почини симуляцию, чтобы она была чистой функцией сида и трассы, запушь, повтори. Смотри контракт реплея о правиле детерминизма и рассмотри опциональный движковый кит, который предоставляет детерминированный засеваемый RNG и часы.
Запрос бандла сбоил
Ты видишь это, когда URL бандла, закреплённый entry и/или npm, не может быть запрошен, возвращает не-2xx или превышает 12MB.
- Если ты только что запушил новую версию: CDN может ещё не распространиться. Подожди минуту и повтори.
- Если твой бандл больше 12MB: обрежь ассеты, разбей на модули через объявление
runили перенеси крупные ассеты на другой путь доставки. - Если твой пакет
npmещё не опубликован: опубликуй его сначала; мы не можем запросить неопубликованные версии.
Слишком много запросов публикации
Ты видишь это на модальном окне ручной публикации, когда ты отправил больше десяти запросов за последние 60 секунд.
Подожди 60 секунд и повтори. Нет способа поднять лимит; он защищает эндпоинт от злоупотребления.
Остановка уведомительных писем
Если хочешь перестать получать письма о сбое публикации, смотри Условия отправки, раздел 10. Адрес получателя это твой marketplace.author.email в манифесте; убрав или поменяв его, ты останавливаешь письма.