docs(openspec): несимметричный вход в образце describe (#52)

This commit is contained in:
Andrey Epifancev 2026-10-24 21:49:16 +04:00
parent c08fba2a82
commit bd8024e7a0
3 changed files with 16 additions and 6 deletions

View File

@ -179,9 +179,9 @@ DoD порта требует, чтобы CC-харнес не менялся.
| `T2.1` | `median` на чётной длине возвращал верхний средний элемент вместо среднего двух | `fixed 186575c` | | `T2.1` | `median` на чётной длине возвращал верхний средний элемент вместо среднего двух | `fixed 186575c` |
| `T2.2` | не было теста на чётную длину | `fixed 186575c` | | `T2.2` | не было теста на чётную длину | `fixed 186575c` |
| `O-1` | «Interfaces» плана обещают аннотации типов, «Exact code» их не содержит; SPEC аннотаций не требует | `rejected` (правка плана в прогоне не даёт результата) | | `O-1` | «Interfaces» плана обещают аннотации типов, «Exact code» их не содержит; SPEC аннотаций не требует | `rejected` (правка плана в прогоне не даёт результата) |
| `O-2`, `O-3` | первый вызов `subagent` с переданными `provider`/`model` вернул «child LLM provider and model must be supplied together»; немедленный повтор тем же вызовом проходит (2 раза за прогон) | `deferred` (наблюдение о стабильности валидации DSH; повтор в skill) | | `O-2`, `O-3` | вызов `subagent` с одним `model` (без `provider`) вернул «child LLM provider and model must be supplied together»; немедленный повтор с обоими полями проходит (2 раза за прогон). В #52 транскрипт подтвердил: валидация DSH корректна, поле действительно не передано | `fixed` — формулировка skill исправлена (issue #52) |
| `O-4` | ожидаемое число тестов в плане (`5`) устарело после fix-раунда Task 2 (фактически 7) | `fixed` — в skill добавлено правило «число тестов в плане — ориентир» | | `O-4` | ожидаемое число тестов в плане (`5`) устарело после fix-раунда Task 2 (фактически 7) | `fixed` — в skill добавлено правило «число тестов в плане — ориентир» |
| `O-5` | тест `describe([1,2,3])` на симметричном входе не отличил бы перестановку `mean`/`median` | `deferred` (реализация верна, слабость плана) | | `O-5` | тест `describe([1,2,3])` на симметричном входе не отличил бы перестановку `mean`/`median` | `fixed` — образец `plan.md` переведён на `[1,2,6]` (issue #52) |
Отдельно: implementer Task 2 заметил расхождение плана со спекой, но поставил Отдельно: implementer Task 2 заметил расхождение плана со спекой, но поставил
`DONE`, а не `DONE_WITH_CONCERNS`; ревью дефект всё равно поймало, потому что `DONE`, а не `DONE_WITH_CONCERNS`; ревью дефект всё равно поймало, потому что
@ -199,8 +199,9 @@ DoD порта требует, чтобы CC-харнес не менялся.
- Число тестов в плане — ориентир: fix-раунд добавляет тесты, и расхождение - Число тестов в плане — ориентир: fix-раунд добавляет тесты, и расхождение
вверх не дефект (O-4). вверх не дефект (O-4).
- Ошибка валидации `provider`/`model` нестабильна; лечится повтором, а не - Ошибка «provider and model must be supplied together» — не нестабильная
пересмотром маршрутов (O-2/O-3). валидация: в вызове было только `model`; DSH требует оба поля (O-2/O-3,
диагностика #52).
- Ревьюер, проверяющий по спеке, а не по отчёту implementer'а, ловит дефекты, - Ревьюер, проверяющий по спеке, а не по отчёту implementer'а, ловит дефекты,
даже если implementer промолчал бы. даже если implementer промолчал бы.

View File

@ -4,6 +4,10 @@
прогона». Прогон сделан один раз: без DSH runtime его не повторить, поэтому прогона». Прогон сделан один раз: без DSH runtime его не повторить, поэтому
артефакты лежат здесь. артефакты лежат здесь.
`plan.md` — образец для повторного прогона. После прогона в нём заменён вход
теста `describe` на несимметричный `[1, 2, 6]` (O-5, issue #52); сам прогон
шёл с `[1, 2, 3]`, это зафиксировано в `reports/review-3.md`.
## Что прогонялось ## Что прогонялось
Отдельный git-репозиторий `/tmp/dsh-sdd-trial` (в PR не входит), ветка Отдельный git-репозиторий `/tmp/dsh-sdd-trial` (в PR не входит), ветка

View File

@ -6,6 +6,11 @@
**Ветка:** `feat/trial`. **Ветка:** `feat/trial`.
> **Пост-фактум (issue #52, O-5).** Это образец, а не протокол прогона. Сам
> прогон выполнен с `describe([1, 2, 3])`, как видно в `reports/review-3.md`;
> после прогона вход теста заменён на несимметричный `[1, 2, 6]`, чтобы
> образец не тиражировал слабость: при таком входе `mean != median`.
## Global Constraints ## Global Constraints
- Python 3.8+ stdlib only; no dependencies. - Python 3.8+ stdlib only; no dependencies.
@ -116,8 +121,8 @@ Test to append (class `DescribeTest`):
class DescribeTest(unittest.TestCase): class DescribeTest(unittest.TestCase):
def test_describe(self): def test_describe(self):
self.assertEqual( self.assertEqual(
describe([1, 2, 3]), describe([1, 2, 6]),
{"count": 3, "mean": 2.0, "median": 2.0}, {"count": 3, "mean": 3.0, "median": 2.0},
) )
``` ```