From 7ba874473f32053a1f4e7e55d3cc85a2c9110ba4 Mon Sep 17 00:00:00 2001 From: heaven Date: Fri, 11 Sep 2026 03:51:55 +0300 Subject: [PATCH] Make the freeze gate able to fail: a binary built in a linked worktree carries no VCS stamp at all, so the refusal rule was asserting silence --- docs/POLYGON_COLD_RUN_A_SESSION_PROMPT.md | 34 +++++++++++++++++------ 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/docs/POLYGON_COLD_RUN_A_SESSION_PROMPT.md b/docs/POLYGON_COLD_RUN_A_SESSION_PROMPT.md index 8e760853..32e73500 100644 --- a/docs/POLYGON_COLD_RUN_A_SESSION_PROMPT.md +++ b/docs/POLYGON_COLD_RUN_A_SESSION_PROMPT.md @@ -151,16 +151,32 @@ ### 4.2 Фриз — **делай РОВНО так** -**Фриз = sha коммита ПЛЮС бинари, собранные из `git worktree add <путь> `.** Довод — не «дерево грязное» -(оно сейчас чистое), а **главное дерево движут параллельные сессии**: в нём прямо сейчас работают движковая и -платформенная. Драйвер перед каждым платным шагом печатает `go version -m` и ОТКАЗЫВАЕТ при `vcs.modified=true` -или чужом revision. +**Фриз = sha коммита ПЛЮС бинари, собранные из ЛОКАЛЬНОГО КЛОНА** (`git clone <репо> <путь>`). Довод — не +«дерево грязное», а **главное дерево движут параллельные сессии**: в нём прямо сейчас работают движковая и +платформенная. Драйвер перед каждым платным шагом печатает `go version -m` и ОТКАЗЫВАЕТ при `vcs.modified=true`, +чужом revision **или ОТСУТСТВИИ строк `vcs.*`**. -⛔ **ИСПР. 8 — ФРИЗ-ГЕЙТ УМЕЕТ ОБНУЛИТЬ СЕБЯ.** У линкованного воркри `.git` — ФАЙЛ, поиск корня VCS в Go его -пропускает и уходит выше; напоровшись на посторонний `/tmp/.git`, сборка падает с «error obtaining VCS status», -и штатное лечение `GOFLAGS=-buildvcs=false` **стирает штамп целиком**, то есть убивает сам гейт -(эррата `D39.202`). ⇒ **перед сборкой `test ! -e /tmp/.git`; `-buildvcs=false` в фриз-сборке ЗАПРЕЩЁН; -воркри — вне репозитория и вне общего скретчпада.** ⚠ И штамп снимается **на КАЖДУЮ попытку**, а не один раз: +⛔ **ИСПР. 18 — МОЙ ЦЕНТРАЛЬНЫЙ ГЕЙТ БЫЛ ПИНОМ, УТВЕРЖДАЮЩИМ МОЛЧАНИЕ. Замерено полигоном 11.09, я +пере-проверил своим прибором.** Первая редакция велела собирать из `git worktree add`. Бинарь, собранный в +ЛИНКОВАННОМ воркри, не несёт VCS-штампа **ВООБЩЕ** — не `vcs.modified=true`, а НИ ОДНОЙ строки `vcs.*` +(24 строки `go version -m`, из них `vcs.*` — 0). Причина: у линкованного воркри `.git` — ФАЙЛ, и поиск корня +VCS в Go его пропускает; выше по дереву репозитория нет, поэтому сборка не падает, а **тихо выходит без +штампа** — тот же результат, что от запрещённого `-buildvcs=false`, только без единого предупреждения. +⇒ правило «отказывать при `vcs.modified=true`» на воркри-бинаре выполнялось ВСЕГДА и не проверяло ничего. +**Контроль, доказывающий, что механизм на этом хосте жив:** та же сборка из ГЛАВНОГО дерева даёт +`vcs.revision=…` и `vcs.modified=true`. +⇒ **Фриз-дерево — ЛОКАЛЬНЫЙ КЛОН:** у него `.git` настоящий КАТАЛОГ, и бинари несут +`vcs.revision= · vcs.modified=false` (проверено на всех трёх). Гейт получает зубы: «штампа нет» и +«штамп чужой» становятся отличимы от «штамп мой и чистый». +⚠ **И в клоне НЕТ `books/`** — внешний репозиторий держит их в `.gitignore`, книги версионируются ОТДЕЛЬНЫМ +репозиторием. Исходник читается из главного дерева как ФАЙЛ (read-only), а его провенанс — пара sha256 +(срез и оригинал) в пре-реге. Артефакт контраста кладётся в КЛОН, рядом с его `pipeline.yaml`. + +⛔ **ИСПР. 8 — ВТОРОЙ СПОСОБ ОБНУЛИТЬ ФРИЗ-ГЕЙТ, и он остаётся в силе для КЛОНА тоже.** Напоровшись на +посторонний `/tmp/.git`, сборка падает с «error obtaining VCS status», и штатное лечение +`GOFLAGS=-buildvcs=false` **стирает штамп целиком** (эррата `D39.202`). ⇒ **перед сборкой +`test ! -e /tmp/.git`; `-buildvcs=false` в фриз-сборке ЗАПРЕЩЁН; фриз-дерево — вне репозитория и вне общего +скретчпада.** ⚠ И штамп снимается **на КАЖДУЮ попытку**, а не один раз: резюм может сменить бинарь под тем же прогоном (`TM_PLATFORM_RESUME_MAY_CHANGE_ENGINE`, колонка `runs.engine_binary`) — сверяй по `run_attempts`, а не по тому, что лежит на PATH в конце.