Files
orchestrator/docs/work-items/ORCH-113/08-data-requirements.md

3.0 KiB
Raw Blame History

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.md TR-3).