Словари api/rules/{osv_headers,osv_groups,periods,data_types}.yaml и src/parser/rules.py
(normalize_text, Pattern, load_rules, pydantic-валидация с RuntimeError по файлу и ключу,
currency_aliases по R-6). AST-линтер координат tests/unit/parser/test_no_coordinates.py
перенесён из Task 12 (R-7, правила R-4/R-5). Тест формулировок реальных ОСВ.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
- SERVICE_NAME: Literal["tabular-parser"] (R-35); в config.py, .env.example,
README и CLAUDE.md исправлено «имя queue group» — queue group задаёт
константа REQUEST_QUEUE_GROUP в core/nats.py.
- PUBLISH_RETRIES: NonNegativeInt — 0 означает одну попытку без повторов,
как и принимает NatsConnection.
- Удалён неиспользуемый модульный settings = get_settings() из config.py.
- pyproject.toml: убран override mypy для raisa_fastapi_protected_api
(зависимость удалена D-1).
- tests/conftest.py: фабрика minimal_settings (Settings из временного .env с
минимальным окружением, окружение процесса скрыто); test_config.py —
умолчания при минимальном окружении (M-8), PUBLISH_RETRIES=0/-1,
SERVICE_NAME≠tabular-parser.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Задача 2.1. make test допускает код 5 pytest (тестов пока нет). README: все цели Makefile создаются в 2.1 (T3.1).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>