_last_updated_: 2026-08-20T22:00:00Z session_id: sched-cancel-fixed-2026-08-20 --- # Next session handoff Сессия: **cancel-баг закрыт** — schedd 0.9.0 применён, cancel-тест зелёный. Ждём GO на реальный мок-publish. ## ✅ DONE: schedd 0.9.0 применён + cancel-тест ЗЕЛЁНЫЙ - `schedd.Dockerfile`: `@sched/daemon@0.8.0` → `@sched/daemon@0.9.0` (verdaccio latest, core 0.48.0), commit `225d235c`, запушен. - `docker compose up -d --build schedd` — контейнер healthy. - Cancel-тест (полный ран ozon, state {} → full run, cancel на generate): - schedd: `[sched] [cancel] POST http://ozon-seller-builder:8080/cancel/ runId=...` + `[cancel] ack runId=... status=200` — **форвардинг реально слал сигнал** (в 0.8.0 не слался никогда). - воркер: `[cancel] received runId=...` + `[cancel] flag set`; generate докрутился → `[stage] generate done` → `[cancel] stop before stage fix`. - Стадии fix/build/postman/state/publish **НЕ выполнялись**; state.json остался `{}`; ран `cancelled (error: cancelled by user)`. - Root cause подтверждён: daemon-диспетчер не форвардил cancel → теперь форвардит по task.runner, нет хука → no-op. ## Стенд (host-stacks/local/sched-pipelines) - schedd 0.9.0, ym-client-builder свежий (cancel-канал + логи), ozon свежий. Все контейнеры Up, schedd healthy. - tasks.json: ozon stages [...publish] dryRun:true; yandex stages [...publish, githubDistro] dryRun:true. DRY_RUN=1 в compose. - Ozon state.json на хосте (bind-mount), `{}` — следующий ран полный (initial). ## Мок-publish статус - **Мок-npm = verdaccio** (verdaccio.kzntsv.site), **мок-GitHub = Gitea** (git.kzntsv.site, орга `apilki`, push x-access-token:TOKEN@ проверен). - **Оба dry-publish зелёные**: yandex 13/13 (publish+githubDistro), ozon 10/10 (publish dryRun preview). GitHub/Gitea/verdaccio чисты — ноль мутаций. - Репо руками НЕ создаём — create-if-missing воркеров (тестируемый сценарий). - data dryRun в тасках: `registry/remoteBase/githubApiBase` через `__PUBLISH_*__` плейсхолдеры в render-tasks.cjs (из .env, gitignored). ## Спроси user'а 1. **GO на реальный мок-publish**: снять `dryRun:true` → воркеры реально публикуют в verdaccio (npm) + Gitea (репо/релизы). Теперь безопасно: cancel останавливает воркера, dry-run инфраструктура мок-окружения (не npmjs/github.com). 2. VDS-миграция — после пары дней локально. ## Не делать - Не запускать реальные публикации в npmjs/github.com (реальный publish без dryRun на реальные endpoints) без явного GO. - Не слать реальные письма unisender — только мок (unisender-mock). - Не патчить код команд — ТЗ через их инбоксы/доски. - Не коммитить в репо команд — только в .admin.