From 81f9b2ffafa4e9ff62c208d645a6649665b5ad03 Mon Sep 17 00:00:00 2001 From: heaven Date: Thu, 17 Sep 2026 02:21:45 +0300 Subject: [PATCH] Make the docs gate block on head and literal divergence while anchors stay a warning, and mark the superseded reason as superseded --- docs/scripts/githooks/pre-commit | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/docs/scripts/githooks/pre-commit b/docs/scripts/githooks/pre-commit index df0f89d9..055a13ef 100755 --- a/docs/scripts/githooks/pre-commit +++ b/docs/scripts/githooks/pre-commit @@ -6,7 +6,12 @@ # │ ДЕЛАЕТ: при коммите, задевающем ЛЮБОЙ док, проверяет file:line-якоря живых доков; при │ # │ коммите с D-логом или PROGRESS дополнительно сверяет три носителя номера головы и │ # │ производные числа доков (счёт очереди, зон, вес открытых строк регистра платформы). │ -# │ НЕ ДЕЛАЕТ: не блокирует коммит НИКОГДА — только печатает предупреждение и выходит 0. │ +# │ БЛОКИРУЕТ (с 17.09, D39.260 п.3 — слово владельца «блокировать, исправлять, но не хакать»): │ +# │ расхождение ГОЛОВЫ и производных ЧИСЕЛ. Это свои носители, они читаются по содержимому │ +# │ коммита, и ложного срабатывания у них нет по построению — лечится только правкой. │ +# │ ПРЕДУПРЕЖДАЕТ (не блокирует): якоря и неотслеживаемые файлы. Цели якорей читаются из ДЕРЕВА, │ +# │ поэтому чужой незакоммиченный код роняет их ТРАНЗИЕНТНО; блокирующий гейт, который врёт │ +# │ на чужой работе, начинают обходить — а это ровно то, что запрещено тем же словом. │ # │ Не трогает содержимое, не правит файлы, не лезет в сеть, не запускает тесты. │ # │ ЕСЛИ МЕШАЕТ: `git commit --no-verify` обходит всю цепочку; выключить только этот фрагмент — │ # │ `chmod -x docs/scripts/githooks/pre-commit`. Ни то, ни другое ничего не ломает. │ @@ -18,8 +23,9 @@ # │ ПОЧЕМУ ВООБЩЕ: голова CURRENT-STATE отставала ТРИЖДЫ у трёх РАЗНЫХ оркестраторов │ # │ (D39.81 · D39.83 · D39.112 п.5б). Одна ошибка у независимых сессий на одном поле — │ # │ свойство поля, а не сессий, поэтому проверка механическая, а не нормой прозой. │ -# │ ПОЧЕМУ ПРЕДУПРЕЖДАЕТ, А НЕ БЛОКИРУЕТ: фрагмент общий, он сработает у сессии, которой я не │ -# │ писал промт. Останавливать чужой коммит — решение владельца, не моё (оркестратор №15). │ +# │ ⛔ ПРЕЖНИЙ ДОВОД ОТМЕНЁН 17.09. Он гласил: «фрагмент общий, останавливать чужой коммит — │ +# │ решение владельца, не моё (оркестратор №15)». Владелец это решение принял: блокировать. │ +# │ Оставлено здесь, чтобы отменённое не прочли как действующее. │ # └────────────────────────────────────────────────────────────────────────────────────────────┘ # # Ложные тревоги, которых здесь СОЗНАТЕЛЬНО избегают, — это важнее, чем полнота: хук, который @@ -63,11 +69,11 @@ if printf '%s\n' "$staged" | grep -qx "$dlog"; then if [ -n "$note" ] && [ -n "$claimed" ] && [ "$note" != "$claimed" ]; then echo "pre-commit ⚠ docs: голова разошлась — последняя нота D-лога $note, CURRENT-STATE говорит $claimed." >&2 echo " Норма: голова бампается в ТОМ ЖЕ коммите, что аппенд ноты (промт оркестратора)." >&2 - warn=1 + block=1 fi if [ -n "$note" ] && [ -n "$banner" ] && [ "$note" != "$banner" ]; then echo "pre-commit ⚠ docs: шапка-диапазон D-лога $banner при последней ноте $note." >&2 - warn=1 + block=1 fi fi @@ -81,7 +87,7 @@ if printf '%s\n' "$staged" | grep -qE "^($dlog|$prog|$backlog)$"; then # Печатаем строки-находки, а если их нет (скрипт УПАЛ) — весь вывод: предупреждение с пустым # телом нечитаемо и учит игнорировать хук. printf '%s\n' "$out" | grep '✗' >&2 || printf '%s\n' "$out" | tail -5 >&2 - warn=1 + block=1 fi fi fi @@ -124,6 +130,12 @@ if [ -n "$untracked" ]; then fi fi +if [ "${block:-0}" -eq 1 ]; then + echo "pre-commit ⛔ КОММИТ ОСТАНОВЛЕН: расхождение головы или производных чисел (D39.260 п.3)." >&2 + echo " Это свои носители и ложных тревог у них нет: лечится правкой, а не обходом." >&2 + echo " Обход --no-verify существует, но он ДЕЙСТВИЕ, а не мнение: считаешь гейт неправым — напиши владельцу." >&2 + exit 1 +fi if [ "$warn" -eq 1 ]; then echo "pre-commit: это ПРЕДУПРЕЖДЕНИЕ — коммит не остановлен (обход: --no-verify)." >&2 echo " Считаешь, что хук неправ или мешает? Напиши ВЛАДЕЛЬЦУ — не обходи молча и не подпирай хаком." >&2