251 Commits

Author SHA1 Message Date
Andrey Epifancev
447e8f06d4 Merge origin/main в feat/9-slice-2a-osv-parser: 07-open-questions — решения владельца (OQ-01/02/45/96/97) + OQ-98…109 Среза 2a
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 20:19:30 +04:00
Andrey Epifancev
a181f4ad96 docs: OQ-108 — остаточные риски предсканирования (R-26), OQ-105 — формулировка слепой зоны
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 17:18:46 +04:00
Andrey Epifancev
68b50a563f docs: R-25 — слепая зона R-21 (свёрнутого прямого родителя достаточно), лимиты чтения, остаточные риски OQ-108
05-domain-rules §1.4: слепая зона R-21 переформулирована — достаточно свёрнутого непосредственного родителя (N2);
§1 «Лимиты»: expat-скан всех XML-частей, после-чтения счёт только индексируемых диапазонов, что не ограничено.
07-open-questions OQ-108: остаточные риски (объём ячеек, sharedStrings/стили, entity expansion) и рекомендации
(лимит памяти контейнера, предпроверка dimension/счётчик ячеек, подпроцесс с RLIMIT).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 17:06:40 +04:00
Andrey Epifancev
c2005a4699 docs: финальное ревью Среза 2a — §1 (лимиты чтения, ИНН, ACCOUNT_RE, риски R-21), OQ-106…OQ-109
- 05-domain-rules §1.0 п. 1: признак ОСВ в первых 30 строках листа; п. 4, §1.3: ИНН по значениям без дополнения
  нулём, дополнение при извлечении (R-24); ACCOUNT_RE с re.ASCII | re.DOTALL (M-1); §1.4: остаточные риски R-21
  (RR-1…RR-4, слепые зоны); §1.6: лимиты чтения (R-23), логирование.
- 06-test-data §3 п. 17: ИНН в тексте строки — ОСВ 76 Счастливочной за 1–3 кв. 2024 (6 + 7 + 7 строк).
- 07-open-questions: OQ-106 (Итого = первый корень), OQ-107 (hierarchy=sums), OQ-108 (defusedxml, лимиты чтения),
  OQ-109 (размер объекта S3 до скачивания); OQ-105 ссылается на риски §1.4.
