добавлен словарь категориальных значений HAE → коды HealthKit
- фазы сна, контекст пульса и имена тренировок попадают в реестр `category_value` (миграция 00010): строка хранится дословно, выведенный код лежит рядом отдельной записью, а не полем внутри точки - словарь и синонимы кодов живут в бинаре (`internal/healthkit`); локаль из `Accept-Language` сужает поиск, но в ключ реестра не входит — заголовков в сыром архиве нет - наблюдение входит в отпечаток витрины, выведенный код — нет: он производная от словаря, а не от журнала
This commit is contained in:
@@ -120,6 +120,13 @@
|
||||
- **`reimpl`** запускается по триггеру «новое правило слияния, идентичности или
|
||||
разбора». Единственный раз, когда триаж назвал его отсутствие дырой
|
||||
покрытия, — это была задача с новым правилом слияния сущностей.
|
||||
Второй замер (2026-08-03, словарь категориальных значений): триггер сработал
|
||||
на новом правиле разбора и ключе реестра, проход **окупился** — он независимо
|
||||
подтвердил замером две находки, до того имевшие только одно измерение (пик
|
||||
памяти накопителя: 1002 МиБ против 780 на базе; единицы счётчика отброшенных),
|
||||
и отдельно назвал семь мест, где существующее решение оказалось **лучше** его
|
||||
собственного. Второе ценно не меньше первого: оно показывает, где проход
|
||||
соглашается, а не только где спорит.
|
||||
- **`quick`** — правка документов, конфигурации, сообщений; ничего, что меняет
|
||||
хранимое.
|
||||
|
||||
@@ -360,6 +367,48 @@
|
||||
- **Итог по конвейеру:** `quick` 4, `standard` 6, `deep` 7–8, `design` 3.
|
||||
Было 11 на коде и 4 на дизайне.
|
||||
|
||||
## 2026-08-03 — метка от часов в отпечатке сделала тест функцией секунды прогона [пойман]
|
||||
|
||||
- **Где:** `internal/fold/categorical_test.go`, `TestFoldЛокальНеМеняетСостояния`
|
||||
- **Симптом:** гейт покраснел на одном подтесте из четырёх: «заголовок
|
||||
`{"Accept-Language":["de"]}` сдвинул отпечаток витрины». Три подтеста прошли.
|
||||
- **Причина:** тест сравнивал отпечатки четырёх независимых витрин, а метку
|
||||
приёма доставки брал из `store.Now()`. Провенанс первой встречи входит в
|
||||
отпечаток реестра — значит отпечаток зависел от того, уложились ли подтесты в
|
||||
одну секунду. Тест был флаки по построению и краснел бы у того, кто мимо
|
||||
проходил.
|
||||
- **Чем воспроизведён:** сам гейт; после замены `store.Now()` на фиксированную
|
||||
метку — `go test ./internal/fold -count=2` зелёный.
|
||||
- **Что меняем:** ничего в конвейере — гейт сработал ровно так, как задуман, и
|
||||
поймал класс, который прошлый раз (2026-08-02, подстрока «5.1» в метке
|
||||
времени) прожил незамеченным. Правило то же и уже записано в
|
||||
[conventions/testing.md](conventions/testing.md): величина, зависящая от хода
|
||||
часов, не участвует в утверждении. Запись здесь — потому что это второй случай
|
||||
одного класса за два дня, и третий стоит считать сигналом, а не совпадением.
|
||||
|
||||
## 2026-08-03 — прогон живого архива красный на master, и это не заметили две задачи подряд [проскочил]
|
||||
|
||||
- **Где:** `internal/replay/archive_test.go`, `measureStyles`
|
||||
- **Симптом:** `task verify:archive` в задаче про словарь категориальных
|
||||
значений упал на `step_count: противоречащих часов 1 при 22 согласных`.
|
||||
Проверено прогоном **базовой ревизии** `3df42af` из копии дерева на том же
|
||||
архиве: те же 2875 объектов, те же 285 координат сна, тот же отказ. Краснота
|
||||
унаследована, изменением не внесена.
|
||||
- **Причина:** утверждение «противоречий ноль» — посылка «род измерим», верная
|
||||
на корпусе, где её снимали. Корпус вырос до 145 доставок, и у `step_count`
|
||||
появился час, где минутный и часовой слои разошлись. Сама система при этом
|
||||
ведёт себя правильно: род объявляется только при единогласном свидетельстве,
|
||||
и `step_count` числится `unknown`.
|
||||
- **Почему не поймали:** ровно та же причина, что и в записи 2026-08-02, — у
|
||||
проверки, которую гейт не гоняет, краснота никому не видна. Разница в том, что
|
||||
тогда протухла константа, а теперь под вопросом сама посылка: противоречие —
|
||||
это либо дефект правила, либо законное свойство корпуса, и решать это не
|
||||
прогону.
|
||||
- **Что меняем:** конвейер — ничего. Решение о том, чем стал `step_count`
|
||||
(дефект измерения рода или законное противоречие, которое надо печатать, а не
|
||||
утверждать), принадлежит владельцу и заведено задачей отдельно от этого
|
||||
изменения. Названо здесь, чтобы третья задача подряд не открывала его заново.
|
||||
|
||||
## 2026-08-03 — ответ владельца не превращал задачу в берущуюся [проскочил]
|
||||
|
||||
- **Где:** конвейер, а не код — учёт задач, шаг «ответ на вопрос»
|
||||
|
||||
Reference in New Issue
Block a user