From 68be4760ce1a360d61b6c8924d3ac4b597001da8 Mon Sep 17 00:00:00 2001 From: Sergey Krylov Date: Wed, 12 Aug 2026 23:09:16 +0300 Subject: [PATCH] docs: archive baseline change --- .../2026-08-12-baseline}/.openspec.yaml | 0 .../2026-08-12-baseline}/design.md | 0 .../2026-08-12-baseline}/proposal.md | 0 .../specs/api-contract-generation/spec.md | 0 .../specs/project-documentation/spec.md | 0 .../specs/project-foundation/spec.md | 0 .../2026-08-12-baseline}/tasks.md | 0 .../specs/api-contract-generation/spec.md | 28 +++++++++++++++ openspec/specs/project-documentation/spec.md | 28 +++++++++++++++ openspec/specs/project-foundation/spec.md | 35 +++++++++++++++++++ 10 files changed, 91 insertions(+) rename openspec/changes/{baseline => archive/2026-08-12-baseline}/.openspec.yaml (100%) rename openspec/changes/{baseline => archive/2026-08-12-baseline}/design.md (100%) rename openspec/changes/{baseline => archive/2026-08-12-baseline}/proposal.md (100%) rename openspec/changes/{baseline => archive/2026-08-12-baseline}/specs/api-contract-generation/spec.md (100%) rename openspec/changes/{baseline => archive/2026-08-12-baseline}/specs/project-documentation/spec.md (100%) rename openspec/changes/{baseline => archive/2026-08-12-baseline}/specs/project-foundation/spec.md (100%) rename openspec/changes/{baseline => archive/2026-08-12-baseline}/tasks.md (100%) create mode 100644 openspec/specs/api-contract-generation/spec.md create mode 100644 openspec/specs/project-documentation/spec.md create mode 100644 openspec/specs/project-foundation/spec.md diff --git a/openspec/changes/baseline/.openspec.yaml b/openspec/changes/archive/2026-08-12-baseline/.openspec.yaml similarity index 100% rename from openspec/changes/baseline/.openspec.yaml rename to openspec/changes/archive/2026-08-12-baseline/.openspec.yaml diff --git a/openspec/changes/baseline/design.md b/openspec/changes/archive/2026-08-12-baseline/design.md similarity index 100% rename from openspec/changes/baseline/design.md rename to openspec/changes/archive/2026-08-12-baseline/design.md diff --git a/openspec/changes/baseline/proposal.md b/openspec/changes/archive/2026-08-12-baseline/proposal.md similarity index 100% rename from openspec/changes/baseline/proposal.md rename to openspec/changes/archive/2026-08-12-baseline/proposal.md diff --git a/openspec/changes/baseline/specs/api-contract-generation/spec.md b/openspec/changes/archive/2026-08-12-baseline/specs/api-contract-generation/spec.md similarity index 100% rename from openspec/changes/baseline/specs/api-contract-generation/spec.md rename to openspec/changes/archive/2026-08-12-baseline/specs/api-contract-generation/spec.md diff --git a/openspec/changes/baseline/specs/project-documentation/spec.md b/openspec/changes/archive/2026-08-12-baseline/specs/project-documentation/spec.md similarity index 100% rename from openspec/changes/baseline/specs/project-documentation/spec.md rename to openspec/changes/archive/2026-08-12-baseline/specs/project-documentation/spec.md diff --git a/openspec/changes/baseline/specs/project-foundation/spec.md b/openspec/changes/archive/2026-08-12-baseline/specs/project-foundation/spec.md similarity index 100% rename from openspec/changes/baseline/specs/project-foundation/spec.md rename to openspec/changes/archive/2026-08-12-baseline/specs/project-foundation/spec.md diff --git a/openspec/changes/baseline/tasks.md b/openspec/changes/archive/2026-08-12-baseline/tasks.md similarity index 100% rename from openspec/changes/baseline/tasks.md rename to openspec/changes/archive/2026-08-12-baseline/tasks.md diff --git a/openspec/specs/api-contract-generation/spec.md b/openspec/specs/api-contract-generation/spec.md new file mode 100644 index 0000000..af43237 --- /dev/null +++ b/openspec/specs/api-contract-generation/spec.md @@ -0,0 +1,28 @@ +# api-contract-generation Specification + +## Purpose + +Определяет единый, проверяемый контракт HTTP API между backend и frontend, исключающий ручное расхождение типов и маршрутов. + +## Requirements + +### Requirement: Backend публикует машиночитаемый API-контракт +Backend SHALL публиковать версионированный OpenAPI-документ, описывающий доступные HTTP-маршруты, параметры, тела запросов, ответы и ошибки API `/api/v1`. + +#### Scenario: Разработчик получает контракт API +- **WHEN** backend запущен в локальной среде разработки +- **THEN** разработчик может получить OpenAPI-документ для генерации frontend-клиента + +### Requirement: Frontend использует сгенерированный API-клиент +Frontend SHALL генерировать типы и модуль HTTP-запросов из опубликованного OpenAPI-документа. Сгенерированный результат MUST храниться в frontend-репозитории и обновляться локальной воспроизводимой командой. + +#### Scenario: API-контракт изменяется +- **WHEN** backend меняет опубликованный API-контракт +- **THEN** frontend может повторно сгенерировать типы и запросный модуль до интеграции изменения + +### Requirement: Frontend не зависит от OpenAPI во время работы +Работающий frontend MUST использовать ранее сгенерированный клиент и MUST NOT требовать доступность Swagger или OpenAPI endpoint во время запуска или выполнения пользовательского сценария. + +#### Scenario: OpenAPI endpoint недоступен после сборки frontend +- **WHEN** frontend уже собран, а endpoint OpenAPI временно недоступен +- **THEN** frontend продолжает использовать сгенерированный код для запросов к API diff --git a/openspec/specs/project-documentation/spec.md b/openspec/specs/project-documentation/spec.md new file mode 100644 index 0000000..944e8fe --- /dev/null +++ b/openspec/specs/project-documentation/spec.md @@ -0,0 +1,28 @@ +# project-documentation Specification + +## Purpose + +Определяет обязательную документацию архитектурных решений и пользовательских возможностей, сопровождающую SDD-изменения WealthLedger. + +## Requirements + +### Requirement: Важные архитектурные решения фиксируются в ADR +Репозиторий docs SHALL содержать ADR для выбора локального хранилища, API-контракта, gRPC-интеграции T-Bank, хранения T-Bank токенов, устойчивости upstream-вызовов, auth-сессий и frontend-кэша. Каждый ADR MUST описывать контекст, решение и последствия. + +#### Scenario: Разработчик оценивает архитектурное ограничение +- **WHEN** разработчик хочет изменить один из зафиксированных механизмов +- **THEN** он может определить исходное решение и его последствия из соответствующего ADR + +### Requirement: Реализованная фича получает документацию +Каждая завершенная пользовательская фича SHALL иметь Markdown-документ в `docs/features`, описывающий пользовательский поток, API-сценарий, ограничения и необходимые Mermaid-диаграммы. + +#### Scenario: Функциональное изменение готово к закрытию +- **WHEN** реализация пользовательской фичи завершена +- **THEN** ее feature-документ существует и отражает фактическое поведение + +### Requirement: OpenSpec change закрывается только после полной верификации +Функциональный OpenSpec change MUST содержать все требуемые артефакты, реализацию, критические тесты, успешную проверку `opsx-verify` и связанную документацию до архивирования. + +#### Scenario: Команда пытается архивировать незавершенное изменение +- **WHEN** для изменения отсутствует реализация, верификация или feature-документ +- **THEN** изменение не считается готовым к архивированию diff --git a/openspec/specs/project-foundation/spec.md b/openspec/specs/project-foundation/spec.md new file mode 100644 index 0000000..9e6efe3 --- /dev/null +++ b/openspec/specs/project-foundation/spec.md @@ -0,0 +1,35 @@ +# project-foundation Specification + +## Purpose + +Определяет минимальный, согласованный фундамент рабочих приложений и правила их совместного развития через отдельные репозитории и SDD-изменения. + +## Requirements + +### Requirement: Репозитории содержат локальные инструкции для AI-агентов +Система SHALL содержать обзорный `AGENTS.md` в корне рабочей области и отдельный `AGENTS.md` в репозиториях frontend, backend, specs и docs. Инструкции MUST описывать назначение области, локальные команды проверки, границы ответственности и связь с SDD-артефактами. + +#### Scenario: Агент начинает работу в отдельном репозитории +- **WHEN** агент открывает любой из репозиториев frontend, backend, specs или docs +- **THEN** он может определить локальные правила работы и источник связанных спецификаций из `AGENTS.md` этого репозитория + +### Requirement: Локальный план MVP не является источником спецификации +Система SHALL содержать корневой локальный `MVP.md` с границами MVP, принятыми решениями, порядком поставок и критериями готовности. Требования к функциональности MUST храниться в OpenSpec, а устойчивая документация MUST храниться в репозитории docs. + +#### Scenario: Решение уточняется во время SDD-изменения +- **WHEN** изменение уточняет наблюдаемое поведение системы +- **THEN** оно фиксируется в OpenSpec и соответствующей документации, а `MVP.md` остается компактной картой поставки + +### Requirement: Frontend предоставляет минимальный каркас приложения +Frontend SHALL предоставлять русскоязычный адаптивный каркас приложения с маршрутами `/login`, `/register`, `/accounts`, `/accounts/:accountId` и `/settings`, светлой финансовой темой и навигацией для счетов и настроек. Каркас MUST содержать состояния загрузки, ошибки и пустых данных без реализации доменных сценариев. + +#### Scenario: Пользователь открывает маршрут MVP +- **WHEN** пользователь переходит на любой маршрут MVP +- **THEN** frontend отображает соответствующий каркас страницы и не показывает шаблонный Todo-интерфейс + +### Requirement: Backend предоставляет безопасный API-фундамент +Backend SHALL публиковать HTTP API с префиксом `/api/v1`, принимать разрешенные frontend origins только из конфигурации и возвращать клиенту безопасные ошибки без секретов или внутренних деталей. + +#### Scenario: Запрос приходит с неразрешенного origin +- **WHEN** браузер отправляет cross-origin запрос не с настроенного frontend origin +- **THEN** backend не разрешает браузеру доступ к ответу через CORS