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

2.0 KiB
Raw Blame History

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

  1. Расхождение плана со SPEC (важное, не исправлял — по брифу план дословен). Реализация из плана возвращает float(xs[n // 2]) и для чётной длины берёт верхний средний элемент, а SPEC требует среднее двух средних:
    • median([1, 2]) → 2.0, по SPEC 1.5;
    • median([1, 2, 3, 4]) → 3.0, по SPEC 2.5. Тесты плана чётную длину не проверяют, поэтому 4 теста проходят и нарушение спеки не ловится. Решение — за контроллером: чинить план/код и добавлять тест на чётную длину отдельной задачей.
  2. median не мутирует вход: sorted() возвращает копию — требование SPEC «does not mutate values» выполнено.
  3. В разделе «Interfaces» плана заявлены аннотации list[float] -> float, в «Exact code» их нет (как и в Task 1); внёс дословно, без аннотаций.
  4. ValueError("empty") на пустом списке — есть, сообщение совпадает со SPEC; тест проверяет только тип исключения (по плану).