spec: add requirement-writing profile to sdd-lab (WealthLedger/specs#66)
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
<!--
|
||||
Оставь только нужные этой дельте разделы; комментарий удали до approval.
|
||||
Перед заполнением прочитай единый профиль:
|
||||
openspec/schemas/wealth-ledger-sdd-lab/spec-writing.md.
|
||||
Оставь только нужные этой дельте разделы; подсказки и образец не входят в результат.
|
||||
Файл — specs/<capability-path>/spec.md с точным путём из Proposal.
|
||||
|
||||
Только новая capability: `## Purpose` в 1–2 предложения (от 50 символов).
|
||||
Существующая capability: Purpose не добавляй.
|
||||
@@ -11,22 +14,29 @@
|
||||
- `## REMOVED Requirements` — heading Requirement плюс **Reason** и **Migration**.
|
||||
- `## RENAMED Requirements` — только пары `FROM:` и `TO:`.
|
||||
|
||||
Каждый нормативный Requirement осознанно использует BCP 14 (RFC 2119 + RFC 8174)
|
||||
uppercase SHALL/MUST и минимум один `#### Scenario:` с `- **WHEN**` и
|
||||
`- **THEN**`. Строчные «must/should/may» — обычный язык.
|
||||
Не оставляй пустые разделы операций и образцы.
|
||||
Каркас ADDED/MODIFIED: устойчивое имя → субъект SHALL <наблюдаемый результат>
|
||||
с явным условием, если оно нужно → определения/таблица → Scenarios.
|
||||
SHALL NOT — запрет; существующие MUST/MUST NOT равнозначны. Один Requirement —
|
||||
одно независимо принимаемое обязательство, не подсчёт предложений или SHALL.
|
||||
Сценарий: GIVEN — существенное исходное состояние, WHEN — событие,
|
||||
THEN — конкретный наблюдаемый исход. Минимум один Scenario; границы/отказы/повторы
|
||||
добавляй по смыслу. Новое правило в одном лишь сценарии недопустимо.
|
||||
Термины определены, величины имеют единицы и границы. Неизвестное — вопрос в
|
||||
Open Decisions с владельцем и зависимым требованием, не придуманный ответ.
|
||||
|
||||
Пример:
|
||||
Учебный образец формы, не продуктовая политика:
|
||||
## ADDED Requirements
|
||||
### Requirement: Итог портфеля не учитывает дубли операций
|
||||
Система SHALL учитывать каждый идентификатор операции брокера в итоге портфеля
|
||||
не более одного раза.
|
||||
### Requirement: Отбор операций за календарный период
|
||||
При формировании отчёта система SHALL включать все и только операции выбранного
|
||||
счёта, дата учёта которых входит в выбранный период включительно по Europe/Moscow.
|
||||
|
||||
#### Scenario: Одна операция импортирована дважды
|
||||
- **WHEN** операция `op-1` на 100.00 RUB импортирована дважды
|
||||
- **THEN** итог портфеля увеличивается ровно на 100.00 RUB
|
||||
#### Scenario: Последний день периода и следующий день
|
||||
- **GIVEN** выбран период 01.10.2026–31.10.2026 и счёт A
|
||||
- **AND** на счёте A есть операции X с датой учёта 31.10.2026 и Y с датой 01.11.2026
|
||||
- **WHEN** формируется отчёт
|
||||
- **THEN** отчёт включает X и не включает Y
|
||||
|
||||
Плохо: «Система SHALL корректно обрабатывать дубли» — нет наблюдаемого критерия;
|
||||
«THEN итог правильный» — нет ожидаемого значения; один Requirement на импорт,
|
||||
отображение и экспорт сразу — раздели по поведению.
|
||||
Плохо: «корректно отбирать операции до конца месяца» — не определены месяц,
|
||||
границы, дата отбора и счёт; «THEN список корректен» — нет проверяемого исхода.
|
||||
Для таблиц решений и переходов используй эталоны из профиля.
|
||||
-->
|
||||
|
||||
Reference in New Issue
Block a user