docs(specs): archive local verification remediation
This commit is contained in:
@@ -29,16 +29,42 @@ Frontend SHALL хранить в репозитории версионируем
|
||||
- **THEN** команда завершается с ошибкой и существующие snapshot и сгенерированные transport types не изменяются
|
||||
|
||||
### Requirement: Frontend не зависит от OpenAPI во время работы
|
||||
Работающий frontend MUST использовать ранее сгенерированные transport types и MUST NOT требовать доступность Swagger или OpenAPI endpoint во время запуска, выполнения пользовательского сценария или локальной проверки актуальности generated artifact. Доступ к backend OpenAPI endpoint разрешён только команде синхронизации snapshot.
|
||||
Работающий frontend MUST использовать ранее сгенерированные transport types и MUST NOT требовать доступность Swagger или OpenAPI endpoint во время запуска, выполнения пользовательского сценария или локальной проверки актуальности generated artifact. Доступ к backend OpenAPI endpoint разрешён только команде синхронизации snapshot и отдельной read-only runtime-contract command.
|
||||
|
||||
#### Scenario: OpenAPI endpoint недоступен после сборки frontend
|
||||
- **WHEN** frontend уже собран, а endpoint OpenAPI временно недоступен
|
||||
- **THEN** frontend продолжает использовать сгенерированный код для запросов к API
|
||||
|
||||
#### Scenario: Локальная проверка выполняется без backend
|
||||
- **WHEN** разработчик запускает локальный quality gate без доступного backend
|
||||
- **WHEN** разработчик запускает локальный frontend quality gate
|
||||
- **THEN** проверка актуальности generated artifact использует сохранённый snapshot и не обращается к OpenAPI endpoint
|
||||
|
||||
#### Scenario: Разработчик проверяет runtime-контракт
|
||||
- **WHEN** разработчик запускает отдельную runtime-contract command
|
||||
- **THEN** command может поднять изолированный local backend только для сравнения
|
||||
его полного runtime OpenAPI document с committed frontend snapshot и не
|
||||
обновляет ни один из артефактов
|
||||
|
||||
### Requirement: Отдельная команда обнаруживает runtime drift OpenAPI
|
||||
Runtime-contract command MUST получать полный OpenAPI document от изолированного
|
||||
local backend по `/api/docs-json`, рекурсивно canonicalize порядок JSON object
|
||||
keys, сохраняя каждое field и array order, и сравнивать его SHA-256 с canonical
|
||||
committed frontend snapshot. При любом content mismatch она MUST завершаться
|
||||
ошибкой и показывать diff. Verification MUST NOT вызывать snapshot
|
||||
synchronization command или записывать committed OpenAPI либо generated type
|
||||
artifacts.
|
||||
|
||||
#### Scenario: Runtime success status отличается от committed snapshot
|
||||
- **WHEN** backend runtime OpenAPI описывает response status, отличный от
|
||||
committed frontend snapshot
|
||||
- **THEN** runtime-contract command завершается ошибкой с diff и оставляет
|
||||
snapshot и generated types без изменений
|
||||
|
||||
#### Scenario: Runtime OpenAPI совпадает с committed snapshot
|
||||
- **WHEN** каждое field canonical runtime document совпадает с canonical
|
||||
committed frontend snapshot
|
||||
- **THEN** runtime-contract stage завершается успешно без изменения frontend files
|
||||
|
||||
### Requirement: Frontend обнаруживает дрейф сгенерированного контракта
|
||||
Frontend SHALL проверять, что committed generated transport types соответствуют versioned OpenAPI snapshot, и MUST завершать quality gate с ошибкой при расхождении.
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
## Requirements
|
||||
|
||||
### Requirement: Репозитории содержат локальные инструкции для AI-агентов
|
||||
Система SHALL содержать обзорный `AGENTS.md` в корне рабочей области и отдельный `AGENTS.md` в репозиториях frontend, backend, specs и docs. Инструкции MUST описывать назначение области, локальные команды проверки, границы ответственности и связь с SDD-артефактами. Каждая инструкция MUST объявлять `wealth-ledger-specs` и `specs/openspec` как canonical OpenSpec authority, требовать явный `--store wealth-ledger-specs` для поддерживаемых OpenSpec операций и запрещать versioned framework-specific planning artifacts вне canonical store. Локальные инструкции MUST направлять агента к durable remediation registry, когда задача связана с findings технического аудита.
|
||||
Система SHALL содержать обзорный `AGENTS.md` в корне рабочей области и отдельный `AGENTS.md` в репозиториях frontend, backend, specs и docs. Инструкции MUST описывать назначение области, локальные команды проверки, границы ответственности и связь с SDD-артефактами. Каждая инструкция MUST объявлять `wealth-ledger-specs` и `specs/openspec` как canonical OpenSpec authority, требовать явный `--store wealth-ledger-specs` для поддерживаемых OpenSpec операций и запрещать versioned framework-specific planning artifacts вне canonical store. Локальные инструкции MUST направлять агента к durable remediation registry, когда задача связана с findings технического аудита. Backend instructions MUST различать non-mutating verification commands и явные auto-fix commands.
|
||||
|
||||
#### Scenario: Агент начинает работу в отдельном репозитории
|
||||
- **WHEN** агент открывает любой из репозиториев frontend, backend, specs или docs
|
||||
@@ -17,13 +17,21 @@
|
||||
- **WHEN** задача ссылается на finding технического аудита
|
||||
- **THEN** локальный `AGENTS.md` указывает на remediation registry и canonical OpenSpec workflow с явным store selection до начала изменения кода
|
||||
|
||||
#### Scenario: Агент выбирает backend quality gate
|
||||
- **WHEN** агент читает backend instructions перед локальной проверкой
|
||||
- **THEN** он запускает документированные non-mutating lint/typecheck commands и не получает auto-fix как неявный quality gate
|
||||
|
||||
### Requirement: Локальный план MVP не является источником спецификации
|
||||
Система SHALL содержать корневой локальный `MVP.md` с границами MVP, принятыми решениями, порядком поставок и критериями готовности. Требования к функциональности MUST храниться в OpenSpec, а устойчивая документация MUST храниться в репозитории docs.
|
||||
Система SHALL содержать корневой локальный `MVP.md` с границами MVP, принятыми решениями, порядком поставок и критериями готовности. Требования к функциональности MUST храниться в OpenSpec, а устойчивая документация MUST храниться в репозитории docs. Frontend и backend MUST требовать Node 22 и документировать lockfile-safe bootstrap через `npm ci`.
|
||||
|
||||
#### Scenario: Решение уточняется во время SDD-изменения
|
||||
- **WHEN** изменение уточняет наблюдаемое поведение системы
|
||||
- **THEN** оно фиксируется в OpenSpec и соответствующей документации, а `MVP.md` остается компактной картой поставки
|
||||
|
||||
#### Scenario: Агент bootstrap-ит application repository
|
||||
- **WHEN** агент начинает локальную проверку frontend или backend на чистой машине
|
||||
- **THEN** он может определить Node 22 и выполнить `npm ci` без угадывания runtime policy
|
||||
|
||||
### Requirement: Frontend предоставляет минимальный каркас приложения
|
||||
Frontend SHALL предоставлять русскоязычный адаптивный каркас приложения с маршрутами `/login`, `/register`, `/accounts`, `/accounts/:accountId` и `/settings`, светлой финансовой темой и навигацией для счетов и настроек. Каркас MUST содержать состояния загрузки, ошибки и пустых данных без реализации доменных сценариев.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user