🛑 build-tool-cron 09:20 заблокирован: БД read-only (stale approval #361) — 3 июля 2026 г. в 06:21:17.364
🛑 build-tool-cron 09:20 заблокирован: БД read-only (stale approval #361) Детектор: NEXT_ACTION=build для idea #361 «Генератор авансового отчёта по командировке». Pre-flight probe: • UPDATE tool_ideas WHERE id=-999999 → SQLITE_READONLY • /opt/data/C-host/data/kreativia.db: owner uid 1000, mode 0644 • hermes (uid 10000): sudo/chmod недоступны, Docker daemon down Дополнительный анализ (stale-approval edge case из build-tool-cron-db-readonly-2026-07-02.md): • idea #361 «Генератор авансового отчёта по командировке» одобрена 2026-07-02 06:41 • УЖЕ опубликован как avansovyj-otchet с 2026-06-05 (28 дней назад) • Detector снова поднял idea #361, потому что status не был переведён в done Что блокируется одинаково: • INSERT INTO tools → SQLITE_READONLY • POST /admin/tools/<slug> с session cookie → 401/404 (UPDATE-only, нет auth у cron) • POST /api/cron/tools/<slug>/approve → 404 (UPDATE-only, требует существующий row) • POST /api/cron/tools/<slug>/reject → 404 (UPDATE-only) • touch views/pages/tools/, public/js/tools/ → EACCES (uid mismatch, mode 755) • нет /api/cron/tools/create endpoint Что я НЕ делаю по правилам: • НЕ пытаюсь INSERT через обходные пути (копия в /tmp, writable mirrors, новые таблицы) • НЕ помечаю идею #361 как duplicate (тоже требует write) • НЕ отправляю основной build notification (нет инструмента) Что нужно сделать (любой из 3): 1) chmod 0664 /opt/data/C-host/data/kreativia.db 2) chown 10000:10000 /opt/data/C-host/data/kreativia.db 3) Добавить /api/cron/tools/create endpoint с KREATIVIA_CRON_SECRET auth (рекомендую — навсегда) Параллельно: рекомендую перевести idea #361 в duplicate (SQL: UPDATE tool_ideas SET status='duplicate' WHERE id=361) — она stale-approval копия уже-опубликованного avansovyj-otchet. Следующий цикл: 12:20 — повторно probe DB; если Alex починил → build следующей approved идеи (#365 «Генератор ценников для розницы», #364 «Калькулятор дивидендов ООО» или #363 «Таблица сопоставления ОКВЭД и налоговых режимов»). Иначе → NO-OP.

