Andrey Epifancev c8b92fae01 docs(dsh): пробный прогон SDD — режимы, дефект и fix-loop (#41)
Три задачи в temp-репозитории: implementer'ы deepseek-flash, все ревью
deepseek-v4-pro. Ревьюер Task 2 независимо нашёл T2.1 (медиана чётной длины
противоречит спеке) и T2.2 (нет теста), fix-раунд 1 → 186575c, скоуп-ре-ревью
APPROVED, финальное ревью ветки APPROVED. Режим 2 (фоновый контроллер, глубина
2) проверен отдельной пробой: вызов subagent из контроллера прошёл.

Артефакты прогона — openspec/changes/dsh-sdd/trial/ (план, спека, брифы,
отчёты, ledger), результаты — design.md. По урокам прогона skill sdd уточнён:
DONE_WITH_CONCERNS при замеченном расхождении, число тестов в плане — ориентир,
повтор при ошибке валидации provider/model.

Co-Authored-By: DeepSeek Harness <noreply@deepseek.com>
2026-10-24 17:49:38 +04:00

36 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Review: Task 2 (median)
Ревьюер проверял поведение по `SPEC.md` независимо, не полагаясь на concerns
implementer'а.
## Проверенные требования SPEC.md
| Требование | Результат |
|---|---|
| Нечётная длина — средний элемент | OK: `median([3,1,2]) == 2.0` |
| Чётная длина — среднее двух средних | **НАРУШЕНО** |
| Пустой список — `ValueError("empty")` | OK: тип и сообщение совпадают |
| Не мутирует `values` | OK: `sorted()` копирует, вход не меняется |
| Возвращает `float` | OK |
## Тесты
`python3 -m unittest discover -s tests` → `Ran 4 tests ... OK` (exit 0).
4 теста проходят, но чётная длина не покрыта, поэтому нарушение спеки не
ловится.
## Findings
- `T2.1` — `src/stats.py:15` — при чётной длине `median` возвращает верхний
средний элемент `float(xs[n // 2])`, а `SPEC.md:15` требует среднее двух
средних: `median([1,2])` → `2.0` вместо `1.5`, `median([1,2,3,4])` → `3.0`
вместо `2.5`. Исправить: для чётного `n` вернуть
`float(xs[n//2 - 1] + xs[n//2]) / 2`.
- `T2.2` — `tests/test_stats.py` — нет теста на чётную длину, поэтому
нарушение `T2.1` не ловится. Добавить тест `median([1,2]) == 1.5` (и
`median([1,2,3,4]) == 2.5`) по требованию `SPEC.md:15`.
## VERDICT: CHANGES_REQUESTED
Находки: `T2.1`, `T2.2`.