docs(specs): archive session workflow changes
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
schema: wealth-ledger-sdd
|
||||
created: 2026-08-27
|
||||
@@ -0,0 +1,137 @@
|
||||
## Context
|
||||
|
||||
Workspace уже использует canonical OpenSpec graph и явные approval gates, но
|
||||
существующие entrypoints ориентированы на отдельные OpenSpec-операции и могут
|
||||
вести одну agent-задачу через несколько инженерных ролей. Нужен локальный слой
|
||||
инструкций, который задаёт границу одной роли на сессию, не изменяя lifecycle
|
||||
OpenSpec и не создавая второй источник требований.
|
||||
|
||||
## Goals / Non-Goals
|
||||
|
||||
**Goals:**
|
||||
|
||||
- Дать пользователю один устойчивый вход для начала или продолжения
|
||||
session-oriented SDD change.
|
||||
- Выделить пять ролей в самостоятельные, краткие и независимо применимые
|
||||
agent skills.
|
||||
- Передавать между задачами только навигационный state и immutable phase record;
|
||||
requirements, decisions и approvals остаются в canonical authority и
|
||||
conversation Change Owner.
|
||||
- Сохранить retry flow Implementation ↔ Validation и возврат к planning при
|
||||
SPEC_ISSUE.
|
||||
|
||||
**Non-Goals:**
|
||||
|
||||
- Не менять OpenSpec schema, lifecycle, approvals, archive rules или repository
|
||||
quality gates.
|
||||
- Не вводить executable workflow engine, новый CLI, фоновую orchestration либо
|
||||
автоматическое создание новых agent-сессий.
|
||||
- Не заменять существующие generic OpenSpec skills и не переносить их content.
|
||||
|
||||
## Decisions
|
||||
|
||||
### Локальный набор из шести skills
|
||||
|
||||
В `.agents/skills` размещаются `sdd-session`, `sdd-discovery`,
|
||||
`sdd-specification`, `sdd-implementation`, `sdd-validation` и
|
||||
`sdd-finalization`. Каждый содержит только роль-specific procedure, входы,
|
||||
выходы и границы полномочий. Их descriptions остаются discriminating, поэтому
|
||||
skill можно выбрать по прямому запросу роли или по запросу начать/продолжить
|
||||
session-oriented SDD, не захватывая обычную OpenSpec-работу.
|
||||
|
||||
`sdd-session` — тонкий router. Он восстанавливает state, выбирает ровно одну
|
||||
разрешённую роль и передаёт выполнение соответствующему phase contract. Phase
|
||||
skills проверяют, что запрошенная роль совпадает с текущим состоянием, поэтому
|
||||
прямой вызов не может обойти переход workflow.
|
||||
|
||||
### Общий protocol и non-authority session state
|
||||
|
||||
Общие инварианты state, phase records, transition table и bootstrap prompt
|
||||
живут в одном shared protocol рядом с локальными skills. Это единственное место
|
||||
для их формы; phase skills ссылаются на него, а не копируют protocol.
|
||||
|
||||
Для каждого change создаётся local non-authority session directory под
|
||||
`.agents/sdd/changes/<change>`. В нём mutable state pointer хранит только change
|
||||
identity, текущую/следующую роль, ссылку на current record и iteration counters.
|
||||
Каждая завершённая роль добавляет новый immutable phase record; предыдущие
|
||||
records не переписываются. Record содержит краткий outcome, changed areas,
|
||||
checks, findings или blockers и один next outcome. Он не содержит нормативных
|
||||
требований, design/tasks либо approval markers.
|
||||
|
||||
Это состояние не является versioned planning artifact и не требуется для
|
||||
доказательства approval: при его отсутствии или расхождении с OpenSpec skill
|
||||
останавливается и запрашивает недостающий owner decision либо recovery
|
||||
direction. После Specification requirements читаются из approved OpenSpec
|
||||
artifacts; старые phase records читаются только для расследования.
|
||||
|
||||
### Границы ролей и переходы
|
||||
|
||||
Каждая роль завершает session только после записи собственного phase record,
|
||||
обновления state pointer и выдачи короткого bootstrap prompt для новой задачи.
|
||||
Discovery направляет к Specification только при достаточной определённости.
|
||||
Specification остаётся адаптером к canonical OpenSpec: она создаёт лишь текущий
|
||||
разрешённый artifact и останавливается для approval. Implementation выполняет
|
||||
утверждённые Tasks, а при gap возвращает процесс к нужной planning boundary.
|
||||
Validation — read-only относительно implementation/specification, выдаёт PASS,
|
||||
FAIL или SPEC_ISSUE. Finalization допускается только после PASS и возвращает
|
||||
blocker к ответственной роли вместо исправления.
|
||||
|
||||
### Явная граница между задачами
|
||||
|
||||
Skills не пытаются очистить контекст текущей agent-сессии технически. Вместо
|
||||
этого они завершают работу после одной роли и выводят bootstrap prompt для новой
|
||||
изолированной задачи. Bootstrap содержит identity change и вход `sdd-session`,
|
||||
но не сериализует историю или содержание specification.
|
||||
|
||||
## Delivery Map
|
||||
|
||||
| Area | Status | Architectural outcome or N/A reason |
|
||||
| --- | --- | --- |
|
||||
| frontend | `N/A` | Не меняются пользовательское поведение, frontend agent routing, API snapshot или canonical frontend gate. |
|
||||
| backend | `N/A` | Не меняются backend behavior, данные, API contract, backend agent routing или canonical backend gate. |
|
||||
| specs | `affected` | Новый capability фиксирует наблюдаемые границы session-oriented SDD workflow в canonical OpenSpec store. |
|
||||
| docs | `N/A` | Пользователь запросил local agent skills; durable engineering policy и as-built product documentation не меняются и не должны дублировать новый planning capability. |
|
||||
|
||||
### Contract Gate Decision
|
||||
|
||||
| Gate | Status | Reason |
|
||||
| --- | --- | --- |
|
||||
| runtime-openapi | `N/A` | Не меняются ни frontend-, ни backend-сторона публичного API contract. |
|
||||
|
||||
## Solution Assessment
|
||||
|
||||
| Option | Fit and maturity | Security / operating cost | Constraints / migration cost | Decision |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Local Markdown skills with one shared protocol | Соответствует пользовательскому пути `.agents/skills`, существующему skill format и требуемой роли instructions | Не добавляет runtime, credentials, data path или service | Требует вручную начать новую задачу по bootstrap prompt | Выбрано |
|
||||
| Existing generic `.opencode/skills` | Зрелые entrypoints для individual OpenSpec operations | Не создаёт новых costs | Их fluid workflow не даёт одной роли на сессию и не хранит required session transitions | Не выбрано |
|
||||
| Custom workflow CLI or orchestration service | Мог бы автоматизировать state transitions | Добавляет shared tooling, maintenance и риск ошибочных side effects | Противоречит first-iteration scope без подтверждённой повторяемой потребности | Отложено |
|
||||
|
||||
## Risks / Trade-offs
|
||||
|
||||
- Локальный state может устареть или отсутствовать. Router сверяет его с
|
||||
canonical change и не выводит approval из файла; при конфликте требуется
|
||||
recovery direction от Change Owner.
|
||||
- Человеку нужно открыть новую задачу после bootstrap prompt. Это осознанная
|
||||
цена за изоляцию context и независимую Validation.
|
||||
- Шесть skills увеличивают discovery surface. Короткие descriptions и единый
|
||||
`sdd-session` entrypoint ограничивают этот cognitive load.
|
||||
|
||||
## Migration Plan
|
||||
|
||||
1. Добавить shared session protocol и шесть local skills с исходными
|
||||
phase contracts.
|
||||
2. Проверить каждый skill на корректный frontmatter, ссылки на protocol и
|
||||
отсутствие duplicated planning authority.
|
||||
3. Использовать router на новом change; дальнейшую автоматизацию рассматривать
|
||||
только после повторяемого наблюдаемого затруднения.
|
||||
|
||||
### Rollback Contract
|
||||
|
||||
| Field | Decision |
|
||||
| --- | --- |
|
||||
| Status | `N/A` |
|
||||
| Reason | Изменение добавляет обратимые локальные instructions и non-authority session records, не меняя auth, данные, migration или public contract. |
|
||||
| Trigger | N/A |
|
||||
| Actions | N/A |
|
||||
| Data safety | N/A — workflow не создаёт и не изменяет пользовательские или runtime data. |
|
||||
| Verification | N/A |
|
||||
@@ -0,0 +1,48 @@
|
||||
## Why
|
||||
|
||||
AI-assisted работа над одним change сейчас может смешивать discovery,
|
||||
спецификацию, реализацию, проверку и завершение в одной задаче. Из-за этого
|
||||
контекст растёт без явной границы, проверка получает reasoning реализации и
|
||||
сложнее независимо оценить результат. Нужен повторяемый способ начинать и
|
||||
продолжать SDD-работу отдельными сессиями, не меняя OpenSpec как источник
|
||||
истины.
|
||||
|
||||
## What Changes
|
||||
|
||||
Ввести session-oriented SDD workflow для агентов: каждая сессия выполняет только
|
||||
одну из ролей Discovery, Specification, Implementation, Validation или
|
||||
Finalization, передаёт следующей сессии минимальное явное состояние и
|
||||
останавливается на границе фазы. Пользователь сможет начать или продолжить
|
||||
change без ручного восстановления всей истории; следующая фаза будет
|
||||
определяться сохранённым состоянием.
|
||||
|
||||
Workflow сохраняет OpenSpec единственным источником требований, delta specs,
|
||||
design и tasks. История выполнения и краткие handoff-данные не дублируют
|
||||
спецификацию и не загружаются в новую сессию без необходимости. Validation
|
||||
остается независимой от Implementation и не исправляет реализацию.
|
||||
|
||||
Non-goals:
|
||||
- Не изменяются существующий OpenSpec artifact graph, approval gates, canonical
|
||||
store или archive blockers.
|
||||
- Не вводятся автоматическое выполнение нескольких фаз, собственный workflow
|
||||
CLI, автоматические метрики либо отдельные domain-specific workflows.
|
||||
- Не меняется продуктовое поведение frontend, backend или публичный API.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
- `agent-sdd-session-workflow`: агентский workflow, который изолирует SDD-фазы,
|
||||
передаёт минимальное состояние между сессиями и сохраняет OpenSpec
|
||||
единственным источником спецификации.
|
||||
|
||||
### Modified Capabilities
|
||||
- _none_
|
||||
|
||||
## Impact
|
||||
|
||||
- Разработчики, которые запускают SDD-задачи с AI-агентами: явные границы роли
|
||||
и повторяемое продолжение change.
|
||||
- Процесс Engineering/SDD: независимая validation, минимальная загрузка
|
||||
контекста и сохраняемая история переходов фаз.
|
||||
- Workspace agent entrypoints и canonical OpenSpec specs: появляется новый
|
||||
процессный capability без изменений приложений или API.
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
## Purpose
|
||||
|
||||
Определяет воспроизводимый session-oriented workflow для AI-assisted SDD,
|
||||
сохраняющий OpenSpec единственным источником спецификации и границы независимых
|
||||
инженерных ролей.
|
||||
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Каждая agent-сессия имеет одну SDD-роль
|
||||
|
||||
Session-oriented SDD workflow SHALL направлять каждую новую agent-сессию ровно
|
||||
в одну роль: Discovery, Specification, Implementation, Validation или
|
||||
Finalization. Сессия MUST завершаться после результата своей роли и MUST NOT
|
||||
самостоятельно выполнять следующую роль. Когда роль Specification готовит
|
||||
planning artifact, она MUST соблюдать canonical OpenSpec artifact graph и
|
||||
explicit approval boundary.
|
||||
|
||||
#### Scenario: Начинается новый change
|
||||
|
||||
- **WHEN** пользователь начинает SDD-workflow для нового change
|
||||
- **THEN** workflow направляет сессию только в Discovery и не начинает
|
||||
Specification, Implementation, Validation или Finalization в той же сессии
|
||||
|
||||
#### Scenario: Завершилась реализация
|
||||
|
||||
- **WHEN** Implementation завершает разрешённый scope работы
|
||||
- **THEN** workflow фиксирует результат Implementation как вход для следующей
|
||||
сессии, направляет продолжение в Validation и не выполняет Validation в
|
||||
завершившейся Implementation-сессии
|
||||
|
||||
#### Scenario: Specification подготавливает planning artifact
|
||||
|
||||
- **WHEN** Specification готовит следующий OpenSpec planning artifact
|
||||
- **THEN** workflow создаёт только artifact, разрешённый текущей approval
|
||||
boundary, и останавливается до явного решения Change Owner
|
||||
|
||||
### Requirement: Продолжение workflow восстанавливает только нужный контекст
|
||||
|
||||
Workflow SHALL определять следующую роль из сохранённого состояния change и
|
||||
минимального handoff предыдущей роли. Он MUST загружать phase-specific canonical
|
||||
authority, а не полную историю предыдущих сессий или все прежние handoff-данные.
|
||||
После появления OpenSpec change его approved artifacts MUST быть источником
|
||||
требований для последующих ролей; handoff MAY передавать только навигационные
|
||||
факты, результаты и нерешённые блокеры.
|
||||
|
||||
#### Scenario: Пользователь продолжает change после другой сессии
|
||||
|
||||
- **WHEN** пользователь запрашивает продолжение известного change
|
||||
- **THEN** workflow определяет следующую разрешённую роль из сохранённого
|
||||
состояния и загружает текущий handoff и применимую canonical authority этой
|
||||
роли
|
||||
|
||||
#### Scenario: Есть история нескольких попыток
|
||||
|
||||
- **WHEN** change содержит предыдущие handoff-данные или результаты ранних
|
||||
попыток
|
||||
- **THEN** workflow не загружает их по умолчанию и обращается к ним только при
|
||||
необходимости расследовать проблему текущей роли
|
||||
|
||||
### Requirement: Handoff не заменяет canonical OpenSpec authority
|
||||
|
||||
Workflow handoff SHALL сохранять только состояние перехода между ролями,
|
||||
краткий результат, известные блокеры и один следующий допустимый outcome. Handoff
|
||||
MUST NOT становиться альтернативным хранилищем Requirements, Delta Specs,
|
||||
Design, Tasks, acceptance scenarios или approval decisions.
|
||||
|
||||
#### Scenario: Specification уже завершена
|
||||
|
||||
- **WHEN** следующая роль получает handoff после Specification
|
||||
- **THEN** она использует OpenSpec artifacts для требований и технических
|
||||
решений, а handoff использует только для маршрутизации и известных ограничений
|
||||
|
||||
#### Scenario: Требование нужно изменить во время реализации
|
||||
|
||||
- **WHEN** Implementation обнаруживает, что requirement или архитектурное
|
||||
решение неполно либо противоречиво
|
||||
- **THEN** workflow возвращает работу к соответствующей canonical planning
|
||||
boundary и не изменяет требование только в handoff или реализации
|
||||
|
||||
### Requirement: Validation остаётся независимой и без побочных исправлений
|
||||
|
||||
Validation SHALL независимо сопоставлять canonical OpenSpec artifacts с
|
||||
состоянием репозитория, релевантными проверками и наблюдаемым поведением. Она
|
||||
MUST NOT изменять production implementation или спецификацию. Validation MUST
|
||||
возвращать PASS, FAIL либо SPEC_ISSUE и направлять следующую сессию к
|
||||
Finalization, Implementation либо соответствующей planning boundary.
|
||||
|
||||
#### Scenario: Реализация соответствует утверждённому change
|
||||
|
||||
- **WHEN** Validation подтверждает requirements, relevant checks и границы
|
||||
scope без blocking findings
|
||||
- **THEN** она возвращает PASS и разрешает следующую сессию Finalization
|
||||
|
||||
#### Scenario: Найдена проблема реализации
|
||||
|
||||
- **WHEN** Validation находит несоответствие реализации утверждённому OpenSpec
|
||||
- **THEN** она возвращает FAIL с наблюдаемым finding и направляет следующую
|
||||
сессию к Implementation без самостоятельного исправления
|
||||
|
||||
#### Scenario: Найдена проблема спецификации
|
||||
|
||||
- **WHEN** Validation находит противоречие или пробел в canonical planning
|
||||
artifacts
|
||||
- **THEN** она возвращает SPEC_ISSUE и направляет работу к самой ранней
|
||||
затронутой planning boundary без переписывания specification под реализацию
|
||||
|
||||
### Requirement: Finalization требует успешной независимой Validation
|
||||
|
||||
Workflow SHALL разрешать Finalization только после последней независимой
|
||||
Validation с результатом PASS. Если Finalization обнаруживает failure обязательной
|
||||
проверки или проблему корректности, она MUST сообщить блокировку и направить
|
||||
работу к ответственной предыдущей роли, не исправляя реализацию самостоятельно.
|
||||
|
||||
#### Scenario: Последняя Validation прошла
|
||||
|
||||
- **WHEN** Finalization получает change после последнего PASS Validation
|
||||
- **THEN** она выполняет только допустимые действия завершения canonical
|
||||
lifecycle и фиксирует результат завершения
|
||||
|
||||
#### Scenario: В Finalization обнаружена проблема
|
||||
|
||||
- **WHEN** Finalization обнаруживает failed check или проблему корректности
|
||||
- **THEN** она возвращает блокировку с наблюдаемой причиной и не закрывает
|
||||
lifecycle change до работы ответственной роли
|
||||
@@ -0,0 +1,23 @@
|
||||
## 1. Session workflow entrypoints
|
||||
|
||||
- [x] 1.1 [specs] Добавить shared session protocol рядом с local skills: форму non-authority state pointer, immutable phase record, допустимые transitions, recovery при расхождении с OpenSpec и короткий bootstrap prompt.
|
||||
- **Covers:** `agent-sdd-session-workflow` — `Продолжение workflow восстанавливает только нужный контекст`; `agent-sdd-session-workflow` — `Handoff не заменяет canonical OpenSpec authority`
|
||||
- **Verification:** Прочитать protocol против обеих Requirements и подтвердить, что он не хранит Requirements, Delta Specs, Design, Tasks или approval markers.
|
||||
|
||||
- [x] 1.2 [specs] Добавить `sdd-session`, `sdd-discovery` и `sdd-specification` с discriminating descriptions, phase guard и остановкой после собственного outcome.
|
||||
- **Covers:** `agent-sdd-session-workflow` — `Каждая agent-сессия имеет одну SDD-роль`; `agent-sdd-session-workflow` — `Продолжение workflow восстанавливает только нужный контекст`
|
||||
- **Verification:** Проверить router и planning-phase contracts против сценариев нового change, продолжения известного change и подготовки одного разрешённого OpenSpec artifact.
|
||||
|
||||
- [x] 1.3 [specs] Добавить `sdd-implementation`, `sdd-validation` и `sdd-finalization` с feedback routing, read-only validation и PASS-only входом в finalization.
|
||||
- **Covers:** `agent-sdd-session-workflow` — `Каждая agent-сессия имеет одну SDD-роль`; `agent-sdd-session-workflow` — `Validation остаётся независимой и без побочных исправлений`; `agent-sdd-session-workflow` — `Finalization требует успешной независимой Validation`
|
||||
- **Verification:** Проверить phase contracts для SPEC_ISSUE, FAIL, PASS и FINALIZATION_BLOCKED; убедиться, что ни Validation, ни Finalization не исправляют implementation/specification.
|
||||
|
||||
## 2. Specs delivery and workflow proof
|
||||
|
||||
- [x] 2.1 [specs] Выполнить structural validation canonical change и всех шести local skills после их создания.
|
||||
- **Covers:** `N/A` — задача подтверждает delivery уже покрытых workflow Requirements и не добавляет самостоятельное observable behavior.
|
||||
- **Verification:** Запустить `openspec validate add-session-oriented-sdd-skills --type change --strict --store wealth-ledger-specs`, `/Users/ksv741/.codex/skills/.system/skill-creator/scripts/quick_validate.py` для каждого skill directory и `git diff --check` в `specs`.
|
||||
|
||||
- [x] 2.2 [workspace] Провести semantic walkthrough start → Discovery → Specification → Implementation → Validation → Finalization и независимый read-only review перед terminal lifecycle change.
|
||||
- **Covers:** `N/A` — workspace task проверяет взаимодействие local entrypoints и canonical authority, не реализуя отдельный spec-level behavior.
|
||||
- **Verification:** Сопоставить каждый Delta Requirement и Scenario с protocol/skills, подтвердить отсутствие Critical или Important findings в independent review и сохранить только observed evidence.
|
||||
Reference in New Issue
Block a user