первая встреча непокрытой секции стала наблюдаемым событием
- свёртка спрашивает журнал, встречалось ли имя строго раньше по паре (received_at, id), и пишет WARN с атрибутом uncovered_new; повторные молчат. Признак выводится, а не хранится — реестр был бы второй копией факта - добавлена подкоманда `healthlog uncovered`: перечень накопленного, чтение только на чтение, экранированные имена и названные границы носителя - синк документации: ADR о выводе новизны из журнала, две записи в журнал дефектов, два правила промоутом в конвенции, терминал оператора назван адресатом недоверенного входа
This commit is contained in:
@@ -71,3 +71,12 @@
|
||||
- Миграции — goose (`internal/store/migrations`), SQL для DDL. При изменении
|
||||
структуры обновляем схему в [database.md](../database.md) тем же изменением —
|
||||
это проверяет `task gate`.
|
||||
|
||||
- **Значение, читаемое табличной функцией SQLite (`json_each` и родня), проходит
|
||||
проверку ВНУТРИ её аргумента, а не условием в `WHERE`.** Функция получает
|
||||
значение строки раньше, чем применится фильтр, и порядок этот SQLite не
|
||||
обещает: неразбираемое значение роняет **весь** запрос, а не пропускает
|
||||
строку. Условие в `WHERE` работает, пока планировщик проталкивает его вниз, и
|
||||
перестаёт молча. Проверено на закреплённом драйвере: одна испорченная строка
|
||||
`delivery.uncovered_sections` обесценивала и сверку новизны (вечное «сверка не
|
||||
состоялась» на каждой доставке), и перечень целиком.
|
||||
|
||||
@@ -35,6 +35,17 @@
|
||||
посчитает другое и разойдётся молча (так и вышло: ключ без слоя дал 29-кратное
|
||||
расхождение). Три случая одного класса за три дня: записи 2026-08-02,
|
||||
2026-08-03 и 2026-08-04 в [review.md](../review.md).
|
||||
|
||||
Метода мало — **синтетический корпус обязан содержать измеряемый случай в той
|
||||
форме, в какой он бывает в жизни**. Сверка новизны секции мерялась на журнале,
|
||||
где новое имя стояло во всех доставках, то есть его первая встреча лежала в
|
||||
начале — ранний выход давал 31 мкс. В жизни секцию включают сегодня, первая
|
||||
встреча оказывается в хвосте, и та же операция стоит 52 мс: три порядка
|
||||
разницы, а на числе стояло решение «индекс не нужен» (запись 2026-08-04).
|
||||
|
||||
И **число живёт в одном месте.** Один и тот же замер, записанный в
|
||||
комментарий кода и в `architecture.md`, разошёлся внутри одного изменения.
|
||||
Дом числа — `design.md` изменения; остальные формулируют правило и ссылаются.
|
||||
- **Оракул сходимости называет свою посылку рядом с собой, и прогон её
|
||||
печатает.** «Пересборка = приём» — не тождество, а утверждение с условиями:
|
||||
живая свёртка шла в порядке журнала, в журнале нет доставок, чью свёртку живой
|
||||
|
||||
Reference in New Issue
Block a user