262 Commits

Author SHA1 Message Date
Andrey Epifancev
a2811ebc52 docs(context): Срез 3a — правки по ревью (OQ-149, устаревшие описания эмулятора, locator, решения №28–35)
- 07-open-questions: OQ-149 переписан (пустой код у «БАЛАНС»/«Выручка», предупреждения №29, `|` экранирован), новый OQ-152
  (повтор кода 2410 в aep_6), уточнены OQ-137 и OQ-144 (Input)
- 05-domain-rules: §11 locator `file:<имя json>;table:<i>`; §11.1 п. 2 (длина даты №31), п. 4 (предупреждения о пропущенных
  строках), п. 7 (все точки удаляются, Money и confidence №30), п. 8 (ИНН неуверенно), п. 9 (№28), п. 10 (редакция не определена)
- 03-architecture: формулировка про `.part`; 06-test-data, dev/README (сценарии 2/2а), repo-templates/scan-gateway.CLAUDE.md —
  раскладка `<job_id>.<ext>` и пары по sha256
- dev/compose, qa-guide §6.8/§8 (ожидаемые предупреждения по эталонам, OQ-151), 09-delivery-plan (статус 3a)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-07 03:49:05 +04:00
Andrey Epifancev
a3f33fbe40 docs(context): Срез 3a — раскладка горячих папок, §11.1 п. 6/9/10, OQ по редакциям и очистке, compose (#46)
- 03-architecture: scan-gateway — .part остаётся в Tmp, очистка под SCAN_CLEANUP, OcrNormalizer, эмулятор по sha256
- 05-domain-rules §11.1: п. 1 (двойники только для дат), п. 4 (повтор кода, пропуск строк с мусорным кодом),
  п. 6 (свой statement_lines.yaml с редакциями), п. 7 (string_value, скобки, тире), п. 9 (BACKEND_PARSING_ERROR на таблицу),
  новый п. 10 «Редакции форм»
- 07-open-questions: OQ-137 уточнён; OQ-12, OQ-139 дополнены; новые OQ-144…OQ-151
- 09-delivery-plan: Срез 3 разделён на 3a (scan-gateway) и 3b (arm-core)
- dev: SCAN_CLEANUP и SCAN_EMULATOR_DEFAULT в compose, комментарий про <uuid>.<ext> и пары по sha256; qa-guide §6.8

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-07 02:55:11 +04:00
aep
830d0ce50c Merge pull request 'docs: OQ-138 закрыт, контракт — $comment и примеры (M-12), §12/§7, статус Среза 2b' (#45) from fix/20-contract-oq138 into main
Reviewed-on: #45
2026-10-06 22:21:11 +03:00
Andrey Epifancev
7c6c3ba140 docs: OQ-138 закрыт (тыс. руб. верим, округление итогов мягкое), контракт — $comment и примеры (M-12), §12/§7, 06-test-data, статус Среза 2b
Refs RSHB/arm-tabular-parser#20

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-06 23:17:36 +04:00
aep
0777b128db Merge pull request 'openspec: архив change slice-2b-statement-parser' (#44) from chore/archive-slice-2b-statement-parser into main
Reviewed-on: #44
2026-10-06 21:43:54 +03:00
Andrey Epifancev
42af562635 openspec: архив документного change slice-2b-statement-parser (2026-10-06), recognition-contract «Файл результата» v1.2
Refs #26

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-06 22:41:10 +04:00
aep
b96b5c9da2 Merge pull request 'docs(2b): контракт v1.2, §12 и OQ-138…143, формы ББ/ОФР (Срез 2b)' (#27) from feat/26-slice-2b-statement-parser into main
Reviewed-on: #27
2026-10-06 21:36:53 +03:00
Andrey Epifancev
7de9fd4fd6 plan: итоговый ledger SDD Среза 2b
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 22:13:12 +04:00
Andrey Epifancev
5b34868784 docs(2b): OQ-143 реализовано, st07, текст пропуска листов, tasks.md по факту (O-9, M-2, M-4)
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-06 21:58:24 +04:00
Andrey Epifancev
9235e6ad79 docs: перенумерация OQ-137…142 -> OQ-138…143 (R-15)
Номер OQ-137 в main занят вопросом о раскладке горячих папок ИС Сканирование.

Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 21:25:40 +04:00
Andrey Epifancev
e93b28e20f Merge origin/main в feat/26-slice-2b-statement-parser
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 21:25:05 +04:00
Andrey Epifancev
4729e40177 docs(2b): fix round 1 по задаче 16 — счётчики golden, формулировки предупреждений, проверка копий контракта
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 21:22:30 +04:00
Andrey Epifancev
a5adcaccaa docs(2b): qa-guide §6.7 — формы ББ/ОФР, ИНН в тексте строки реализован
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 21:19:34 +04:00
Andrey Epifancev
00d171564e docs(2b): 06-test-data (подраздел 4б, синтетика st01–st06, golden форм), 03-architecture (BookParser, контракт v1.2), 09-delivery-plan (Срез 2b)
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 21:19:08 +04:00
Andrey Epifancev
4272ba8061 docs(2b): OQ-137…OQ-142, статусы OQ-100/113/130/131/133/134 по факту реализации
Закрывает A11-6, A9-5 (arm-tabular-parser#18), OQ-113.

Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 21:18:05 +04:00
Andrey Epifancev
6d39800e02 docs(2b): §12 ББ/ОФР по реализации, §7 жёсткие/мягкие, §1.1/§1.3–§1.5 по факту PR tabular-parser #13/#15
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 21:17:12 +04:00
Andrey Epifancev
909e7ff084 plan: ledger SDD Среза 2b после задачи 13 (пауза 06.10.2026)
Копия .superpowers/sdd/…/progress.md для продолжения на другой машине: задачи 1–13 complete, рулинги R-1…R-12,
находки deferred, пауза перед задачей 14.

Refs #26

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 19:40:29 +04:00
aep
3ef8ed19b7 Merge pull request 'docs(context): §11.1 очистка OCR-текста из модуля старого ядра для нормализатора scan-gateway' (#43) from feat/42-ocr-cleanup-rules into main
Reviewed-on: #43
2026-10-06 16:49:14 +03:00
aep
3afca6bf2a Merge pull request 'docs(context): NATS на платформе по armka_file_worker, один JWT, раскладка горячих папок' (#41) from feat/40-nats-platform-notes into main
Reviewed-on: #41
2026-10-06 16:49:07 +03:00
Andrey Epifancev
087109c9a4 docs(context): §11.1 очистка OCR-текста — правила из модуля старого ядра для нормализатора scan-gateway (#42)
- 05-domain-rules §11.1: буквы-двойники, `|` как разделитель, разбор дат из OCR, раскладка без шапки,
  классы строк, тип таблицы по кодам, очистка кода/наименования, суммы и критерий is_recognized,
  шапка документа, ошибка разбора одного документа. Перенос кода ofr_result_conversion — единственное
  исключение для reference-old-arm (решение владельца 06.10.2026); обвязка записи в БД не переносится.
- 09-delivery-plan: Срез 3 — нормализатор по §11 и §11.1.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 17:33:40 +04:00
Andrey Epifancev
f46a34169c docs(context): NATS на платформе по armka_file_worker, один JWT, раскладка горячих папок (#40)
- 03-architecture: core NATS без JetStream подтверждён кодом armka_file_worker (работает в контуре);
  один JWT на все сервисы с правами по subject'ам; старое семейство subject'ов files.*; соглашение
  ROOT_PATH платформы Aurora; FileWorker не реализует DECISION-4 — только инфраструктурный референс.
- 03-architecture: описание scan-gateway — эталон раскладки горячих папок ИС Сканирование как у FileWorker
  (Input/<job_id>.<ext>, *.tmp рядом, Output/<job_id>/*.json, очистка); расхождение кода — arm-scan-gateway #6.
- 07-open-questions: OQ-85 дополнен, новый OQ-137 (раскладка папок) закрыт владельцем 06.10.2026.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 17:21:59 +04:00
aep
4583b3c358 Merge pull request 'docs(dev): dev-ГК из make seed-dev в гайдах QA и фронта' (#39) from docs/38-dev-seed-groups into main
Reviewed-on: #39
2026-10-06 16:08:39 +03:00
Andrey Epifancev
b65ca31dca docs(dev): dev-ГК из make seed-dev в QA- и фронт-гайдах; импорт ЕЦП — на стенде без dev-ГК
Closes #38

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 17:07:20 +04:00
aep
a5b0a376f8 Merge pull request 'docs(dev): снимок для контура вырезает openspec/config.yaml' (#37) from feat/36-contour-snapshot-config into main
Reviewed-on: #37
2026-10-06 15:54:13 +03:00
Andrey Epifancev
6edb62c592 docs(dev): снимок для контура вырезает openspec/config.yaml
Вопрос разработчика при переносе в контур: .claude/ и CLAUDE.md
вырезаются, а openspec/config.yaml с контекстом агента остаётся.
Решение владельца 06.10.2026: вырезать, как CLAUDE.md. Блоки
context/rules — инструкции агенту с путями ../docs и ../fixtures,
которые в контуре никуда не ведут; openspec CLI в контуре нет,
specs/ и design.md читаются без него.

- prepare-contour-snapshot.sh: rm, проверка раздела 5, SNAPSHOT.md
- contour-transfer-guide.md: таблица раздела 1, разделы 2, 3, 9

Проверено прогоном скрипта на tabular-parser@3b32462.

Closes #36

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 16:52:00 +04:00
aep
cfe47b16ff Merge pull request 'docs(dev): гайд переноса сервисов в контур и скрипт подготовки снимка' (#35) from docs/34-contour-transfer into main
Reviewed-on: #35
2026-10-06 15:02:13 +03:00
Andrey Epifancev
6a3da7c376 docs(dev): контур — GitLab платформы, merge request вместо PR
Refs #34

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 16:01:05 +04:00
Andrey Epifancev
43eefb917b docs(dev): гайд переноса сервисов в контур банка и скрипт подготовки снимка
Решения владельца 06.10.2026: в контур едут arm-core, tabular-parser, scan-gateway снимками без истории; docs и
fixtures не переносятся (разработка снаружи); вырезаются .claude/, CLAUDE.md, docs/superpowers/, Dockerfile;
openspec остаётся. Скрипт scripts/prepare-contour-snapshot.sh: git archive, вырезание, Makefile без uv и
docker-build (venv через python -m venv + pip с Nexus), замена ссылок на внешний Gitea, SNAPSHOT.md, проверки.
Снимки трёх сервисов проходят make check без docs/fixtures (1084/1087/726 passed, пропуски только fixtures/contract).

Closes #34

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 15:59:40 +04:00
aep
75d606bb3d Merge pull request 'docs(dev): Authorize в Swagger (после arm-core #29), путь ручки алиасов' (#33) from docs/32-swagger-authorize into main
Reviewed-on: #33
2026-10-06 14:44:57 +03:00
Andrey Epifancev
183b4d02bb docs(dev): Authorize в Swagger появляется с arm-core #29; путь ручки удаления алиаса с префиксом /directories
frontend-auth-guide §8 и qa-guide §4.5: кнопка Authorize есть только со схемой bearerAuth (arm-core #29), публичные
ручки без замка; на стенде старше — curl. Исправлен путь DELETE /directories/legal-entities/{id}/aliases/{alias_id}
в api-contract-slice-4 §4 п. 18 и qa-guide N8 (неточность PR #31).

Closes #32

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 15:43:39 +04:00
aep
8881b8225f Merge pull request 'docs(dev): гайды QA и фронта после мержей 06.10.2026' (#31) from docs/30-frontend-qa-sync into main
Reviewed-on: #31
2026-10-06 14:33:17 +03:00
Andrey Epifancev
0d9531c47f docs(dev): гайды QA и фронта после мержей 06.10.2026 — границы входов, скользящий период, ИНН в тексте, план счетов 1С
qa-guide: §1 (план счетов 488, парсер после пакета ДКБ), §6.5 N5–N8 (422 на границы, 404 при гонке удаления алиаса),
§6.7 P3/P6/P7/P9/P11 (скользящий период, две TOTAL, ИНН из названия и строкой выше, «Итого» ↔ Σ уровня 0, шапка без
меток), манифест ДКБ и golden 113, синтетика s17–s19, «не баги» по OQ-131/132; §8 ссылки на follow-up arm-core #28,
tabular-parser #18. api-contract-slice-4: §2 границы MembersIn/StatusIn/q и формат 422, §4 п. 16–18.

Closes #30

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 15:31:38 +04:00
Andrey Epifancev
82ad2ab251 feat(contract): v1.2 — DISCLOSURE, statementDocument.checks, границы периода ОСВ, примеры
Refs #26

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 14:13:44 +04:00
aep
a92044d3d7 Merge pull request 'docs(dev): инструкция для фронтенд-разработчика — аутентификация и авторизация arm-core' (#29) from feat/28-frontend-auth-guide into main
Reviewed-on: #29
2026-10-06 12:55:16 +03:00
Andrey Epifancev
ca8615eab1 plan: Срез 2b — парсер ББ/ОФР из Excel, контракт v1.2 (17 задач)
План superpowers по спеке change slice-2b-statement-parser: контракт v1.2 в docs/парсере/копиях, словари форм,
columns/detect/header/lines/checks/merge, BookParser, границы периода ОСВ, синтетика st01…st05, манифест и golden,
интеграция, документы, завершение.

Refs #26

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 13:54:04 +04:00
Andrey Epifancev
1ca2fd18ff docs(dev): инструкция для фронтенд-разработчика по аутентификации и авторизации arm-core (#28)
Модель (JWT без сессий, права как данные, порядок проверок право → видимость → статус), режимы dev/прод,
POST /dev/token и GET /me с семантикой 401/403/404, сводка прав по маршрутам, каталог прав и ролей,
policy-слой, эталонный клиент web/src/{api,auth}, чек-лист, проверка руками, открытые вопросы (OQ-54).
Ссылка добавлена в dev/README.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 13:53:54 +04:00
Andrey Epifancev
94846cbd4c openspec: сквозная спека Среза 2b — контракт результата v1.2, §12, OQ
Proposal, design (состав v1.2: DISCLOSURE, statementDocument.checks, границы периода ОСВ; примеры; порядок
раскатки потребители → производитель), дельта recognition-contract «Файл результата» v1.2, tasks.

Refs #26

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 13:21:30 +04:00
aep
eaf4f5c2fd Merge pull request 'docs: пакет ДКБ 06.10.2026 — тестовые данные, OQ-131…136, QA-гайд' (#25) from docs/24-dkb-package into main
Reviewed-on: #25
2026-10-06 11:30:01 +03:00
Andrey Epifancev
6e27259cb5 docs: пакет ДКБ 06.10.2026 — §4а в 06-test-data, osv-dkb/statements-xlsx/analysis-reports в раскладке, 72 ОСВ / 88 снимков, OQ-113 частично, OQ-131…136, QA §6.7
Refs #24

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 12:23:25 +04:00
aep
57c8f8d01d Merge pull request 'docs(qa): проверка парсинга ОСВ на произвольных файлах и сводной ОСВ с контрольными цифрами' (#23) from docs/22-qa-guide-parsing-svod into main
Reviewed-on: #23
2026-10-06 09:50:44 +03:00
Andrey Epifancev
9a193fe688 docs(qa): проверка парсера ОСВ на произвольных файлах (§6.7), полный прогон РБ, контрольные цифры свода и сверка экспорта (§7.1–7.3)
Refs #22

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 10:48:56 +04:00
aep
7c9baecaa7 Merge pull request 'openspec: архив change slice-4-consolidation' (#21) from chore/archive-slice-4-consolidation into main
Reviewed-on: #21
2026-10-06 09:42:50 +03:00
Andrey Epifancev
dbc784abc5 openspec: архив документного change slice-4-consolidation (2026-10-06)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 10:39:54 +04:00
aep
dcf15fdbb4 Merge pull request 'docs(slice-4): DBML v5.16, правила консолидации по факту, OQ, контракт API' (#20) from feat/19-slice-4-consolidation into main
Reviewed-on: #20
2026-10-06 09:38:28 +03:00
Andrey Epifancev
b9680d3c68 docs(oq): OQ-100 решён (ИНН извлекает парсер), OQ-130 — ИНН над названием контрагента; issue arm-tabular-parser#9
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 10:36:48 +04:00
Andrey Epifancev
e221c7cc9e docs(oq): OQ-124 закрыт — ОСВ за Q1 равнозначна нарастающей и квартальной (решение владельца 07.10.2026)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 10:12:14 +04:00
Andrey Epifancev
308b493d3f docs(slice-4): уточнения по ревью Task 14 (замер, сводка, PROPAGATED, нумерация решений)
Co-Authored-By: Claude Sonnet <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 08:10:57 +04:00
Andrey Epifancev
9246a61439 docs(slice-4): правила §2/§3/§9/§10 по факту, OQ, контракт API для фронта, QA-гайд
- 05-domain-rules: §2 (выбор источников, склейка, пробелы, Q1-эквивалентность), §3 (явная привязка, дорезолв, match_kind,
  кандидаты, ручное сопоставление), §9.1 (переходы Среза 4), §9.3, §9.5 (отвязка при автозамене, OQ-110), §10 (политика
  «в работе + своя блокировка»)
- 03-architecture: консолидации, чистый домен свода, порядок блокировок
- 07-open-questions: закрыты OQ-03, OQ-19, OQ-110 (Срез 4), OQ-40 принят; добавлены OQ-118…OQ-129
- 09-delivery-plan, 10-user-journey: Срез 4 по факту, эндпоинты у шагов 2.1–2.6 и 3.1
- dev/api-contract-slice-4.md: маршруты, схемы, коды ошибок, нюансы для фронта
- dev/qa-guide: раздел 7 «Консолидация через API»

Co-Authored-By: Claude Sonnet <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 08:02:50 +04:00
Andrey Epifancev
ab564c1ab0 docs: DBML v5.16, entities-v5.16, guide
DBML v5.16 (Срез 4): enum counterparty_match_kind и osv_entry.counterparty_match_kind; уточнение семантики
consolidation_document (точки привязки/отвязки) и consolidation_lock (без истечения, OQ-119). entities-v5.16.md,
04-data-model-guide (DECISION-5: способ сопоставления хранится, пробелы и свод — нет), repo-templates -> v5.16,
tasks.md change'а: пункт 1 выполнен.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 03:23:03 +04:00
Andrey Epifancev
92b46c9dbe spec(slice-4): документный OpenSpec change — DBML v5.16, правила §2/§3/§9/§10 по факту, OQ-03/19/110 и новые OQ
Proposal, design и tasks сквозного change'а Среза 4: enum counterparty_match_kind и колонка osv_entry.counterparty_match_kind,
правила приведения периодов (ключ, пробел), явная привязка документов, статусы Среза 4, контракт API для фронта.

Refs RSHB/arm-ka-docs#19

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 02:52:32 +04:00