Диагностика и проверки
От безопасного кода ошибки к конкретной проверке.
Коды стартера и менеджера
| Симптом | Что проверить |
|---|---|
| CONFIG_DECODE / CONFIG_* | Обязательные поля, типы, границы и допустимые символы |
| EXACT_GRANT_REQUIRED | Два раскрытых точных grant и совпадение с config |
| WARN stage=subscribe / next | Существование server ID, канонический путь, доступность источника |
| INPUT_NOT_NUMBER | JSON-число или строка с JSON-числом; не объект, bool, null или массив |
| INPUT_TOO_LARGE | Вход до 4096 байт; выбран ли лист, а не устройство |
| OUTPUT_OUT_OF_RANGE | Конечный результат, модуль до 1e12, единицы и коэффициенты |
| WARN stage=publish | Доступность MQTT, точный topic и разрешенный scope |
| PLUGIN_COMMAND_BUSY / PLUGIN_HOST_BUSY | Перегрузка: увеличьте паузу и уменьшите работу |
| PLUGIN_COMMAND_TIMEOUT | Результат принятой операции может быть неизвестен; проверьте наблюдаемый эффект |
| LICENSE_PLUGIN_NOT_ENTITLED | Лицензия разрешает runtime и точный plugin ID |
| PLUGIN_ENTRYPOINT_NOT_STATIC | Static ELF правильной архитектуры без PT_INTERP |
| Crash-loop без READY | Startup, config, совместимость версий и доступные ресурсы |
Inspection отклоняет пакет
Проверьте точный platform ID и API, единственный executable, допустимые поля manifest/schema и UI widgets, отсутствие секретов в config и неподтвержденных contributions. Для прежних ID и версии проверьте конфликт digest. Не ослабляйте проверки, чтобы принять неверный пакет.
Что доказывают тесты
Unit-тесты проверяют преобразование, ID/версию, grants, config, границы payload, backoff и отмену. Linux-тесты SDK дополнительно проверяют socket transport и ожидания команд. Portable-тесты упаковщика проверяют ELF, TOML и точный состав архива, но не запуск. Inspection целевого менеджера и отдельный Linux-стенд проверяют пакет, фактическую работу, лицензию и данные.
Отчет об ошибке
Сообщите версию SDK и установки, platform, plugin ID, версию и digest пакета, этап операции, безопасный код ошибки и минимальные шаги воспроизведения. Не прикладывайте config целиком, реальные payload, пароли или токены. Повторяющиеся WARN ограничены частотой: отсутствие новой строки каждую секунду не означает остановку процесса.