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:
@@ -187,7 +187,7 @@ JSON-массив имён (`["stateOfMind"]`), пустой список — `[
|
||||
установившееся состояние половины потока (48 доставок из 99). Постоянный `WARN`
|
||||
каждые пять минут обесценивает уровень ровно так же, как обесценило бы
|
||||
сравнение с заголовком `Default`. Момент появления **новой** секции — отдельная
|
||||
задача (`proverka-novyh-sekcij`), и она будет опираться на сохранённый список.
|
||||
задача (`unseen-sections-check`), и она будет опираться на сохранённый список.
|
||||
|
||||
Имена идут структурным атрибутом (`[]string`), а не склейкой в строку: JSON-
|
||||
кодировщик `slog` экранирует управляющие символы, поэтому имя из чужого тела не
|
||||
|
||||
@@ -54,5 +54,5 @@
|
||||
- `internal/fold` — исход свёртки, статус и атрибут лога.
|
||||
- `docs/database.md`, `docs/architecture.md`, `docs/local-research.md` —
|
||||
схема, статусы и находка о наборах секций в живом потоке.
|
||||
- Ретеншен сырого архива (задача `retenshen-syrogo-arhiva`) получает признак,
|
||||
- Ретеншен сырого архива (задача `raw-archive-retention`) получает признак,
|
||||
на который ему можно опираться.
|
||||
|
||||
@@ -62,5 +62,5 @@
|
||||
- [x] 6.2 `README.md`: строка про условный запрос в примерах чтения
|
||||
- [x] 6.3 `docs/backlog`: задача снята, остаток (предел ответа, измеренная цена
|
||||
первого запроса, готовая машинерия условного запроса) перенесён в
|
||||
`read-api-tochki.md`; наблюдаемость — в `stats-nablyudaemost.md`, цена
|
||||
ветки исчерпанного бюджета — в `ostanovka-i-migraciya-sledy.md`
|
||||
`read-api-points.md`; наблюдаемость — в `stats-endpoint.md`, цена
|
||||
ветки исчерпанного бюджета — в `shutdown-and-migration-traces.md`
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
- [x] 11.3 `docs/review-journal.md`: запись о чекпоинте кода без трёх проходов.
|
||||
- [x] 11.4 Остатки заведены задачами беклога: NULL-метка; пределы размера
|
||||
сущности и секции с потоковым расчётом; принцип отбора data-миграций;
|
||||
строка про очередь `pending` — в `stats-nablyudaemost.md`.
|
||||
строка про очередь `pending` — в `stats-endpoint.md`.
|
||||
|
||||
## 12. Приёмка
|
||||
|
||||
|
||||
@@ -90,9 +90,9 @@
|
||||
корпусе
|
||||
- [x] 7.4 Блокер «тай-брейк при равной полноте точек» в беклог, с вариантами,
|
||||
ценой и рекомендацией
|
||||
- [x] 7.5 Пометка в `docs/backlog/read-api-tochki.md`: порог неполного ведра,
|
||||
- [x] 7.5 Пометка в `docs/tasks/items/read-api-points.md`: порог неполного ведра,
|
||||
его полярность и предел размера ответа решаются там
|
||||
- [x] 7.6 Пометка в `docs/backlog/upravlenie-sekretami.md`: контуров теперь два
|
||||
- [x] 7.6 Пометка в `docs/tasks/items/token-and-secret-management.md`: контуров теперь два
|
||||
- [x] 7.7 Убрать задачу из беклога, обновить индекс
|
||||
|
||||
## 8. Дозакрыто по ревью кода
|
||||
|
||||
@@ -279,7 +279,7 @@ received_at > ? OR (received_at = ? AND id > ?) → SCAN … COVERING INDEX d
|
||||
отвечать `200`.
|
||||
|
||||
Числа — текущая длина `pending`, возраст самой старой неразобранной доставки —
|
||||
это `/stats`, и они уезжают строкой в задачу `stats-nablyudaemost`. Здесь их
|
||||
это `/stats`, и они уезжают строкой в задачу `stats-endpoint`. Здесь их
|
||||
нет намеренно: отдельного механизма счётчиков в проекте пока не существует.
|
||||
|
||||
### 6. Частичный индекс по неразобранным доставкам
|
||||
@@ -388,7 +388,7 @@ write_timeout)`. Тогда `/healthz` и будущий Read API сохраня
|
||||
- **Задолженность после рестарта разбирается не мгновенно** → 116 тел живого
|
||||
архива это порядка минуты работы воркера; всё это время витрина неполна.
|
||||
Названо `INFO`-строкой при старте. `/healthz` этого не отражает — он статичен;
|
||||
отражать будет `/stats`, задача `stats-nablyudaemost`.
|
||||
отражать будет `/stats`, задача `stats-endpoint`.
|
||||
- **Второй процесс на той же базе даёт двух воркеров** → «одна горутина» —
|
||||
свойство процесса, а не файла базы. Порчи витрины ждать не приходится
|
||||
(`_txlock=immediate` и повтор транзакции сериализуют слияние), но наследование
|
||||
@@ -401,7 +401,7 @@ write_timeout)`. Тогда `/healthz` и будущий Read API сохраня
|
||||
только то, что параллельность стала штатной. `busy_timeout`,
|
||||
`_txlock=immediate` и повтор транзакции уже есть, а исчерпание повторов теперь
|
||||
не стирает доставку с полки (решение 4б). Наблюдение за этим — задача
|
||||
`cena-sliyaniya-na-shirokoj-dostavke`.
|
||||
`merge-cost-wide-delivery`.
|
||||
- **Тик даёт проход раз в минуту при пустой очереди** → это один запрос по
|
||||
покрывающему частичному индексу, в котором ноль строк. Цена измеримо нулевая,
|
||||
а без него состояние «работа есть, прогресса нет» невидимо.
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
быстрого прохода, и одна строка `INFO` о размере задолженности при старте.
|
||||
Метка считается на выборке прохода, а сам проход будит не только сигнал, но и
|
||||
тик — иначе «работа есть, прогресса нет» неотличимо от пустого потока.
|
||||
Счётчики в `/stats` — задача `stats-nablyudaemost`, здесь только метки в логе.
|
||||
Счётчики в `/stats` — задача `stats-endpoint`, здесь только метки в логе.
|
||||
- Убирается второй, оставшийся источник молчаливого обрыва: общий `write_timeout`
|
||||
(30 с) меньше `read_timeout` (5 мин), а он покрывает и чтение тела — то есть
|
||||
медленная загрузка 64 МиБ обрывается независимо от свёртки. Длинный бюджет
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
не память; порядок журнала и остановка; классификация «отказ доставки»
|
||||
против «отказ обстоятельств»; бюджет ответа маршрута приёма; отвергнутые
|
||||
варианты с причинами.
|
||||
- [x] 9.2 Строка в задачу беклога `stats-nablyudaemost`: длина `pending`,
|
||||
- [x] 9.2 Строка в задачу беклога `stats-endpoint`: длина `pending`,
|
||||
возраст самой старой неразобранной доставки и то, что `/healthz` их не
|
||||
отражает.
|
||||
|
||||
@@ -177,4 +177,4 @@
|
||||
разбора, добавлен класс «отложено».
|
||||
- [x] 10.11 Остаточный предел порядка при конкурентных приёмах назван в спеке и
|
||||
в `docs/architecture.md`, вынут блокером
|
||||
(`docs/backlog/poryadok-zhurnala-na-priyome.md`).
|
||||
(`docs/tasks/items/journal-order-on-ingest.md`).
|
||||
|
||||
@@ -50,12 +50,12 @@ stateOfMind 26 и 26 копий, по 1 содержимому каждая
|
||||
**Non-Goals:**
|
||||
|
||||
- **Отдача наружу.** Read API в проекте нет вовсе; форма конверта, выбор слоя и
|
||||
предел размера ответа проектируются задачей `read-api-tochki`. Два эндпоинта,
|
||||
предел размера ответа проектируются задачей `read-api-points`. Два эндпоинта,
|
||||
введённые раньше конверта, задали бы контракт мимоходом.
|
||||
- **Секции, которых поток не приносил** (`ecg`, `symptoms`, `cycleTracking`,
|
||||
`medications`, `heartRateNotifications`). Модель под них закладывается —
|
||||
таблица `record` ключуется родом секции, — но разбор не пишется вслепую: их
|
||||
формы никто не видел, а задача `proverka-novyh-sekcij` существует ровно про
|
||||
формы никто не видел, а задача `unseen-sections-check` существует ровно про
|
||||
момент, когда они появятся.
|
||||
- **Разворачивание маршрута** в таблицу точек — отдельная идея беклога, у неё нет
|
||||
клиента.
|
||||
@@ -158,7 +158,7 @@ stateOfMind 26 и 26 копий, по 1 содержимому каждая
|
||||
что воркер сворачивает в порядке `(received_at, id)` только среди **видимых**
|
||||
ему доставок, а абсолютного порядка при конкурентных приёмах не обещает
|
||||
(`docs/architecture.md`, «Предел порядка назван вслух»; открытый блокер
|
||||
`poryadok-zhurnala-na-priyome.md`). Доставка с более ранней меткой, свёрнутая
|
||||
`journal-order-on-ingest.md`). Доставка с более ранней меткой, свёрнутая
|
||||
позже, вернула бы витрину к недосчитанной версии — и `reindex` разошёлся бы с
|
||||
живым приёмом **молча**, в содержимом тренировки. Поэтому сущность несёт
|
||||
провенанс — `delivery_id` и `received_at` своей доставки, — а тай-брейк
|
||||
@@ -315,7 +315,7 @@ verify:archive`. Оставить его отпечатком одних час
|
||||
экспорта Apple, состояние разума нет (находка 46). До этой задачи защита
|
||||
работала побочным эффектом непокрытости. Ретеншена в проекте нет, поэтому здесь
|
||||
ничего не ломается сегодня; но предусловие, которое задача
|
||||
`retenshen-syrogo-arhiva` считала снятым, снова открыто, и это записывается в
|
||||
`raw-archive-retention` считала снятым, снова открыто, и это записывается в
|
||||
её файл тем же изменением.
|
||||
|
||||
### 9а. Отказ разбора остаётся «всё или ничего» — теперь и для сущностей
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
записано в спеке хранения.
|
||||
- **Не входит:** отдача тренировок и записей наружу. Read API в проекте пока нет
|
||||
вовсе; его форма (конверт ответа, выбор слоя, предел размера) проектируется
|
||||
задачей `read-api-tochki`, и вводить два эндпоинта раньше конверта значило бы
|
||||
задачей `read-api-points`, и вводить два эндпоинта раньше конверта значило бы
|
||||
задать контракт мимоходом.
|
||||
|
||||
## Capabilities
|
||||
|
||||
@@ -105,11 +105,11 @@
|
||||
переприсылке (числа замера) и пересчёт находки 50 на 118 доставок
|
||||
- [x] 7.4 Беклог: задача про идентичность тренировок при импорте родного
|
||||
экспорта (в `export.xml` `id` нет — `dogsheep` считает hash_id);
|
||||
`retenshen-syrogo-arhiva` — предусловие про `stateOfMind` снова открыто;
|
||||
отметить в `read-api-tochki`, что отдача тренировок и записей входит в
|
||||
неё; уточнить `proverka-novyh-sekcij` — модель заложена, остались пять
|
||||
`raw-archive-retention` — предусловие про `stateOfMind` снова открыто;
|
||||
отметить в `read-api-points`, что отдача тренировок и записей входит в
|
||||
неё; уточнить `unseen-sections-check` — модель заложена, остались пять
|
||||
секций
|
||||
- [x] 7.5 Удалить `docs/backlog/trenirovki-i-zapisi.md` и строку индекса
|
||||
- [x] 7.5 Удалить `docs/tasks/items/trenirovki-i-zapisi.md` и строку индекса
|
||||
|
||||
## 8. Приёмочные критерии (рубрика ревью)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user