Три задачи в 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>
1.7 KiB
1.7 KiB
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.