Write the owner's ruling that the test ban is about motive, and teach the hook to name untracked files the pathspec commit form would drop
This commit is contained in:
parent
56a1cdc1ab
commit
94381bb007
2 changed files with 26 additions and 1 deletions
|
|
@ -69,7 +69,7 @@ Go-бэкенд издательского художественного пер
|
|||
- Дисциплина: не верь заголовкам — грунтуй выводы `file:line`/цитатой; спорное верифицируй адверсариально (author≠reviewer); эмпирика на текстах, знакомых моделям по претрейну (классика, известные переводы), — предварительная: вес имеет только замер на целевом жанре.
|
||||
- **Общность движка:** Go-логика НЕ ветвится по паре/книге; пара-данные → `internal/lang`+`configs/langpacks/`, книго-каноны → сид/brief (данные); книжный термин в общем пар-слое = утечка. Тест-данные пары легитимны. Норматив (только больные места): `docs/architecture/12-go-style-notes.md`. Ревью-вопрос по умолчанию: «заработает ли на паре, которой в репо ещё НЕТ, без правки Go?»
|
||||
- **При компакции/сжатии контекста ВСЕГДА сохранять:** список изменённых файлов · незакрытые находки ревью и их диспозиции · обязательства и открытые вопросы сессии · команды тестов (D39.121).
|
||||
- **Тесты и гейты не подгонять под зелень:** править или удалять тест/голден/гейт, чтобы он прошёл, — НЕДОПУСТИМО; несогласие с тестом — вопрос оркестратору пингом, не правка (D39.121).
|
||||
- **Тесты и гейты не подгонять под зелень:** править или удалять тест/голден/гейт, чтобы он прошёл, — НЕДОПУСТИМО; несогласие с тестом — вопрос оркестратору пингом, не правка (D39.121). ⚠ **Запрет — про МОТИВ, и различие несущее (решение владельца 31.08):** правка *чтобы прошло* — запрещена; правка, вызванная ЗАКАЗАННОЙ сменой поведения, — обычное обслуживание, и **держать протухший тест НЕ НУЖНО: техдолг правим, а не консервируем**. Цена смешения уже уплачена — сессия сознательно оставила внутри теста ратифицированно-дефектный механизм, потому что чинить его ей было нельзя. Условие одно: такая правка ОБЪЯВЛЯЕТСЯ в отчёте — что изменилось в поведении, какой тест это описывал и куда уехала гарантия.
|
||||
- **Мандат самопроверки в промтах сессий (обязателен, решение владельца):** промты полигон-сессий — и вообще любых пишущих код / запросы к моделям — ДОЛЖНЫ явно требовать ревью ИСПОЛНЕНИЕМ: своего кода + сформированных запросов к моделям + полученных результатов. Сессии регулярно ошибаются и багуют, и это искажает результат; **самоотчёт «проверено» без исполнения регулярно оказывается ложным и стоит денег**. Бэкенд-промты — явный бэкенд-ревью после кода (обычно отрабатывает по опыту, но требовать явно). Пост-хок адверсариальная верификация оркестратора при лендинге — второй рубеж, НЕ замена самопроверки.
|
||||
⚠ **Исполнения мало: промт заказывает адверсариальный проход сессии по СВОЕЙ готовой работе; глубину и веер сессия выбирает под предмет, промт даёт направление — что в этом паке уязвимо.**
|
||||
⚠ **Fable 5** — обычно хватает одного-двух агентов, но это РЕКОМЕНДАЦИЯ, не потолок: веер под предмет выбирает сессия. Модель задавай агенту ЯВНО и знай, сколько их у тебя работает.
|
||||
|
|
|
|||
|
|
@ -96,6 +96,31 @@ if command -v python3 >/dev/null 2>&1 && [ -f docs/scripts/counts.py ]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
# Untracked-под-коммитом: pathspec-форма коммита МОЛЧА роняет неотслеживаемые файлы.
|
||||
# `git commit -- <пути>` обходит индекс и берёт рабочее дерево только для ОТСЛЕЖИВАЕМЫХ путей,
|
||||
# поэтому новый файл, даже застейдженный, в коммит не попадает. Ровно так 31.08 уехал коммит, чей
|
||||
# `migrations.sha256` уже ссылался на три миграции, оставшиеся снаружи; на свежем клоне схема
|
||||
# оказалась бы короче на три шага, а симптом — «почему схема не та» у следующего человека.
|
||||
# ⚠ Шум низок ПО ПОСТРОЕНИЮ: gitignored файлы (books/, .env, песочницы) в `--porcelain` не видны,
|
||||
# поэтому сюда попадает только по-настоящему новое и неигнорируемое — то есть ровно тот случай,
|
||||
# ради которого предупреждение и стоит.
|
||||
untracked=$(git status --porcelain --untracked-files=normal | sed -n 's/^?? //p')
|
||||
if [ -n "$untracked" ]; then
|
||||
dirs=$(printf '%s\n' "$staged" | sed 's#/[^/]*$##' | sort -u)
|
||||
hits=''
|
||||
for d in $dirs; do
|
||||
h=$(printf '%s\n' "$untracked" | grep -E "^${d}/[^/]*$" || true)
|
||||
[ -n "$h" ] && hits="${hits}${h}
|
||||
"
|
||||
done
|
||||
if [ -n "$hits" ]; then
|
||||
echo "pre-commit ⚠ неотслеживаемые файлы в каталогах ЭТОГО коммита — pathspec-форма их РОНЯЕТ:" >&2
|
||||
printf '%s' "$hits" | sed 's/^/ ?? /' >&2
|
||||
echo ' Нужны в коммите? git add -- <путь>, затем проверь состав: git show --name-only' >&2
|
||||
warn=1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$warn" -eq 1 ]; then
|
||||
echo "pre-commit: это ПРЕДУПРЕЖДЕНИЕ — коммит не остановлен (обход: --no-verify)." >&2
|
||||
echo " Считаешь, что хук неправ или мешает? Напиши ВЛАДЕЛЬЦУ — не обходи молча и не подпирай хаком." >&2
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue