57 Commits

Author SHA1 Message Date
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
Andrey Epifancev
a11eba028f chore: отметить задачу 5.4 выполненной
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 06:38:58 +04:00
Andrey Epifancev
29e74b875f docs(openspec): design.md — решения 30–33 (сквозная проверка окружения)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 06:17:45 +04:00
Andrey Epifancev
2e2e50accb docs(dev): README — раздел «Проверка окружения» со сквозным сценарием
Помощники dpsql/dmc/new_job/poll и фактический вывод трёх сценариев на
профиле services (2026-10-04): tabular → error/NOT_IMPLEMENTED; image →
эмулятор ИС → error/INVALID_DOCUMENT (ответ-ошибка из фикстуры aep_5) и
raw/{job_id}.json в MinIO; tabular-parser остановлен → 3 повтора через 30 с →
dlq/NO_ACK (~120 с). Что сквозная проверка Среза 0 не покрывает.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 06:17:08 +04:00
Andrey Epifancev
e98a9239bf docs(dev): README — замечания ревью задачи 5.3 (T3.3–T3.6)
- T3.3: риск общих queue group подтверждён чтением тестов tabular-parser и
  scan-gateway (test_roundtrip, боевые *.request); тесты arm-core изолированы
  (временная БД, уникальный subject результатов); команда проверки подписчиков.
- T3.4: «Остаточные тома» — down -v только с --profile services.
- T3.5: GET / отвечает 307 на // и затем 404.
- T3.6: up -d --build <сервис> пересоздаёт сервис и зависимости: arm-core-migrate
  пересоздаётся вместе с arm-core, scan-emulator со scan-gateway — нет (проверено).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 06:16:59 +04:00
Andrey Epifancev
e705080e55 chore: отметить задачу 5.3 выполненной
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 06:01:46 +04:00
Andrey Epifancev
f6e14c2195 docs(openspec): design.md — решения 26–29 (профиль services в compose)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 05:44:05 +04:00
Andrey Epifancev
f1b648e7b7 docs(dev): README и .env.example — профиль services, порты хоста и контейнера, коды --wait
Порты хоста ARM_CORE_PORT/TABULAR_PARSER_PORT/SCAN_GATEWAY_PORT (8000/8001/8002, в контейнере 8000);
раздел «Профиль services»: команды, таблица портов, порядок старта, фактический вывод healthcheck,
коды возврата up -d --wait (в т.ч. scan-gateway scan-emulator — 0), пересборка; сброс только с
--profile services; предупреждение об интеграционных тестах при поднятом профиле.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 05:43:41 +04:00
Andrey Epifancev
4171ecc410 feat(dev): профиль services в docker-compose — arm-core, tabular-parser, scan-gateway, scan-emulator
Сервисы собираются из соседних репозиториев (../../<repo>), образы <repo>:dev; порты хоста 8000/8001/8002
на ${BIND_ADDR:-127.0.0.1}, внутри контейнера все слушают 8000. Одноразовый arm-core-migrate выполняет
alembic upgrade head и seed --dev до старта arm-core. Фрагмент scan-gateway/scan-emulator взят из
open-questions-proposal.md scan-gateway; образ каждого репозитория собирается одним сервисом
(arm-core, scan-gateway), второй использует тег с pull_policy: never.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 05:42:00 +04:00
Andrey Epifancev
22d7c10bb2 chore: отметить задачу 4.2 выполненной
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 05:33:15 +04:00
Andrey Epifancev
9acd2f90c4 docs(dev): checks.md и README описывают Makefile.common; design.md — решения 24–25
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 05:27:21 +04:00
Andrey Epifancev
792042ffad docs(dev): checks.md — замечания ревью задачи 4.1 (T1.1–T1.4)
Уточнены: fixtures только в arm-core, mypy scripts у arm-core, формулировка
про инфраструктуру compose и «одинаковую семантику» целей.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 05:27:00 +04:00
Andrey Epifancev
b08df040e9 build(dev): Makefile.common — эталонный фрагмент общих целей сервисов
Цели venv, lint, test, test-integration, check, docker-build, check-full, up
по эталону scan-gateway; различия сервисов вынесены в переменные
(MYPY_PATHS, IMAGE, COMPOSE_*, CHECK_FULL_STEPS).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 05:26:51 +04:00
Andrey Epifancev
69fc0cc581 chore: отметить задачу 4.1 выполненной
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 05:25:21 +04:00
Andrey Epifancev
eaf2489e98 docs(openspec): design.md — решения 21–23 (Makefile docs, эталон целей, README dev); checks.md — уточнение про сеть
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 05:20:53 +04:00
Andrey Epifancev
b6e2be9f87 docs(dev): README ссылается на checks.md, убрано устаревшее «Makefile только у arm-core»
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 05:20:41 +04:00
Andrey Epifancev
401cdbc362 docs(dev): checks.md — цели make, порядок проверок перед PR, пропуск без docs/fixtures
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 05:20:27 +04:00
Andrey Epifancev
039bb4ed7b build: Makefile репозитория docs с целью check (валидация контракта и OpenSpec)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 05:19:39 +04:00
Andrey Epifancev
5f2be96e11 fix(dev): healthcheck PostgreSQL по TCP, порты на 127.0.0.1, пароли MinIO из .env в README
- pg_isready с -h 127.0.0.1: временный сервер initdb слушает только сокет (M-3)
- README: mc и psql берут учётные данные из переменных окружения контейнера, а не зашитые значения (M-4)
- порты postgres/nats/minio публикуются на ${BIND_ADDR:-127.0.0.1}; BIND_ADDR добавлен в .env.example и README,
  примечание про безопасность обновлено (M-6, R-9)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:59:56 +04:00
