Files
admin/.tasks/NEXT_SESSION.md

3.7 KiB
Raw Blame History

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 всегда undefinedeffectiveDryRun = 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:

  1. server.js: ...((payload && payload.data) || {}) → spread плоского payload ...(payload || {}) (или читать payload.dryRun и т.д. напрямую), комментарий обновить.
  2. Тот же плоский контракт в entrypoint.js cron-пути.
  3. Тест: envelope data.dryRun:false → реальный publish (мутации); data.dryRun:true → dryRunDiff; отсутствие → env-фоллбек.
  4. Сьют без регрессий.
  5. Отчёт письмом в .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'а

  1. Проверить письмо-отчёт ozon → если фикс корректный, GO на мок-publish (снять dryRun:true → verdaccio+Gitea).
  2. VDS-миграция — после пары дней локально.

Не делать

  • Не запускать реальные публикации в npmjs/github.com без явного GO.
  • Не слать реальные письма unisender — только мок.
  • Не патчить код команд — ТЗ через их инбоксы (письмо уже отправлено).
  • Не коммитить в репо команд — только в .admin. Письма доставляются на диск (inbox-монитор), не коммитятся.