6.2 KiB
last_updated: 2026-08-20T22:50:00Z session_id: publish-mock-reject-3-git-identity-2026-08-20
Next session handoff
Сессия: мок-publish в прогрессе — контракт dryRun работает (npm publish + create-repo
реально прошли), но режект #3 ozon: git push падает Author identity unknown.
Ждём фикс #3.
🔴 БЛОКЕР (режект #5): ozon cleanup tmp ENOTEMPTY (письмо 23:20Z)
Симптом: 6-й ран ozon (фиксы #1-#4 внутри): publish-цепочка РАБОТАЕТ вживую — npm 0.1.0 ✅, create-repo ✅ (удалял для чистого теста → создано), clone+commit+push fast-forward ✅ (release 0.1.0 поверх Initial commit), state сохранён. НО ран failed: ENOTEMPTY: directory not empty, rmdir '/tmp/ozon-gh-*/.git' в finally fs.rmSync(workdir, {recursive:true, force:true}) (publish.js ghPublish) после успешного push. Ложный failed для sched + риск E409 при retry. ТЗ: maxRetries/retryDelay в rmSync ИЛИ cleanup-ошибка не валит ран (try/catch в finally, warn) + тест с реальным git (после рана нет /tmp/ozon-gh-*, ран не failed).
✅ Принято (проверено независимо)
- Фикс #1 (297bc31) dryRun плоский payload; #2 (5ce9852) prodDeps readFile; #3 (06db835) git identity; #4 (ea74503) clone вместо git init — все проверены, 205/205, интеграционные тесты реального git. push fast-forward вживую подтверждён.
Симптом: 2-й полный ран ozon (dryRun:false): npm publish прошёл (0.1.0, после моего unpublish), create-if-missing ок (репо существует), commit с identity прошёл (фикс #3 работает), но push упал: failed to push some refs / git pull before pushing again — ghPublish всегда git init в tmp (publish.js:180, mkdtemp 297) → локальный main без ancestor с origin/main (README auto_init). 1-й ран работает (репо создаётся в этом же ране), 2-й — non-fast-forward. Yandex: ensureRepo→cloneRepo→assemble→push (github-distro.js:79-92). ТЗ: clone существующего репо вместо init (как yandex) + тест на 2-й ран (push fast-forward, реальный git как в publish-gh.test.js:87).
✅ Принято (проверено независимо)
- Фикс #1 (297bc31) dryRun плоский payload; #2 (5ce9852) prodDeps readFile; #3 (06db835) git identity -c user.name/-c user.email — все проверены, 204/204, интеграционный тест реального git. commit вживую прошёл.
Симптом: 3-й полный ран ozon (dryRun:false): стадии 8/10 прошли, publish:
- ✅ npm publish
@apilki/ozon-seller@0.1.0→ verdaccio (провереноnpm view→ 0.1.0) - ✅ create-if-missing: репо
apilki/ozon-seller-typescriptсоздано в Gitea (REST POST) - ❌
git pushexit 128:Author identity unknown/unable to auto-detect email address
Root cause: service/publish.js:180 ghPublish: git init && git add && git commit -m "release ${v}" && git push — в команде НЕТ -c user.name=/-c user.email=. Контейнер без git identity → commit падает. Yandex решает (worker/stages/github-distro.js:132): -c user.name=apilki -c user.email=apilki@users.noreply.github.com — этот паттерн и требовать от ozon.
ТЗ в письме: (1) -c user.name=apilki -c user.email=apilki@users.noreply.github.com в git-команду commit; (2) тест на сборку команды (assert -c user.name= в строке — их exec-стаб identity не ловит), идеально — интеграционный с реальным git в tmp; (3) сьют без регрессий; (4) отчёт письмом.
Артефакты стенда: verdaccio @apilki/ozon-seller@0.1.0 (мок), Gitea apilki/ozon-seller-typescript существует пустой (push не прошёл). После фикса #4: удалить репо руками (чистый create-if-missing тест), прогнать 2 рана.
Артефакты стенда (мок)
- verdaccio:
@apilki/ozon-seller@0.1.0опубликован (мок — ок). - Gitea:
apilki/ozon-seller-typescriptсоздан, пустой (push не прошёл) — после фикса #3 ран до-push'нет его.
Стенд (host-stacks/local/sched-pipelines)
- schedd 0.9.0 healthy. ozon контейнер пересобран (фиксы #1+#2+#3 внутри).
- tasks.json: dryRun:false у ОБОИХ тасок, schedd рестартнут.
- state.json: {} (сбрасывал для initial) — следующий ран initial. Внимание: initial → версия 0.1.0 — при существующем в verdaccio 0.1.0 будет E409 (уже ловили) — перед initial-раном unpublish из verdaccio или diff-ран (0.1.1).
Мок-publish — ждём фикс #3
Порядок после фикса: пересобрать ozon → ран (diff-путь) → проверить verdaccio (0.1.1?)
- Gitea (содержимое репо) → затем yandex (13 стадий: fetch...publish, githubDistro).
Спроси user'а
- Проверить отчёт ozon по фиксу #3 → GO на продолжение мок-publish.
- VDS-миграция — после пары дней локально.
Не делать
- Не запускать реальные публикации в npmjs/github.com без явного GO.
- Не слать реальные письма unisender — только мок.
- Не патчить код команд — ТЗ через их инбоксы (письма 21:55Z, 22:20Z, 22:45Z).
- Не коммитить в репо команд — только в .admin. Письма на диск (inbox-монитор).