refactor: make sdd-lab review-driven (WealthLedger/specs#66)
Specs security / security (push) Successful in 8s
Specs verify / verify (push) Successful in 10s

Replace executable schema checks with explicit review-driven readiness, add a requirement-writing profile, and incorporate review clarifications for source traceability and comparative validation.
This commit was merged in pull request #68.
This commit is contained in:
2026-10-30 13:35:39 +03:00
parent a2d2df3b5a
commit b9ec11f5ba
19 changed files with 982 additions and 851 deletions
@@ -1,18 +1,48 @@
<!--
Choose only the sections this delta needs; delete this guide before approval.
Перед заполнением прочитай единый профиль:
openspec/schemas/wealth-ledger-sdd-lab/spec-writing.md.
Оставь только нужные этой дельте разделы; подсказки и образец не входят в результат.
Файл — specs/<capability-path>/spec.md с точным путём из Proposal.
New capability only: add `## Purpose` with 1–2 sentences (50+ characters).
Existing capability: do not add Purpose.
Только новая capability: `## Purpose` в 1–2 предложения (от 50 символов).
Существующая capability: Purpose не добавляй.
Supported operations:
- `## ADDED Requirements`: new complete Requirement blocks.
- `## MODIFIED Requirements`: full existing Requirement blocks with every
surviving Scenario, then edited behavior; heading matches exactly.
- `## REMOVED Requirements`: Requirement heading plus **Reason** and **Migration**.
- `## RENAMED Requirements`: `FROM:` and `TO:` heading pairs only.
Операции:
- `## ADDED Requirements` — новые полные блоки Requirement.
- `## MODIFIED Requirements` — полный существующий блок со всеми сохраняемыми
Scenario, затем изменённое поведение; heading совпадает точно.
- `## REMOVED Requirements` — heading Requirement плюс **Reason** и **Migration**.
- `## RENAMED Requirements` — только пары `FROM:` и `TO:`.
Every normative Requirement uses BCP 14 (RFC 2119 + RFC 8174) uppercase
SHALL/MUST deliberately, and at least one `#### Scenario:` with `- **WHEN**`
and `- **THEN**`. Lowercase must/should/may are ordinary language.
Do not leave empty operation sections or a sample Requirement.
Каркас ADDED/MODIFIED: устойчивое имя → субъект SHALL <наблюдаемый результат>
с явным условием, если оно нужно → определения/таблица → Scenarios.
SHALL NOT — запрет; существующие MUST/MUST NOT равнозначны. Один Requirement —
одно независимо принимаемое обязательство, не подсчёт предложений или SHALL.
Сценарий: GIVEN — существенное исходное состояние, WHEN — событие,
THEN — конкретный наблюдаемый исход. Минимум один Scenario; границы/отказы/повторы
добавляй по смыслу. Новое правило в одном лишь сценарии недопустимо.
AND дополняет предыдущий тип шага GIVEN/WHEN/THEN.
Термины определены, величины имеют единицы и границы. Неизвестное — вопрос в
Open Decisions с владельцем и зависимым требованием, не придуманный ответ.
Для спорного/выведенного Requirement укажи источник перед первым Scenario по профилю.
Пример формата (подставь реальное согласованное решение):
**Источник (ненормативно):** [решение владельца](<URL-комментария-Issue>), пункт «Границы периода».
Ссылка остаётся пригодной после archive; норму полностью сформулируй в Requirement.
Учебный образец формы, не продуктовая политика:
## ADDED Requirements
### Requirement: Отбор операций за календарный период
При формировании отчёта система SHALL включать все и только операции выбранного
счёта, дата учёта которых входит в выбранный период включительно по Europe/Moscow.
#### Scenario: Последний день периода и следующий день
- **GIVEN** выбран период 01.10.2026–31.10.2026 и счёт A
- **AND** на счёте A есть операции X с датой учёта 31.10.2026 и Y с датой 01.11.2026
- **WHEN** формируется отчёт
- **THEN** отчёт включает X и не включает Y
Плохо: «корректно отбирать операции до конца месяца» — не определены месяц,
границы, дата отбора и счёт; «THEN список корректен» — нет проверяемого исхода.
Для таблиц решений и переходов используй эталоны из профиля.
-->