From 7b7603e7a6f16fd61d9e2f4b1c4641c5ba4350e9 Mon Sep 17 00:00:00 2001 From: vitya Date: Fri, 21 Aug 2026 01:50:29 +0300 Subject: [PATCH] =?UTF-8?q?=D1=85=D0=B5=D0=BD=D0=B4=D0=BE=D1=84=D1=84:=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B6=D0=B5=D0=BA=D1=82=20#4=20(push=20non-fast-fo?= =?UTF-8?q?rward),=20=D1=84=D0=B8=D0=BA=D1=81=D1=8B=20#1-#3=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D0=BD=D1=8F=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .tasks/NEXT_SESSION.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.tasks/NEXT_SESSION.md b/.tasks/NEXT_SESSION.md index d0a45b2..f33378f 100644 --- a/.tasks/NEXT_SESSION.md +++ b/.tasks/NEXT_SESSION.md @@ -8,7 +8,13 @@ session_id: publish-mock-reject-3-git-identity-2026-08-20 реально прошли), но **режект #3 ozon**: git push падает `Author identity unknown`. Ждём фикс #3. -## 🔴 БЛОКЕР (режект #3): ozon git identity (письмо 22:45Z) +## 🔴 БЛОКЕР (режект #4): ozon push non-fast-forward (письмо 23:10Z) + +**Симптом:** 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) @@ -19,11 +25,7 @@ session_id: publish-mock-reject-3-git-identity-2026-08-20 **ТЗ в письме:** (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) отчёт письмом. -## ✅ Принято (проверено независимо) - -- **Фикс #1** (297bc31): dryRun-контракт — плоский `...(payload || {})` вместо `payload.data`. Проверено: 202/202, e2e dryRun=false→real, dryRun=true→dryRunDiff. -- **Фикс #2** (5ce9852): prodDeps(root) — readFile/writeFile/removeFile (fs.promises) в deps ОБЕИХ точек (server.js createPublishStage + entrypoint.js cron). e2e больше НЕ подставляет readFile руками (стабы только exec/httpGetFn/httpPostFn/log/warn/recipesVersion). Проверено: 202/202, код в пересобранном контейнере (`...prodDeps({ root })` server.js:194, `deps: prodDeps({ root: ROOT })` entrypoint.js:126). -- Yandex: плоский `data.dryRun` (publish.js:92), прямые fs.readFileSync, git identity в команде — контракт правильный. **Yandex не запускал** — жду стабильного полного ozon-цикла. +Артефакты стенда: verdaccio `@apilki/ozon-seller@0.1.0` (мок), Gitea `apilki/ozon-seller-typescript` существует пустой (push не прошёл). После фикса #4: удалить репо руками (чистый create-if-missing тест), прогнать 2 рана. ## Артефакты стенда (мок) @@ -32,10 +34,9 @@ session_id: publish-mock-reject-3-git-identity-2026-08-20 ## Стенд (host-stacks/local/sched-pipelines) -- schedd 0.9.0 healthy. ozon контейнер пересобран (фиксы #1+#2 внутри). -- tasks.json: **dryRun:false у ОБОИХ тасок** (по GO user'а), schedd рестартнут. -- state.json обновился (sha записан) — следующий ран ozon пойдёт diff-путь, - npm версия 0.1.0→0.1.1 (или patch), репо существует → push в существующее. +- 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