Record that a live session's scratch tree is invisible to a repository grep, so ask ps before deleting anything outside the repo

This commit is contained in:
heaven 2026-09-16 20:37:48 +03:00
parent b61a494a23
commit 785114008f

View file

@ -235,3 +235,23 @@ UNKNOWN 1 — её, дошёл один раз до правок; десять
⚠ И общий класс, ради которого это здесь: **инструмент своей зоны, применённый к замороженному артефакту,
чинит его под себя.** Спрашивать надо не «пустит ли меня прибор», а «что он сделает с предметом, когда пустит».
## ⛔ РАБОЧИЙ КАТАЛОГ ЖИВОЙ СЕССИИ НЕ УПОМИНАЕТСЯ В РЕПОЗИТОРИИ ПО ПОСТРОЕНИЮ — греп его «мусором» и назовёт (16.09, моя ошибка)
Владелец сказал снести мусор. Я собрал кандидатов прибором «упоминается ли каталог в файлах репозитория,
включая архив» — 5034 файла, у семи целей ноль упоминаний, — и снёс 268 МБ. Среди них был `tm-mut-11`,
**рабочий корень идущего мутационного прогона бэкенд-сессии** (`tmmutate -root ~/tm-mut-11/tree -battery`).
Окно сноса 19:3619:43 пришлось на её первый прогон; она остановила его «по своей причине» и перезапустила
в 20:22, то есть ущерб мог остаться неопознанным с обеих сторон.
**Класс: отрицательный замер был верен и отвечал не на тот вопрос.** «Каталог не упомянут в репозитории»
и «каталогом никто не пользуется» — РАЗНЫЕ утверждения, и для временного рабочего дерева первое верно
ВСЕГДА: его для того и создают вне репозитория, чтобы он там не числился. Прибор ответил на свой вопрос.
**Норма перед `rm -rf` любого каталога вне репозитория:** к грепу по репозиторию ОБЯЗАТЕЛЬНО добавить
`ps -eo pid,cmd | grep <имя каталога>` и `lsof +D` (или проверку mtime свежее часа) — и печатать их рядом
с решением. Пусто в обоих — сносить; занято — не трогать и назвать владельцу, чей это процесс.
⚠ И вторая половина нормы, дороже первой: **убил чужое — пиши той сессии САМ, с точным временным окном**,
не дожидаясь, пока она наткнётся. Её числа, снятые в окно вмешательства, недействительны целиком: прогон,
у которого убрали корень, не отличает «мутация не поймана» от «файла нет».