- audiorecords вместо transcribe_jobs: приложения (texts, structures, recognitions, record_events, topics) живут своими коллекциями, ссылки на исходник и на приведённую копию перестали переставляться - рубеж называет достигнутое, отказ стал признаком остановки с причиной, а сторожей стало двое: число отказов и время в рубеже - воркеры потеряли специализацию, их число задаётся [pipeline] workers, шаг выбирается по рубежу, а захват отдаёт идентификатор и признак захвата
3.6 KiB
Остановка записи — признак, а не рубеж
- Дата: 2026-08-14
- Источник: openspec/changes/archive/2026-08-14-record-centric-model/design.md, раздел «Остановка — признак, а не рубеж»
Решение
Прежние состояния отказа и смерти (failed, dead) схлопнуты в признак
остановки с причиной: halted_at, halt_reason, error_text. Достигнутый
рубеж при остановке не стирается, и снятие признака продолжает работу с того
места, где запись встала.
Почему
Цитата источника:
Признак — принято: рубеж переживает остановку, продолжение идёт с места остановки, массовый перезапуск после выкатки правки делается одним обновлением, а различие «мы рассудили» против «мы перестали пробовать» остаётся причиной, которую человек читает.
Отвергнуты два варианта, оба с названной ценой:
Отдельное состояние на каждую причину — отвергнуто: перечень состояний закрыт схемой, и каждая новая причина стоила бы необратимого шага.
Оставить как есть — отвергнуто: именно из-за этого перезапись состояния руками в панели остаётся единственным способом вернуть запись в работу, и делается он наугад.
Прежняя модель описана решением
ADR-2026-08-11-queue-as-pocketbase-collection:
там состояние «мертва» заводилось взамен признака is_error, и довод был тот
же — «два способа вывести задачу из выборки расходятся». Довод устоял, а
носитель сменился: теперь единственный способ вывести запись из выборки — этот
признак, и состояние его больше не дублирует.
Последствия
+перезапуск перестал быть догадкой: запись продолжает с сохранённого рубежа, а не начинает конвейер заново.+новая причина остановки стоит значения в закрытом перечне причин, а не нового состояния и не нового шага схемы.+массовый возврат в работу после выкатки правки делается одним обновлением колонки.−в выборке захвата появилось четвёртое условие, и рубеж перестал быть единственным, что выводит запись из работы: читать состояние записи теперь надо двумя полями.−перечень причин закрыт схемой, то есть новая причина всё же требует шага схемы — дешевле прежнего, но не бесплатно.