schema: spec-driven context: | Репозиторий tabular-parser — часть системы АРМ КА (ДКБ, Россельхозбанк): stateless-сервис разбора XLS/XLSX/XLSB (ОСВ по счетам, ББ/ОФР из Excel). Без доступа к БД: вход — NATS recognition.tabular.request + файл в S3, выход — JSON по ../docs/contracts/recognition-result.schema.json. Структура ищется по содержимому (05-domain-rules.md §1.0, §12), синонимы — rules/*.yaml. Workspace из нескольких репозиториев; общий контекст — ../CLAUDE.md и ../docs/ (репозиторий arm-ka-docs). Источники истины по приоритету: ../docs/model/data-model-v5.13.dbml → ../docs/model/entities-v5.13.md → ../docs/context/05-domain-rules.md → страницы ТЗ в ../docs/source/tz (черновик, старые имена v4). Открытые вопросы — ../docs/context/07-open-questions.md; план срезов — ../docs/context/09-delivery-plan.md. Фикстуры — ../fixtures (реальные данные, не спецификация формата). Стек: Python 3.12, FastAPI, SQLAlchemy 2 async + Alembic, PostgreSQL, pydantic v2, NATS JetStream, S3 (MinIO), loguru; фронт — React + TypeScript, rsbuild, antd, Redux Toolkit, biome. Язык документов и коммитов — русский, идентификаторы — английские, как в DBML. rules: proposal: - Указывать номер среза из 09-delivery-plan.md и затронутые репозитории; сквозные изменения — отдельный change в ../docs - Перечислять таблицы DBML v5.13, которые затрагиваются; поля вне DBML не вводить — сначала новая версия DBML - Ссылаться на параграфы 05-domain-rules.md для каждого алгоритма; правило, которого там нет, — в 07-open-questions.md - Раздел «Non-goals» обязателен - Любое допущение по открытому вопросу помечать ASSUMPTION(OQ-nn) specs: - Сценарии на реальных фикстурах из ../fixtures, синтетика — только для форматов, которых там нет - "Для парсеров: ни одного требования, завязанного на букву колонки, номер строки или имя листа" design: - Вычисляемые объекты консолидации (сводная ОСВ, пары ВГО, шахматка) — чистые функции в domain/, без ORM-таблиц - Деньги — Decimal / numeric(18,2); единицы измерения (руб. / тыс. руб.) указывать явно tasks: - Задачи не больше половины дня, с указанием репозитория и файлов - Первые задачи — тесты и фикстуры, затем реализация - Последняя задача среза — обновление docs (03-architecture, 07-open-questions) и README operations: apply: guidance: - Работать в ветке; git -C ; один PR на репозиторий - Перед кодом перечитать затрагиваемые таблицы DBML и параграфы 05-domain-rules.md - После изменений прогонять линтеры и тесты репозитория; для web — tsc, biome, rsbuild build archive: guidance: - "Перед архивированием: DoD среза из ../CLAUDE.md выполнен, открытые вопросы занесены в 07-open-questions.md"