3.7 KiB
last_updated: 2026-08-20T22:00:00Z session_id: publish-dryrun-contract-blocked-2026-08-20
Next session handoff
Сессия: cancel-канал закрыт (schedd 0.9.0, тест зелёный), но мок-publish ЗАБЛОКИРОВАН — найден сломанный контракт dryRun в ozon. Письмо отправлено, ждём их фикс + отчёт.
🔴 БЛОКЕР: ozon publish-dryrun-contract-broken (письмо 21:55Z)
Root cause: generator/worker/server.js:159 читает payload.data (вложенный ключ), но
в sched-режиме payload = envelope.data ЦЕЛИКОМ (worker-http.js:88) — вложенного data
в таске нет. → mergedData.dryRun всегда undefined → effectiveDryRun = env DRY_RUN =
true всегда (compose DRY_RUN=1). Снятие dryRun:true в таске НЕ перебивает env —
publish-стадия ozon навсегда в dry-runDiff. Та же дыра для registry/remoteBase/githubApiBase
(читаются как payload.data.* → undefined → env-фоллбек).
Контракт (сосед yandex делает ПРАВИЛЬНО, worker/stages/publish.js:92):
data = ctx.data ?? {} (плоский envelope.data) → dryRun = typeof data.dryRun === 'boolean' ? data.dryRun : env.
Что требует письмо от ozon:
- server.js:
...((payload && payload.data) || {})→ spread плоского payload...(payload || {})(или читатьpayload.dryRunи т.д. напрямую), комментарий обновить. - Тот же плоский контракт в entrypoint.js cron-пути.
- Тест: envelope data.dryRun:false → реальный publish (мутации); data.dryRun:true → dryRunDiff; отсутствие → env-фоллбек.
- Сьют без регрессий.
- Отчёт письмом в .admin.
Стенд (host-stacks/local/sched-pipelines)
- schedd 0.9.0 (cancel-форвардинг, commit
225d235c), healthy. Cancel-тест зелёный (generate done → stop before stage fix; стадии после не шли; state.json остался {}). - tasks.json: ozon+yandex dryRun:true (DRY_RUN=1 в compose). НЕ трогать, пока ozon не фикснет.
- ym-client-builder / ozon-seller-builder / browser / ntfy / alert-bridge / unisender-mock — Up.
- Ozon state.json на хосте,
{}— следующий ран полный (initial).
Мок-publish — ЗАМОРОЖЕН
- yandex готов (13/13 dry, контракт правильный). ozon НЕ готов — контракт сломан, фикс от них.
- Снять dryRun:true можно ТОЛЬКО после письма-отчёта от ozon + повторной проверки контракта.
- Репо руками не создаём — create-if-missing воркеров (тестируемый сценарий).
Спроси user'а
- Проверить письмо-отчёт ozon → если фикс корректный, GO на мок-publish (снять dryRun:true → verdaccio+Gitea).
- VDS-миграция — после пары дней локально.
Не делать
- Не запускать реальные публикации в npmjs/github.com без явного GO.
- Не слать реальные письма unisender — только мок.
- Не патчить код команд — ТЗ через их инбоксы (письмо уже отправлено).
- Не коммитить в репо команд — только в .admin. Письма доставляются на диск (inbox-монитор), не коммитятся.