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.6 KiB
Raw Blame History

DONE

Коммит

  • 7cb0383 — feat: add describe
  • Ветка: feat/trial, родитель: 186575c (fix: median even-length per spec)
  • Файлы: src/stats.py (дописан describe), tests/test_stats.py (импорт describe, класс DescribeTest) — код дословно из плана Task 3
  • git status чистый после коммита; reports/, briefs/, review/ и __pycache__ в .gitignore, в коммит не попали

Тесты

python3 -m unittest discover -s tests → Ran 7 tests in 0.000s ... OK (exit 0), в т.ч. DescribeTest.test_describe, MedianTest.test_median_even_two, MedianTest.test_median_even_four.

Concerns

  1. Счёт тестов в брифе/плане устарел (наблюдение, не дефект кода). Бриф и план Task 3 ожидают «5 tests OK». Фактически на входе было 6 тестов: после Task 2 коммит 186575c (fix: median even-length per spec) добавил test_median_even_two и test_median_even_four, которых в плане Task 2 не было. Task 3 добавляет один тест → 7, все проходят. Реализацию это не меняет; цифру «5» стоит поправить в плане/брифе, чтобы следующий прогон не принял 7 за расхождение.
  2. describe дословно из плана не проверяет пустой список сам — но mean([])/median([]) бросают ValueError("empty"), так что поведение на [] согласовано с SPEC по факту (и покрыто тестами mean/median). Отдельного теста на describe([]) план не требует, не добавлял.
  3. describe возвращает count как int (len), mean/median — как float: ключи и типы совпадают с SPEC {"count": int, "mean": float, "median": float}.
  4. Аннотаций типов в коде нет — как и в Task 1/2, план в «Exact code» их не даёт, хотя «Interfaces» их упоминает. Внёс дословно.
  5. src/ без __init__.py — импорт from src.stats import ... работает только при запуске из корня репозитория namespace-пакетом, т.е. ровно предписанной командой. Не мой скоуп, менять не стал.