Andrey Epifancev
5bebdfe9fc docs(architecture): актуализировать описание контракта распознавания и версионирование
- убрана устаревшая пометка «черновик» у recognition-result.schema.json (M-1)
- в строку ack добавлен schema_version, metrics и raw_s3_key помечены как опциональные,
  правило версионирования дополнено принятием любого MINOR и порядком раскатки (M-2)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:59:03 +04:00
Andrey Epifancev
991a152454 fix(contracts): schema_version принимает любой MINOR, границы confidence, описание Nats-Msg-Id
- schema_version: const "1.0" заменён на pattern ^1\.\d+$ во всех трёх схемах (I-1, R-8);
  в $comment добавлено правило раскатки нового MINOR сначала на потребителей
- границы 0–100 для organization_name_confidence, inn_confidence, line_code_confidence,
  line_name_confidence (I-2)
- description recognition-result-message: две формы Nats-Msg-Id на recognition.result (M-5)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:58:48 +04:00
Andrey Epifancev
92d642d64a docs: design.md — решения 19–20 (schema_version по MAJOR, bind-адрес портов compose)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:57:15 +04:00
Andrey Epifancev
0ee1d41da7 chore: отметить задачу 7 (2.2) выполненной
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:47:31 +04:00
Andrey Epifancev
45d45e17f7 Исправить dev/.env.example и README по ревью: SMB-заглушки, NATS_ENABLED, статус целей check
Спека и R-7 (design №18): dev/.env.example остаётся единственным источником для запуска из venv,
поэтому в него добавлены OPENBAO__SMB__* и NATS_ENABLED=true; README отделяет текущие цели
Makefile arm-core от планируемых по spec quality-checks.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:42:17 +04:00
Andrey Epifancev
de116ed0c1 docs: design.md — решение 18 (SMB-заглушки и NATS_ENABLED в dev/.env.example)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:41:31 +04:00
Andrey Epifancev
6b97d87d8e Добавить dev/README.md: запуск инфраструктуры, переменные, сброс, запуск из venv
Черновик: профиль services, запуск из venv и интеграционные тесты помечены
как планируемые и дописываются в задачах 5.x.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:36:17 +04:00
Andrey Epifancev
34c43be881 chore: отметить задачу 6 (2.1) выполненной
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:34:49 +04:00
Andrey Epifancev
64c103da5f docs: design.md — решения 16–17 (образы MinIO в dev-compose)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:30:59 +04:00
Andrey Epifancev
944296250e Игнорировать dev/.env с локальными настройками compose
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:29:57 +04:00
Andrey Epifancev
4de51361a3 Добавить docker-compose инфраструктуры разработки (dev/)
PostgreSQL 16, NATS 2.10 без JetStream, MinIO и minio-init с бакетом arm-ka;
имя проекта arm-ka, порты и учётные данные из .env, версии образов зафиксированы.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:29:57 +04:00
Andrey Epifancev
a22a9c3100 chore: отметить задачу 5 (1.5) выполненной
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:18:09 +04:00
Andrey Epifancev
3074632fb1 Архитектура: таблица контракта NATS со ссылками на схемы, ack и правила Nats-Msg-Id
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:07:32 +04:00
Andrey Epifancev
7f0de551c1 chore: отметить задачу 4 (1.4) выполненной
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:06:41 +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
38c50c2101 Контракт: примеры сообщений и результатов распознавания v1.0
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:04:49 +04:00
Andrey Epifancev
faae87c9c7 chore: отметить задачу 3 (1.3) выполненной
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:03:16 +04:00
Andrey Epifancev
a57cf2db49 Контракт: схема сообщения результата recognition-result-message v1.0
Конверт на subject recognition.result: status processing | done | needs_check | error,
условные обязательные поля через if/then (done/needs_check → result_s3 и
result_schema_version; error → error). group_schema в конверт не входит.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:02:18 +04:00
Andrey Epifancev
4be67392ab chore: отметить задачу 2 (1.2) выполненной
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:01:18 +04:00
Andrey Epifancev
8efaba47bf Контракт: схема запроса распознавания recognition-request v1.0
JSON Schema 2020-12 по spec recognition-contract: schema_version, job_id,
file_id (uuid), pipeline, file_type, original_name, s3 {bucket, key},
reply_deadline (date-time), attempt (>= 1).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 18:00:35 +04:00
Andrey Epifancev
1166abe42b chore: отметить задачу 1 (1.1) выполненной
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 17:59:57 +04:00
Andrey Epifancev
65c3809efe Контракт v1.0: схема результата распознавания без пометки «черновик»
- title без «ЧЕРНОВИК v1, уточнить в Срезе 2»
- $comment о правилах версионирования (MAJOR.MINOR)
- NOT_IMPLEMENTED в перечне error.code
- пустой documents допустим только при status = error (if/then, minItems: 1 для done и needs_check)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 17:58:47 +04:00
Andrey Epifancev
8e1a1ce4f5 docs: design.md — решения 13–15 (SDD, фаза 1 среза 0)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 17:55:37 +04:00
Andrey Epifancev
22f55e5f7d chore: план исполнения SDD из tasks.md change'а, служебные каталоги в .gitignore
docs/superpowers/plans/2026-10-03-slice-0-skeleton*.md сгенерирован 1:1 из openspec/changes/slice-0-skeleton/tasks.md
(заголовки «Task N» для скриптов subagent-driven-development, Global Constraints из спеки и CLAUDE.md).
.gitignore: .codegraph/, .superpowers/, .bounded, .DS_Store.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 17:53:56 +04:00
aep
05a906ef90 Merge pull request 'Срез 0 (proposal): соглашения шаблона, сверка макета, change slice-0-skeleton (контракт v1.0, compose, проверки)' (#2) from feat/1-slice-0-skeleton into main
Reviewed-on: #2
2026-10-03 16:43:10 +03:00
Andrey Epifancev
a0be5ab5a1 docs: Срез 0 под факты платформы — NATS без JetStream, Python 3.11, PostgreSQL 16, без CI и Nexus
По ответам пользователя 03.10.2026: обмен через recognition_job перестроен на core NATS (queue group'ы,
ack сервиса = конверт status=processing, повторная публикация ядром 30 с × 3 → dlq, дедуп по result_msg_id);
capability ci-template заменена на quality-checks (make check / make check-full, конфигураций CI нет);
compose: PostgreSQL 16, NATS без --jetstream, python:3.11-slim; пакеты raisa_* фильтруются при dev-установке,
npm raisa-* → optionalDependencies. Обновлены 03-architecture, 09-delivery-plan, 00-workspace-layout,
proposal/design/specs/tasks change'а; открытые вопросы к платформе закрыты, остались Node и JWT РАИСА.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 16:21:39 +04:00