29 Commits

Author SHA1 Message Date
Andrey Epifancev
3ad910b612 regression: web/ из git, без шага npm-ci (#181)
web_copy копировал рабочий каталог arm-core/web вместе с неотслеживаемым локальным package-lock.json (устаревший,
от 23.10). Lock в arm-core не коммитится (OQ-63, contour-transfer-guide §5), поэтому шаг npm-ci 28.10 был ложно
красным — ложный баг AURORA-1912 (снят). Теперь копия — git archive HEAD:web, установка без lock, как в контуре;
шаг npm-ci убран. README и dev/checks.md поправлены.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 14:58:01 +04:00
Andrey Epifancev
44e0fd8229 scripts/regression: в снимке документов locator OCR без id задания (#179)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 12:36:42 +04:00
Andrey Epifancev
9bc2b26c1c scripts/regression: полная регрессия main всех репозиториев перед выкладкой (#179)
regress.sh — один вход: preflight (main = origin/main, чистые, нет чужих потребителей NATS), venv, lint+unit
всех репозиториев и docs make check, фронт в чистой копии (npm ci --dry-run как проверка lock, установка без
lock), интеграционные с циклом миграций, реальные данные парсера, образы, e2e ядра, изолированный стенд с нуля
(compose-проект arm-ka-regress на своих портах) со сценарием по API, UI-смоук Playwright, парсер по doc-bank.
Не останавливается на первой ошибке; итог — summary.md с SHA и статусом шагов.

Контрольные цифры — expected.json (qa-guide §7.1–7.3, прогоны 08.10/14.10, golden шахматки); снимки свода,
шахматки и форм сравниваются с прошлым прогоном. Ссылки из dev/checks.md и чек-листа синхронизации контура.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 12:09:15 +04:00
Andrey Epifancev
273e3053b8 docs: фронт в arm-core/web — убрать sync-web, шаг 0 снимка, arm-web из гайдов; demo-prepare.sh в docs/scripts (#143)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 09:53:01 +04:00
Andrey Epifancev
f675c762af Слияние main в feat/116: §1 ОСВ cp1251 (tabular-parser #47) рядом с правилом v2.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:42:19 +04:00
Andrey Epifancev
fdd25a6000 fix(scripts): sync-statements.sh --in-place не пишет в основной checkout и main, --check всегда печатает итог, правки доков (#120)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:31:22 +04:00
Andrey Epifancev
7900191401 feat(scripts): prepare-contour-snapshot.sh проверяет свежесть копии arm_statements (sync-statements --check, Р-42) (#120)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:24:42 +04:00
Andrey Epifancev
df85505735 fix(scripts): sync-statements.sh — сбой tea не обрывает скрипт молча, повторная проверка копии после make check (#120)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:20:26 +04:00
Andrey Epifancev
17c0fd20f9 feat(scripts): sync-statements.sh — worktree хоста, issue, make check и PR; --dry-run; предупреждение «сначала ядро» (#120)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:18:14 +04:00
Andrey Epifancev
97777cbd7a fix(scripts): sync-statements.sh --in-place — защиты копии срабатывают и при повторе, .DS_Store не считается игнорируемым (#120)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:14:59 +04:00
Andrey Epifancev
b5ad8a0f4c feat(scripts): sync-statements.sh --in-place — раскладка копии в рабочее дерево хоста с защитой от .gitignore и путей для контура (#120)
Также: evaluate при коммите VERSION без arm_statements/ даёт код 20 вместо падения с 128 (T2.1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:13:16 +04:00
Andrey Epifancev
7851446999 feat(scripts): sync-statements.sh --check — свежесть копии arm_statements в хосте, коды 0/10/20/2 (#120)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:10:11 +04:00
Andrey Epifancev
ddf6927332 feat(scripts): помощник statements_check.py — зависимости пакета и коды словаря имён против перечня (#120)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:06:56 +04:00
Andrey Epifancev
51d0f935ff contracts(#116): OTHER убран из v2.0, form_variant обязателен; проверка числа повторов перечня кодов (L-22, L-28)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 11:36:12 +04:00
Andrey Epifancev
e33a4a45f9 contracts(#116): окно перехода 1.x, перечни кодов форм, okei, смысл column_index и ref (K-5, K-6, K-8, K-22, S-15)
- recognition-result.v1.schema.json и recognition-result-message.v1.schema.json — байтовые копии схем 1.2 / 1.0
  (до 9b1a4cc), примеры 1.x — examples/v1/; живут до удаления маппера 1.x ядра (K-8)
- statement-code-orders.yaml — упорядоченные перечни кодов ББ/ОФР по редакциям 66n / fsbu4 и вариантам
  full / simplified, с законными повторами (Р-20: 1220, 1520, 2410 у fsbu4; раздел III НКО у 66n) и кодами
  печатных форм 1С из fixtures (1105, 1130, 1140, 1215, 1231, 1530, 2420, 2460, 2530, 2930) (K-5)
- validate_contracts.py: схемы v1 и examples/v1/, проверка формы перечня кодов; make venv ставит PyYAML
- v2.0: header.okei (+ _text, _confidence) и okei в headerField (K-22); columns[].column_index — столбец сетки
  кандидата (K-6); line_refs — только строки lines[]; ref Excel — имя листа в кавычках по правилу Excel (S-15);
  статус ОСВ — по контрольным суммам §1.4 листа (S-22); примеры приведены к этим правилам

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 02:02:41 +04:00
Andrey Epifancev
ecc789667f model: DBML v5.19 — строки форм со статусами, needs_review, document_issue, crm_id ГСК/ГСЗ (#116)
- financial_statement_line: снята уникальность (meta_id, line_code); row_index, source_ref (частичный
  уникальный индекс), line_status (enum statement_line_status), line_code_text, parent_row_index,
  needs_review, is_confirmed
- financial_statement_value: source_text, needs_review (хранится — пересмотр п. 4 v5.13), is_confirmed,
  confirmed_by/at; financial_statement_column: period_kind, label_confidence;
  financial_statement_meta: form_variant (enum statement_form_variant), needs_review_fields
- новая таблица document_issue + enum document_issue_kind, issue_severity, issue_source
- recognition_job.statements_version; document: file_ordinal, уникальность типа на файл — только не для
  BALANCE/INCOME (Р-10); related_group.crm_id (arm-core#112)
- changelog и правила заполнения миграции в шапке; entities-v5.19.md; диаграммы части 01, 04, 06
  (document_issue — в части 06); ссылки на текущую модель и DBML в Makefile — v5.19

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 00:53:06 +04:00
Andrey Epifancev
0574ba402f feat(scripts): снимок для контура — во web/ только зависимости сборки (#112)
prepare-contour-snapshot.sh урезает web/package.json arm-core по разрешённому списку
(devDependencies: @rsbuild/core, @rsbuild/plugin-react, tailwindcss, daisyui; optional: raisa-*;
scripts: build, start, preview), сокращает web-check до npm install + npm run build, пишет убранное
в SNAPSHOT.md и сам собирает урезанный web/ во временной копии: не собралось — снимка нет.
Гайд: раздел 3.2 и правило «web/package.json из контура обратно не переносить».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 14:47:35 +04:00
Andrey Epifancev
4475d018cb fix(scripts): sync-web — не исключать игнорируемый web/dist в git add (#110)
git 2.50 на явно названный в pathspec игнорируемый путь (':!web/dist')
печатает «paths are ignored» и возвращает 1 — sync-web останавливался
после проверок, до коммита и PR (issue arm-core #115 создана, PR не было).
web/dist и так игнорируется .gitignore arm-core; исключение симлинка
node_modules оставлено (.gitignore его не ловит).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:47:13 +04:00
Andrey Epifancev
8a39c28572 fix(scripts): sync-web — флаги tea после подкоманды (tea 0.16) (#110)
tea 0.16.0 не принимает --login/--repo перед подкомандой: «flag provided
but not defined: -login» — sync-web падал сразу после создания worktree,
issue и PR в arm-core не создавались. Флаги вынесены в TEA_FLAGS и
передаются после «issues create» / «pulls create»; подсказка ручного
создания PR — с --login/--repo/--base. В test_sync_web.sh — проверка, что
ни один вызов tea в sync-web.sh и prepare-contour-snapshot.sh не начинается
с флага.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 13:45:30 +04:00
Andrey Epifancev
e8dbcff83f feat(scripts): sync-web.sh — синхронизация arm-core/web с arm-web и проверка отставания в пайплайне переноса (#94)
Скрипт делает одной командой то, что делалось вручную в arm-core #94 и #100:
точка синхронизации по хэшу дерева src (без хранения состояния), worktree по
абсолютному пути, issue и PR в arm-core через tea, перенос набора (всё кроме
служебного arm-web), контроль diff -rq, проверки vitest/tsc/biome/build до
коммита. Режимы --check (0/10/20), --dry-run, --ref, --core-ref.

prepare-contour-snapshot.sh для arm-core перед снимком вызывает sync-web.sh
--check: при отставании спрашивает «перенести как есть?», «n» запускает
синхронизацию и останавливает перенос (код 3) до merge PR и закрытия issue;
без терминала — флаг --web-as-is; расхождение (прямые правки web/) — стоп.
Тест test_sync_web.sh на синтетических репозиториях, цели make test-sync-web
и sync-web, гайд §3 шаг 0, §3.1, §8.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-10 10:45:35 +04:00
Andrey Epifancev
7b37e696ca fix(dev): снимок для контура вырезает артефакты агента на любой глубине (#75)
Фронт перенесён в arm-core/web/ из arm-web вместе со своими .claude/, CLAUDE.md,
openspec/config.yaml, docs/superpowers/ и .codegraph/. Скрипт удалял их только в
корне, поэтому в arm-core их пришлось вычищать вручную (arm-core #73).

- prepare-contour-snapshot.sh: удаление и проверка через find по всему дереву;
  опустевшие docs/ убираются; Dockerfile/.dockerignore — по-прежнему только корень
- scripts/test_prepare_contour_snapshot.sh + make test-snapshot (входит в make check):
  синтетический arm-core с артефактами в корне и в web/
- dev/contour-transfer-guide.md §1–§3 и текст SNAPSHOT.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qoydUVv8g1qHxc123u2RR
2026-10-08 23:42:04 +04:00
Andrey Epifancev
2eb28d6d3c Убрать .pyc из коммита, __pycache__/ в .gitignore (#60)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-07 23:36:25 +04:00
Andrey Epifancev
d643453dee Устаревшая документация: модель v5.17, диаграммы по частям, сделанное — в сделанное (#60)
- Ссылки на источник истины v5.13/v5.14/v5.15 → v5.17: openspec/config.yaml, KICKOFF-PROMPT, 00-workspace-layout,
  08-source-docs-index, заголовок 05-domain-rules, dev/checks.md; спека quality-checks — без привязки к версии
  (путь — переменная DBML Makefile).
- Диаграммы model/diagrams/part01…09 перерисованы по v5.17 (были v5.12): scripts/gen_model_diagrams.py
  (разбиение DBML на части + dbml-renderer + resvg через npx, версии закреплены), цель make diagrams;
  описание в 04-data-model-guide, 06-test-data, 08-source-docs-index.
- dev/frontend-api-guide.md: КПП (arm-core #52) и DB_SCHEMA (#53) — из §11 в §1, КПП в маршрутах §5.2/§5.3,
  схеме §5.8 и каталоге ошибок §9 (сверено с кодом 99669cd).
- Ссылки на заархивированные change'и (dev/README, dev/checks, api-contract-slice-3b/4), путь к v4 DBML в индексе.
- 09-delivery-plan: статусы Срезов 0, 2d, 3b, 4.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-07 23:35:44 +04: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
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
Andrey Epifancev
af0f25fbd8 Контракт: скрипт validate_contracts.py валидирует примеры схемами
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:04:49 +04:00
Andrey Epifancev
347566a00a docs: сверка макета со снимками — 22 новых снимка, mockup_crawl_extra.py, OQ-31…OQ-47
10-user-journey.md и mockup/INDEX.md сверены с 33 снимками; досняты Playwright модалка
«Изменить статус», формы ГК/ЮЛ/ГСК/ГСЗ, меню ЮЛ и ГСК, раскрытый срез ЕХ, режимы редактирования
вкладок отчёта, экран 03. Раздел «Что осталось уточнить» закрыт (экрана проверки ОСВ в макете
нет). Расхождения макета с DBML/правилами — OQ-31…OQ-44; OQ-45…OQ-47 — по контракту и seed
Среза 0; OQ-29 дополнен ролями макета.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 02:44:14 +04:00
Andrey Epifancev
15ddef7bb6 docs: полный экспорт ТЗ (22/22), первоисточники BIQ/Методика, макет + 33 снимка, пользовательский путь, OQ-27..30 2026-10-03 01:42:25 +04:00
Andrey Epifancev
e4e2b3ee83 docs: стартовый контекст 2026-10-02 23:02:44 +04:00