Record that a copy under an active mutation campaign is a moving tree, and that archiving answers which commit rather than which content
This commit is contained in:
parent
4706cbcc3f
commit
11c272a798
1 changed files with 34 additions and 0 deletions
|
|
@ -608,3 +608,37 @@ HTTP-код, количество, номер строки кода. Никак
|
|||
`vcs.modified`» на нём выполняется всегда и не проверяет ничего. Фриз-дерево — локальный КЛОН.
|
||||
11. **Потолки заданы ДО первой траты** и заданы в `book.yaml` книги эксперимента — глобального носителя у
|
||||
дневного потолка нет, он по-книжный.
|
||||
|
||||
## ⛔ СРАВНИВАТЬ КОПИЮ С `HEAD`, ПОКА ПО КОПИИ ИДЁТ МУТАЦИОННАЯ КАМПАНИЯ, НЕЛЬЗЯ ПО ПОСТРОЕНИЮ (18.09)
|
||||
|
||||
**Замер.** Готовя акт, я взял прибор «то же ли содержимое у замороженной копии и у `HEAD`» и получил ДВА
|
||||
расхождения: `.env.example` (отсечён маской копирования — доказательство чистоты, не порча) и
|
||||
`internal/pipeline/volume.go`. Второе выглядело настоящим: файл кода разошёлся с историей.
|
||||
|
||||
⇒ **Ни то, ни другое не было расхождением.** Построчный `diff` того же файла дал **ноль строк**, а время
|
||||
правки в копии — секунды назад. Это **мутатор**: `tmmutate` сажает правку в файл, гоняет пакет и
|
||||
восстанавливает исходное. `diff -rq` поймал его на середине посадки.
|
||||
|
||||
⛔ **Норма: пока по копии идёт кампания, копия НЕ ЕСТЬ снимок — это движущееся дерево, и движет его твой же
|
||||
инструмент.** Утверждение «копия совпадает с `HEAD`» снимается либо ДО старта кампании, либо ПОСЛЕ её
|
||||
конца; снятое в середине оно ложно в обе стороны — можно и увидеть расхождение, которого нет, и не увидеть
|
||||
того, которое есть (файл в момент сравнения окажется восстановленным).
|
||||
⚠ И родственное, дороже: **этим же свойством нельзя проверять «цела ли копия» после инцидента.** Байтовая
|
||||
идентичность копии источнику говорит о КАТАЛОГЕ, а не о ЧИСЛАХ: записи, снятые в окно вмешательства, всё
|
||||
равно испорчены. Это уже записано выше про чужого мутатора — здесь то же самое про своего.
|
||||
|
||||
⇒ **Для акта годится замер, снятый при ЗАМОРОЗКЕ:** тогда `diff -rq` дал 0 расхождений, и это число и идёт
|
||||
в акт с указанием момента. Пост-фактум сравнение — только после `MUT_EXIT`.
|
||||
|
||||
### И третья ловушка того же часа: `git archive | sha256sum` отвечает «тот же КОММИТ», а не «то же СОДЕРЖИМОЕ»
|
||||
|
||||
Поймала сдавшая сессия, я пере-снял и подтвердил: архивы двух коммитов с ПОБАЙТНО одинаковым `backend/`
|
||||
дают разные хеши (`9de2b9e20c36` против `e4cd073cadd7`) при нулевом диффе содержимого, потому что в tar
|
||||
попадает `pax_global_header` с идентификатором коммита. **Верный прибор — объект дерева:**
|
||||
`git rev-parse <rev>:backend` дал `013097b0fb3fba1d246cd73c8dfaf6e754a6a289` с обеих сторон.
|
||||
⇒ у вопроса «то же ли содержимое» есть прибор, отвечающий именно на него; архив отвечает на соседний.
|
||||
|
||||
⭐ **Формулировка сессии, которая накрывает все три случая смены и сильнее перечисления:** *оба прибора
|
||||
честны, и именно поэтому расхождение читается как порча данных, а не как разные вопросы.* За смену этот
|
||||
класс поймал нас пятью лицами: строк против вхождений · скипы в ворктри против скипов над копией · знаки
|
||||
против байтов · архив против дерева · копия под мутатором против снимка.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue