docs: документация переведена на канон av-dev-pm 3
- роадмап отвечает «что умеет и чего не умеет»: PLAN.md → ROADMAP.md, четыре канонические секции, достигнутые звенья строками в «Готово», цели переформулированы возможностями приложения - задачи: род работы и «Затрагивает» набору спринта, 34 заголовка в форму действия, «Завершение» целей перечнями со ссылкой из каждой задачи - вычитка проходами task-form и doc-wording, починены протухшие факты в README, паспорте и review.md
This commit is contained in:
+34
-21
@@ -34,8 +34,10 @@
|
||||
сам же меняет, без границы по `received_at` разбираемой доставки.
|
||||
- Правило выбора между версиями — функция множества версий либо явно функция
|
||||
порядка журнала; третьего состояния нет.
|
||||
- Столкновение разрешается полнотой, а не свежестью; изменение запечатанного
|
||||
часа пишется `WARN`, но данные пишутся.
|
||||
- Столкновение разрешается полнотой, а при равной полноте — положением в
|
||||
журнале: побеждает стоящая позже
|
||||
([ADR](adr/ADR-2026-08-04-tie-break-po-poryadku-zhurnala.md)). Изменение
|
||||
запечатанного часа пишется `WARN`, но данные пишутся.
|
||||
- Транзакция не держит блокировку дольше `busy_timeout`: канонизация и
|
||||
сжатие — вне её.
|
||||
|
||||
@@ -52,7 +54,8 @@
|
||||
- Расход памяти не растёт вместе с длиной журнала.
|
||||
- Подмена базы — решение человека при остановленном сервисе, не команды.
|
||||
|
||||
**Обработчик чтения и адаптер MCP** (Read API, MCP — ещё не написаны)
|
||||
**Обработчик чтения и адаптер MCP** (`internal/httpapi`: каталог и точки
|
||||
написаны; свёртка по сетке, тренировки, записи и MCP — ещё нет)
|
||||
|
||||
- Агрегат считается только там, где род свёртки измерен; нижний слой HAE не
|
||||
суммируется никогда.
|
||||
@@ -105,31 +108,41 @@
|
||||
- `triage`: перечислены ли запущенные проходы поимённо и с исходом; непущенный
|
||||
проход идёт в границы покрытия строкой «не запускался» (запись 2026-08-02,
|
||||
чекпоинт кода прошёл без трёх проходов).
|
||||
- `specs`: считается ли внешним поведением **состояние, которое даёт
|
||||
пересборка** — витрина наблюдаема через пересборку, поэтому расхождение с
|
||||
журналом не внутренняя деталь, а поведение, которого спека не заказывала.
|
||||
Внешнее здесь — ещё и код ответа приёма, форма ответа чтения и содержимое
|
||||
архива (переселено из триггеров профиля, канон 3).
|
||||
|
||||
### Триггеры профиля
|
||||
|
||||
Уточняет умолчания конвейера, не отменяет их.
|
||||
Уточняет умолчания конвейера, не отменяет их. Рабочее умолчание — `standard`:
|
||||
миграция схемы, публичный контракт и инвариант ступень **не** поднимают, их
|
||||
проверяют проходы, которые в `standard` и так есть.
|
||||
|
||||
- **`deep`** — изменения в правиле разбора, идентичности, слияния или вывода
|
||||
слоя; миграции схемы; всё, что трогает `internal/store`, `internal/fold`,
|
||||
`internal/replay`.
|
||||
- **«Поведение, видимое снаружи»** здесь — код ответа приёма, форма ответа
|
||||
чтения, содержимое архива и **состояние, которое даёт пересборка**: витрина
|
||||
наблюдаема через пересборку, поэтому расхождение с журналом — внешнее
|
||||
поведение, а не внутренняя деталь.
|
||||
- **`reimpl`** запускается по триггеру «новое правило слияния, идентичности или
|
||||
разбора». Единственный раз, когда триаж назвал его отсутствие дырой
|
||||
покрытия, — это была задача с новым правилом слияния сущностей.
|
||||
Второй замер (2026-08-03, словарь категориальных значений): триггер сработал
|
||||
на новом правиле разбора и ключе реестра, проход **окупился** — он независимо
|
||||
подтвердил замером две находки, до того имевшие только одно измерение (пик
|
||||
памяти накопителя: 1002 МиБ против 780 на базе; единицы счётчика отброшенных),
|
||||
и отдельно назвал семь мест, где существующее решение оказалось **лучше** его
|
||||
собственного. Второе ценно не меньше первого: оно показывает, где проход
|
||||
соглашается, а не только где спорит.
|
||||
- **Новое понятие или структурная единица** (`wide`) — новый пакет в
|
||||
`internal/`, новый род узла из перечня выше, новый тип провода в
|
||||
`internal/httpapi`, новая единица хранения, входящая в отпечаток, новый
|
||||
транспорт рядом с HTTP.
|
||||
- **Правила идентичности, слияния и разбора** (`deep`) живут в трёх местах:
|
||||
`internal/hae` — разбор пакета и вывод слоя; `internal/fold` — выбор между
|
||||
версиями точки; `internal/store` — координатный ключ и запись часового
|
||||
объекта. Правку правила в любом из них ступень поднимает; перенос кода без
|
||||
правки правила — нет.
|
||||
- **`quick`** — правка документов, конфигурации, сообщений; ничего, что меняет
|
||||
хранимое.
|
||||
|
||||
`reimpl` живёт за барьером `deep` и по тому же триггеру — новое правило слияния,
|
||||
идентичности или разбора. Замеры окупаемости: единственный раз, когда триаж
|
||||
назвал его отсутствие дырой покрытия, — задача с новым правилом слияния
|
||||
сущностей. Второй замер (2026-08-03, словарь категориальных значений): триггер
|
||||
сработал на новом правиле разбора и ключе реестра, проход **окупился** — он
|
||||
независимо подтвердил замером две находки, до того имевшие только одно измерение
|
||||
(пик памяти накопителя: 1002 МиБ против 780 на базе; единицы счётчика
|
||||
отброшенных), и отдельно назвал семь мест, где существующее решение оказалось
|
||||
**лучше** его собственного. Второе ценно не меньше первого: оно показывает, где
|
||||
проход соглашается, а не только где спорит.
|
||||
|
||||
### Недоступно проверке
|
||||
|
||||
**Не проверит ни один проход.** Реальный профиль нагрузки: телефон шлёт молча и
|
||||
|
||||
Reference in New Issue
Block a user