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>
2.0 KiB
2.0 KiB
DONE
Коммит
836a730—feat: add median- Ветка:
feat/trial, родитель:dc1670f(feat: add mean) - Файлы:
src/stats.py(дописанmedian),tests/test_stats.py(импортmedian, классMedianTest) — код дословно из плана Task 2 git statusчистый; в коммит не попалиreports/(в.gitignore) и__pycache__
Тесты
python3 -m unittest discover -s tests → Ran 4 tests ... OK (exit 0): MeanTest.test_mean, MeanTest.test_mean_empty, MedianTest.test_median_odd, MedianTest.test_median_empty.
Concerns
- Расхождение плана со SPEC (важное, не исправлял — по брифу план дословен).
Реализация из плана возвращает
float(xs[n // 2])и для чётной длины берёт верхний средний элемент, а SPEC требует среднее двух средних:median([1, 2])→2.0, по SPEC1.5;median([1, 2, 3, 4])→3.0, по SPEC2.5. Тесты плана чётную длину не проверяют, поэтому 4 теста проходят и нарушение спеки не ловится. Решение — за контроллером: чинить план/код и добавлять тест на чётную длину отдельной задачей.
medianне мутирует вход:sorted()возвращает копию — требование SPEC «does not mutate values» выполнено.- В разделе «Interfaces» плана заявлены аннотации
list[float] -> float, в «Exact code» их нет (как и в Task 1); внёс дословно, без аннотаций. ValueError("empty")на пустом списке — есть, сообщение совпадает со SPEC; тест проверяет только тип исключения (по плану).