You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
В ходе milestone 0.3.8 повторилась одна и та же ошибочная цепочка рассуждений вокруг bidmodifiers.delete:
Изначально в tests/api_coverage_payloads.py запись имела rationale: "Helper/legacy surface; not part of strict WSDL parity claim." — то есть формально объявлена как «не часть строгой проверки WSDL».
Делает реальный destructive POST: client.bidmodifiers().post(data=body).
Никаких маркеров helper/legacy в коде или docstring.
Вывод: наклейка «Helper/legacy surface; not part of strict WSDL parity claim» была неоправданна с самого начала.
Принцип, который мы должны соблюдать
CLI должен совпадать с API Яндекса 1-в-1, без «helper», «legacy», «удобных skip'ов».
Любая запись в DRY_RUN_PAYLOAD_EXCLUSIONS с rationale, которая по сути говорит «эта команда не считается частью строгой проверки», — это плохая классификация. Она маскирует баги (как было с bidmodifiers.delete) и приводит к реактивным правкам через цикл Codex review.
bidmodifiers.delete — в PAYLOAD_CASES, под gating. ✅
В DRY_RUN_PAYLOAD_EXCLUSIONS больше нет записей с rationale, содержащей «helper» или «legacy». ✅
Остались только маркеры про сломанные параметры--campaign-id/--type в bidmodifiers.py:set() — это про конкретные legacy-флаги, не про операции.
Acceptance criteria для этого issue
В tests/api_coverage_payloads.py ни одна запись DRY_RUN_PAYLOAD_EXCLUSIONS больше не использует фразы:
helper
legacy
not part of strict WSDL parity
аналогичные «удобные skip» формулировки.
В PR-bodies, в комментариях к issue, в CLAUDE.md зафиксирован принцип: «CLI должен совпадать с API Яндекса 1-в-1; никаких категорий helper-or-legacy-исключений».
Не trogaем 23 остальные exclusion-записи в DRY_RUN_PAYLOAD_EXCLUSIONS (read-path *.get, v4-not-in-v5-wsdl, runtime-deprecated, custom-endpoint) — у них другая природа обоснования (физическое отсутствие в WSDL рантайма, другой транспорт, и т.п.). Это уже не «удобный skip». Этот issue только про категорию «helper/legacy» как ошибочную классификацию.
Не trogaем legacy-маркеры в bidmodifiers.set() про параметры --campaign-id/--type — это про сломанные параметры одной операции, не про саму операцию.
Контекст
В ходе milestone 0.3.8 повторилась одна и та же ошибочная цепочка рассуждений вокруг
bidmodifiers.delete:tests/api_coverage_payloads.pyзапись имела rationale:"Helper/legacy surface; not part of strict WSDL parity claim."— то есть формально объявлена как «не часть строгой проверки WSDL».bidmodifiers.deletekept excluded per DRY_RUN_PAYLOAD_EXCLUSIONS lifecycle batch (14 entries) #136 (Helper/legacy surface).» — наклейка перенесена.legitimate-helper-or-legacypermanent exclusion. Закреплено как «постоянно правильное» исключение.bidmodifiers.deleteв schema gate, но в PR-body представил это как реакцию на Codex review, а не как исправление изначально неверной классификации.Что нашли при перепроверке кода
В WSDL
tests/wsdl_cache/bidmodifiers.xml:<wsdl:operation name="delete">— полноценная операция в portType + binding (строки 474–478, 518–529).<xsd:element name="DeleteRequest">с requiredSelectionCriteria(minOccurs=1) → требуетIdsCriteria(строки 415–421).<xsd:element name="DeleteResponse">со стандартнымActionResult(строки 422–428).helper,legacy,deprecatedв WSDL.В CLI
direct_cli/commands/bidmodifiers.py:delete():{"method": "delete", "params": {"SelectionCriteria": {"Ids": [modifier_id]}}}.client.bidmodifiers().post(data=body).Вывод: наклейка «Helper/legacy surface; not part of strict WSDL parity claim» была неоправданна с самого начала.
Принцип, который мы должны соблюдать
Любая запись в
DRY_RUN_PAYLOAD_EXCLUSIONSс rationale, которая по сути говорит «эта команда не считается частью строгой проверки», — это плохая классификация. Она маскирует баги (как было сbidmodifiers.delete) и приводит к реактивным правкам через цикл Codex review.Что сейчас в main
После PR #194:
bidmodifiers.delete— вPAYLOAD_CASES, под gating. ✅DRY_RUN_PAYLOAD_EXCLUSIONSбольше нет записей с rationale, содержащей «helper» или «legacy». ✅--campaign-id/--typeвbidmodifiers.py:set()— это про конкретные legacy-флаги, не про операции.Acceptance criteria для этого issue
tests/api_coverage_payloads.pyни одна записьDRY_RUN_PAYLOAD_EXCLUSIONSбольше не использует фразы:helperlegacynot part of strict WSDL parityCLAUDE.mdзафиксирован принцип: «CLI должен совпадать с API Яндекса 1-в-1; никаких категорийhelper-or-legacy-исключений».bidmodifiers.deleteуже исправлена в PR fix(coverage): add bidmodifiers.delete schema gate fixture #194 — этот issue лишь фиксирует почему это было правильно и закрывает policy-gap.Refs
Что не входит в этот issue
DRY_RUN_PAYLOAD_EXCLUSIONS(read-path*.get, v4-not-in-v5-wsdl, runtime-deprecated, custom-endpoint) — у них другая природа обоснования (физическое отсутствие в WSDL рантайма, другой транспорт, и т.п.). Это уже не «удобный skip». Этот issue только про категорию «helper/legacy» как ошибочную классификацию.bidmodifiers.set()про параметры--campaign-id/--type— это про сломанные параметры одной операции, не про саму операцию.