внутренняя модель перестроена вокруг аудиозаписи
- audiorecords вместо transcribe_jobs: приложения (texts, structures, recognitions, record_events, topics) живут своими коллекциями, ссылки на исходник и на приведённую копию перестали переставляться - рубеж называет достигнутое, отказ стал признаком остановки с причиной, а сторожей стало двое: число отказов и время в рубеже - воркеры потеряли специализацию, их число задаётся [pipeline] workers, шаг выбирается по рубежу, а захват отдаёт идентификатор и признак захвата
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
# Предел простоя остаётся часом, хотя он короче самой работы
|
||||
|
||||
- **Дата:** 2026-08-14
|
||||
- **Источник:** openspec/changes/archive/2026-08-14-record-centric-model/design.md,
|
||||
раздел «Сторожей двое, и предела времени — два числа»
|
||||
|
||||
## Решение
|
||||
|
||||
Сторож застревания ограничивает время записи в рубеже двумя числами: **час** на
|
||||
свою работу, **сутки** на ожидание чужой операции. Час меньше времени, которое
|
||||
многочасовая запись занимает на приведении, и это принято сознательно.
|
||||
|
||||
## Почему
|
||||
|
||||
Ревью дизайна показало, что число противоречит расчётному потолку записи:
|
||||
|
||||
> Расчётный потолок записи — шесть часов, приведение такой записи идёт дольше
|
||||
> часа по построению, а срок захвата шага приведения стоит сегодня восемью
|
||||
> часами. Значит длинная запись, отказавшая один раз и ждущая повтора дольше
|
||||
> часа, будет остановлена сторожем застревания вместо расшифровки.
|
||||
|
||||
Предложено было вывести предел из срока захвата — двенадцать часов на свою
|
||||
работу. Владелец решил оставить час, и довод записан цитатой:
|
||||
|
||||
> Оставляем час. Тут нужно принять, что это скорее про зависшую задачу, потому
|
||||
> что пока идёт обработка даже длинной записи мы всегда можем проверить, жив ли
|
||||
> процесс конвертера.
|
||||
|
||||
Довод держится на том, что остановка теперь **обратима**: она не стирает рубежа,
|
||||
и снятие признака возвращает запись туда, где она стояла (см.
|
||||
[ADR-2026-08-14-halt-is-a-flag-not-a-stage](ADR-2026-08-14-halt-is-a-flag-not-a-stage.md)).
|
||||
Цена ложной остановки поэтому равна одному движению владельца, а не потерянной
|
||||
записи.
|
||||
|
||||
## Последствия
|
||||
|
||||
- `+` зависшая запись обнаруживается за час, а не за восемь.
|
||||
- `+` число живёт в настройках и правится без шага схемы, если класс начнёт
|
||||
всплывать.
|
||||
- `−` длинная запись, отказавшая один раз и прождавшая повтора дольше часа,
|
||||
останавливается как застрявшая — владельцу приходится снимать признак руками.
|
||||
- `−` предел этот работает только по записи, вернувшейся в выборку. У держателя,
|
||||
погибшего жёстко, запись невидима сторожу до истечения **срока захвата** её
|
||||
рубежа, то есть восьми часов у приведения; замер и оговорка стоят строкой в
|
||||
`database.md`.
|
||||
Reference in New Issue
Block a user