- OQ-81 «частично закрыт» в 09-delivery-plan, tasks.md и proposal.md change.
- contracts/examples/result-osv-needs-check.json — как пишет парсер (копия tabular-parser байт в байт).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 16:32:52 +04:00
Andrey Epifancev
baeb9189f6 docs: §1 по факту парсера, 06-test-data, план срезов 2a–2d, OQ, пример контракта
- 05-domain-rules §1: обязательные группы (R-12), hierarchy=<имя>, TOTAL в rows, буквенные субсчета и Вал./Кол. (R-16, R-18, R-19), ИНН (R-15, R-17), сверка по нетто (R-21), R-20, пустая ОСВ, ASSUMPTION(OQ-02), новый §1.6 (статусы, коды, лимиты, словари)
- 06-test-data: синтетика s01–s16, golden (82 снимка), рукописный xlsb, пустые ОСВ, буквенные субсчета
- 09-delivery-plan: Срез 2 → 2a–2d, 2a по факту
- 07-open-questions: OQ-98…OQ-105, пометки допущений парсера у OQ-01/02/45, OQ-81 частично закрыт
- contracts/examples/result-osv-needs-check.json: ACCOUNT в group_schema, ИНН из колонки, «Вал.» без контрагента, строка TOTAL
- openspec tasks.md: 1.2, 2.1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 15:53:11 +04:00
aep
0997ac9042 Merge pull request 'OQ-01/02/04/05/42/45: решения владельца для подсрезов 2c–2d' (#14) from docs/oq-decisions-2c into main
Reviewed-on: #14
2026-10-05 12:13:51 +03:00
Andrey Epifancev
d7c69fa58b OQ-01, 02, 04, 05, 42, 45: решения владельца 05.10.2026 (хранение строк ОСВ, квартальные ОСВ, субсчёт в чек-листе, статус RECOGNIZED, экран проверки ОСВ, NU в ядре)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 13:07:03 +04:00
aep
1da684e4e6 Merge pull request 'OQ: восстановить закрытие OQ-96/97 (потерян при merge #8), закрыть OQ-17/21/33/34' (#13) from docs/oq-96-97-restore into main
Reviewed-on: #13
2026-10-05 12:01:22 +03:00
Andrey Epifancev
d4a085f7ee OQ-17, OQ-21, OQ-33, OQ-34: закрыты реализацией Среза 1 и решениями владельца
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 12:58:41 +04:00
Andrey Epifancev
f59511f1e6 OQ-96, OQ-97: закрыты решениями владельца 05.10.2026 (effective_date по МСК — follow-up; DIRECTORY_DELETE не расширять)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 12:58:41 +04:00
aep
1aa24551bc Merge pull request 'Гайд тестировщика: локальный стенд Срезов 0–1' (#12) from docs/11-qa-guide into main
Reviewed-on: #12
2026-10-05 11:54:38 +03:00
Andrey Epifancev
0600c7c5a1 dev/qa-guide.md: гайд тестировщика — ПО, запуск стенда Срезов 0–1, чек-лист сценариев, ограничения, баги
Путь проверен 05.10.2026 на чистом worktree: compose, migrate/seed, бэкенд, фронт через rsbuild dev с
REACT_APP_API_URL/REACT_APP_ROOT_PATH, dev-вход, /admin (headless Chromium), API и импорт (curl).

Closes #11

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 12:17:38 +04:00
Andrey Epifancev
186d6f1dcf contracts: needs_check-пример — строка 3 как «Вал.» под контрагентом (CURRENCY, уровень 2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 11:59:41 +04:00
Andrey Epifancev
ec7c42f964 contracts: результат v1.1 — rows[].extra (§1.2), пример needs_check
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 11:56:16 +04:00
Andrey Epifancev
d57b5bc378 OpenSpec: change slice-2a-osv-parser (контракт v1.1 rows[].extra, декомпозиция Среза 2, уточнения §1 — спека)
Issue: RSHB/arm-ka-docs#9

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 11:42:09 +04:00
aep
611db7fa41 Merge pull request 'Срез 1: entities-v5.14, guide, план срезов, сверка §13 с кодом, архив change' (#8) from chore/archive-slice-1-directories into main
Reviewed-on: #8
2026-10-05 10:10:50 +03:00
Andrey Epifancev
01767fd2b9 chore(openspec): архив change slice-1-directories (2026-10-05)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 11:09:08 +04:00
Andrey Epifancev
70ba5e9db8 docs: Срез 1 — entities-v5.14, guide, план срезов, индексы, сверка §13 с кодом
- model/entities-v5.14.md: таблица «Что изменилось в v5.14», related_group_member (ГСК и ГСЗ одновременно), audit_event
- context/04: файлы и partial unique (legal_entity_id, kind) v5.14, OQ-31/32 закрыты
- ссылки на v5.14: 00, 03, 05, KICKOFF-PROMPT, dev/checks.md, openspec/config.yaml, repo-templates/arm-core.CLAUDE.md
- 09: Срез 1 по факту (вариант Б), перенос UI справочника; 10: статус экранов справочника и /admin
- 08: выгрузка ЕЦП; 06: §6.1 фикстура directories/ecp-export-russkiy-biskvit.xlsx
- 05 §13: сверка с ImportCode (добавлен GSZ_CREATED, перечень 16 кодов), порядок проверок, уточнения реализации,
  лимиты файла, ошибки файла, след в аудите и S3
- tasks.md: 2.1–2.3, 3.1 выполнены

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 11:09:03 +04:00
aep
f9c757ae97 Merge pull request 'Срез 1: DBML v5.14, §13 импорт из ЕЦП CRM, §10.1 видимость, OQ-86…91' (#7) from feat/6-slice-1-directories into main
Reviewed-on: #7
2026-10-05 09:59:29 +03:00
Andrey Epifancev
b677ee0b15 OQ-92…OQ-97: вопросы из реализации Среза 1 (импорт ЕЦП, часовой пояс effective_date, право DIRECTORY_DELETE)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 02:43:13 +04:00
Andrey Epifancev
0826be0cad Срез 1: DBML v5.14, §13 импорт из ЕЦП CRM, §10.1 видимость, OQ-86…91, change slice-1-directories
- data-model-v5.14.dbml: related_group_member.kind + partial unique (legal_entity_id, kind) WHERE is_current
  (ЮЛ одновременно в одной ГСК и одной ГСЗ — решение владельца 04.10.2026), audit_action + LEGAL_ENTITY_CHANGE,
  USER_CHANGE; КПП не вводится.
- 05-domain-rules.md: §13 правила импорта выгрузки ЕЦП (формат, построчные коды, транзакция, след, ручные операции),
  §10.1 видимость справочников по филиалу без кода роли.
- 07-open-questions.md: OQ-31/32 закрыты, OQ-25 уточнён по выгрузке, добавлены OQ-86…OQ-91.
- source/biq/ecp-export-lagal-entity.xlsx — первоисточник формата (добавлен владельцем).
- openspec/changes/slice-1-directories: proposal, design, tasks (skip_specs).

Issue: RSHB/arm-ka-docs#6

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 20:22:26 +04:00
aep
f276489760 Merge pull request 'chore(openspec): архив change slice-0-skeleton' (#4) from chore/archive-slice-0-skeleton into main
Reviewed-on: #4
2026-10-04 18:48:56 +03:00
Andrey Epifancev
49d9eca082 chore(openspec): архив change slice-0-skeleton
Срез 0 реализован и влит (PR #3), change перенесён в openspec/changes/archive, спеки — в openspec/specs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 19:44:29 +04:00
aep
8ee998d189 Merge pull request 'Срез 0: контракт v1.0, compose-окружение (профиль services), проверки качества, OQ-48…OQ-84' (#3) from feat/1-slice-0-skeleton into main
Reviewed-on: #3
2026-10-04 18:39:29 +03:00
Andrey Epifancev
f83052420f docs: dev/README — проверка окружения под склейку ответов ИС (aep_3, aep_6, aep_5)
Раздел «Проверка окружения» приведён в соответствие с доработанным scan-gateway (склейка всех *.json каталога ответа
в raw/{job_id}.json, ошибочные файлы набора в metrics.warnings), по результатам сквозной проверки Task 6 (04.10.2026):
- сценарий 2: размер и формат raw/ (`{"job_id", "files": [...]}`), лог эмулятора с каталогом набора, processing ~10 с
  (задержка эмулятора + SCAN_POLL_SECONDS + SCAN_SETTLE_SECONDS), абзац про фикстуры ИС (успешные ответы есть);
- добавлен сценарий 2а: aep_3 / aep_6 -> успешный ответ ИС -> NOT_IMPLEMENTED, metrics.warnings про aep_3_ofr.json;
- абзац про прогон рецепта: проверены оба пути вставки legal_entity (чистая БД и on conflict);
- «не покрывает»: нормализатор шлюза Среза 0 даёт NOT_IMPLEMENTED, у ошибок scan-gateway в metrics только warnings,
  оговорка, что `down -v` удаляет общие тома postgres-data/minio-data всех worktree;
- dev/docker-compose.yml: комментарий про фикстуры ответов ИС — набор <имя>.json + <имя>_*.json (поведение не менялось).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 16:20:31 +04:00
Andrey Epifancev
e6ba1e0e30 docs: §11 и OQ-77 — убрано допущение о сегментах таблицы (поправка человека 04.10.2026)
Разбиение одной формы на несколько таблиц в образцах не встречалось; наблюдается только несколько таблиц разных
форм в одном json (баланс + ОФР). Нештатный случай (повтор label) — NEEDS_CHECK, правило — Срез 3.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 14:08:43 +04:00
Andrey Epifancev
3c1d1d1261 docs: §11 — таблицы и документы ИС не взаимно однозначны (поправка человека 04.10.2026)
Тип документа задаёт label таблицы; несколько таблиц одного типа (баланс по страницам) — части одного документа
(уникальный индекс document в DBML: один ББ и один ОФР на файл); в одном json может быть несколько таблиц.
Допущение вынесено в OQ-77 для подтверждения на реальном ответе.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 13:38:18 +04:00
Andrey Epifancev
f809cc936b docs: ответы человека 04.10.2026 — формат ответа ИС по aep_3/aep_6, OQ-13/14/56/76–79, JetStream как вопрос к платформе
§11 05-domain-rules.md переписан по реальным ответам ИС: data_ocr — объект, table_structure — список таблиц,
успех — error.code == "", в каталоге ответа несколько json (склейка), confidence 0–100. OQ-13/14/77/78/79 закрыты или
уточнены, OQ-56 — осознанный техдолг, OQ-76 — частично (образцы добавлены), новый OQ-85 — возможность JetStream
на платформе (проверить позже). OQ-73 остаётся открытым.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 13:33:55 +04:00
Andrey Epifancev
b2f8aaa17e docs: .env.example — scan-gateway тоже отвергает OPENBAO__DATABASE__* (N-1 финального ревью)
В OpenBAOSettings scan-gateway нет поля DATABASE (extra_forbidden), поэтому общий dev/.env.example
годится только arm-core как есть. Исправлены комментарий в .env.example, раздел dev/README.md,
решение №44 в design.md и OQ-84.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 07:26:37 +04:00
Andrey Epifancev
1568d49cd9 chore: отметить задачу 6.3 выполненной
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 07:24:35 +04:00
Andrey Epifancev
5456a7df3b docs(context): 03-architecture — ack публикуется на корректный запрос
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:17:53 +04:00
Andrey Epifancev
5674097267 docs(dev): причина не запускать make -j — параллельные пререквизиты check, а не check-full
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:17:53 +04:00
Andrey Epifancev
bf893959df docs(openspec): recognition-contract — источник attempt только из тела, расхождение сервисов в THEN (OQ-71)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:17:53 +04:00
Andrey Epifancev
050f59a384 docs: сценарий venv против compose не проверен — design #43/#44, OQ-84, README и .env.example без устаревшей обязательности SMB
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:17:21 +04:00
Andrey Epifancev
5630ffadb7 docs(context): реестр OQ — ссылки на отчёты задач заменены маркерами находок
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:16:10 +04:00
Andrey Epifancev
cdfac6c74b docs: 06-test-data — поиск пары эмулятором, design #36 — паузы по сервисам
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:03:47 +04:00
Andrey Epifancev
172d30a8b1 docs(openspec): спека recognition-contract — ack только на корректный запрос, источник attempt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:03:35 +04:00
Andrey Epifancev
f928982058 docs(dev): README — зависимости проверки контракта (jsonschema, без rfc3339-validator)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:03:23 +04:00
Andrey Epifancev
6000cab892 docs(dev): README — венв-черновик без ссылок на 5.4, legal_entity в проверке окружения
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:03:13 +04:00
Andrey Epifancev
04cdbd6cc4 docs(openspec): design.md — замыкающий | у решений 24–25
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:02:56 +04:00
Andrey Epifancev
c7c03616ce docs(dev): checks.md — .DEFAULT_GOAL в эталонном фрагменте, --profile services в down
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:02:41 +04:00
Andrey Epifancev
c32c904197 chore: отметить задачу 6.2 выполненной
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 07:02:15 +04:00
Andrey Epifancev
55118120ad docs(openspec): design.md — решения 39–42 (рулинги задачи 6.2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 06:53:00 +04:00
Andrey Epifancev
f7c8c6c883 docs(context): 07-open-questions — OQ-48…OQ-83 по итогам Среза 0, статусы OQ-45/46/47
Вопросы из open-questions-proposal.md трёх сервисов (с дедупликацией), кандидаты
DBML v5.14 (только как строки реестра) и находки сквозной проверки окружения.
У каждой строки — репозиторий и маркер источника. OQ-45/46/47 переведены в
«допущение принято и применено» с фактами seed и ORM.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 06:53:00 +04:00
Andrey Epifancev
f8111cc383 chore: отметить задачу 6.1 выполненной
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 06:49:08 +04:00
Andrey Epifancev
dc64d9a214 docs(openspec): design.md — решения 34–38 (рулинги задачи 6.1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 06:41:55 +04:00
Andrey Epifancev
3e1f39cd9e docs(context): 03-architecture — SCHEMA_MISMATCH без ack, нечитаемый запрос без ответа, PUBLISH_RETRIES, примеры контракта
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 06:41:29 +04:00
Andrey Epifancev
2423854f27 docs(openspec): recognition-contract — SCHEMA_MISMATCH без ack, нечитаемый запрос, повторы публикации, примеры как иллюстрации
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 06:41:29 +04:00
Andrey Epifancev
a977ab7792 docs(context): 09-delivery-plan, Срез 0 — ссылка на dev/README и сквозную проверку окружения
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 06:40:35 +04:00
Andrey Epifancev
bf0a0aef7b docs(context): 06-test-data §6 — seed продукта в arm-core/api/seed, directories только для тестовых ЮЛ/ГК
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 06:40:26 +04:00