docs: документация переведена на канон av-dev-pm
- беклог и план переехали в docs/tasks (38 задач, 11 целей), слаги переименованы с транслита на английские, 85 ссылок поправлены - conventions.md разобран в docs/conventions/, local-research.md — в docs/research/, review-journal.md — в docs/review.md с разделом настройки конвейера; заведены security.md, adr/ и .pm.json - шаг docs.py check добавлен в task gate; поведение в architecture.md помечено девятью маркерами долга, database.md получил настройки с числовым значением
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# Тесты
|
||||
|
||||
- Тесты на разбор формата HAE держим на **реальных пакетах**, сложенных в
|
||||
`testdata` (с вычищенными токенами). Документация формата ненадёжна —
|
||||
источником истины служат живые данные.
|
||||
- Проверяем идемпотентность: повторный разбор того же пакета не меняет
|
||||
витрину.
|
||||
- **Где код выбирает между двумя версиями одних данных, тест обязан прогнать
|
||||
обе стороны и хотя бы одну перестановку трёх.** Пример на паре доказывает
|
||||
коммутативность и молчит про ассоциативность, а сломаться правило может
|
||||
именно на ней: полнота — частичный порядок, тай-брейк — тотальный, и их
|
||||
попарная свёртка дала нетранзитивное отношение победы, из-за которого одна
|
||||
и та же доставка меняла витрину при каждой пересборке. Ревью дизайна этого
|
||||
не увидело, ревью кода увидело только перебором троек. Правилом линтера не
|
||||
выражается — отсюда проза.
|
||||
- **В тот же перебор обязана входить версия с содержимым, равным одной из уже
|
||||
присланных, и пара «равная каноническая форма, разные байты».** Три версии с
|
||||
разными хешами ветку «содержание равно» не посещают ни разу — а именно на ней
|
||||
устаревал провенанс, и живая витрина расходилась с пересборкой молча. Пара с
|
||||
равной формой ловит другое: неединственный минимум, при котором победителем
|
||||
оказывается просто первый в срезе, то есть порядок элементов на проводе.
|
||||
- **Изменение правила разбора или слияния сопровождается замером на живом
|
||||
архиве, и ответ «пересворачивать нечего» произносится с числом.** Утверждение
|
||||
без числа не отличается от предположения, а цена ошибки здесь — необратимое
|
||||
решение о судьбе тел.
|
||||
- **Тест «в логе нет значения» проверяет запись без служебных полей, а не сырой
|
||||
буфер.** Метка времени содержит доли секунды, поэтому искомая подстрока
|
||||
находится в ней сама: проверка на «5.1» краснела примерно раз на сотню
|
||||
прогонов от хода часов, а не от утечки. Разбираем запись, выбрасываем `time`
|
||||
и ищем в остатке. Правило общее — таких тестов будет больше (токены, тела
|
||||
запросов, координаты объектов).
|
||||
Reference in New Issue
Block a user