Files
admin/.tasks/NEXT_SESSION.md

54 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
_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:**
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-монитор), не коммитятся.