feat: harden OpenSpec SDD workflow
This commit is contained in:
+39
@@ -0,0 +1,39 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Каждая задача объявляет единственную delivery area
|
||||
|
||||
Каждый checkbox Tasks MUST объявлять ровно одного owner из `frontend`, `backend`, `specs`, `docs` или `workspace`. Implementation work, изменяющая несколько Git-репозиториев, MUST быть разделена на repository-owned tasks; `workspace` SHALL использоваться только для cross-area orchestration или verification без владения repository implementation. Для каждой `affected` area Tasks MUST содержать её implementation work и canonical local gate, а task ownership MUST соответствовать утверждённому Delivery Map.
|
||||
|
||||
#### Scenario: Change затрагивает frontend и backend
|
||||
|
||||
- **WHEN** одна delivery intent требует изменения клиента и API
|
||||
- **THEN** Tasks содержит отдельные frontend-owned и backend-owned checkbox items вместо одной общей implementation task
|
||||
|
||||
#### Scenario: Выполняется общий verification gate
|
||||
|
||||
- **WHEN** задача только оркестрирует проверку нескольких affected areas и не изменяет их implementation
|
||||
- **THEN** task использует owner `workspace` и не подменяет repository-owned implementation или canonical gates
|
||||
|
||||
#### Scenario: Task ссылается на N/A area
|
||||
|
||||
- **WHEN** checkbox объявляет owner области, которая имеет статус `N/A` в Delivery Map
|
||||
- **THEN** planning validation завершается ошибкой и указывает несогласованную delivery area
|
||||
|
||||
### Requirement: Tasks трассируются к утверждённым требованиям
|
||||
|
||||
Каждый checkbox Tasks MUST содержать coverage reference: одну или несколько пар из точного capability path и точного Requirement heading либо `N/A` с конкретной причиной для работы, которая не реализует spec-level behavior. Каждый Requirement из Delta Specs MUST быть покрыт хотя бы одной task. Planning validation MUST отклонять отсутствующее покрытие, ссылку на несуществующий capability или Requirement и пустую причину `N/A`. Traceability SHALL использовать нативную идентичность requirement и MUST NOT вводить параллельный namespace собственных requirement IDs.
|
||||
|
||||
#### Scenario: Delta requirement покрыт реализацией
|
||||
|
||||
- **WHEN** Tasks планирует поставку изменённого requirement
|
||||
- **THEN** хотя бы один checkbox ссылается на точный capability path и Requirement heading этого delta
|
||||
|
||||
#### Scenario: Задача не меняет spec-level behavior
|
||||
|
||||
- **WHEN** task обновляет infrastructure, documentation или verification без самостоятельного requirement
|
||||
- **THEN** coverage reference содержит `N/A` и конкретно объясняет отсутствие spec-level связи
|
||||
|
||||
#### Scenario: Requirement остался без задачи
|
||||
|
||||
- **WHEN** хотя бы один Requirement из Delta Specs не указан ни в одной coverage reference
|
||||
- **THEN** planning validation блокирует approval Tasks и перечисляет uncovered Requirement
|
||||
Reference in New Issue
Block a user