arm-ka-docs/docs/superpowers/plans/2026-10-03-slice-0-skeleton-phase2.md
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

5.3 KiB
Raw Blame History

Срез 0 — сквозной скелет (docs) — фаза 2: проверки, профиль services, документы — план исполнения (Срез 0)

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Branch: feat/1-slice-0-skeleton (worktree .wt/slice-0/docs). Issue: #1. Spec: openspec/changes/slice-0-skeleton/ — proposal.md, design.md, specs/*/spec.md этого change'а. Спека — единственный источник истины при рулингах; этот план сгенерирован из её tasks.md 1:1 (номера в скобках — исходные номера задач tasks.md; по завершении задачи отметить её - [x] и в tasks.md).

Global Constraints

  • Репозиторий arm-ka-docs: документы, контракты, docs/dev/. docs/source/** не редактировать.
  • Контракт v1.0: три схемы JSON Schema 2020-12 (recognition-request, recognition-result-message, recognition-result), schema_version = "1.0"; статусы конверта processing | done | needs_check | error; коды ошибок — перечень из spec recognition-contract (включая NOT_IMPLEMENTED); деньги — строки ^-?\d+(\.\d{1,2})?$; Nats-Msg-Id: <job_id>:<attempt>, ack:<job_id>:<attempt>, result:<job_id>:<attempt>.
  • Платформа: Python 3.11, PostgreSQL 16, NATS 2.10 без JetStream, один бакет S3 arm-ka; Nexus недоступен; CI нет — make check / make check-full.
  • Compose собирает сервисы из ../../<repo> относительно docs/dev/; версии образов фиксированы.
  • Язык документов и коммитов — русский; коммит заканчивается строкой Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>.

Задачи

Task 1: [4.1] [docs] docs/dev/checks.md

  • [docs] docs/dev/checks.md: общие цели Makefile (up, test, test-integration, lint, check, check-full), что делает каждая, порядок перед PR, как пропускаются тесты без фикстур/docs; проверка: цели arm-core соответствуют описанию

Task 2: [4.2] [docs] Эталонный фрагмент docs/dev/Makefile.common (включается в Makefile се

  • [docs] Эталонный фрагмент docs/dev/Makefile.common (включается в Makefile сервисов через include или копируется); проверка: make check в трёх репозиториях вызывает одинаковые команды (diff общих целей)

Task 3: [5.3] [docs] docker-compose.yml

  • [docs] docker-compose.yml: профиль services — arm-core (8000), tabular-parser (8001), scan-gateway (8002), scan-emulator (том hotfolder, ../../fixtures/ocr:ro); проверка: --profile services up --build, все /healthcheck 200 с nats = ok

Task 4: [5.4] [docs] Сквозная проверка руками по README

  • [docs] Сквозная проверка руками по README: вставить recognition_job в БД через psql (или тестовый скрипт arm-core) → паблишер публикует → tabular-parser отвечает ack и NOT_IMPLEMENTED → recognition_job.status проходит published → processing → error, error_code = NOT_IMPLEMENTED; то же для image через эмулятор (raw/{job_id}.json появляется в MinIO); остановить tabular-parser, вставить задание — через 30 с повторная публикация, после трёх — dlq; зафиксировать в README как «проверка окружения»

Task 5: [6.1] [docs] 06-test-data.md §6

  • [docs] 06-test-data.md §6: fixtures/directories/ — только тестовые ЮЛ/ГК (Срез 1); план счетов, правила элиминации, права — arm-core/api/seed/; 09-delivery-plan.md Срез 0: решение D-1 по пакету контрактов, ссылка на docs/dev/, проверки вместо CI

Task 6: [6.2] [docs] 07-open-questions.md

  • [docs] 07-open-questions.md: OQ по итогам Среза 0 (контракт data_type = NU vs enum osv_data_type; обязательность ОСВ расширенного подхода; источник полного плана счетов 1С) и расхождения макета из задачи B; статусы допущений

Task 7: [6.3] [docs] Итоговая проверка

  • [docs] Итоговая проверка: openspec validate slice-0-skeleton --strict зелёный в четырёх репозиториях; ссылки между документами ведут на существующие файлы (grep по именам файлов)