Andrey Epifancev 3ad378c1dc chore(openspec): archive dsh-sdd (#41)
Change dsh-sdd перенесён в openspec/changes/archive/2026-10-24-dsh-sdd,
дельта dsh-sdd добавлена в openspec/specs/dsh-sdd/spec.md (7 требований).

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

1.7 KiB
Raw Blame History

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.