3.0 KiB
work_item, stage, author_agent, status, created_at, model_used
| work_item | stage | author_agent | status | created_at | model_used |
|---|---|---|---|---|---|
| ORCH-113 | architecture | architect | proposed | 2026-06-15 | claude-opus-4-8 |
08 — Требования к данным: ORCH-113 — reaper finalizer-liveness ownership
Work Item: ORCH-113 · Repo: orchestrator · Стадия: architecture
When-applicable / информационный (гейтом не парсится).
Изменения схемы БД
N/A — нулевое изменение схемы. Сознательное архитектурное решение (ADR-001 / adr-0043): сигнал
владения финализацией — in-memory (leaf src/finalizer_liveness.py), а не durable-колонка. Ни
новых таблиц, ни новых колонок, ни индексов; init_db() / _ensure_column не трогаются. Схема
существующих таблиц (jobs, agent_runs, tasks, …) и их семантика — байт-в-байт (NFR-2/AC-5).
Новые/изменённые сущности
Процесс-локальный реестр владения (не БД): finalizer_liveness хранит
{job_id: {"run_id", "stage", "started_ts"}} под threading.Lock. Запись/снятие — живой
монитор-поток (launcher._monitor_agent); чтение — reaper-поток (job_reaper). Ключ — jobs.id
(существующая сущность). Никаких новых персистентных данных.
Совместимость данных / миграции
- Миграций нет — нечего мигрировать (нет схемных изменений); общая прод-БД (self-hosting + enduro-trails) не затрагивается.
- Restart-safe без durable (NFR-5): in-memory реестр сбрасывается при рестарте процесса, что
безопасно по существующему контракту:
main.lifespanвызываетrequeue_running_jobs()(running → queued,main.py:59) до старта reaper (main.py:144). После рестарта нет ни одногоrunning-job, ссылающегося на потерянный маркер → отсутствие маркера корректно (нет живых finalizer'ов). Гибель потока монитора (не процесса) покрытаtry/finally-снятием маркера; гибель процесса → рестарт → requeue. - Авторитетность in-memory опирается на одно-процессную модель (один uvicorn-воркер, общая
SQLite-БД; проверено: CMD без
--workers). Условие задокументировано как инвариант сопровождения — при вводе--workers>1сигнал должен стать durable (см.10-tech-risks.mdTR-3).