@spec-box/sdd 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/assets/help/log.md +12 -0
- package/assets/help/packet.md +19 -0
- package/assets/help/result.md +28 -0
- package/assets/hosts/claude/agent.md +3 -1
- package/assets/hosts/codex/agent.md +1 -2
- package/assets/roles/implementer.md +9 -20
- package/assets/roles/planner.md +16 -32
- package/assets/roles/researcher.md +14 -30
- package/assets/roles/reviewer.md +4 -9
- package/assets/roles/tester.md +11 -19
- package/assets/roles/verifier.md +14 -20
- package/assets/skills/sbox-browser.md +4 -0
- package/assets/skills/sbox-contract.md +4 -0
- package/assets/skills/sbox-wiki.md +3 -0
- package/dist/adapters/host/claude/index.js +6 -8
- package/dist/adapters/host/claude/index.js.map +1 -1
- package/dist/adapters/host/codex/index.js +3 -8
- package/dist/adapters/host/codex/index.js.map +1 -1
- package/dist/adapters/host/index.js +2 -2
- package/dist/adapters/host/index.js.map +1 -1
- package/dist/browser/cli.js +2 -0
- package/dist/browser/cli.js.map +1 -1
- package/dist/cli/commands/protocol.js +2 -2
- package/dist/cli/commands/protocol.js.map +1 -1
- package/dist/cli/help-command.js +29 -0
- package/dist/cli/help-command.js.map +1 -0
- package/dist/cli/main.js +3 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/contract/cli.js +2 -0
- package/dist/contract/cli.js.map +1 -1
- package/dist/core/help.js +65 -0
- package/dist/core/help.js.map +1 -0
- package/dist/core/packet.js +38 -23
- package/dist/core/packet.js.map +1 -1
- package/dist/core/run.js +2 -2
- package/dist/core/run.js.map +1 -1
- package/dist/core/skills.js +5 -4
- package/dist/core/skills.js.map +1 -1
- package/dist/wiki/cli.js +2 -0
- package/dist/wiki/cli.js.map +1 -1
- package/docs/design.md +6 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,6 +24,7 @@ cd <репозиторий продукта> # spec-box (.tms.json) или O
|
|
|
24
24
|
sbox init --host claude # .sbox/config.yaml, шаблоны .sbox/project/*.md, .gitignore, скиллы и агенты Claude Code
|
|
25
25
|
# заполнить .sbox/project/*.md
|
|
26
26
|
sbox doctor # структурная проверка документации, спецификаций и сред запуска
|
|
27
|
+
sbox help # справка для агентов и людей: указатель тем и руководства инструментов (sbox-contract help, sbox-wiki help, sbox-browser help)
|
|
27
28
|
sbox change new add-search --title "Поиск по каталогу" --request "Добавить поле поиска на главную"
|
|
28
29
|
sbox next --change add-search # пакет для первой роли (researcher)
|
|
29
30
|
```
|
|
@@ -39,14 +40,15 @@ src/core/ доменная модель, конфиг, состояние
|
|
|
39
40
|
src/adapters/ spec/spec-box, spec/openspec — истина и дельты в двух форматах; runner/claude, runner/codex — среды агентов;
|
|
40
41
|
repo/github, repo/local — хостинг репозитория; host/skills — раскладки скиллов по хостам, host/claude — агенты Claude Code
|
|
41
42
|
src/cli/ команды commander: init, doctor, host, change, next, report, approve, reject,
|
|
42
|
-
status, instructions, validate, archive, log
|
|
43
|
+
status, instructions, validate, archive, log, help
|
|
43
44
|
src/contract/ sbox-contract: модель поведения, конфигурация, поиск, дельты и применение
|
|
44
45
|
src/wiki/ sbox-wiki: индекс и кеш Markdown, поиск, страницы, ссылки и валидация
|
|
45
46
|
src/browser/ sbox-browser: демон с Chrome на сессию, клиент через локальный сокет, команды страницы,
|
|
46
47
|
снимок дерева доступности со ссылками, поиск и установка браузера, вход человеком, перенос состояния
|
|
47
48
|
assets/roles/ определения ролей (Markdown): researcher, planner, tester, implementer, reviewer, verifier…
|
|
48
49
|
assets/schema/ граф артефактов по умолчанию и инструкции к ним
|
|
49
|
-
assets/skills/ скиллы хостов (единый источник): sbox-run, sbox-approve, sbox-browser; копируются в папку хоста
|
|
50
|
+
assets/skills/ скиллы хостов (единый источник): sbox-run, sbox-approve, sbox-browser, sbox-contract, sbox-wiki; копируются в папку хоста
|
|
51
|
+
при init и host install, роли видят их в указателе tools пакета и читают через help
|
|
50
52
|
assets/templates/ шаблоны артефактов изменения
|
|
51
53
|
assets/project/ шаблоны категорий проектной документации
|
|
52
54
|
assets/ci/ шаблоны GitHub Actions и Dockerfile
|
|
@@ -133,7 +135,7 @@ sbox-browser state save auth.json # перенести вх
|
|
|
133
135
|
sbox-browser stop
|
|
134
136
|
```
|
|
135
137
|
|
|
136
|
-
Существующий браузер вместо установки: флаг `--executable`, переменная `SBOX_BROWSER_EXECUTABLE` или `browser.executable` в `.sbox/config.yaml`; без них по порядку проверяются кэш инструмента, кэш puppeteer, системный Chrome, Chromium, Edge и Brave. Сессия это фоновый процесс с браузером: команды идут к нему через локальный сокет, поэтому страница, куки, консоль и сетевые ошибки сохраняются между вызовами; `--session <имя>` даёт несколько независимых браузеров, простой 30 минут завершает сессию. Настройки в секции `browser` конфига: `executable`, `headless`, `profile`, `baseUrl`, `cacheDir`, `viewport`, `timeoutMs`, `idleMinutes`; те же значения задаются переменными `SBOX_BROWSER_EXECUTABLE`, `SBOX_BROWSER_HEADLESS`, `SBOX_BROWSER_PROFILE`, `SBOX_BROWSER_BASE_URL`, `SBOX_BROWSER_CACHE_DIR` (каталог инструмента: `SBOX_BROWSER_HOME`) и глобальными флагами `--profile`, `--session`, `--timeout`, `--cwd`. Все команды поддерживают `--json`, ошибки разбора аргументов тоже приходят в JSON-конверте. Профили и файлы состояния содержат секреты входа и живут в `~/.sbox/browser`, вне репозитория. Скилл `sbox-browser` лежит в `assets/skills` и копируется в папку хоста командой `sbox host install --target claude | codex`;
|
|
138
|
+
Существующий браузер вместо установки: флаг `--executable`, переменная `SBOX_BROWSER_EXECUTABLE` или `browser.executable` в `.sbox/config.yaml`; без них по порядку проверяются кэш инструмента, кэш puppeteer, системный Chrome, Chromium, Edge и Brave. Сессия это фоновый процесс с браузером: команды идут к нему через локальный сокет, поэтому страница, куки, консоль и сетевые ошибки сохраняются между вызовами; `--session <имя>` даёт несколько независимых браузеров, простой 30 минут завершает сессию. Настройки в секции `browser` конфига: `executable`, `headless`, `profile`, `baseUrl`, `cacheDir`, `viewport`, `timeoutMs`, `idleMinutes`; те же значения задаются переменными `SBOX_BROWSER_EXECUTABLE`, `SBOX_BROWSER_HEADLESS`, `SBOX_BROWSER_PROFILE`, `SBOX_BROWSER_BASE_URL`, `SBOX_BROWSER_CACHE_DIR` (каталог инструмента: `SBOX_BROWSER_HOME`) и глобальными флагами `--profile`, `--session`, `--timeout`, `--cwd`. Все команды поддерживают `--json`, ошибки разбора аргументов тоже приходят в JSON-конверте. Профили и файлы состояния содержат секреты входа и живут в `~/.sbox/browser`, вне репозитория. Скилл `sbox-browser` лежит в `assets/skills` и копируется в папку хоста командой `sbox host install --target claude | codex`; ролям researcher, tester и verifier он показывается в указателе `tools` пакета по `metadata.roles`, а руководство агент читает командой `sbox-browser help`, когда браузер понадобился.
|
|
137
139
|
|
|
138
140
|
## Контракт поведения продукта
|
|
139
141
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Журнал изменения log.md — теги, приоритет записей и команда sbox log add
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Журнал изменения
|
|
6
|
+
|
|
7
|
+
Файл `log.md` в папке изменения хранит однострочные записи `- [TAG] дата автор: текст`. Теги: `[CODE]` проверенный факт о коде, `[RULE]` принятое правило, `[TASK]` событие, `[HUMAN]` предпочтение человека.
|
|
8
|
+
|
|
9
|
+
- Добавить: `sbox log add --change <id> --tag CODE "<факт с путём>"`. Одна строка до 300 знаков; автор по умолчанию роль и номер выданного пакета.
|
|
10
|
+
- Прочитать: файл из `files.log` пакета или `sbox log show --change <id> [--tag CODE] --json`.
|
|
11
|
+
|
|
12
|
+
Приоритет: запись `[CODE]` сильнее факта из evidence или раннего артефакта, если она появилась позже. Опровергнутый факт фиксируй записью, evidence не правь. Противоречие утверждённому артефакту (proposal после гейта, дельты, design) это блокер категории «артефакт», а не запись. После мержа записи `[CODE]` и `[RULE]` переносит в wiki роль distiller; `[TASK]` и `[HUMAN]` остаются в изменении.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Пакет роли packet.json — что означают его поля и в каком порядке их читать
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Пакет роли
|
|
6
|
+
|
|
7
|
+
Пакет это данные для одного запуска роли; путь к нему приходит в сообщении `packet: <путь>`. Пути внутри относительно корня репозитория. Текста роли в файле нет: он уже в системном промпте агента.
|
|
8
|
+
|
|
9
|
+
Читай в таком порядке:
|
|
10
|
+
|
|
11
|
+
1. `objective`, `feedback` — цель запуска и, при повторном запуске, замечание человека с гейта или блокер предыдущей роли.
|
|
12
|
+
2. `ownership`, `authority`, `constraints`, `rules` — что можно писать (`readOnly: true` запрещает любые изменения файлов), ограничения запуска, правила проекта (ADR) с путями.
|
|
13
|
+
3. `files` — запрос (`request`), журнал (`log`), артефакты по видам, evidence, документация проекта по категориям, страницы wiki с `read_when`, файлы истины спецификаций.
|
|
14
|
+
4. `instructions` — инструкции к артефактам этой фазы: шаблон, требования, путь записи `resolvedOutputPath`; `specAdapterInstructions` — формат дельт спецификаций.
|
|
15
|
+
5. `changeset`, `verificationReport`, `wiring` — запечатанный диф, отчёт верификатора и кандидаты подключения нового модуля (фазы verify и review).
|
|
16
|
+
6. `resultFile`, `resultFormat`, `stop` — куда писать ответ, как его завершать (`sbox help result`), когда остановиться.
|
|
17
|
+
7. `tools` — инструменты, доступные роли: `when` говорит, когда инструмент нужен, `help` даёт команду руководства (`sbox help <тема>`, `sbox-contract help`, `sbox-wiki help`, `sbox-browser help`), `commands` перечисляет самые частые вызовы дословно; остальные команды читай в руководстве, когда инструмент понадобился.
|
|
18
|
+
|
|
19
|
+
`change`, `role`, `phase`, `runId`, `execution` описывают сам запуск; `execution` это запрошенные модель и усилие, а не доказательство фактического запуска.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Блок sbox-result в ответе роли — статусы, блокеры и поля по ролям
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Блок sbox-result
|
|
6
|
+
|
|
7
|
+
Ответ роли заканчивается YAML-блоком с первой строкой `# sbox-result`. CLI разбирает блок, остальной Markdown сохраняет как evidence или отчёт запуска. Ответ без блока считается неуспешным запуском.
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
# sbox-result
|
|
11
|
+
status: готово | утверждение | заблокировано
|
|
12
|
+
blocker: { category: артефакт | тесты | реализация | внешний | пользователь | нет, artifact: <id артефакта>, message: "" }
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
- `status: заблокировано` требует категорию блокера, отличную от «нет», и точное сообщение; категория «артефакт» требует `artifact` (specs, design, tasks…).
|
|
16
|
+
- `status: утверждение` возвращает только planner на фазе propose: изменение уходит на гейт proposal.
|
|
17
|
+
|
|
18
|
+
## Поля по ролям
|
|
19
|
+
|
|
20
|
+
- **researcher**: `request` — разбор запроса, по строке на явное утверждение: `{ quote: "дословная цитата", status: подтверждено | противоречит | не проверено, evidence: "путь и факт" }`. CLI сверяет цитаты с текстом запроса; без поля отчёт не принимается.
|
|
21
|
+
- **planner, фаза propose**: `size: small | normal | large`; `complexity: { implementation, review }` со значениями простая | обычная | высокая; `skip_specs: true`, если поведение не меняется; `deviations: [{ subject: запрос | evidence, text, decision, reason }]` — отступления proposal от запроса или evidence, обязательны при противоречиях исследователя.
|
|
22
|
+
- **planner, фаза plan**: `questions: [{ id: Q1, priority: P0 | P1 | P2, text }]`; вопрос P0 останавливает изменение до ответа человека.
|
|
23
|
+
- **tester**: `protected` — глобы созданных и изменённых тестовых файлов, они становятся защищёнными от реализатора; `verified` — выполненные проверки одной строкой каждая.
|
|
24
|
+
- **implementer**: `verified`.
|
|
25
|
+
- **verifier**: `checks: [{ id: V1, purpose, result: PASS | FAIL | PARTIAL | NOT_RUN, evidence }]`, `gaps: [{ id: G1, environment, oracle, risk }]`, `verified`. Хотя бы один FAIL означает статус «заблокировано».
|
|
26
|
+
- **reviewer**: `findings: [{ level: blocking | non-blocking, file, text }]`; в фазе review `dispositions: [{ item, disposition: satisfied | manual_gap_accepted | change_required | blocked, reason }]` по каждому не-PASS пункту и пробелу верификатора, а при статусе «готово» `delivery_narrative: { title, delta, why, preserved, rollout, rollback }` — единственный источник текста пул-реквеста.
|
|
27
|
+
|
|
28
|
+
Полный контракт и машина состояний: docs/design.md, раздел 5.
|
|
@@ -4,7 +4,7 @@ description: {{description}}
|
|
|
4
4
|
tools: {{tools}}
|
|
5
5
|
model: {{model}}
|
|
6
6
|
effort: {{effort}}
|
|
7
|
-
|
|
7
|
+
---
|
|
8
8
|
|
|
9
9
|
Ты выполняешь роль {{role}} инструмента @spec-box/sdd. Во входном сообщении путь к JSON-пакету (`packet`). Прочитай пакет целиком: там цель, допущенные файлы, ограничения, правила проекта, инструкции к артефактам и путь `resultFile`.
|
|
10
10
|
|
|
@@ -12,4 +12,6 @@ effort: {{effort}}
|
|
|
12
12
|
|
|
13
13
|
Команду `sbox report` не вызывай: отчёт сдаёт оркестратор или раннер после твоего сообщения.
|
|
14
14
|
|
|
15
|
+
У каждого инструмента sbox есть справка для агентов: `sbox help [тема]`, `sbox-contract help`, `sbox-wiki help`, `sbox-browser help`. Читай её, когда инструмент понадобился, а не заранее.
|
|
16
|
+
|
|
15
17
|
{{body}}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
Ты выполняешь роль {{role}} инструмента @spec-box/sdd. Во входном сообщении путь к JSON-пакету (`packet`). Прочитай его целиком и выполняй задачу только в пределах ownership. Не запускай оркестрацию sbox-run, других агентов или sbox report: отчёт принимает родительский оркестратор.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
{{skills}}
|
|
3
|
+
У каждого инструмента sbox есть справка для агентов: `sbox help [тема]`, `sbox-contract help`, `sbox-wiki help`, `sbox-browser help`. Читай её, когда инструмент понадобился, а не заранее.
|
|
5
4
|
|
|
6
5
|
{{body}}
|
|
7
6
|
|
|
@@ -6,29 +6,18 @@ description: "Реализатор @spec-box/sdd: выполняет tasks.md,
|
|
|
6
6
|
|
|
7
7
|
## Правила
|
|
8
8
|
|
|
9
|
-
- Реализуй утверждённый план:
|
|
10
|
-
- Тесты, утверждённые на фазе cover, защищены: их
|
|
11
|
-
- Меняй только необходимый код, соблюдай `conventions.md` и правила проекта из
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
- Опровергнутый факт из evidence или раннего артефакта записывай в журнал: `sbox log add --change <id> --tag CODE "<факт с путём>"`; evidence не правь. Запись `[CODE]` сильнее evidence, если она позже; противоречие утверждённому артефакту это блокер категории «артефакт».
|
|
15
|
-
- Не вызывай других агентов. Отвечай только по шаблону «Содержимое resultFile».
|
|
16
|
-
|
|
17
|
-
## Вход
|
|
18
|
-
|
|
19
|
-
Пакет от CLI: артефакты изменения, `conventions.md`, `architecture.md`, `testing.md`, `workflow.md`, список защищённых файлов, правила проекта. При возврате — `feedback` с замечаниями ревьюера или верификатора.
|
|
9
|
+
- Реализуй утверждённый план: требования из дельт `specs/`, решения из `design.md`, шаги из `tasks.md`. Не проектируй заново, не выбирай новую архитектуру, не сужай и не откладывай задачи молча.
|
|
10
|
+
- Тесты, утверждённые на фазе cover, защищены: менять их запрещено, CLI отклонит отчёт. Неверный тест — блокер категории «тесты» с доказательством.
|
|
11
|
+
- Меняй только необходимый код, соблюдай `conventions.md` и правила проекта из пакета, не рефактори соседний код. Единственная правка артефактов — отметки `- [x]` в `tasks.md`.
|
|
12
|
+
- Опровергнутый факт из evidence или раннего артефакта записывай в журнал (`sbox log add`); evidence не правь. Агентов не вызывай.
|
|
13
|
+
- Отвечай только по шаблону «Содержимое resultFile».
|
|
20
14
|
|
|
21
15
|
## Этапы
|
|
22
16
|
|
|
23
|
-
1. Прочитай `tasks.md`, дельты, `design.md`, `coverage.yaml`,
|
|
24
|
-
2. Выполняй задачи по
|
|
25
|
-
3.
|
|
26
|
-
4.
|
|
27
|
-
5. Примени первую сработавшую ветку:
|
|
28
|
-
- задача невыполнима или расходится с планом → статус «заблокировано», категория «артефакт», artifact: tasks | design | specs;
|
|
29
|
-
- тест противоречит спецификации или дизайну → статус «заблокировано», категория «тесты», с указанием теста и утверждения;
|
|
30
|
-
- нужен доступ или внешняя система → категория «внешний»;
|
|
31
|
-
- всё выполнено и зелёное → статус «готово».
|
|
17
|
+
1. Прочитай `tasks.md`, дельты, `design.md`, `coverage.yaml`, журнал и feedback.
|
|
18
|
+
2. Выполняй задачи по порядку; после каждой запускай узкую проверку из `testing.md` и относящиеся к задаче тесты. Отмечай задачу только после реализации и прохождения проверки.
|
|
19
|
+
3. Когда все задачи отмечены, прогони тесты из `coverage.yaml` и проверки из `testing.md` (типы, линтеры): всё должно быть зелёным.
|
|
20
|
+
4. Первая сработавшая ветка: задача невыполнима или расходится с планом — «заблокировано», категория «артефакт», artifact tasks | design | specs; тест противоречит контракту или дизайну — категория «тесты» с тестом и утверждением; нужен доступ или внешняя система — категория «внешний»; всё выполнено и зелёное — «готово».
|
|
32
21
|
|
|
33
22
|
## Содержимое resultFile
|
|
34
23
|
|
package/assets/roles/planner.md
CHANGED
|
@@ -6,50 +6,34 @@ description: "Планировщик @spec-box/sdd: proposal, дельты сп
|
|
|
6
6
|
|
|
7
7
|
## Правила
|
|
8
8
|
|
|
9
|
-
- Проектируй решение и пиши артефакты
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
- Не пиши реализацию и тесты, не меняй истину
|
|
14
|
-
- Все развилки, которые нельзя решить без домыслов, выноси в раздел «Вопросы, требующие решения» с приоритетом P0, P1 или P2 и дублируй их в блоке sbox-result.
|
|
15
|
-
- Опровергнутый факт из evidence или раннего артефакта записывай в журнал: `sbox log add --change <id> --tag CODE "<факт с путём>"`; evidence не правь. Запись `[CODE]` сильнее evidence, если она позже; противоречие утверждённому артефакту это блокер категории «артефакт».
|
|
9
|
+
- Проектируй решение и пиши артефакты изменения: `proposal.md`, дельты `specs/`, `design.md`, `tasks.md`. Инструкции к артефактам фазы лежат в пакете (`instructions`: шаблон, требования, путь записи), формат дельты — в `specAdapterInstructions`; не выдумывай их.
|
|
10
|
+
- Цели и границы берутся из запроса; evidence даёт факты о коде и контракте, а не цели. Поведение определяй по контракту прежде кода, реализацию — по коду прежде документации.
|
|
11
|
+
- Отступить от запроса или от evidence можно только явно: раздел «Расхождения с запросом» в proposal с решением и причиной, продублированный в `deviations`. При статусе `противоречит` у исследователя без `deviations` отчёт отклоняется; расхождения человек видит на гейте.
|
|
12
|
+
- Развилки, которые нельзя решить без домыслов, выноси в «Вопросы, требующие решения» с приоритетом P0, P1 или P2 и дублируй в блоке; вопрос P0 останавливает планирование реализации.
|
|
13
|
+
- Не пиши реализацию и тесты, не меняй истину контракта, не архивируй изменение, не вызывай агентов. Опровергнутый факт из evidence записывай в журнал (`sbox log add`); evidence не правь.
|
|
16
14
|
- Отвечай только по шаблону «Содержимое resultFile».
|
|
17
15
|
|
|
18
|
-
## Вход
|
|
19
|
-
|
|
20
|
-
Пакет от CLI с полем `phase`: `propose` или `plan`. При возврате в пакете есть `feedback`: замечание человека с гейта или блокер от роли.
|
|
21
|
-
|
|
22
16
|
## Этапы
|
|
23
17
|
|
|
24
18
|
### Фаза propose
|
|
25
19
|
|
|
26
|
-
1. Прочитай
|
|
27
|
-
2.
|
|
28
|
-
3.
|
|
29
|
-
4.
|
|
30
|
-
5. Оцени размер (small: поведение не меняется; normal; large: несколько capability, контракты, миграции, безопасность) и сложность реализации и ревью (простая | обычная | высокая).
|
|
31
|
-
Для complexity оцени реализацию и ревью отдельно: «простая» — локальная правка по ясному образцу без новых контрактов; «обычная» — несколько связанных изменений с понятным решением; «высокая» — новые контракты, существенная неоднозначность, миграция или сложные инварианты. Размер изменения и сложность — разные характеристики. Учитывай также неопределённость и последствия ошибки: даже локальная правка с риском нарушения важных инвариантов требует высокой оценки. Подтверждай оценку конкретными рисками в proposal; при проработке плана и возвратах повышай complexity, если появились новые риски.
|
|
32
|
-
|
|
33
|
-
6. Верни статус «утверждение» с полями size, complexity, deviations и, если поведение не меняется, skip_specs: true.
|
|
20
|
+
1. Прочитай запрос, evidence, журнал и документацию из пакета.
|
|
21
|
+
2. Напиши proposal по инструкции из пакета: зачем, границы, функциональности, внешнее влияние, расхождения с запросом.
|
|
22
|
+
3. Оцени размер: small — поведение не меняется; normal; large — несколько capability, контракты, миграции, безопасность. Оцени сложность реализации и ревью отдельно: «простая» — локальная правка по ясному образцу без новых контрактов; «обычная» — несколько связанных изменений с понятным решением; «высокая» — новые контракты, существенная неоднозначность, миграция или сложные инварианты. Размер и сложность — разные характеристики; учитывай неопределённость и цену ошибки: локальная правка с риском для важных инвариантов это «высокая». Подтверждай оценку рисками в proposal и повышай её при возвратах, если появились новые риски.
|
|
23
|
+
4. Верни статус «утверждение» с size, complexity, deviations и, если поведение не меняется, skip_specs: true.
|
|
34
24
|
|
|
35
25
|
### Фаза plan
|
|
36
26
|
|
|
37
|
-
1. Прочитай
|
|
38
|
-
2.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
4. В `design.md` заполни раздел «Единообразие»: какой существующий модуль из Evidence Pack или wiki повторяется, в чём отступления и почему. Отступление от образца без причины считается ошибкой дизайна. Затем решения с идентификаторами D1, D2… и таблицу вопросов с приоритетами. Если есть вопрос P0, остановись после записи артефактов: реализацию по нему планировать нельзя.
|
|
44
|
-
5. Выполни `sbox validate --change <id> --json` и исправь ошибки.
|
|
45
|
-
6. Верни статус «готово». Если остались вопросы, перечисли их в `questions` блока sbox-result.
|
|
27
|
+
1. Прочитай proposal, evidence, журнал и feedback, если есть.
|
|
28
|
+
2. Напиши артефакты из `instructions` пакета в порядке зависимостей specs → design → tasks, читая файлы из `dependencies`; дельты — по файлу на capability.
|
|
29
|
+
3. До дизайна найди развилки, которые запрос и контракт не закрывают: порядок и форматы отображения, пустые данные и ошибки, лимиты, коды ошибок, идемпотентность, совместимость. Вынеси их в вопросы P1 с рекомендацией, чтобы они стали требованиями в дельтах, а не догадками реализатора; проектные чеклисты ищи в wiki.
|
|
30
|
+
4. В `design.md` заполни «Единообразие»: какой модуль из Evidence Pack или wiki повторяется, в чём отступления и почему; отступление без причины — ошибка дизайна. Затем решения D1, D2… и таблицу вопросов с приоритетами.
|
|
31
|
+
5. Проверь изменение валидацией (`sbox validate`) и исправь ошибки.
|
|
32
|
+
6. Верни статус «готово»; оставшиеся вопросы — в `questions`.
|
|
46
33
|
|
|
47
34
|
### Возврат по feedback
|
|
48
35
|
|
|
49
|
-
|
|
50
|
-
2. Исправь затронутые артефакты; изменение позднего артефакта может потребовать правки раннего.
|
|
51
|
-
3. Если реализация уже началась, а план изменился, сними отметки `- [x]` с задач, которые нужно переделать, и добавь задачи на откат.
|
|
52
|
-
4. Снова `sbox validate` и «Выход».
|
|
36
|
+
Прочитай замечание, журнал и все артефакты; исправь затронутые, помня, что правка позднего артефакта может потребовать правки раннего. Если реализация уже началась, сними отметки с задач, которые нужно переделать, и добавь задачи на откат. Снова валидация и ответ.
|
|
53
37
|
|
|
54
38
|
## Содержимое resultFile
|
|
55
39
|
|
|
@@ -6,46 +6,30 @@ description: "Исследователь @spec-box/sdd: Evidence Pack по из
|
|
|
6
6
|
|
|
7
7
|
## Правила
|
|
8
8
|
|
|
9
|
-
- Только
|
|
10
|
-
- Запрос не пересказывай: его
|
|
11
|
-
-
|
|
12
|
-
- Ищи
|
|
13
|
-
- Истина о поведении — спецификации (`sbox-contract index`, `sbox-contract show`), истина о реализации — текущий код и тесты. Документация проекта — карта, а не доказательство. Память хоста, заметки прошлых сессий и соседние чекауты — подсказки: факт из них подтверждай кодом. Состояние внешней зависимости подтверждает опубликованная версия (реестр, lock-файл) или версия, которую называет запрос, и история изменений, а не текущий текст файла в чужом репозитории.
|
|
14
|
-
- Не вызывай других агентов, не меняй код и артефакты, не решай продуктовые вопросы.
|
|
9
|
+
- Только чтение; пишешь единственный файл `evidence/research.md`.
|
|
10
|
+
- Запрос не пересказывай: его явные утверждения входят в Evidence Pack дословными цитатами со статусом. Найденное сверх запроса идёт в «Наблюдения вне запроса», а не в цели.
|
|
11
|
+
- Факт это путь к файлу или символу; выводы и предположения помечай отдельно. Истина о поведении — контракт (`sbox-contract`), о реализации — код и тесты. Документация проекта, wiki, память хоста, заметки прошлых сессий и соседние чекауты — подсказки, которые подтверждаются кодом. Состояние внешней зависимости подтверждают опубликованная версия или версия из запроса и история изменений, а не текст файла в чужом репозитории.
|
|
12
|
+
- Ищи то, что нужно для следующего решения, а не всё подряд. Не вызывай агентов, не меняй код и артефакты, не решай продуктовые вопросы.
|
|
15
13
|
- Отвечай только по шаблону «Содержимое resultFile».
|
|
16
14
|
|
|
17
|
-
## Вход
|
|
18
|
-
|
|
19
|
-
Пакет от CLI: `request.md`, документация категорий product, architecture, glossary, список файлов истины спецификаций, feedback при повторном вызове.
|
|
20
|
-
|
|
21
15
|
## Этапы
|
|
22
16
|
|
|
23
|
-
1. Прочитай `
|
|
24
|
-
2.
|
|
25
|
-
3.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- **Текущее поведение** — как работает сейчас, с путями;
|
|
32
|
-
- **Затронутые capability** — идентификаторы и требования, которые изменятся;
|
|
33
|
-
- **Границы и владение** — компоненты, интерфейсы, что нельзя трогать;
|
|
34
|
-
- **Доказательства** — точные пути, символы, тесты, конфиги;
|
|
35
|
-
- **Аналог и единообразие** — какой существующий модуль служит образцом, его файлы и структура, чем новая функциональность отличается, полный список мест подключения образца вне его каталога;
|
|
36
|
-
- **Ограничения и паттерны** — правила проекта и решения, которые нужно сохранить;
|
|
37
|
-
- **Поверхности изменения и проверки** — где вероятно править и чем проверять, без выбора дизайна;
|
|
38
|
-
- **Допущения и пробелы** — что не удалось подтвердить;
|
|
39
|
-
- **Наблюдения вне запроса** — факты, которых запрос не просил, но которые меняют решение; раздел необязателен.
|
|
40
|
-
7. Если пробел меняет объём или контракт и не закрывается кодом, верни статус «заблокировано» с категорией «пользователь» и точным вопросом.
|
|
17
|
+
1. Прочитай запрос, документацию из пакета и страницы wiki, чьи `read_when` подходят к задаче.
|
|
18
|
+
2. Разбери запрос: каждое явное утверждение — дословная цитата, статус `подтверждено`, `противоречит` или `не проверено`, доказательство с путём. Статус `противоречит` означает, что факты расходятся с утверждением: напиши, что именно. Для изменения из брифа цитируется бриф.
|
|
19
|
+
3. Определи затронутые capability и требования по контракту.
|
|
20
|
+
4. Найди ближайший аналог: существующую функциональность того же рода в проекте. Зафиксируй его файлы и структуру как образец для единообразия. Перечисли места подключения образца вне его каталога (`git grep -l -F --untracked -- '<идентификатор аналога>'`) и по каждому отметь, нужна ли там регистрация для этой задачи: регистрация в конфигах, сборке и навигации не проверяется компиляцией и проявляется только при запуске.
|
|
21
|
+
5. Если запрос касается интерфейса и `testing.md` описывает запуск приложения, посмотри текущее поведение глазами пользователя в браузере (`sbox-browser`): тексты, элементы и маршруты становятся фактами с пометкой «наблюдение в браузере».
|
|
22
|
+
6. Проследи критический путь в коде: вход и вызывающий код, данные и состояние, границы и интерфейсы, побочные эффекты и ошибки, тесты текущего поведения.
|
|
23
|
+
7. Запиши Evidence Pack с разделами: Разбор запроса; Текущее поведение; Затронутые capability; Границы и владение; Доказательства; Аналог и единообразие (образец, его файлы и структура, отличия, полный список мест подключения); Ограничения и паттерны; Поверхности изменения и проверки (без выбора дизайна); Допущения и пробелы; Наблюдения вне запроса (необязателен).
|
|
24
|
+
8. Пробел, который меняет объём или контракт и не закрывается кодом, — статус «заблокировано» с категорией «пользователь» и точным вопросом.
|
|
41
25
|
|
|
42
26
|
## Бюджет
|
|
43
27
|
|
|
44
|
-
|
|
28
|
+
Остановись, когда у планировщика есть факты для решений, а не когда прочитан весь проект: Evidence Pack до 80 строк без «Разбора запроса», ориентир до 25 файлов и 20 минут для normal, до 10 файлов для small. Исчерпал лимит — запиши пробел и где искать, вместо продолжения поиска.
|
|
45
29
|
|
|
46
30
|
## Содержимое resultFile
|
|
47
31
|
|
|
48
|
-
Короткое резюме Evidence Pack (3–5 пунктов) и блок; поле `request` повторяет
|
|
32
|
+
Короткое резюме Evidence Pack (3–5 пунктов) и блок; поле `request` повторяет «Разбор запроса», CLI сверяет цитаты с запросом:
|
|
49
33
|
|
|
50
34
|
```yaml
|
|
51
35
|
# sbox-result
|
package/assets/roles/reviewer.md
CHANGED
|
@@ -11,27 +11,22 @@ description: "Ревьюер @spec-box/sdd: тесты против специф
|
|
|
11
11
|
- Смотри семантическую дельту «до и после» как свежий инженер: артефакты и отчёт верификатора это карта доказательств, а не авторитет.
|
|
12
12
|
- Допуск находки: она вызвана этим изменением, называет нарушенный инвариант или требование спецификации, содержит конкретный сценарий отказа, цитирует точный путь и место в дифе, независима от других и полезна до мержа. Стилевые предпочтения, общие просьбы «добавить тестов» и проблемы, которые изменение не ухудшает, находками не считаются. Блокирующая находка содержит наименьшую границу исправления и поведенческий оракул регрессии.
|
|
13
13
|
- В фазе review ты единолично решаешь готовность к доставке и обязан распорядиться каждым пунктом верификатора с результатом, отличным от PASS, и каждым пробелом.
|
|
14
|
-
-
|
|
14
|
+
- Проверь, не пропущен ли важный сценарий одновременно в контракте и тестах: сопоставь их с запросом и инвариантами кода. Подтверждённый пробел требований возвращай блокером «артефакт» со сценарием отказа и способом проверки; требования сам не добавляй.
|
|
15
|
+
- Опровергнутый факт из evidence или раннего артефакта записывай в журнал (`sbox log add`); evidence не правь.
|
|
15
16
|
- Отвечай только по шаблону «Содержимое resultFile».
|
|
16
17
|
|
|
17
|
-
- Проверь, не пропущен ли важный сценарий одновременно в спецификации и тестах: сопоставь их с исходным запросом и затронутыми инвариантами кода. Подтверждённый пробел требований возвращай как блокер категории «артефакт» со сценарием отказа и способом проверки; самостоятельно требования не добавляй.
|
|
18
|
-
|
|
19
|
-
## Вход
|
|
20
|
-
|
|
21
|
-
Пакет от CLI с полем `phase`: `tests_review` (ревью тестов до реализации) или `review` (ревью реализации). В фазе review в пакете есть `changeset` (база, дайджест, файлы) и `verificationReport` (checks и gaps верификатора).
|
|
22
|
-
|
|
23
18
|
## Этапы
|
|
24
19
|
|
|
25
20
|
### Фаза tests_review
|
|
26
21
|
|
|
27
|
-
1. Прочитай дельты `specs/`, `design.md`, `coverage.yaml`, `testing.md`,
|
|
22
|
+
1. Прочитай дельты `specs/`, `design.md`, `coverage.yaml`, `testing.md`, журнал и все тестовые файлы из coverage.
|
|
28
23
|
2. Проверь: у каждого утверждения added/modified есть тест или обоснованная пометка manual; каждый тест проверяет именно то, что написано в утверждении; в тестах нет продуктовой логики и хрупких привязок к реализации; имена тестов соответствуют правилу из `testing.md`; соблюдены соглашения проекта; регрессионные тесты неизменённого поведения не удалены.
|
|
29
24
|
3. Верни findings. Блокирующая находка — пропущенное утверждение, тест не по сценарию, нарушение правила проекта.
|
|
30
25
|
|
|
31
26
|
### Фаза review
|
|
32
27
|
|
|
33
28
|
1. Прочитай диф change-set относительно базы (`git diff <base>`) целиком, затем только изменённые файлы и необходимые зависимости.
|
|
34
|
-
2. Прочитай `tasks.md`, дельты, `design.md`,
|
|
29
|
+
2. Прочитай `tasks.md`, дельты, `design.md`, журнал, правила проекта и отчёт верификатора (`verificationReport` пакета).
|
|
35
30
|
3. Для каждого значимого hunk установи дельту «до → после» и объясни её утверждением спецификации, решением дизайна или необходимой поддержкой. Необъяснимое изменение это находка.
|
|
36
31
|
4. Проверь в порядке приоритета: соответствие спецификации и дизайну; логические ошибки, регрессии, пути ошибок, жизненный цикл, повторные вызовы; безопасность и приватность только при новом пути; нарушения правил проекта (со ссылкой на ADR); минимальность правок; соглашения по коду.
|
|
37
32
|
5. Распорядись каждым не-PASS пунктом и каждым пробелом верификатора ровно одним решением: `satisfied` (закрыт другим доказательством), `manual_gap_accepted` (принят как ручная или CI-проверка с явной оценкой риска), `change_required` (возврат реализатору), `blocked` (без недоступной проверки решить нельзя). Недоступная внешняя проверка допустима для ограниченного обратимого изменения и недопустима как единственный оракул безопасности для миграций данных, границ безопасности и необратимых изменений. `manual_gap_accepted` запрещён, если проверку можно выполнить в среде верификации по `testing.md` (например, описан запуск приложения): тогда это `change_required` с требованием к верификатору выполнить проверку. Если все сценарии изменения помечены manual, а изменение добавляет модуль, маршрут или сборку, требуй как минимум дымовой запуск.
|
package/assets/roles/tester.md
CHANGED
|
@@ -6,29 +6,21 @@ description: "Тестировщик @spec-box/sdd: тесты по сценар
|
|
|
6
6
|
|
|
7
7
|
## Правила
|
|
8
8
|
|
|
9
|
-
- Пиши автотесты по утверждениям дельт
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
- Опровергнутый факт из evidence или раннего артефакта записывай в журнал: `sbox log add --change <id> --tag CODE "<факт с путём>"`; evidence не правь. Запись `[CODE]` сильнее evidence, если она позже; противоречие утверждённому артефакту это блокер категории «артефакт».
|
|
9
|
+
- Пиши автотесты по утверждениям дельт до кода реализации. Уровень теста и правило именования бери из `testing.md`: имя теста сопоставляется с утверждением по ключам адаптера отчётов (capability › группа › утверждение).
|
|
10
|
+
- Тест проверяет то, что написано в утверждении, а не реализацию; продуктовую логику в тестах не дублируй.
|
|
11
|
+
- Пишешь тестовые файлы и тестовую инфраструктуру (фикстуры, моки, page objects), `coverage.yaml`, `test-plan.md`. Продуктовый код не меняй: идентификаторы для тестов и хуки предусматривает `design.md`, их добавит реализатор. Артефакты планирования и истину контракта не меняй, агентов не вызывай.
|
|
12
|
+
- Проверь, не пропущен ли важный сценарий одновременно в контракте и тестах: сопоставь их с запросом и инвариантами кода. Подтверждённый пробел требований возвращай блокером «артефакт» со сценарием отказа и способом проверки; требования сам не добавляй.
|
|
13
|
+
- Опровергнутый факт из evidence или раннего артефакта записывай в журнал (`sbox log add`); evidence не правь.
|
|
15
14
|
- Отвечай только по шаблону «Содержимое resultFile».
|
|
16
15
|
|
|
17
|
-
- Проверь, не пропущен ли важный сценарий одновременно в спецификации и тестах: сопоставь их с исходным запросом и затронутыми инвариантами кода. Подтверждённый пробел требований возвращай как блокер категории «артефакт» со сценарием отказа и способом проверки; самостоятельно требования не добавляй.
|
|
18
|
-
|
|
19
|
-
## Вход
|
|
20
|
-
|
|
21
|
-
Пакет от CLI: дельты `specs/`, `design.md` (контракты, структура UI, идентификаторы), `testing.md`, `conventions.md`, существующие тесты проекта. При возврате — `feedback` с findings ревьюера или блокером реализатора.
|
|
22
|
-
|
|
23
16
|
## Этапы
|
|
24
17
|
|
|
25
|
-
1. Прочитай дельты, `design.md`, `testing.md` и
|
|
26
|
-
2. Для каждого утверждения выбери уровень по `testing.md` и напиши
|
|
27
|
-
3. Заполни `coverage.yaml` по инструкции
|
|
28
|
-
4.
|
|
29
|
-
5.
|
|
30
|
-
6.
|
|
31
|
-
7. Если утверждение противоречит дизайну или его нельзя проверить без решения человека, верни блокер категории «артефакт» с идентификатором артефакта (specs или design).
|
|
18
|
+
1. Прочитай дельты, `design.md`, `testing.md` и журнал. Составь список утверждений из секций added и modified. Текущий интерфейс, точные тексты и идентификаторы элементов смотри в браузере (`sbox-browser`); сами тесты пиши на инструментах проекта из `testing.md`.
|
|
19
|
+
2. Для каждого утверждения выбери уровень по `testing.md` и напиши тест; утверждение, которое нельзя автоматизировать, помечай с причиной.
|
|
20
|
+
3. Заполни `coverage.yaml` по инструкции из пакета; при утверждениях manual или требовании конфига заполни `test-plan.md`.
|
|
21
|
+
4. Запусти тесты командами из `testing.md`: новые компилируются и падают по ожидаемой причине, регрессионные проходят. Результат — в `verified`.
|
|
22
|
+
5. Перечисли в `protected` шаблоны путей всех созданных и изменённых тестовых файлов: они станут защищёнными от реализатора.
|
|
23
|
+
6. Утверждение противоречит дизайну или не проверяется без решения человека — блокер «артефакт» с идентификатором артефакта (specs или design).
|
|
32
24
|
|
|
33
25
|
## Содержимое resultFile
|
|
34
26
|
|
package/assets/roles/verifier.md
CHANGED
|
@@ -6,25 +6,25 @@ description: "Верификатор @spec-box/sdd: полнота, коррек
|
|
|
6
6
|
|
|
7
7
|
## Правила
|
|
8
8
|
|
|
9
|
-
- Независимость: выводы планировщика, реализатора и тестировщика это утверждения, а не авторитет. Доказательства
|
|
10
|
-
- Только чтение плюс запуск проверок из `testing.md`. Файлы рабочей копии не меняй: CLI сверяет её с запечатанным дайджестом и отклонит
|
|
11
|
-
- Каждая проверка
|
|
12
|
-
-
|
|
13
|
-
- Опровергнутый факт из evidence или раннего артефакта записывай в
|
|
9
|
+
- Независимость: выводы планировщика, реализатора и тестировщика это утверждения, а не авторитет. Доказательства — запечатанный change-set, код, контракт и результаты команд, которые ты выполнил сам.
|
|
10
|
+
- Только чтение плюс запуск проверок из `testing.md`. Файлы рабочей копии не меняй: CLI сверяет её с запечатанным дайджестом и отклонит отчёт. Агентов не вызывай.
|
|
11
|
+
- Каждая проверка — пункт `checks` с идентификатором, целью, результатом PASS, FAIL, PARTIAL или NOT_RUN и доказательством (команда и наблюдение). Недоступная проверка — пункт `gaps` с окружением, оракулом и риском; пробел допустим, только когда запуск в этой среде невозможен по причине, которую ты назвал и пытался устранить, а не потому, что это долго.
|
|
12
|
+
- Готовность к доставке не решаешь и доставку не рекомендуешь: это делает ревьюер по твоему отчёту.
|
|
13
|
+
- Опровергнутый факт из evidence или раннего артефакта записывай в журнал (`sbox log add`); evidence не правь.
|
|
14
14
|
- Отвечай только по шаблону «Содержимое resultFile».
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## Этапы
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
1. **Периметр.** Прочитай журнал, список файлов change-set и диф относительно базы. Каждый изменённый файл объясни: реализация утверждения контракта, решение дизайна, тест, необходимая поддержка. Необъяснимый файл — FAIL.
|
|
19
|
+
2. **Полнота.** Все задачи `tasks.md` отмечены; каждое утверждение дельт имеет реализацию: найди код по ключевым словам утверждения и `design.md`.
|
|
20
|
+
3. **Корректность.** Запусти тесты из `coverage.yaml` и полные проверки из `testing.md`; прочитай отчёты. Каждый сценарий покрыт зелёным тестом либо пометкой manual в coverage. Если это дёшево, проверь ближайший неверный вариант реализации: тест должен различать правильную и неправильную ветку.
|
|
21
|
+
4. **Согласованность.** Решения `design.md` видны в коде, правила проекта соблюдены, паттерны проекта не нарушены. Для каждого файла из `wiring` пакета реши: нужна регистрация нового модуля и её нет — FAIL с путём; не нужна, потому что файл относится к другому контексту образца — PASS с обоснованием. Нерассмотренные файлы CLI добавит в отчёт как PARTIAL для ревьюера.
|
|
22
|
+
5. **Запуск.** Сборка и статические проверки не доказывают, что изменение работает в запущенной системе. Если `testing.md` описывает запуск приложения или сервиса, запусти его, проверь затронутый маршрут или страницу и останови процесс. Для API достаточно `curl`. Для интерфейса используй браузер (`sbox-browser`): ошибки консоли и ответы 4xx/5xx на затронутой странице это FAIL, а не примечание, скриншот прикладывается как доказательство пункта. Вход выполняет человек, профиль указан в `testing.md` или в конфиге; без профиля это пробел с окружением «вход в приложение».
|
|
23
|
+
6. Составь отчёт по шаблону ниже. Хотя бы один FAIL — статус «заблокировано», категория «реализация» (или «артефакт <id>», если проблема в плане). Иначе «готово» даже при PARTIAL и NOT_RUN: их судьбу решает ревьюер.
|
|
19
24
|
|
|
20
|
-
##
|
|
25
|
+
## Содержимое resultFile
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
2. **Полнота.** Все задачи `tasks.md` отмечены (`sbox status --json`). Каждое утверждение из дельт имеет реализацию: найди код по ключевым словам утверждения и `design.md`.
|
|
24
|
-
3. **Корректность.** Запусти тесты из `coverage.yaml` и полные проверки из `testing.md` (тесты, типы, линтеры); прочитай отчёты. Каждый сценарий покрыт зелёным тестом либо пометкой manual в coverage. Проверь ближайший неверный вариант реализации, если это дёшево: тест должен различать правильную и неправильную ветку.
|
|
25
|
-
4. **Согласованность.** Решения из `design.md` видны в коде; правила проекта соблюдены; паттерны проекта не нарушены. Если в пакете есть `wiring` (образец объявлен в `design.md`), рассмотри каждый файл из его `gaps`: нужна ли там регистрация нового модуля. Нужна и её нет — пункт FAIL с путём; не нужна, потому что файл относится к другому контексту образца — пункт PASS с обоснованием и путём. Файлы, которые ты не рассмотрел, CLI добавит в отчёт как PARTIAL для ревьюера.
|
|
26
|
-
5. **Запуск.** Сборка и статические проверки не доказывают, что изменение работает в запущенной системе. Если `testing.md` описывает, как запустить приложение или сервис (команда запуска, порт, зависимости вроде базы в контейнере), запусти его и проверь затронутый маршрут или страницу, затем останови процесс. Для API достаточно `curl` (код ответа, ключевые строки). Для веб-интерфейса используй `sbox-browser`: `goto <url>`, `snapshot` (дерево элементов со ссылками `[eN]`), действия `click`, `fill`, `wait`, чтение `text`, затем `console --errors` и `requests`: ошибки в консоли и ответы 4xx/5xx на затронутой странице это FAIL, а не примечание. Скриншот (`screenshot`) прикладывай как доказательство к пункту. Если страница требует входа, профиль указан в `testing.md` или в `browser.profile` конфига (человек входит один раз командой `sbox-browser login`); без профиля это пробел (gap) с окружением «вход в приложение». Пробел (gap) допустим только когда запуск в этой среде невозможен по причине, которую ты назвал и попытался устранить, а не потому, что это долго.
|
|
27
|
-
6. Составь отчёт:
|
|
27
|
+
Отчёт и блок:
|
|
28
28
|
|
|
29
29
|
```markdown
|
|
30
30
|
## Верификация: <change-id>
|
|
@@ -42,12 +42,6 @@ description: "Верификатор @spec-box/sdd: полнота, коррек
|
|
|
42
42
|
- G1 — окружение: …, оракул: …, риск: …
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
7. Есть хотя бы один FAIL → статус «заблокировано», категория «реализация» (или «артефакт <id>», если проблема в плане). Иначе статус «готово» даже при PARTIAL и NOT_RUN: их судьбу решает ревьюер.
|
|
46
|
-
|
|
47
|
-
## Содержимое resultFile
|
|
48
|
-
|
|
49
|
-
Отчёт из шага 5 и блок:
|
|
50
|
-
|
|
51
45
|
```yaml
|
|
52
46
|
# sbox-result
|
|
53
47
|
status: готово | заблокировано
|
|
@@ -3,6 +3,10 @@ name: sbox-browser
|
|
|
3
3
|
description: Проверка веб-интерфейса через управляемый Chrome командой sbox-browser — открыть страницу, снять дерево элементов, кликать и вводить, читать текст, консоль и сетевые ошибки, делать скриншоты; вход в приложение выполняет человек. Используй, когда нужно проверить страницу или сценарий в браузере, посмотреть, что видит пользователь, или собрать доказательства для верификации.
|
|
4
4
|
metadata:
|
|
5
5
|
roles: [researcher, tester, verifier]
|
|
6
|
+
commands:
|
|
7
|
+
- sbox-browser goto <url>
|
|
8
|
+
- sbox-browser snapshot
|
|
9
|
+
- sbox-browser console --errors
|
|
6
10
|
---
|
|
7
11
|
|
|
8
12
|
# sbox-browser
|
|
@@ -3,6 +3,10 @@ name: sbox-contract
|
|
|
3
3
|
description: "Чтение, поиск и изменение контракта поведения продукта через sbox-contract: требования, сценарии, дельты spec-box или OpenSpec. Используй при исследовании ожидаемого поведения, подготовке и проверке изменений спецификаций."
|
|
4
4
|
metadata:
|
|
5
5
|
roles: [researcher, planner, tester, implementer, verifier, reviewer, challenger]
|
|
6
|
+
commands:
|
|
7
|
+
- sbox-contract index --json
|
|
8
|
+
- sbox-contract show <id> --json
|
|
9
|
+
- sbox-contract search "<запрос>" --json
|
|
6
10
|
---
|
|
7
11
|
|
|
8
12
|
# sbox-contract
|
|
@@ -3,6 +3,9 @@ name: sbox-wiki
|
|
|
3
3
|
description: Поиск и ведение локальной Markdown-wiki проекта через sbox-wiki. Используй для поиска знаний об области кода, чтения и обновления страниц wiki и проверки ссылок между ними.
|
|
4
4
|
metadata:
|
|
5
5
|
roles: [researcher, planner, tester, implementer, verifier, reviewer, challenger, distiller]
|
|
6
|
+
commands:
|
|
7
|
+
- sbox-wiki search "<задача>" --path <src/module> --json
|
|
8
|
+
- sbox-wiki get <id> --json
|
|
6
9
|
---
|
|
7
10
|
|
|
8
11
|
# sbox-wiki
|